使用PHP我试图根据元素的值从数组中删除元素。
例如,使用以下数组:
Array
(
[671] => Array
(
[0] => 1
[1] => 100
[2] => 1000
)
[900] => Array
(
[0] => 15
[1] => 88
}
)
我希望能够指定要删除的内部数组的on值。例如,如果我指定100,结果数组将如下所示:
Array
(
[671] => Array
(
[0] => 1
[2] => 1000
)
[900] => Array
(
[0] => 15
[1] => 88
}
)
我的第一个想法是使用foreach循环遍历数组,并在找到它时取消设置“违规”值,但这似乎并不引用原始数组,只是创建的循环变量。
感谢。
答案 0 :(得分:4)
foreach($array as $id => $data){
foreach($data as $index => $offending_val){
if($offending_val === 100){
unset($array[$id][$index]);
}
}
}
答案 1 :(得分:0)
您可以使用:
array_walk($your_array, function(&$sub, $key, $remove_value) {
$sub = array_diff($sub, array($remove_value));
}, 100);
答案 2 :(得分:-1)
一些想法:
您可以尝试使用array_filter,传入一个回调函数,如果该值是您要取消设置的值,则返回false。使用上面的示例:
$ new_inner_array = array_filter($ inner_array,$ callback_that_returns_false_if_value_100)
如果你想做更精细的事情,你可以探索SPL的ArrayIterator类,特别是offsetUnset()方法。