我有以下PHP代码:
$a = "5";
$b = array("position"=>1);
var_dump("5" <= $b);
var_dump("5" <= "Array");
var_dump("Z" <= $b);
var_dump("Z" <= "Array");
结果是:
boolean true
boolean true
boolean true
boolean false
我们知道数组已转换为字符串array
。转换期间实际发生了什么?为什么下面的结果会有不同的结果?
var_dump("Z" <= $b); // (in this case array convert to string "array")
var_dump("Z" <= "Array"); // (in this case string "Array" )
但结果却不同。为什么呢?
答案 0 :(得分:2)
答案 1 :(得分:1)
考虑以下两个表达式:
var_dump("Z" <= $b);
var_dump("Z" <= "Array");
在第一个表达式中,您要比较字符串和数组。此比较将始终返回TRUE
。正如PHP manual所说,如果在两个操作数之间进行任何比较,其中一个是数组,则表达式将始终计算为TRUE
。如果两个操作数都是数组,那么具有较少成员的数组被认为是较小的。
在第二个表达式中,您将Z
与文字字符串Array
进行比较。在这种情况下,在进行比较之前首先将字符串转换为数字。这是通常的数学运算,结果如预期。由于Z
位于字母系列A
之后,因此会返回FALSE
。