arsort没有给出预期的结果

时间:2018-03-16 14:55:10

标签: php sorting backticks

$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:`
)

你明白为什么反对会搞砸了吗?

1 个答案:

答案 0 :(得分:1)

反引号将被视为排序字符。因为一开始都是一个不是isuse但是字符串的长度不同所以在你的情况下考虑最后的反引号。查看示例数据,直到:所有值相同,所以下一个排序的字符是反引号,1和0,并且那些是反向排序的,这对我来说是正确的。

将上述评论作为答案,因为我认为这是正确的答案。

要扩展它,您可能需要使用trim来执行uasort以删除反引号然后反向排序。