php 二维数组如何按一维数组里order值进行排序,同时又不改变原来order值相同的数组顺序
1、先按照order值进行分组,但它们还要保持之前的顺序2、然后分组按照order值从小到大排序3、再把这些数组组装在一个二维数组里
PS:把下面的第一个二维数组弄成第二个的那种格式就可以了
array(18) {
[0] => array(3) {
["id"] => string(5) "ele_0"
["order"] => string(1) "1"
["title"] => NULL
}
[1] => array(3) {
["id"] => string(5) "ele_1"
["order"] => string(1) "1"
["title"] => NULL
}
[2] => array(3) {
["id"] => string(5) "ele_2"
["order"] => string(1) "1"
["title"] => NULL
}
[3] => array(3) {
["id"] => string(5) "ele_4"
["order"] => string(1) "3"
["title"] => NULL
}
[4] => array(3) {
["id"] => string(5) "ele_5"
["order"] => string(1) "2"
["title"] => NULL
}
[5] => array(3) {
["id"] => string(5) "ele_6"
["order"] => string(1) "2"
["title"] => NULL
}
[6] => array(3) {
["id"] => string(5) "ele_7"
["order"] => string(1) "2"
["title"] => NULL
}
[7] => array(3) {
["id"] => string(5) "11329"
["order"] => string(1) "2"
["title"] => NULL
}
[8] => array(3) {
["id"] => string(5) "11330"
["order"] => string(1) "7"
["title"] => NULL
}
[9] => array(3) {
["id"] => string(4) "8252"
["order"] => string(1) "1"
["title"] => NULL
}
}
array(18) {
[0] => array(3) {
["id"] => string(5) "ele_0"
["order"] => string(1) "1"
["title"] => NULL
}
[1] => array(3) {
["id"] => string(5) "ele_1"
["order"] => string(1) "1"
["title"] => NULL
}
[2] => array(3) {
["id"] => string(5) "ele_2"
["order"] => string(1) "1"
["title"] => NULL
}
[9] => array(3) {
["id"] => string(4) "8252"
["order"] => string(1) "1"
["title"] => NULL
}
[4] => array(3) {
["id"] => string(5) "ele_5"
["order"] => string(1) "2"
["title"] => NULL
}
[5] => array(3) {
["id"] => string(5) "ele_6"
["order"] => string(1) "2"
["title"] => NULL
}
[6] => array(3) {
["id"] => string(5) "ele_7"
["order"] => string(1) "2"
["title"] => NULL
}
[7] => array(3) {
["id"] => string(5) "11329"
["order"] => string(1) "2"
["title"] => NULL
}
[3] => array(3) {
["id"] => string(5) "ele_4"
["order"] => string(1) "3"
["title"] => NULL
}
[8] => array(3) {
["id"] => string(5) "11330"
["order"] => string(1) "7"
["title"] => NULL
}
}
3 回答
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
森林海
TA贡献2011条经验 获得超2个赞
$arr[] = array('order' => 1, 'id' => 'ele_0');
$arr[] = array('order' => 1, 'id' => 'ele_2');
$arr[] = array('order' => 1, 'id' => 'ele_1');
$arr[] = array('order' => 3, 'id' => 'ele_4');
$arr[] = array('order' => 2, 'id' => 'ele_6');
$arr[] = array('order' => 2, 'id' => 'ele_5');
foreach ($arr as $key => $row) {
$order[$key] = $row['order'];
$arr[$key]['sort'] = $key; //要保证其他顺序和原来一样,只能再加一个字段标识原来的顺序
$sort[$key] = $key;
}
array_multisort($order, SORT_ASC, $sort, SORT_ASC , $arr);
print_r($arr);
![?](http://img1.sycdn.imooc.com/54586453000163bd02200220-100-100.jpg)
慕姐4208626
TA贡献1852条经验 获得超7个赞
实际跟一维数组排序是一个道理,随便应用一个排序算法,就能实现你要的结果。
具体范例
对以下数组进行排序:
$arr = [
[
'id' => 'ele_0' ,
'order' => 60 ,
] ,
[
'id' => 'ele_1' ,
'order' => 30 ,
] ,
[
'id' => 'ele_2' ,
'order' => 50 ,
] ,
];
使用 选择排序 算法:
for ($i = 0; $i < count($arr); ++$i)
{
$index = $i;
for ($n = $i + 1; $n < count($arr); ++$n)
{
$one = $arr[$index];
$two = $arr[$n];
// 降序排序
if ($one['order'] < $two['order']) {
$index = $n;
}
}
if ($index != $i) {
$tmp = $arr[$index];
$arr[$index] = $arr[$i];
$arr[$i] = $tmp;
}
}
// 查看排序后的结果
print_r($arr);
- 3 回答
- 0 关注
- 507 浏览
添加回答
举报
0/150
提交
取消