如果两个数组的键相等,最快的比较方法是什么?
例如。
array1: array2:
'abc' => 46, 'abc' => 46,
'def' => 134, 'def' => 134,
'xyz' => 34, 'xyz' => 34,
在这种情况下,结果应为TRUE(相同的键)
和
array1: array2:
'abc' => 46, 'abc' => 46,
'def' => 134, 'def' => 134,
'qwe' => 34, 'xyz' => 34,
'xyz' => 34,
结果应为FALSE(某些键不同)
array_diff_key()返回一个空数组......
答案 0 :(得分:16)
使用array_diff_key
,就是这样。如你所说,它返回一个空数组;这就是应该做的。
给定array_diff_key($array1, $array2)
,如果array1中的所有array1的键都存在,它将返回一个空数组。要确保数组相等,您需要确保array1中存在所有array2的键。如果任一调用返回非空数组,则表示您的数组键不相等:
function keys_are_equal($array1, $array2) {
return !array_diff_key($array1, $array2) && !array_diff_key($array2, $array1);
}
答案 1 :(得分:4)
答案 2 :(得分:3)
如何使用===代替?你知道,运营商是否平等?
$array1 = array(
'abc' => 46,
'def' => 134,
'xyz' => 34
);
$array2 = array(
'abc' => 46,
'def' => 134,
'xyz' => 34,
);
var_dump( array_keys( $array1 ) === array_keys( $array2 ) );