"自然順" アルゴリズムでエントリをソートする

# ArrayObject::natsort

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

ArrayObject::natsort — "自然順" アルゴリズムでエントリをソートする

### 説明

public function ArrayObject::natsort(): true

このメソッドは、英数字からなる文字列を人間が並び替えるのと同じようなアルゴリズムでソートし、 キーと値の対応は保持します。このようなソートのことを "自然順" と呼びます。 このアルゴリズムと、コンピュータの通常の文字列ソートアルゴリズム (ArrayObject::asort で使われているもの) の違いは、以下のサンプルを参照ください。

> 注意: 比較結果が等しくなる二つの要素があった場合、それらの並び順は保持されます。PHP 8.0.0 より前のバージョンでは、ソートした配列におけるそれらの並び順は不定でした。

### パラメータ

この関数にはパラメータはありません。

### 戻り値

値を返しません。

### 変更履歴

バージョン | 説明
--- | ---
8.2.0 | 戻り値の型が、`true` になりました。これより前のバージョンでは、bool でした。

### 例

例1 ArrayObject::natsort() の例

    <?php
    $array = array("img12.png", "img10.png", "img2.png", "img1.png");

    $arr1 = new ArrayObject($array);
    $arr2 = clone $arr1;

    $arr1->asort();
    echo "Standard sorting\n";
    var_dump($arr1);

    $arr2->natsort();
    echo "\nNatural order sorting\n";
    var_dump($arr2);
    ?>

上の例の出力は以下となります。

    Standard sorting
    object(ArrayObject)#1 (1) {
      ["storage":"ArrayObject":private]=>
      array(4) {
        [3]=>
        string(8) "img1.png"
        [1]=>
        string(9) "img10.png"
        [0]=>
        string(9) "img12.png"
        [2]=>
        string(8) "img2.png"
      }
    }

    Natural order sorting
    object(ArrayObject)#2 (1) {
      ["storage":"ArrayObject":private]=>
      array(4) {
        [3]=>
        string(8) "img1.png"
        [2]=>
        string(8) "img2.png"
        [1]=>
        string(9) "img10.png"
        [0]=>
        string(9) "img12.png"
      }
    }

より詳細な情報は、Martin Pool の » Natural Order String Comparison を参照ください。

### 参考

- ArrayObject::asort() - 値でエントリをソートする
- ArrayObject::ksort() - キーでエントリをソートする
- ArrayObject::natcasesort() - 大文字小文字を区別しない "自然順" アルゴリズムでエントリをソートする
- ArrayObject::uasort() - ユーザー定義の比較関数でエントリをソートし、キーとの対応は保持する
- ArrayObject::uksort() - ユーザー定義の比較関数を使って、キーでエントリをソートする
- natsort() - "自然順"アルゴリズムで配列をソートする

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open