Удаление массивов, многомерные элементы которых не отображаются в другом массиве? - PullRequest
1 голос
/ 17 марта 2011

У меня есть многомерный массив с именем $item_list:

Array
(
    [0] => Array
        (
            [id] => 12
            [customer] => Joe Bloggs
            [details] => Text
        )

    [1] => Array
        (
            [id] => 13
            [customer] => Fred Smith
            [details] => Text
        )

    [2] => Array
        (
            [id] => 14
            [customer] => John Doe
            [details] => Text
        )
)

У меня есть другой массив из другой базы данных (следовательно, нет решения SQL), который называется $id_list, который содержит идентификаторы $item_list, которыехочу keep :

Array
(
    [0] => 12
    [1] => 14
)

Есть ли способ удалить $item_list[1], сравнив $item_list[1]['id'] с элементами в $id_list без ручной итерации по массивам $item_listиспользуя foreach() или подобное?

1 Ответ

3 голосов
/ 17 марта 2011
$keep = array(12, 14);

$data = array_filter($data, function ($a) use ($keep)
{
  return in_array($a['id'], $keep);
});

Обратите внимание, что сначала вы могли бы array_flip $keep и использовать isset() для более оптимизированного решения.

...