$arr1 = array('potato'=>1,'tomato'=>2,'apple'=>5,'banana'=>10);
$arr2 = array('orange'=>20,'tomato'=>3,'apple'=>5,'banana'=>20);
我需要返回数组的函数('tomato','banana'),认为它省略了一个或另一个数组中不存在的键。 Apple在两个数组中都具有相同的值,因此应该省略 - 返回的应该只是其值不同并设置的键
答案 0 :(得分:4)
这应该有效(demo):
$arr1 = array('potato'=>1,'tomato'=>2,'apple'=>5,'banana'=>10);
$arr2 = array('orange'=>20,'tomato'=>3,'apple'=>5,'banana'=>20);
$result = array_keys(array_diff(array_intersect_key($arr1, $arr2), $arr2));
print_r($result);
输出:
Array
(
[0] => tomato
[1] => banana
)
参考:
答案 1 :(得分:2)
$array3 = array();
foreach(array_intersect_key($array1, $array2) as $key => $v){
if($array1[$key] != $array2[$key]) $array3[] = $key;
}
答案 2 :(得分:2)
<?php
/**
* Returns an array which contains keys which are in both $array1
* and $array2, and which have different values.
*/
function getKeysWhichMatchAndHaveDifferentValues($array1, $array2)
{
$arrIntersected = array_intersect_key($array1, $array2);
foreach($arrIntersected as $key => $value)
{
if($array2[$key] == $value) {
unset($arrIntersected[$key]);
}
}
return array_keys($arrIntersected);
}
$arr1 = array('potato'=>1,'tomato'=>2,'apple'=>5,'banana'=>10);
$arr2 = array('orange'=>20,'tomato'=>3,'apple'=>5,'banana'=>20);
$final = getKeysWhichMatchAndHaveDifferentValues($arr1, $arr2);
echo '<pre>' . print_r($final) . '</pre>';
?>
答案 3 :(得分:1)
我会做简单的循环。
当然,如果您需要比较大型数组,本机PHP函数可以提供很多帮助。现在仍然无法回答什么是最佳的做法。
答案 4 :(得分:0)
您可以使用array_intersect
和array_keys
执行此操作。
$arr3 = array_intersect(array_keys($arr1), array_keys($arr2));