2012-09-20 56 views
0

我想按值刪除數組項。密鑰不能被指定。這是數組。我已經按數值降序排列了數組。按值取消設置關聯數組

Array 
(
    [this] => 15 
    [that] => 10 
    [other] => 9 
    [random] => 8 
    [keys] => 4 
) 

如果我想取消設置的值小於10的所有項目。我該怎麼做?

+0

http://php.net/manual/en/function.array-filter.php –

+2

這只是一維數組。 – knittl

回答

0
$test = array(
    "this" => 15, 
    "that" => 10, 
    "other" => 9, 
    "random" => 8, 
    "keys" => 4 
); 

echo "pre: ";print_r($test); 
pre: Array ([this] => 15 [that] => 10 [other] => 9 [random] => 8 [keys] => 4) 

運行這段代碼:

foreach($test AS $key => $value) { 
    if($value <= 10) { 
     unset($test[$key]); 
    } 
} 

結果是:

echo "post: ";print_r($test); 
post: Array ([this] => 15) 
4

使用array_filter功能:

$a = array_filter($a, function($x) { return !($x < 10); }); 
+0

只適用於php 5.3+ – JvdBerg

+1

我知道有這樣做更好,更優雅的方式......這就是答案。對於舊版本'$ a = array_filter($ a,'functionName');'你必須傳遞一個字符串到前面聲明的函數的名字 –

+0

好的答案。雖然不使用5.3+。 – madphp

0
foreach($array as $key => $value) 
    if($value < 10) 
    unset($array[$key]) 
+0

如何引用一個值會產生任何影響的值? –

+0

你是對的,必須有一個腦筋 – JvdBerg

0

假定所有的值是整型:

for (i=9;i>=0;i--) 
{ 
    while (array_search($i, $assocArray) !== false) 
    { 
     unset($assocArray[array_search($i, $assocArray)]); 
    } 
} 

有可能這樣做的更優雅的方式,但發燒上有一個堅定的抓地力我的大腦:)

knittl的答案是正確的,但如果您使用的是舊版本的PHP ,你可以」 T使用匿名函數,只是做:

function filterFunc($v) 
{ 
    return $v >= 10; 
} 
$yourArray = array_filter($yourArray,'filterFunc'); 

感謝Knittl