Как работает asort? - PullRequest
       26

Как работает asort?

3 голосов
/ 28 февраля 2011

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

Итак, мой вопрос точно, как asort поддерживает связь при сортировке? Я думал, что массив можно отсортировать по ключу или по значению, есть ли третий стержень сортировки?

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Из руководства :

asort - сортировка массива и поддержание связи индекса

Так, например:

  • Asort будет просто сортировать по значению в порядке возрастания, сохраняя связь index => value.
  • Arsort - то же самое, но в обратном порядке.

В руководстве достаточно ясно указано Функция сортировки массива здесь .

Базовая функция сортирует только по ключу или значениям, но есть варианты:

  • index-> ​​связь значений поддерживается или нет
  • Использование пользовательской функции для сортировки или нет
  • Asc или Desc
  • с учетом регистра или нет
1 голос
/ 28 февраля 2011

«Третий стержень» - это фактическое расположение в памяти / массиве.
Это будет ясно видно при выполнении foreach для следующих двух массивов, которые одинаковы, но имеют разный порядок:

$x1=array('mmm'=>'mmm','bbb'=>'bbb','ccc'=>'ccc');
$x2=array('ccc'=>'ccc','bbb'=>'bbb','mmm'=>'mmm');

foreach($x1 as $k=>$v) echo "{$k} {$v}";
foreach($x2 as $k=>$v) echo "{$k} {$v}";

выполнение asort по умолчанию для этих двух массивов приведет в обоих случаях к:

$x1=array('bbb'=>'bbb','ccc'=>'ccc','mmm'=>'mmm');
$x2=array('bbb'=>'bbb','ccc'=>'ccc','mmm'=>'mmm');
...