在多维数组中搜索值,如果值不存在,请删除数组


Search multidimensional array for value, if value doesn't exists, remove array

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

[0] Array =>
    (
        [first] => Foo
        [second] => Bar
    )
[1] Array =>
    (
        [first] => Foo
        [second] => Bar
    )
[2] Array =>
    (
        [first] => Foo
        [second] => bingo
    )
[3] Array =>
    (
        [first] => jackpot
        [second] => bar
    )
我想在整个数组

中搜索"宾果游戏"和"大奖",并删除任何不包含这些值的子数组(在上面的示例中,应删除数组 0 和数组 1(。

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

这应该适合您:

(在这里,我只是使用 array_filter() 过滤掉所有数组,其中确实有一个包含 jackpotbingo 的元素,因此只有没有 jackpotbingo 的数组才会保留。在此之后,我获取这些数组的所有键,并array_keys()并循环访问它们并取消设置它们的数组(

<?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
(
    [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]);
}