No Image

Php сортировать массив по ключу

СОДЕРЖАНИЕ
6 просмотров
10 марта 2020

(PHP 4, PHP 5, PHP 7)

krsort — Сортирует массив по ключам в обратном порядке

Описание

Сортирует массив по ключам в обратном порядке, сохраняя отношения между ключами и значениями. Эта функция полезна, в основном, для работы с ассоциативными массивами.

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

Вы можете изменить поведение сортировки, используя дополнительный параметр sort_flags , подробнее см. sort() .

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

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

Примеры

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

(PHP 3, PHP 4, PHP 5)

ksort — Отсортировать массив по ключам

Описание bool ksort ( array &array [, int sort_flags] )

Сортирует массив по ключам, сохраняя отношения между ключами и значениями. Функция полезна, в основном, для работы с ассоциативными массивами.

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

Пример 1. Пример использования ksort()

= array( "d" => "lemon" , "a" => "orange" , "b" => "banana" , "c" => "apple" );
ksort ( $fruits );
reset ( $fruits );
while (list( $key , $val ) = each ( $fruits )) <
echo "$key = $val
" ;
>
?>

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

a = orange b = banana c = apple d = lemon

Вы можете изменить поведение сортировки, используя дополнительный параметр sort_flags , подробнее см. sort() .

Замечание: Второй параметр был добавлен в PHP 4.

В PHP есть несколько функций для сортировки массивов, на этой странице дается их общее описание.

Основные различия между функциями:

  • В одних функциях массивы ( array ) сортируются по ключам элементов, в других по значениям: $array[‘ключ’] = ‘значение’;
  • В каких-то функциях связь между ключами и значениями после сортировки сохраняется, в каких-то нет. Это может приводить к тому, что ключи будут сбрасываться в числовые значения (0, 1, 2, . ).
  • Различия в порядке сортировки: алфавитный, возрастающий, убывающий, числовой, естественный, случайный или определенный пользователем
  • Примечание: Все функции сортировки модифицируют переданный массив, а не возвращают отсортированную копию
  • Если функции определяют два элемента как равные, порядок сортировки в этом случае не определен (нестабильная сортировка).
Читайте также:  Как изменить размер значков рабочего стола

Свойства функций сортировки

Имя функции Сортирует по Сохраняет связь ключ – значение Порядок сортировки Похожие функции
array_multisort() значению ассоциативные да, числовые нет первый массив или настройки сортировки array_walk()
asort() значению да по возрастанию arsort()
arsort() значению да по убыванию asort()
krsort() ключу да по убыванию ksort()
ksort() ключу да по возрастанию asort()
natcasesort() значению да естественный, нечувствительный к регистру natsort()
natsort() значению да естественный natcasesort()
rsort() значению нет по убыванию sort()
shuffle() значению нет случайный array_rand()
sort() значению нет по возрастанию rsort()
uasort() значению да определяется пользователем uksort()
uksort() ключу да определяется пользователем uasort()
usort() значению нет определяется пользователем uasort()

User Contributed Notes 3 notes

While this may seem obvious, user-defined array sorting functions ( uksort(), uasort(), usort() ) will *not* be called if the array does not have *at least two values in it*.

The following code:

function usortTest ( $a , $b ) <
var_dump ( $a );
var_dump ( $b );
return – 1 ;
>

$test = array( ‘val1’ );
usort ( $test , "usortTest" );

$test2 = array( ‘val2’ , ‘val3’ );
usort ( $test2 , "usortTest" );

string(4) "val3"
string(4) "val2"

The first array doesn’t get sent to the function.

Please, under no circumstance, place any logic that modifies values, or applies non-sorting business logic in these functions as they will not always be executed.

Another way to do a case case-insensitive sort by key would simply be:

( $array , ‘strcasecmp’ );
?>

Since strcasecmp is already predefined in php it saves you the trouble to actually write the comparison function yourself.

Stabilizing the sort functions (in this case, usort).

function stable_usort (& $array , $cmp )
<
$i = 0 ;
$array = array_map (function( $elt )use(& $i )
<
return [ $i ++, $elt ];
>, $array );
usort ( $array , function( $a , $b )use( $cmp )
<
return $cmp ( $a [ 1 ], $b [ 1 ]) ?: ( $a [ 0 ] – $b [ 0 ]);
>);
$array = array_column ( $array , 1 );
>
?>

Читайте также:  Флеш накопитель silicon power

Tags each array element with its original position in the array so that when the comparison function returns 0 the tie can be broken to put the earlier element first.

Комментировать
6 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector