如何按值对多维数组排序

如何根据“0”的值对该数组进行排序;订单“;钥匙

尽管这些值当前是连续的,但它们并不总是连续的

数组
(
[0]=>数组
(
[标签]=>a7e87329b5eab8578f4f1098a152d6f4
[标题]=>花
[订单]=>3
)
[1] =>数组
(
[标签]=>b24ce0cd392a5b0b8dedc66c25213594
[标题]=>免费
[订单]=>2
)
[2] =>数组
(
[标签]=>E7D31FC602FB2DE144D18CDFFD816B
[标题]=>准备就绪
[订单]=>1
)
)

试试乌斯波特。如果您仍然使用PHP 5.2或更早版本,则必须首先定义排序函数:

函数排序器($a,$b){
返回$a['order']-$b['order'];
}
usort($myArray,'sortByOrder');

从PHP 5.3开始,您可以使用匿名函数:

usort($myArray,function($a,$b){
返回$a['order']-$b['order'];
});

最后,使用PHP7,您可以使用spaceship操作符:

usort($myArray,function($a,$b){
返回$a['order']<=>$b['order'];
});

要将其扩展到多维排序,请参考第二个/第三个排序元素(如果第一个为零)-最好在下面解释。您还可以使用它对子元素进行排序

usort($myArray,function($a,$b){
$retval=$a['order']<=>$b['order'];
如果($retval==0){
$retval=$a['suborder']<=>$b['suborder'];
如果($retval==0){
$retval=$a['details']['subsuborder']<=>$b['details']['subsuborder'];
}
}
返回$retval;
});

如果需要保留键关联,请使用uasort()-请参阅手册中的数组排序功能比较

发表评论