嗨,我有多维数组 -
Array
(
[user_attempts] => 0
[2] => Array
(
[0] => 1
[1] => 4
)
[3] => Array
(
[0] => 32
[1] => 23
)
[4] => Array
(
[0] => asdsa
)
[1] => Array
(
[0] => Earth
)
)
我的第二个数组如下
Array
(
[1] => Array
(
[0] => Earth
)
[2] => Array
(
[0] => 2
[1] => 3
)
[3] => Array
(
[0] => 32
[1] => 23
)
[4] => Array
(
[0] => asdsa
[1] => asdas
)
)
我需要与两个多维数组相交 - 所以结果将是
Array
(
[1] => Array
(
[0] => Earth
)
[3] => Array
(
[0] => 32
[1] => 23
)
)
任何人都可以帮我解决这个问题。
我试过的是使用array_intersect(),但它限制为单个数组而不是多维我猜。
答案 0 :(得分:2)
PHP内置了大量功能,但有时您仍需要自己实现。您可以使用现有功能轻松完成您想要做的事情。
目标是执行以下步骤:
以下是一种方法:
function array_intersect_2dim (array $a1, array $a2) {
$keys = array_intersect(array_keys($a1), array_keys($a2));
$return = array();
foreach ($keys as $key) {
$return[$key] = array_intersect($a1[$key], $a2[$key]);
if (sizeof($return[$key]) == 0) {
unset($return[$key]);
}
}
return $return;
}
它仅适用于两个维度。如果你需要更多,你必须建立一个递归方法,遵循完全相同的原则。
答案 1 :(得分:0)
为了便于比较,您可以在此处使用serialize/unserialize
。然后使用array_intersect()
。试试这个例子:Sample Output
$array1 = array( 'user_attemps' => 0, 2 => array(1, 4), 3 => array(32, 23), 4 => array('asdsa'), 1 => array('Earth'),);
$array2 = array( 1 => array('Earth'), 2 => array(2, 3), 3 => array(32, 23), 4 => array('asdsa', 'asdas'),);
$result = array_map('unserialize',array_intersect(array_map('serialize', $array1), array_map('serialize', $array2)));
print_r($result);