# natsort

(PHP 4, PHP 5, PHP 7)

natsort — 用“自然排序”算法对数组排序

### 说明

natsort ( array `&$array` ) : bool

本函数实现了一个和人们通常对字母数字字符串进行排序的方法一样的排序算法并保持原有键／值的关联，这被称为“自然排序”。本算法和通常的计算机字符串排序算法（用于 sort()）的区别见下面示例。

> Note:

> If two members compare as equal, their relative order in the sorted array is undefined.

### 参数

`array`

  输入的 array。

### 返回值

成功时返回 `TRUE`， 或者在失败时返回 `FALSE`。

### 更新日志

版本 | 说明
--- | ---
5.2.10 | 用零填充的数字字符串 (例如 '00005')现在本质上会忽略掉填充的前道零。

### 范例

Example #1 natsort() 基本用法的操作示例

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

    asort($array1);
    echo "Standard sorting\n";
    print_r($array1);

    natsort($array2);
    echo "\nNatural order sorting\n";
    print_r($array2);
    ?>

以上例程会输出：

    Standard sorting
    Array
    (
        [3] => img1.png
        [1] => img10.png
        [0] => img12.png
        [2] => img2.png
    )

    Natural order sorting
    Array
    (
        [3] => img1.png
        [2] => img2.png
        [1] => img10.png
        [0] => img12.png
    )

For more information see: Martin Pool's » Natural Order String Comparison page.

Example #2 natsort() examples demonstrating potential gotchas

    <?php
    echo "Negative numbers\n";
    $negative = array('-5','3','-2','0','-1000','9','1');
    print_r($negative);
    natsort($negative);
    print_r($negative);

    echo "Zero padding\n";
    $zeros = array('09', '8', '10', '009', '011', '0');
    print_r($zeros);
    natsort($zeros);
    print_r($zeros);
    ?>

以上例程会输出：

    Negative numbers
    Array
    (
        [0] => -5
        [1] => 3
        [2] => -2
        [3] => 0
        [4] => -1000
        [5] => 9
        [6] => 1
    )
    Array
    (
        [2] => -2
        [0] => -5
        [4] => -1000
        [3] => 0
        [6] => 1
        [1] => 3
        [5] => 9
    )

    Zero padding
    Array
    (
        [0] => 09
        [1] => 8
        [2] => 10
        [3] => 009
        [4] => 011
        [5] => 0
    )
    Array
    (
        [5] => 0
        [1] => 8
        [3] => 009
        [0] => 09
        [2] => 10
        [4] => 011
    )

### 参见

- natcasesort() - 用“自然排序”算法对数组进行不区分大小写字母的排序
- 数组排序函数对比
- strnatcmp() - 使用自然排序算法比较字符串
- strnatcasecmp() - 使用“自然顺序”算法比较字符串（不区分大小写）