Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按键比较两个PHP数组_Php_Arrays_Multidimensional Array_Comparison - Fatal编程技术网

按键比较两个PHP数组

按键比较两个PHP数组,php,arrays,multidimensional-array,comparison,Php,Arrays,Multidimensional Array,Comparison,如果两个数组的键相等,最快的比较方法是什么 例如 array1: array2: 'abc' => 46, 'abc' => 46, 'def' => 134, 'def' => 134, 'xyz' => 34, 'xyz' => 34, 在这种情况下,结果应为真(相同的键) 以及: 结果应为FALSE(某些键不同) array_diff_key()返回一个空数组…用于获取密钥数组,然后使用 或 直接使用。使用,

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

例如

array1:          array2:

'abc' => 46,     'abc' => 46,
'def' => 134,    'def' => 134,
'xyz' => 34,     'xyz' => 34, 
在这种情况下,结果应为真(相同的键)

以及:

结果应为FALSE(某些键不同)

array_diff_key()返回一个空数组…

用于获取密钥数组,然后使用

直接使用。

使用,这就是它的用途。正如您所说,它返回一个空数组;这就是它应该做的

给定
array\u diff\u key($array1,$array2)
,如果array1的所有键都存在于array2中,它将返回一个空数组。要确保数组相等,则需要确保array2的所有键都存在于array1中。如果其中一个调用返回非空数组,则您知道数组键不相等:

function keys_are_equal($array1, $array2) {
  return !array_diff_key($array1, $array2) && !array_diff_key($array2, $array1);
}

改用===怎么样?你知道,相等运算符


array\u diff\u key
的结果与空数组进行比较,如果这是
true
你就会知道这两个数组都有相同的键。应该
array('a'=>'b')
返回
true
而不是
array('a'=>'c')
?@Teneff这是不明确的。视情况而定。如果键的值无关紧要,那么是的,两个数组都应该返回true。如果这些值确实重要,则为false.yes,
true
——表示它们相等。基本上我只想知道数组是否有相同的键@Yoshi:我不确定我明白你的意思。array_keys()给我一个空数组,我知道我的数组不同。。。如果我将其与空数组进行比较,我不是总能得到真的吗?它真的返回空数组吗???我尝试了您的示例,它返回大小为1的数组。我猜你自己也用了另一个例子@Yoshi别忘了你必须双向运行!(例如,
$a=array('a'=>'c');$b=array('a'=>'c','b'=>'f');
根据您的判断将被视为相等)哦,就是这样:D我需要反转array上的参数。\u key\u diff:)谢谢如果两个数组具有相同的键,则此报告为真,但是不同的顺序?
==
并不比
=
更适合这个目的。
function keys_are_equal($array1, $array2) {
  return !array_diff_key($array1, $array2) && !array_diff_key($array2, $array1);
}
$array1 = array(
    'abc' => 46,
    'def' => 134,
    'xyz' => 34
);


$array2 = array(
    'abc' => 46,
    'def' => 134,
    'xyz' => 34,
);


var_dump( array_keys( $array1 ) === array_keys( $array2 ) );