这是数组
$array = array(
'list[P] = 1',
'list[A] = 1',
'list[F] = 2',
'list[B] = 1'
);
这是我想要的输出
[0] => list[P] = 1
[1] => list[A] = 1
[2] => list[B] = 1
[3] => list[F] = 2
通知list[P]
仍然位于顶部,因为它是第一个值为1.因此只有数字排序
答案 0 :(得分:5)
尝试查看this documentation。
当您尝试对值的特定部分进行排序时,您需要编写自己的比较器,因此唯一可用的方法是usort函数。
uksort函数有两个属性,即您希望用于比较的数组和方法名称。然后编写此方法,该方法将两个值作为参数,并返回true为false,具体取决于它是大于还是小于。
因此,您必须对进入的值进行子串,以仅比较数字。
以下代码示例似乎可以正常工作
function cmp($a, $b)
{
$a = substr($a, -1);
$b = substr($b, -1);
return $a >= $b;
}
$array = array(
'list[P] = 1',
'list[A] = 1',
'list[F] = 2',
'list[B] = 1'
);
usort($array, "cmp");
var_dump($array);
相同的代码,仅使用PHP的匿名函数:
$array = array(
'list[P] = 1',
'list[A] = 1',
'list[F] = 2',
'list[B] = 1'
);
usort(
$array,
function ($a, $b){
$a = substr($a, -1);
$b = substr($b, -1);
return $a >= $b;
}
);
var_dump($array);
答案 1 :(得分:0)
如果以相同的顺序保存具有相同值的记录或键是很重要的,那么它们被输入到您正在编写的软件中的排序中,那么您将需要一种被归类为“稳定”的排序算法或方法。这限制了程序员在任何一个国家或地区内可用的排序方法类型,以符合相关规则。