晴歩雨描

晴れた日は外に出て歩き、雨の日は部屋で絵を描く

PHP)多次元連想配列のソート。array_multisort()。「My 野鳥図鑑」の野鳥の並びを五十音順に。

備忘録として。PHPの多次元連想配列のソート。

「My 野鳥図鑑」の野鳥の並びを五十音順にした。

以下、PHPソースの抜粋(説明のため、実際よりはシンプルにしてある)。野鳥データは適時順番を考えずに多次元連想配列に。

$birds[] = array(
	'名前' =>	'ルリビタキ',
	'場所' =>	'武田尾',
	'年月' =>	'2020.2',
	...
);
$birds[] = array(
	'名前' =>	'ジョウビタキ',
	'場所' =>	'淡路島公園',
	'年月' =>	'2020.2',
	...
);
$birds[] = array(
	'名前' =>	'キビタキ',
	'場所' =>	'神戸森林植物園',
	'年月' =>	'2020.5',
	...
);

これを五十音順にするために並び替える。連想配列のキー項目が全て同じならasort()で出来る。

asort($birds);

連想配列のキー項目の有無が一定でない場合。(例えば、'場所'や'年月'がないなど。)asort()では'名前'で五十音順にならないため、array_multisort()を使う。

foreach ((array) $birds as $key => $value) {
	$sort[$key] = $value['名前'];
}
array_multisort($sort, SORT_ASC, $birds);

並び替えたデータの表示。

<?php
foreach ($birds as $bird) {
?>
	<?= $bird['名前'] ?>
	<?= $bird['場所'] ?>
	<?= $bird['年月'] ?>
<?php
}
?>