strnatcmp

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

strnatcmpСравнивает строк алгоритмом естественного упорядочивания

Описание

strnatcmp(string $string1, string $string2): int

Функция реализует алгоритм сравнения, который упорядочивает буквенно-цифровые строки подобно тому, как это сделал бы человек, такой алгоритм называется «естественное упорядочивание» (англ. natural ordering). Функция учитывает регистр при сравнении строк.

Список параметров

string1

Первая строка.

string2

Вторая строка.

Возвращаемые значения

Функция возвращает значение меньше 0, если строка string1 меньше строки string2; значение больше 0, если строка string1 больше строки string2, и 0, если строки равны. Из значения возврата невозможно надёжно вывести конкретное значение, кроме знака числа.

Список изменений

Версия Описание
8.2.0 Функция больше не гарантирует возврат разницы strlen($string1) - strlen($string2), когда длины строк не равны, но теперь вместо этого иногда возвращает -1 или 1.

Примеры

Следующий параграф приводит пример, который показывает отличие этого алгоритма от стандартных функций сравнения наподобие функции strcmp():

Пример #1 Пример сравнения строк функцией strcmp()

<?php

$arr1
= $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");

echo
"Стандартный алгоритм сравнения\n";
usort($arr1, "strcmp");
print_r($arr1);

echo
"\nАлгоритм \"natural order\"\n";
usort($arr2, "strnatcmp");
print_r($arr2);

?>

Результат выполнения приведённого примера:

Стандартный алгоритм сравнения
Array
(
    [0] => img1.png
    [1] => img10.png
    [2] => img12.png
    [3] => img2.png
)

Алгоритм "natural order"
Array
(
    [0] => img1.png
    [1] => img2.png
    [2] => img10.png
    [3] => img12.png
)
Подробнее об алгоритме рассказывает страница «» Сравнение строк в естественном порядке».

Смотрите также

  • preg_match() - Выполняет проверку на соответствие регулярному выражению
  • strcasecmp() - Сравнивает строки без учёта регистра в бинарно безопасном режиме
  • substr() - Возвращает подстроку
  • stristr() - Регистронезависимый вариант функции strstr
  • strcmp() - Сравнивает строки в бинарно-безопасном режиме: как последовательности байтов
  • strncmp() - Сравнивает первые n символов строк в бинарно безопасном режиме
  • strncasecmp() - Сравнивает первые n символов строк без учёта регистра в бинарно-безопасном режиме
  • strnatcasecmp() - Сравнивает строки без учёта регистра по алгоритму natural order
  • strstr() - Находит первое вхождение подстроки
  • natsort() - Сортирует массив алгоритмом «естественного упорядочивания»
  • natcasesort() - Сортирует массив алгоритмом естественной сортировки (natural order) без учёта регистра символов