删除多维元素不出现在另一个数组中的数组?

时间:2011-03-17 19:10:03

标签: php arrays comparison multidimensional-array

我有一个名为$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 ID

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

我可以通过将$item_list[1]$item_list[1]['id']中的元素进行比较而不使用$id_list或类似方法手动迭代$item_list数组来删除foreach()吗? ?

1 个答案:

答案 0 :(得分:3)

$keep = array(12, 14);

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

请注意,您可以先array_flip $keep,然后使用isset()获取更优化的解决方案。