2014-04-05 19 views
1

假設$改編刪除多個「壞」的值是這樣的:如何從一個數組

Array 
(
[0] => 43 
[1] => 120 
[2] => 5 
[3] => 5465 
[4] => 397 
) 

,我想111-5000之間的任意值被刪除。如果正確完成,我的陣列將是:

Array 
(
[0] => 43 
[1] => 5 
[2] => 5465 

) 

希望按鍵更新自己。任何想法如何實現?

回答

4

使用array_filter()一個自定義回調刪除不需要的值:

$array = array(43,120,5,5465,397); 
$filtered = array_filter($array, function($val){ 
    return ($val < 111 || $val > 5000); 
}); 
print_r($filtered); // Array ([0] => 43 [2] => 5 [3] => 5465) 

See it in action

你也可以做

$array = array(43,120,5,5465,397); 
$filtered = array_filter($array, function($val){ 
    return !($val > 111 && $val < 5000); 
}); 
+0

太棒了!謝謝! – osakagreg

1

您可以使用下面的邏輯過於實現。

foreach ($array as $key => $value) { 
    if($value >= 111 && $value <= 5000) { 
     unset($array[$key]); 
    } 
} 

但約翰在上述文章中提到的是最佳解決方案。它比這個邏輯更快。

謝謝!