マコブログ|ゲームブログ

「ゲーム × プログラミング」で生きていく

【PHP基礎】多次元配列を任意の値で並び替える方法【初心者向け】

PHP

この記事では、PHPで多次元配列を任意の値で並び替える方法について解説しています。結論から言うと、array_multisortという関数を使えば多次元の配列操作を簡単に行う事が出来ます、サンプルコードを見ながら解説していきましょう。

目次【本記事の内容】 [ click ]

多次元連想配列の並び替え方

例えばこんな二次元連想配列があったとします

// 配列を用意
$array = [];

// 配列に値を格納
$array[] = array('id' => 'd-1','age' => 30,'name' => '山田');
$array[] = array('id' => 'a-2','age' => 20,'name' => '田中');
$array[] = array('id' => 'b-1','age' => 40,'name' => '鈴木');
$array[] = array('id' => 'c-1','age' => 10,'name' => '後藤');
$array[] = array('id' => 'a-1','age' => 50,'name' => '橋本');

上記コードにある配列の二次元のキーを使って並び替えたいと思います、まずはidを使ってアルファベット順に並び替えたいと思います。

①:idで並び替える(アルファベット順)

foreach ($array as $key => $value) {
  $sort[$key] = $value['id'];
}

並び替えるためにソート用の配列を用意する必要があるので上記コードのようにします、idで並びかえるので$valueのキーは‘id’にします。ここまで用意できたらarray_multisort関数の出番です。

array_multisort($sort, SORT_ASC, $array);

第一引数にソート用の配列、第二引数にソートの種類、第三引数に並び替えたい配列を指定してあげましょう、SORT_ASCSORT_DESCにすることで降順でソートすることも可能です、今回は昇順でいきましょう。

出力して確認

foreach ($array as $key => $value) {
  echo $value['id'].':'.$value['name'].'
'; }

出力結果を比較

出力結果を比較

比較してみるとidを基準にソートされていることが分かるかと思います、最後にageをキーにして並び替えてみます。

②:数字で並び替え(大きさ)

手順はさきほどと同じです。ソート用配列のキーを指定し直します。

foreach ($array as $key => $value) {
  $sort[$key] = $value['age'];
}

並び替え処理をして

array_multisort($sort, SORT_ASC, $array);

出力して確認

foreach ($array as $key => $value) {
  echo $value['age'].':'.$value['name'].'
'; }

出力結果を比較

出力結果を比較

ageを基準にソートされている事がわかります、簡単ですね。

③:コードまとめ【完成】

処理をまとめるとこんな感じ

// 配列を用意
$array = [];

// 配列に値を格納
$array[] = array('id' => 'd-1','age' => 30,'name' => '山田');
$array[] = array('id' => 'a-2','age' => 20,'name' => '田中');
$array[] = array('id' => 'b-1','age' => 40,'name' => '鈴木');
$array[] = array('id' => 'c-1','age' => 10,'name' => '後藤');
$array[] = array('id' => 'a-1','age' => 50,'name' => '橋本');

// ソート用の配列を用意
foreach ($array as $key => $value) {
  $sort[$key] = $value['age'];
}

// ソート用配列と対象の配列を使って
// array_multisort関数で並び替えを実行
array_multisort($sort, SORT_ASC, $array);

// 出力して確認
foreach ($array as $key => $value) {
  echo $value['age'].':'.$value['name'].'<br>';
}

array_multisort関数を使うことで多次元連想配列でも並び替えできることが分かったかと思います、キーを指定して並び替えることはPHPを扱う職場ではちょくちょくあるので覚えておいて損はないと思います。

他にもやり方はあると思いますが、この方法を使うのが一番簡単なのでプログラミング初心者の方は是非参考にしてください。今回は以上になります。

チャンネル登録はこちら

うぇぶとまとのYouTubeチャンネル
うぇぶとまとうぇぶとまと

YouTubeチャンネルでは日々の暮らしをVlog形式で発信しています!ブログよりブログらしい内容になっていますので是非見てみて下さい!