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


(PHP 4, PHP 5)

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

Описание

bool natsort ( array &$array )

Эта функция реализует алгоритм сортировки, при котором порядок буквенно-цифровых строк будет привычным для человека. Такой алгоритм называется "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);

echo 
"Другие символы\n";
$images_oops = array('image_1.jpg','image_12.jpg''image_21.jpg''image_4.jpg');
print_r($images_oops);
natsort($images_oops);
print_r($images_oops);

echo 
"Сортировка по ключу\n";
$smoothie = array('orange' => 1'apple' => 1'yogurt' => 4'banana' => 4);
print_r($smoothie);
uksort$smoothie'strnatcmp');
print_r($smoothie);
?>

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

 Отрицательные числа 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 )  Другие символы Array (     [0] => image_1.jpg     [1] => image_12.jpg     [2] => image_21.jpg     [3] => image_4.jpg ) Array (     [0] => image_1.jpg     [3] => image_4.jpg     [1] => image_12.jpg     [2] => image_21.jpg )  Сортировка по ключу Array (     [orange] => 1     [apple]  => 1     [yogurt] => 4     [banana] => 4 ) Array (     [apple]  => 1     [banana] => 4     [orange] => 1     [yogurt] => 4 ) 

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