PHP 的 strnatcmp() 函數採用「自然排序演算法」來比較兩個字串,並且區分大小寫。這與電腦預設的字典序排序不同,自然排序更符合人類直觀的比較邏輯。
在一般電腦排序中,"10" 會排在 "2" 前面,因為逐字元比較時 "1" 小於 "2"。但自然排序演算法會將數字視為整體數值,因此 2 小於 10,這樣的結果更符合人類預期。
strnatcmp(string $string1, string $string2): int
| 參數 | 說明 |
|---|---|
| string1 | 必要。第一個要比較的字串 |
| string2 | 必要。第二個要比較的字串 |
<?php
echo strnatcmp("2Hello world!", "10Hello world!"); // 輸出 -1
echo "<br />";
echo strnatcmp("10Hello world!", "2Hello world!"); // 輸出 1
?>
第一個比較中,"2..." 小於 "10...",故回傳 -1;第二個相反,回傳 1。
strnatcmp() 區分大小寫。 若需不區分大小寫的自然排序比較,請使用 strnatcasecmp()。