php识别非类型敏感的比较运算符中的强制类型值的结果

时间:2014-07-11 19:13:32

标签: php comparison-operators

偶然发现了一个问题我还没找到答案,也许我错了,但是为什么强制类型值的结果在不敏感的比较运算符中无法识别?它们显然是不同的值,甚至具有不同的strlen,但是比较将它们视为相等。

// example 1:
$value1 = (string) 1234;
$value2 = (string) "01234";

echo gettype($value1);  // returns "string"
echo gettype($value2);  // returns "string"
echo $value1; // returns "1234"
echo $value2; // returns "01234"
echo strlen($value1); // returns 4
echo strlen($value2); // returns 5

// so far it works as excpected...but

echo ($value1 == $value2 ? "true" : "false");  // returns "true"!

// example 2:
$value1 = 1234;
$value2 = "01234";

settype($value1,"string");
settype($value2,"string");

echo gettype($value1);  // returns "string"
echo gettype($value2);  // returns "string"
echo $value1; // returns "1234"
echo $value2; // returns "01234"
echo strlen($value1); // returns 4
echo strlen($value2); // returns 5

// again, so far it works as excpected...but

echo ($value1 == $value2 ? "true" : "false");  // also returns "true"!

感谢您的帮助。我非常感谢你帮助我整理出来的努力!

0 个答案:

没有答案