OK,首先,這是一個非常特殊的問題。我在PHP上工作了很長時間,我不知道爲什麼會發生這種情況。PHP如果然後和switch語句不起作用
我有一個函數adminUpdate。這個函數將返回true。我設置它總是返回真正的測試。
然後我有功能拿這個結果。
static function result2JSON($result,$options = array()) {
if($result == "permission") {
echo "permission";
}
if($result == true) {
echo "true";
}
switch ($result) {
case 'permission':
die($result."xxx permission");
$json = self::setJSON("Permission");
break;
case 'exist':
$json = self::setJSON("Exist");
break;
case false:
$json = self::setJSON("Error");
break;
case "":
$json = self::setJSON("Error");
break;
case 1 :
$json = self::setJSON("OK");
break;
case true:
$json = self::setJSON("OK");
break;
default:
$json = self::setJSON("OK");
break;
}
$json = array_merge($json,$options);
return $json;
}
這些「Echo」用於測試這種情況。 因此,在此函數拍攝之前,$ result always = true。
但這輸出我:
permissiontrueResult = 1 IN permission section
這意味着$結果=權限,然後==真,然後在開關==「許可」。 這是爲什麼?
使用''===比較值,或'否則,如果' – mask8
感謝球員們,現在我知道了,這種情況下不能使用開關,因爲它混合了真正的| false |串。這種情況必須是|如果|否則,如果 –