natsort

(PHP 4, PHP 5, PHP 7)

natsortСортирует массив, используя алгоритм "natural order"

Описание

natsort ( array &$array ) : bool

Эта функция реализует алгоритм сортировки, при котором порядок буквенно-цифровых строк будет привычным для человека. Такой алгоритм называется "natural ordering". Отличие алгоритма "natural ordering" от обычных алгоритмов сортировки, применяемых, например, функцией sort() можно увидеть в примере ниже.

Замечание:

Если оба сравниваемых значения эквивалентны, то порядок их в отсортированном массиве не определен.

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

array

Входной массив.

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

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

Версия Описание
5.2.10 В строках, отбитых нулями спереди (например, '00005') теперь данная отбивка игнорируется.

Примеры

Пример #1 Простой пример использования natsort()

<?php
$array1 
$array2 = array("img12.png""img10.png""img2.png""img1.png");

asort($array1);
echo 
"Обычная сортировка\n";
print_r($array1);

natsort($array2);
echo 
"\nСортировка natural order\n";
print_r($array2);
?>

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

Обычная сортировка
Array
(
    [3] => img1.png
    [1] => img10.png
    [0] => img12.png
    [2] => img2.png
)

Сортировка natural order
Array
(
    [3] => img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)

Подробнее см. статью Martin Pool » Natural Order String Comparison.

Пример #2 Примеры использования различных трюков с natsort()

<?php
echo "Отрицательные числа\n";
$negative = array('-5','3','-2','0','-1000','9','1');
print_r($negative);
natsort($negative);
print_r($negative);

echo 
"Отбивка нулями\n";
$zeros = array('09''8''10''009''011''0');
print_r($zeros);
natsort($zeros);
print_r($zeros);
?>

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

Отрицательные числа
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
)

Отбивка нулями
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
)

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