1年に1回くらい必要になり、そのたびに妙に時間かけてググっている気がするので…
以下のようなデータ構造で定義されたT○KI○のメンバーを身長(降順)でソートする場合を想定します。
array_multisortだとメンバー名のところが吹っ飛ぶのでuasortを使います。
usort.php
<?php
$ary = [
"shigeru" => ["height" => 173, "birthday" => '1970/11/17', "出身地" => "奈良県"],
"tatsuya" => ["height" => 167, "birthday" => '1972/01/10', "出身地" => "埼玉県"],
"taichi" => ["height" => 167, "birthday" => '1974/09/02', "出身地" => "東京都"],
"masahiro" => ["height" => 181, "birthday" => '1977/01/11', "出身地" => "北海道"],
"tomoya" => ["height" => 184, "birthday" => '1978/11/07', "出身地" => "神奈川県"],
];
uasort($ary, function($x, $y) {
$key = 'height';
if ( $x[$key] == $y[$key] ) { return 0; }
else if ( $x[$key] > $y[$key] ) { return -1; }
else { return 1; }
});
var_dump($ary);
結果です。
array(5) {
["tomoya"]=>
array(3) {
["height"]=>
int(184)
["birthday"]=>
string(10) "1978/11/07"
["出身地"]=>
string(12) "神奈川県"
}
["masahiro"]=>
array(3) {
["height"]=>
int(181)
["birthday"]=>
string(10) "1977/01/11"
["出身地"]=>
string(9) "北海道"
}
["shigeru"]=>
array(3) {
["height"]=>
int(173)
["birthday"]=>
string(10) "1970/11/17"
["出身地"]=>
string(9) "奈良県"
}
["tatsuya"]=>
array(3) {
["height"]=>
int(167)
["birthday"]=>
string(10) "1972/01/10"
["出身地"]=>
string(9) "埼玉県"
}
["taichi"]=>
array(3) {
["height"]=>
int(167)
["birthday"]=>
string(10) "1974/09/02"
["出身地"]=>
string(9) "東京都"
}
}