从PHP数组中删除值

时间:2011-09-03 21:35:02

标签: php arrays

使用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循环遍历数组,并在找到它时取消设置“违规”值,但这似乎并不引用原始数组,只是创建的循环变量。

感谢。

3 个答案:

答案 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()方法。