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 回答

森林海
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);

慕姐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 關注
- 516 瀏覽
添加回答
舉報
0/150
提交
取消