php 連想配列の特定のキーの値でソートする

  • 作成日 2021.09.27
  • php
php 連想配列の特定のキーの値でソートする

phpで、array_multisortを使用して、連想配列の特定のキーの値でソートするサンプルコードを記述してます。phpのバージョンは8.0です。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0
  • nginx 1.14.1

キーの値でソート

以下は、連想配列の特定のキーの値でソートするサンプルコードとなります。

<?php

$arr = [
    0 => [ 'id' => 40, 'title' => 'java'],
    1 => [ 'id' => 10, 'title' => 'react'],
    2 => [ 'id' => 30, 'title' => 'nuxt'],
    3 => [ 'id' => 20, 'title' => 'typescript'],
];

array_multisort(array_column($arr, 'id'), SORT_ASC, $arr);

print_r($arr);

実行結果

Array
(
    [0] => Array
        (
            [id] => 10
            [title] => react
        )

    [1] => Array
        (
            [id] => 20
            [title] => typescript
        )

    [2] => Array
        (
            [id] => 30
            [title] => nuxt
        )

    [3] => Array
        (
            [id] => 40
            [title] => java
        )

)

降順にする場合は「SORT_DESC」に変更します。

array_multisort(array_column($arr, 'id'), SORT_DESC, $arr);

実行結果

Array
(
    [0] => Array
        (
            [id] => 40
            [title] => java
        )

    [1] => Array
        (
            [id] => 30
            [title] => nuxt
        )

    [2] => Array
        (
            [id] => 20
            [title] => typescript
        )

    [3] => Array
        (
            [id] => 10
            [title] => react
        )

)

別のキーでソートする場合は、キー名を変更します。

array_multisort(array_column($arr, 'title'), SORT_DESC, $arr);

実行結果

Array
(
    [0] => Array
        (
            [id] => 20
            [title] => typescript
        )

    [1] => Array
        (
            [id] => 10
            [title] => react
        )

    [2] => Array
        (
            [id] => 30
            [title] => nuxt
        )

    [3] => Array
        (
            [id] => 40
            [title] => java
        )

)