我有以下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,
为什么这个检查在结果相等的情况下还在运行?我认为!=需要通过类型和值检查
因为你在比较数组和字符串,而它们是不一样的
尝试将测试更改为
if ($checkimghash[0] != $imghash)
!
!=
只比较值。相反是==
TRUE如果$a在类型杂耍后不等于$b。
!==
同时比较值和类型。相反的是===
TRUE如果$a不等于$b,或者它们不是同一类型。
来源:http://www.php.net/manual/en/language.operators.comparison.php
编辑
你问题中的var_dump
结果不清楚。如果将数组与字符串进行比较,则它们总是不同的。您可能希望通过$array[0]
因为如果$checkimghash
是一个数组,$imghash
是一个字符串,那么这两个将不会直接比较(在任何有意义的意义上),因为你比较一个数组(即字符串的集合)到一个字符串!选择要比较的数组元素,并在条件中使用该元素。