用“自然排序”演算法對陣列排序

natsort

(PHP 4, PHP 5, PHP 7, PHP 8)

natsort 用「自然排序」演算法對陣列排序

說明

natsort(array &$array): bool

本函式實現了一個和人們通常對字母數字字串進行排序的方法一樣的排序演算法並保持原有鍵/值的關聯,這被稱為「自然排序」。本演算法和通常的計算機字串排序演算法(用於 sort())的區別見下面示例。

注意:

如果兩個成員完全相同,那麼它們將保持原來的順序。 在 PHP 8.0.0 之前,它們在排序陣列中的相對順序是未定義的。

注意:

重置陣列中的內部指針,指向第一個元素。

參數

array

輸入的 array。

返回值

總是返回 true

範例

示例 #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
)

更多資訊見 Martin Pool 的 » Natural Order String Comparison 頁面。

示例 #2 natsort() 示例,解釋了潛在的陷阱

<?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
)

參見

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *