Сортировка массива в PHP (индексные и ассоциативные)

mang phpСуществует большое количество функций для удобной работы с ними. В частности, сегодня речь пойдёт о сортировке. Ничего нового открывать я не буду, просто познакомлю с самыми нужными для ежедневного кодинга.

Сортирование индексированных массивов: sort () and rsort ()

Функция sort () сортирует значения в индексированном массиве в возрастающем порядке. Это означает, что A идёт перед Z, 0 -перед 9. Заглавные буквы перед строчными, буквы перед цифрами. Например:

$myArray = ( 1, 2, 'a', 'b', 'A', 'B' );
sort( $myArray );
// Отображает "A B a b 1 2"
foreach ( $myArray as $val ) echo "$val ";

rsort () — это sort () наоборот:

$myArray = array( 1, 2, 'a', 'b', 'A', 'B' );
rsort( $myArray );
// Отображает "2 1 b a B A"
foreach ( $myArray as $val ) echo "$val ";

Все sorting-функции возвращают true при успехе.

Сортировка ассоциативных массивов: asort () and arsort ()

sort () и rsort () очень хороши для индексированных массивов, где не нужно волноваться о связи ключа и значения. Могут получится неожиданности) Например:

$movie = array( "title" => "Rear Window",
                "director" => "Alfred Hitchcock",
                "year" => 1954,
                "minutes" => 112 );

sort( $movie );
// Отобразит "Array ( [0] => Alfred Hitchcock [1] => Rear Window [2] => 112 [3] => 1954 )"
print_r( $movie );

Видно, что произошла путаница, и оригинальная структура «title», «director», «year» and «minutes» поменялась.
Если же вы хотите сортировать ассоциативный массив по первичному ключу, используйте функции asort () и arsort () Эти функции учитывают связь ключей и их значений
За возрастающий порядок сортировки отвечает функция asort ():

$movie = array( "title" => "Rear Window",
                "director" => "Alfred Hitchcock",
                "year" => 1954,
                "minutes" => 112 );

asort( $movie );
// Отображает "Array ( [director] => Alfred Hitchcock [title] => Rear Window [minutes] => 112 [year] => 1954 )"
print_r( $movie );

arsort () наоборот:

$movie = array( "title" => "Rear Window",
                "director" => "Alfred Hitchcock",
                "year" => 1954,
                "minutes" => 112 );

arsort( $movie );
// Отображает "Array ( [year] => 1954 [minutes] => 112 [title] => Rear Window [director] => Alfred Hitchcock )"
print_r( $movie );
Продолжение следуем...

Запись навигация

Top