为什么var_dump在md5哈希的不同比较中返回true?

时间:2017-04-08 15:42:54

标签: php

我想知道为什么这段代码返回true而不是false

list1 = ['a', 'b', 'c', 'd']
nlist=[]
for x in list1:      
 for y in list1:
  nlist+=[x+y]
print(nlist)  

提前致谢,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

请改为尝试:

var_dump(md5('240610708') === md5('QNKCDZO'));

答案 1 :(得分:1)

看起来,像这些md5哈希,从' 0e'开始,被PHP解析为带指数的十进制数字(参见Comparison Operatorsvar_dump(100 == "1e2"); // 100 == 100 -> true)。

这就是他们被解释为平等的原因。为避免这种情况,必须使用严格的比较。

<强>更新

strcmp也给出了正确的结果。如果我理解正确,因为在strcmp

的情况下没有转化