Удалить ключи массива, если его значения существуют в предыдущих ключах

Array
(
[0 0 0 4] => Array
(
[0] => 0 0
[1] => 0 1
[2] => 0 2
[3] => 0 3
[4] => 0 4
)

[0 1 0 5] => Array
(
[0] => 0 1
[1] => 0 2
[2] => 0 3
[3] => 0 4
[4] => 0 5
)

[0 1 4 1] => Array
(
[0] => 0 1
[1] => 1 1
[2] => 2 1
[3] => 3 1
[4] => 4 1
)

[0 2 0 5] => Array
(
[0] => 0 2
[1] => 0 3
[2] => 0 4
[3] => 0 5
)

[0 2 0 6] => Array
(
[0] => 0 2
[1] => 0 3
[2] => 0 4
[3] => 0 5
[4] => 0 6
)

[0 3 1 4] => Array
(
[0] => 0 3
[1] => 0 4
[2] => 1 3
[3] => 1 4
)

[0 3 3 3] => Array
(
[0] => 0 3
[1] => 1 3
[2] => 2 3
[3] => 3 3
)

[0 3 4 3] => Array
(
[0] => 0 3
[1] => 1 3
[2] => 2 3
[3] => 3 3
[4] => 4 3
)

[0 5 1 6] => Array
(
[0] => 0 5
[1] => 0 6
[2] => 1 5
[3] => 1 6
)

[0 5 4 5] => Array
(
[0] => 0 5
[1] => 1 5
[2] => 2 5
[3] => 3 5
[4] => 4 5
)

[0 6 3 6] => Array
(
[0] => 0 6
[1] => 1 6
[2] => 2 6
[3] => 3 6
)

[0 6 4 6] => Array
(
[0] => 0 6
[1] => 1 6
[2] => 2 6
[3] => 3 6
[4] => 4 6
)

[1 0 2 1] => Array
(
[0] => 1 0
[1] => 1 1
[2] => 2 0
[3] => 2 1
)

[1 1 4 1] => Array
(
[0] => 1 1
[1] => 2 1
[2] => 3 1
[3] => 4 1
)

[1 1 5 1] => Array
(
[0] => 1 1
[1] => 2 1
[2] => 3 1
[3] => 4 1
[4] => 5 1
)

[1 2 5 2] => Array
(
[0] => 1 2
[1] => 2 2
[2] => 3 2
[3] => 4 2
[4] => 5 2
)

[1 4 2 5] => Array
(
[0] => 1 4
[1] => 1 5
[2] => 2 4
[3] => 2 5
)

[1 5 5 5] => Array
(
[0] => 1 5
[1] => 2 5
[2] => 3 5
[3] => 4 5
[4] => 5 5
)

[2 1 2 5] => Array
(
[0] => 2 1
[1] => 2 2
[2] => 2 3
[3] => 2 4
[4] => 2 5
)

[2 2 2 5] => Array
(
[0] => 2 2
[1] => 2 3
[2] => 2 4
[3] => 2 5
)

[2 2 2 6] => Array
(
[0] => 2 2
[1] => 2 3
[2] => 2 4
[3] => 2 5
[4] => 2 6
)

[2 2 3 3] => Array
(
[0] => 2 2
[1] => 2 3
[2] => 3 2
[3] => 3 3
)

[2 2 5 2] => Array
(
[0] => 2 2
[1] => 3 2
[2] => 4 2
[3] => 5 2
)

[2 5 5 5] => Array
(
[0] => 2 5
[1] => 3 5
[2] => 4 5
[3] => 5 5
)

[3 0 3 3] => Array
(
[0] => 3 0
[1] => 3 1
[2] => 3 2
[3] => 3 3
)

[3 0 3 4] => Array
(
[0] => 3 0
[1] => 3 1
[2] => 3 2
[3] => 3 3
[4] => 3 4
)

[3 1 4 2] => Array
(
[0] => 3 1
[1] => 3 2
[2] => 4 1
[3] => 4 2
)

[3 4 4 5] => Array
(
[0] => 3 4
[1] => 3 5
[2] => 4 4
[3] => 4 5
)

[4 5 5 6] => Array
(
[0] => 4 5
[1] => 4 6
[2] => 5 5
[3] => 5 6
)

)

например, это мой мульти-массив, и каждый ключ (0 1 0 5, 0 1 4 1) имеет свои значения. Я хочу сделать комбинацию из набора удаляемых ключей, если их значения существовали в предыдущих массивах ключей.

Например: ключ «0 1 4 1» имеет значение «0 1», которое существует в предыдущем ключе «0 1 0 5», в этом случае мы удаляем (отменяем) значение 0 1 4 1. Как я буду делать это для всех элементов. И составьте комбинации размеров ключей массива. Я надеюсь, вы понимаете это

0

Решение

Если я правильно понимаю, что вы собираетесь, вот один из способов сделать это путем фильтрации массива множеств с помощью array_intersect(), Обратный вызов фильтра должен возвращать true, только если пересечение текущего набора и предыдущего набора пусто.

$result = array_filter($sets, function($set) {
static $previous = [];
$matches = array_intersect($set, $previous);
$previous = $set;
return !$matches;
});

Код в первой части ответа показывает, как удалить каждый массив, имеющий общие значения с предыдущим отдельным массивом. Если вам нужно удалить наборы, которые имеют общие значения с любой из предыдущих массивов, я бы сделал это так:

$result = array_filter($sets, function($set) {
static $previous = [];
foreach ($set as $value) {
if (isset($previous[$value])) $matches = true;
$previous[$value] = true;
}
return empty($matches);
});
0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector