Арсорт не дает ожидаемого результата

$a=array('a'=>'`a:1:`','b'=>'`a:`','c'=>'`a:0:`');
arsort($a);
print_r($a);

Я ожидаю, что этот код выведет

Array
(
[a] => `a:1:`
[c] => `a:0:`
[b] => `a:`
)

но это на самом деле выводит

Array
(
[b] => `a:`
[a] => `a:1:`
[c] => `a:0:`
)

Ты понимаешь, почему неприятности возникают?

0

Решение

Бэкстик будет считаться символом для сортировки. Поскольку все начинаются с одного, который не является isuse, но длина строк отличается, поэтому последний обратный удар рассматривается в вашем случае. Смотрите пример данных, пока после : все значения одинаковы, поэтому следующие символы для сортировки — это backtick, 1 и 0, и они упорядочены в обратном порядке, что мне кажется правильным.

Дать мой комментарий сверху как ответ, потому что я думаю, что это правильный ответ.

Чтобы продлить его, вам может понадобиться сделать uasort, используя trim чтобы удалить галочки и сортировку в обратном порядке.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]