我有一个包含以下格式的子数组的多维数组:
[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)搜索数组,但不知道如何删除其他两个。有没有一种简单的方法来实现这一目标?
答案 0 :(得分:3)
这应该适合你:
(这里我只使用array_filter()
过滤掉所有数组,其中包含jackpot
或bingo
的元素,因此只有没有jackpot
或bingo
的数组其中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}}