$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:`
)
Ты понимаешь, почему неприятности возникают?
Бэкстик будет считаться символом для сортировки. Поскольку все начинаются с одного, который не является isuse, но длина строк отличается, поэтому последний обратный удар рассматривается в вашем случае. Смотрите пример данных, пока после :
все значения одинаковы, поэтому следующие символы для сортировки — это backtick, 1 и 0, и они упорядочены в обратном порядке, что мне кажется правильным.
Дать мой комментарий сверху как ответ, потому что я думаю, что это правильный ответ.
Чтобы продлить его, вам может понадобиться сделать uasort, используя trim
чтобы удалить галочки и сортировку в обратном порядке.
Других решений пока нет …