arsort 没有给出预期的结果
arsort does not give the expected result
$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 的字符串开始,但字符串的长度不同,因此在您的情况下会考虑最后一个反引号。查看示例数据,直到 :
之后所有值都相同,因此下一个要排序的字符是反引号、1 和 0,并且这些字符是反向排序的,这对我来说似乎是正确的。
给出我上面的评论作为答案,因为我猜这是正确的答案。
要扩展它,您可能需要使用 trim
执行 uasort 以删除反引号并进行反向排序。
$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 的字符串开始,但字符串的长度不同,因此在您的情况下会考虑最后一个反引号。查看示例数据,直到 :
之后所有值都相同,因此下一个要排序的字符是反引号、1 和 0,并且这些字符是反向排序的,这对我来说似乎是正确的。
给出我上面的评论作为答案,因为我猜这是正确的答案。
要扩展它,您可能需要使用 trim
执行 uasort 以删除反引号并进行反向排序。