对于php强比较和弱比较:md5(),sha1()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。
时间: 2024-09-15 14:14:39 浏览: 25
PHP中的`md5()`和`sha1()`函数是用于生成字符串哈希值的安全散列算法,它们通常用于验证数据完整性或作为唯一标识符。然而,这些函数设计上是针对单个值的,不是为了处理数组或者其他复杂的数据结构。
当你尝试将数组传递给这些函数时,由于它们期望的是单一输入,数组会被转换成一个字符串,通常是按照某种顺序(如索引键或预定义的排序规则)排列并连接起来。如果数组内容发生变化,即便元素数量相同,排列后的字符串也将不同,因此原本期望的“强比较”(如 == 运算符直接比较)在这种情况下会失败,因为两个 NULL 是始终相等的。
对于这种场景,如果你需要对数组内容进行哈希对比,应该先将数组序列化为字符串再进行处理,或者遍历数组元素分别计算哈希。例如:
```php
function arrayHash($array) {
return md5(serialize($array));
}
$array1 = [1, 2, 3];
$array2 = [1, 2, 4];
$hash1 = arrayHash($array1);
$hash2 = arrayHash($array2);
if ($hash1 === $hash2) {
echo "Arrays are equal";
} else {
echo "Arrays are not equal";
}
```