Zeb*_*bra 2 php arrays sorting
这是阵列
$array = array(
'list[P] = 1',
'list[A] = 1',
'list[F] = 2',
'list[B] = 1'
);
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出
[0] => list[P] = 1
[1] => list[A] = 1
[2] => list[B] = 1
[3] => list[F] = 2
Run Code Online (Sandbox Code Playgroud)
通知list[P]仍然在顶部,因为它是第一个值为1.因此只有数字排序
试着看看这个文档.
当您尝试对值的特定部分进行排序时,您需要编写自己的比较器,因此唯一可用的方法是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);
Run Code Online (Sandbox Code Playgroud)
相同的代码,仅使用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);
Run Code Online (Sandbox Code Playgroud)