ZetCode

PHP natcasesort 函数

最后修改于 2025 年 3 月 13 日

PHP 的 natcasesort 函数使用不区分大小写的“自然排序”算法对数组进行排序。它会保持索引关联,并且对于排序包含数字的字符串非常有用。

基本定义

natcasesort 实现了一种自然排序算法,同时忽略大小写差异。这类似于人类对字符串进行排序的方式。

语法:natcasesort(array &$array): bool。该函数会就地对数组进行排序,并在成功时返回 true,在失败时返回 false。

自然排序意味着字符串中的数字是按数值而不是字母顺序进行比较的。例如,“item2”排在“item10”之前。

基本的 natcasesort 示例

这演示了数组的简单不区分大小写的自然排序。

basic_natcasesort.php
<?php

$files = ["file1.txt", "File10.txt", "file2.txt", "FILE20.txt"];
natcasesort($files);

print_r($files);

输出将是:Array ( [0] => file1.txt [2] => file2.txt [1] => File10.txt [3] => FILE20.txt )。该函数会忽略大小写并正确排序数字。

混合大小写字符串

展示了 natcasesort 如何处理具有不同大小写模式的字符串。

mixed_case.php
<?php

$items = ["Apple", "banana", "apricot", "Banana", "apple"];
natcasesort($items);

print_r($items);

忽略大小写,将所有相似的单词放在一起。

自然数字排序

演示了字符串中数字的自然排序。

number_sorting.php
<?php

$versions = ["version-2", "Version-10", "version-1", "VERSION-20"];
natcasesort($versions);

print_r($versions);

尽管大小写不同,数字仍按数值排序。

保持键关联

展示了 natcasesort 如何保留原始的键值关系。

key_association.php
<?php

$data = [
    "id3" => "Value C",
    "ID1" => "Value A",
    "id10" => "Value D",
    "Id2" => "Value B"
];
natcasesort($data);

print_r($data);

排序后,键保持与值的关联。

与其他排序函数的比较

说明了 natcasesort 与常规排序函数之间的区别。

comparison.php
<?php

$items = ["img1.png", "Img10.png", "img2.png", "IMG12.png"];

$regular = $items;
sort($regular);

$natural = $items;
natsort($natural);

$naturalCase = $items;
natcasesort($naturalCase);

echo "Regular sort:\n";
print_r($regular);

echo "\nNatural sort:\n";
print_r($natural);

echo "\nNatural case-insensitive sort:\n";
print_r($naturalCase);

常规排序按字母顺序排序 (1,10,12,2)。自然排序会考虑数字但区分大小写。Natcasesort 结合了自然排序和不区分大小写。

最佳实践

来源

PHP natcasesort 文档

本教程介绍了 PHP 的 natcasesort 函数,并通过实际示例展示了其在自然不区分大小写数组排序中的用法。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面有十多年的经验。

列出 所有 PHP 数组函数