2011-09-03 237 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);