2012-03-21 75 views

回答

7

您是否嘗試過使用array_filter()

$r = array_filter($a, function($var) { 
    return ($var['two'] === 2); 
}); 

的上面的輸出比你原來的代碼稍有不同:

Yours: 
array(
    0 => array('one' => 1, 'two' => 2), 
    1 => array('one' => 5, 'two' => 2) 
) 

Using array_filter: 
array(
    0 => array('one' => 1, 'two' => 2), 
    2 => array('one' => 5, 'two' => 2) // Note the key is 2, not 1 
) 

如果您需要的鍵摺疊,則可以跟進array_filter()array_values()array_multisort()

+0

絕對是我會去的方式。注意'array_filter'持久保存原始數組中的鍵是很重要的。 – 2012-03-21 17:44:43

+3

+1這是最好的答案。對於5.3以前的PHP,匿名函數應該用['create_function()'](http://php.net/manual/en/function.create-function.php)調用替換。正如對於PHP版本較老的人的通知一樣。 – Tadeck 2012-03-21 17:53:04

1

你可以編寫一個函數來做到這一點,然後使用array_walkarray_filter但這就是它。

只有這樣我才能看到清理它會更改原始數據結構。

相關問題