我正在使用其他人的课程并获得意想不到的结果。我已经知道如何解决它,但我想了解为什么会发生这种情况。
class Pay {
public function checkStatus {
$check[0] = "000000 OK"
return $check[0]
}
}
$status = $cart->checkStatus ();
$payed = ( $status == "000000 OK" ? true : false);
问题是打印时$ status的状态是1(也可能是真的'(必须稍后在家检查))。付款也设置为“真实”'虽然我期待' false'因为$ status的错误值。 希望有人能向我解释发生了什么。
答案 0 :(得分: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
如果我回显$status
,则返回000000 OK
字符串。我不知道你的问题是什么。
答案 1 :(得分:3)
这是因为$status
中的数字或布尔值。这会导致您的位$status == "000000 OK"
将您的字符串计算为数值(1
),从而产生true
。
请参阅此问题接受的答案以获得进一步解释: