0

我有以下 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, 

为什么尽管结果相同,但该检查仍在运行?我认为 != 需要通过类型和值检查

4

4 回答 4

0

!= 是值,!== 是值和类型

于 2013-05-30T08:30:48.070 回答
0

因为您正在将数组与字符串进行比较,但它们并不相同

尝试将您的测试更改为

if ($checkimghash[0] != $imghash)
于 2013-05-30T08:32:03.100 回答
0

!=只是比较值。对面的是==

如果在类型杂耍之后 $a 不等于 $b,则为TRUE 。

!==比较值和类型。对面的是===

如果 $a 不等于 $b,或者它们不是同一类型,则为TRUE 。

来源:http ://www.php.net/manual/en/language.operators.comparison.php

编辑

您的问题的var_dump结果尚不清楚。如果您将数组与字符串进行比较,那么它们总是不同的。您可能希望通过以下方式将数组元素的值与另一个字符串进行比较$array[0]

于 2013-05-30T08:32:43.083 回答
0

因为如果$checkimghash是一个数组和$imghash一个字符串,那么两者将不会直接比较(在任何有意义的意义上),因为您正在将一个数组(即字符串的集合)与一个字符串进行比较!选择您要比较的数组元素并在条件中使用它。

于 2013-05-30T08:33:01.073 回答