【PHP】多次元連想配列でソートをする方法!

こんばんは。もっさんです。

最近あまり更新ができていませんでした(汗)

早速、表題の件記述していきます!

以下の配列があるとします。

<?php

$array = array(
  array(
    'id' => 5,
    'name' => "tanaka"
  ),
  array(
    'id' => 3,
    'name' =>"satou"
  ),
  array(
    'id' => 2,
    'name' => "suzuki"
  ),
  array(
    'id' => 4,
    'name' => "itou"
  ),
  array(
    'id' => 1,
    'name' => "honda"
  ),);

?>

そのままの実行結果

Array
(
    [0] => Array
        (
            [id] => 5
            [name] => tanaka
        )

    [1] => Array
        (
            [id] => 3
            [name] => satou
        )

    [2] => Array
        (
            [id] => 2
            [name] => suzuki
        )

    [3] => Array
        (
            [id] => 4
            [name] => itou
        )

    [4] => Array
        (
            [id] => 1
            [name] => honda
        )

)

'id'でソートをしたいときに、array_multisort()を使う

<?php

$array = array(
  array(
    'id' => 5,
    'name' => "tanaka"
  ),
  array(
    'id' => 3,
    'name' =>"satou"
  ),
  array(
    'id' => 2,
    'name' => "suzuki"
  ),
  array(
    'id' => 4,
    'name' => "itou"
  ),
  array(
    'id' => 1,
    'name' => "honda"
  ),);

  foreach($array as $key => $value) {
    $sort[$key] = $value['id']; //ソートしたい値を配列に入れる
  }

  array_multisort($sort, SORT_ASC, $array); //今回は昇順でソート
  print_r($array);

?>

実行結果

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => honda
        )

    [1] => Array
        (
            [id] => 2
            [name] => suzuki
        )

    [2] => Array
        (
            [id] => 3
            [name] => satou
        )

    [3] => Array
        (
            [id] => 4
            [name] => itou
        )

    [4] => Array
        (
            [id] => 5
            [name] => tanaka
        )

)

こんな感じです。
array_multisort(①ソートの基準 , ②ソートの条件 , ③ソートしたい配列)
これからも細々と書いていきます。