Я использую класс от кого-то другого и получаю неожиданный результат. У меня уже есть идея, как обойти это, но я хотел бы понять, почему это происходит.
class Pay {
public function checkStatus {
$check[0] = "000000 OK"
return $check[0]
}
}
$status = $cart->checkStatus ();
$payed = ( $status == "000000 OK" ? true : false);
Проблема в том, что при статусе $ статус - это как-то 1 (может быть также "правда" (нужно проверить позже дома)). Также уплачено значение "true", в то время как я ожидаю "ложь" из-за неправильного значения статуса $. Надеюсь, кто-нибудь может объяснить мне, что происходит.
Это происходит из-за вашего числового или логического значения в $status
. Это приводит к тому, что ваш бит $status == "000000 OK"
оценивает вашу строку на числовое значение (которое равно 1
), что приводит к true
.
Пожалуйста, ознакомьтесь с этим принятым ответом на вопросы для дальнейшего объяснения:
Попробуй это:
$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
качестве строки. Я не знаю, в чем проблема.
$status
возвращает строку 000000 OK
как и ожидалось.