PHP意外返回值

时间:2015-03-09 07:32:11

标签: php

我正在使用其他人的课程并获得意想不到的结果。我已经知道如何解决它,但我想了解为什么会发生这种情况。

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的错误值。 希望有人能向我解释发生了什么。

2 个答案:

答案 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

请参阅此问题接受的答案以获得进一步解释:

Comparing String to Integer gives strange results