PHP неожиданное возвращаемое значение

0

Я использую класс от кого-то другого и получаю неожиданный результат. У меня уже есть идея, как обойти это, но я хотел бы понять, почему это происходит.

class Pay {
  public function checkStatus {
    $check[0] = "000000 OK"
    return $check[0]
  }
}

$status = $cart->checkStatus ();
$payed = ( $status == "000000 OK" ? true : false);

Проблема в том, что при статусе $ статус - это как-то 1 (может быть также "правда" (нужно проверить позже дома)). Также уплачено значение "true", в то время как я ожидаю "ложь" из-за неправильного значения статуса $. Надеюсь, кто-нибудь может объяснить мне, что происходит.

Теги:

2 ответа

3
Лучший ответ

Это происходит из-за вашего числового или логического значения в $status. Это приводит к тому, что ваш бит $status == "000000 OK" оценивает вашу строку на числовое значение (которое равно 1), что приводит к true.

Пожалуйста, ознакомьтесь с этим принятым ответом на вопросы для дальнейшего объяснения:

Сравнение String с Integer дает странные результаты

  • 0
    Я до сих пор не понимаю, почему $ check [0] изменяется со строки на int или boolean, когда он сохраняется в $ status
4

Попробуй это:

$payed = ( $status === "000000 OK" ? true : false);

=== оператор проверяет, равны ли $ status и ваша строка, и того же типа (строка). Более подробную информацию вы найдете здесь: http://php.net/manual/en/language.operators.comparison.php

Я протестировал его:

class Pay {
  public function checkStatus() {
    $check[0] = "000000 OK";
    return $check[0];
  }
}

$cart = new Pay();
$status = $cart->checkStatus();
echo $status; // returns "000000 OK"
$payed = ( $status == "000000 OK" ? true : false);
echo $payed; // returns 1
$payed = ( $status === "000000 OK" ? true : false);
echo $payed; // returns 1

Если я echo $status он возвращает 000000 OK качестве строки. Я не знаю, в чем проблема.

  • 0
    Тогда это, вероятно, решило бы, что $ payed - это не то, что я ожидаю, но я все еще не понимаю, почему $ check [0] изменяется со строки на int или boolean, когда он сохраняется в $ status
  • 0
    обновил мой ответ .. я не знаю в чем ваша проблема. Переменная $status возвращает строку 000000 OK как и ожидалось.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню