我对为什么该操作有效感到非常困惑。有人可以解释吗?
$test1 = "d85d1d81b25614a3504a3d5601a9cb2e"; $test2 = "3581169b064f71be1630b321d3ca318f"; if ($test1 == 0) echo "Test 1 is Equal!?"; if ($test2 == 0) echo "Test 2 is Equal!?"; // Returns: Test 1 is Equal!?
为了澄清起见,我正在尝试将字符串"0"与$test变量进行比较。我已经知道要修复可以随便附上0in ""s中的代码
"0"
$test
0
""
我想知道这是PHP错误,服务器错误还是某种有效的操作。根据此操作 无效 。
编辑: 从头开始,显然它确实提到字符串和0之间的松散比较是正确的。但是我仍然不知道为什么。
编辑2: 我修改了我的问题,为什么$test2值"3581169b064f71be1630b321d3ca318f"不起作用?
$test2
"3581169b064f71be1630b321d3ca318f"
从PHP手册:
字符串转换为数字 在数字上下文中评估字符串时,结果值和类型的确定如下。 如果该字符串包含任何字符“。”,“ e”或“ E”,则将被视为浮点型。否则,它将被评估为整数。 该值由字符串的初始部分给出。如果字符串以有效的数字数据开头,则将是使用的值。否则,该值为0(零)。有效数字数据是可选的符号,后跟一个或多个数字(可选地包含小数点),后跟可选的指数。指数是一个“ e”或“ E”,后跟一个或多个数字。
字符串转换为数字
在数字上下文中评估字符串时,结果值和类型的确定如下。
如果该字符串包含任何字符“。”,“ e”或“ E”,则将被视为浮点型。否则,它将被评估为整数。
该值由字符串的初始部分给出。如果字符串以有效的数字数据开头,则将是使用的值。否则,该值为0(零)。有效数字数据是可选的符号,后跟一个或多个数字(可选地包含小数点),后跟可选的指数。指数是一个“ e”或“ E”,后跟一个或多个数字。