按键比较两个PHP数组

时间:2011-06-06 13:25:29

标签: php arrays multidimensional-array comparison

如果两个数组的键相等,最快的比较方法是什么?

例如。

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()返回一个空数组......

3 个答案:

答案 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)

使用array_keys获取密钥数组,然后使用array_diff

OR

直接使用array_diff_key

答案 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 ) );