PHP - 比较两个数组
问题描述:
这是我的2个阵列:PHP - 比较两个数组
Array
(
[25] => Array
(
[items_to_give] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
[items_to_get] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
)
[26] => Array
(
[items_to_give] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
[items_to_get] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
)
[36] => Array
(
[items_to_give] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
[items_to_get] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
)
)
和
Array
(
[25] => Array
(
[items_to_give] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
[items_to_get] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
)
[26] => Array
(
[items_to_give] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
[items_to_get] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
)
[30] => Array
(
[items_to_give] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
[items_to_get] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
)
)
,现在我想比较这些阵列,并返回其包含在两个数组所有arrayitems。在这个例子中是[25]和[26]。
,返回的数组应该是这样的(正如我所说[25]和[26]都包含在两个数组所以其返回):
Array
(
[25] => Array
(
[items_to_give] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
[items_to_get] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
)
[26] => Array
(
[items_to_give] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
[items_to_get] => Array
(
[0] => Array
(
[xx] => xx
[xx] => xx
)
)
)
)
什么我已经尝试过:
$result = array_map("unserialize", array_intersect($this->serialize_array_values($array1),$this->serialize_array_values($array2)));
function serialize_array_values($arr){
foreach($arr as $key=>$val){
sort($val);
$arr[$key]=serialize($val);
}
return $arr;
}
但是这会返回错误格式的数组。 [items_to_give]和[items_to_get]正被转换为索引[0]和[1],这是不可取的。
我想数组停留,因为他是返回时,这意味着我需要[items_to_give]和[items_to_get]而不是索引[0]和[1]
什么是其他可能的解决方案?感谢解决方案。
答
试试这个功能:
function my_array_diff($arr1, $arr2)
{
$res = array();
foreach ($arr1 as $val1) {
$val1 = serialize($val1);
foreach ($arr2 as $key2 => $val2) {
if (serialize($val2) == $val1) {
$res[$key2] = $val2;
}
}
}
return $res;
}
+0
作品完美!非常感谢。 – lhuber
尝试'和array_diff()' –
array_intersect()和array_intersect_assoc() –
听起来你正在寻找[array_intersect_key](http://php.net/manual/ en/function.array-intersect-key.php) – billyonecan