php 連想配列を値で逆順にソートする

  • 作成日 2021.09.19
  • php
php 連想配列を値で逆順にソートする

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

環境

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

arsort使い方

arsortを使用すれば、連連想配列を値で逆順にソートすることが可能です。

$result = arsort(配列);
// 戻り値は成功すれば true 失敗すれば falseが返る

以下は、連想配列を値で逆順にソートするサンプルコードとなります。

<?php

$arr = ["a" => 2, "b" => 1, "c" => 3];

$result = arsort($arr);

var_dump($result); // bool(true)

print_r($arr);

実行結果

Array
(
    [c] => 3
    [a] => 2
    [b] => 1
)

また、第二引数には、様々なオプションがあります。

  • SORT_REGULAR : 型変換行わずに比較する。
  • SORT_NUMERIC : 数値として比較する。
  • SORT_STRING : 文字列として比較する。
  • SORT_LOCALE_STRING : ロケール基づいて比較する。
  • SORT_NATURAL : 人間が認識しやすい形で比較する。
  • SORT_FLAG_CASE : 大文字、小文字を区別せずに比較する。

例えば「SORT_NATURAL」を指定すると、以下の指定していないコードの

<?php

$arr = ["a" => "a1", "b" => "a20", "c" => "a3"];

$result = arsort($arr);

var_dump($result); // bool(true)

print_r($arr);

実行結果は以下となりますが、

Array
(
    [c] => a3
    [b] => a20
    [a] => a1
)

指定すると、

<?php

$arr = ["a" => "a1", "b" => "a20", "c" => "a3"];

$result = arsort($arr,SORT_NATURAL);

var_dump($result); // bool(true)

print_r($arr);

認識しやすい実行結果となります。

Array
(
    [b] => a20
    [c] => a3
    [a] => a1
)