Php arsort没有给出预期的结果
我希望这段代码能够输出Php arsort没有给出预期的结果,php,sorting,backticks,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:` ) 你知道为什么反勾号会弄乱吗?反勾号将被视为用于排序的字符。由于所有字符串都以一个非isuse的字符串开始,但字符串的长度不同,因此在您的示例
$a=array('a'=>'`a:1:`','b'=>'`a:`','c'=>'`a:0:`');
arsort($a);
print_r($a);
但它实际上是输出的
Array
(
[a] => `a:1:`
[c] => `a:0:`
[b] => `a:`
)
你知道为什么反勾号会弄乱吗?反勾号将被视为用于排序的字符。由于所有字符串都以一个非isuse的字符串开始,但字符串的长度不同,因此在您的示例中会考虑最后一个反勾号。请参见示例数据,直到
:
之后,所有值都是相同的,因此下一个要排序的字符是backtick,1和0,它们的顺序是相反的,这对我来说似乎是正确的
从上面给出我的评论作为答案,因为我想这是正确的答案
要扩展它,您可能需要使用
trim
执行uasort,以删除反勾号并反向排序。较短的字符串获胜,这里没有意外。反勾号将被视为用于排序的字符。由于所有字符串都以一个非isuse的字符串开始,但字符串的长度不同,因此在您的示例中会考虑最后一个反勾号。参见示例,直到<代码>:< /代码>所有的值都是相同的,所以下一个字符是背斜,1和0,并且这些命令是反向的,这对我是正确的。哦,该死的,我一直在考虑回退不是字符串的一部分,请考虑将它标记为如果它解决了你的问题的答案。
Array
(
[b] => `a:`
[a] => `a:1:`
[c] => `a:0:`
)