配列を特定のキーでソート (PHP)


$dataarray[0] = array("keyA" => "abc","keyB => 99);
$dataarray[1] = array("keyA" => "def","keyB => 50);
$dataarray[2] = array("keyA" => "ghi","keyB => 70);

などという配列を入れ子になっている”keyB”で並べたい場合は、sortやksortではなく、array_multisortを使います。
例として、上記配列の”keyB”で並べ直す場合は、以下のようになります。

foreach($dataarray as $key => $row){
	$temp[$key] = $row["keyB"];
}
array_multisort($temp,SORT_DESC,$dataarray);

仮の配列($temp)を作ってそれを元に配列を並べ直す感じです。このときオプションで渡されるSORT_DESCによって$tempの内容がソートされ、それに従って元の配列がソートされます。

さらに配列のキーを複数持つことも可能ですが、詳しくはPHPのマニュアルをごらんください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

SPAM防止のため数字と漢数字の算数の計算をお願いします。 * Time limit is exhausted. Please reload CAPTCHA.