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
)
參見
- natcasesort() - 用“自然排序”演算法對陣列進行不區分大小寫字母的排序
- 陣列排序函式對比
- strnatcmp() - 使用自然排序演算法比較字串
- strnatcasecmp() - 使用“自然順序”演算法比較字串(不區分大小寫)