PHP многомерный массив пересекаются

Я написал этот код:

<?php

$aArray = array
(
array(0,0,0),
array(1,0,0),
array(2,0,0),
array(3,0,0),
array(4,0,0),
array(5,0,0),
array(6,0,0),
array(7,0,0)
);

$jump = array
(
array(0,0,0),
array(1,0,0),
array(9,7,4),
array(3,0,0),
array(4,0,0),
array(5,0,0),
array(6,0,0),
array(7,0,0)
);

$result = array_intersect($aArray, $jump);

echo var_dump($result);

результат, который я получаю, таков:

array(8) {
[0]=> array(3) {
[0]=> int(0)
[1]=> int(0)
[2]=> int(0) }
[1]=> array(3) {
[0]=> int(1)
[1]=> int(0)
[2]=> int(0) }
[2]=> array(3) {
[0]=> int(2)
[1]=> int(0)
[2]=> int(0) }
[3]=> array(3) {
[0]=> int(3)
[1]=> int(0)
[2]=> int(0) }
[4]=> array(3) {
[0]=> int(4)
[1]=> int(0)
[2]=> int(0) }
[5]=> array(3) {
[0]=> int(5)
[1]=> int(0)
[2]=> int(0) }
[6]=> array(3) {
[0]=> int(6)
[1]=> int(0)
[2]=> int(0) }
[7]=> array(3) {
[0]=> int(7)
[1]=> int(0)
[2]=> int(0) }
}

почему второй индекс не возвращает ноль? Я попытался очистить кэш на случай, если в нем хранятся старые значения. Я также заметил, что если я удаляю последний массив из массива переходов, он все равно выдает 7,0,0. Это странная аномалия?

1

Решение

array_intersect() не является рекурсивным, он видит внутренние массивы как просто массив. Вам нужно будет использовать что-то вроде этого:

function array_intersect_recursive() {

foreach(func_get_args() as $arg) {
$args[] = array_map('serialize', $arg);
}
$result = call_user_func_array('array_intersect', $args);

return array_map('unserialize', $result);
}

$result = array_intersect_recursive($aArray, $jump);
1

Другие решения

Других решений пока нет …