2012-03-21 9 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_values()array_filter()またはarray_multisort()

+0

私が行く方法は間違いありません。 'array_filter'が元の配列からキーを保持していることに注目することは重要です。 –

+3

+1これが最良の答えです。 5.3より古いPHPの場合、無名関数は['create_function()'](http://php.net/manual/en/function.create-function.php)呼び出しで置き換えてください。古いPHPバージョンを使用している人のための通知として。 – Tadeck

1

あなたは可能性をフォローアップすることができますこれを行う関数を書いてからarray_walkまたはarray_filterを使用してください。

私がそれをもっときれいにする方法は、元のデータ構造を変更することだけです。

関連する問題