strnatcmp

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

strnatcmpСравнивает строк алгоритмом natural order

Описание

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():

<?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) без учёта регистра символов