我有一个多维数组,其中包含以下格式的子数组:
[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()
过滤掉所有数组,其中确实有一个包含 jackpot
或 bingo
的元素,因此只有没有 jackpot
或 bingo
的数组才会保留。在此之后,我获取这些数组的所有键,并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]);
}