2011-09-03 241 views
2

使用PHP我试图根据元素的值从数组中删除元素。从PHP阵列中删除值

例如具有以下的数组:

Array 
(
    [671] => Array 
     (
      [0] => 1 
      [1] => 100 
      [2] => 1000 
     ) 
    [900] => Array 
     (
      [0] => 15 
      [1] => 88 
     } 
) 

我想能够在所述内阵列的指定的一个值,以除去。例如,如果我指定的100所产生的阵列将如下所示:

Array 
(
    [671] => Array 
     (
      [0] => 1 
      [2] => 1000 
     ) 
    [900] => Array 
     (
      [0] => 15 
      [1] => 88 
     } 
) 

我首先想到的是通过使用的foreach和取消“攻击”的价值时,我发现它的阵列循环,但似乎没有不引用原始数组,只是创建的循环变量。

谢谢。

回答

4
foreach($array as $id => $data){ 
    foreach($data as $index => $offending_val){ 
     if($offending_val === 100){ 
      unset($array[$id][$index]); 
     } 
    } 
} 
-1

夫妇的想法:

你可以尝试array_filter,传入值是否要取消设置一个返回false的回调函数。使用上面的例子:

$ new_inner_array = array_filter($ inner_array,$ callback_that_returns_false_if_value_100)

如果你想要做的更精致,你可以探索ArrayIterator类SPL的,特别是offsetUnset()方法。

0

您可以使用:

array_walk($your_array, function(&$sub, $key, $remove_value) { 
    $sub = array_diff($sub, array($remove_value)); 
}, 100);