按键比较两个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 ) );