我有以下PHP代码
if ($checkimghash != $imghash)
{
the $checkimghash is var_dumped as this array(2) { [0]=> string(40) "da77c24758c6259274bfa171a32d5c4a4a2cb71c" ["PdfHash"]=> string(40) "da77c24758c6259274bfa171a32d5c4a4a2cb71c", the variable $imghash var_dumps as this
string(40) "da77c24758c6259274bfa171a32d5c4a4a2cb71c,
为什么即使结果相同,此检查也会运行?我想!=需要传递类型和值检查
答案 0 :(得分:0)
!=是值,!==是值和类型
答案 1 :(得分:0)
因为您要将数组与字符串进行比较而且它们不相同
尝试将测试更改为
if ($checkimghash[0] != $imghash)
答案 2 :(得分:0)
!=
只是比较价值。它的反面是==
TRUE 如果$ j在类型杂耍后不等于$ b。
!==
正在比较价值和类型。它的反面是===
TRUE 如果$ a不等于$ b,或者它们的类型不同。
来源:http://www.php.net/manual/en/language.operators.comparison.php
修改强>
您的问题中的var_dump
结果不清楚。如果要将数组与字符串进行比较,那么它们总是不同的。您可能希望通过$array[0]
答案 3 :(得分:0)
因为如果$checkimghash
是一个数组而$imghash
是一个字符串,那么这两个不会直接比较(在任何有意义的意义上),因为你正在比较一个数组(即一个字符串的集合)一个字符串!选择您要比较的数组元素,并在条件中使用它。