搜索多维数组的值,如果值不存在,则删除数组

时间:2015-04-06 14:01:42

标签: php arrays

我有一个包含以下格式的子数组的多维数组:

[0] Array =>
    (
        [first] => Foo
        [second] => Bar
    )
[1] Array =>
    (
        [first] => Foo
        [second] => Bar
    )
[2] Array =>
    (
        [first] => Foo
        [second] => bingo
    )
[3] Array =>
    (
        [first] => jackpot
        [second] => bar
    )

我想在整个数组中搜索'bingo'和'jackpot'并删除任何不包含这些值的子数组(在上面的示例中,应该删除数组0和数组1)。

我理解如何使用array_search('bingo',$ myarray)搜索数组,但不知道如何删除其他两个。有没有一种简单的方法来实现这一目标?

1 个答案:

答案 0 :(得分:3)

这应该适合你:

(这里我只使用array_filter()过滤掉所有数组,其中包含jackpotbingo的元素,因此只有没有jackpotbingo的数组其中1}}或<?php $keys = array_keys(array_filter($arr, function($v, $k){ if(in_array("jackpot", $v) || in_array("bingo", $v) ) return FALSE; return TRUE; }, ARRAY_FILTER_USE_BOTH)); foreach($keys as $key) unset($arr[$key]); print_r($arr); ?> 将保留。在此之后,我使用array_keys()获取这些数组的所有键并循环遍历它们并取消设置它们的数组)

Array
(
    [2] => Array
        (
            [first] => Foo
            [second] => bingo
        )

    [3] => Array
        (
            [first] => jackpot
            [second] => bar
        )

)

输出:

foreach($arr as $k => $v) {
    if(!in_array("jackpot", $v) && !in_array("bingo", $v))
        unset($arr[$k]);
}

修改

即使是更简单的解决方案也只是这样做:

{{1}}