【PHP】array_multisort関数で多次元配列をソート(並び替え)する

常の配列のソート(並び替え)はasort()などを使いますが、
多次元配列の場合array_multisort()を使用します。

今回は、京都府・大阪府・兵庫県の順番を電話番号順に並び替えようとおもいます。

まず、配列に値を代入します。
$dataArr配列の中に都道府県のデータ配列を入れて二次元配列にします。

次に、ソートする準備をします。
ここでソートする際の基準となる配列をつくります。

最後にarray_multisort関数で完了

<?php
	// 1.配列をに代入
	$dataArr[] = array("pref" => "京都府", "city" => "京都市", "tel" => "075");
	$dataArr[] = array("pref" => "大阪府", "city" => "大阪市", "tel" => "06");
	$dataArr[] = array("pref" => "兵庫県", "city" => "神戸市", "tel" => "078");

	// 2.配列をソートする準備
	foreach($dataArr as $key => $row){
		$sort[$key] = $row["tel"];
	}

	// 3.配列をソート
	array_multisort($sort, SORT_ASC, $dataArr);

	// 4.配列を出力
	print_r($dataArr);
?>

■ソート方法指定フラグ
SORT_ASC – 昇順にソート
SORT_DESC – 降順にソート

■ソート型のフラグ
SORT_REGULAR – 普通に比較
SORT_NUMERIC – 数値的に比較
SORT_STRING – 文字列として比較

【出力結果】

Array (
 [0] => Array ( [pref] => 大阪府 [city] => 大阪市 [tel] => 06 )
 [1] => Array ( [pref] => 京都府 [city] => 京都市 [tel] => 075 )
 [2] => Array ( [pref] => 兵庫県 [city] => 神戸市 [tel] => 078 )
) 

京都府・大阪府・兵庫県 → 大阪府・京都府・兵庫県
の順に並び変わりました。

コメントを残す

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>