偶然发现了一个问题我还没找到答案,也许我错了,但是为什么强制类型值的结果在不敏感的比较运算符中无法识别?它们显然是不同的值,甚至具有不同的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"!
感谢您的帮助。我非常感谢你帮助我整理出来的努力!