我有一个类似于此的小维数组(小子集):
小子集:
$array[123][2501]['sales_class'] = '2';
$array[123][2501]['option_order'] = '11';
$array[124][2487]['sales_class'] = '2';
$array[124][2487]['option_order'] = '13';
$array[3][2]['sales_class'] = '1';
$array[3][2]['option_order'] = '3';
$array[6][1092]['sales_class'] = '1';
$array[6][1092]['option_order'] = '1';
$array[3][2]['sales_class'] = '1';
$array[3][2]['option_order'] = '3';
$array[21][2296]['sales_class'] = '4';
$array[21][2296]['option_order'] = '1';
$array[111][1447]['sales_class'] = '4';
$array[111][1447]['option_order'] = '2';
更现实:
$new_array[1][2422]['sales_class'] = '1';
$new_array[1][2422]['option_order'] = '0';
$new_array[2][1908]['sales_class'] = '1';
$new_array[2][1908]['option_order'] = '4';
$new_array[3][2]['sales_class'] = '1';
$new_array[3][2]['option_order'] = '3';
$new_array[4][5]['sales_class'] = '1';
$new_array[4][5]['option_order'] = '2';
$new_array[5][2436]['sales_class'] = '1';
$new_array[5][2436]['option_order'] = '5';
$new_array[6][1092]['sales_class'] = '1';
$new_array[6][1092]['option_order'] = '1';
$new_array[7][7]['sales_class'] = '2';
$new_array[7][7]['option_order'] = '2';
$new_array[8][11]['sales_class'] = '2';
$new_array[8][11]['option_order'] = '3';
$new_array[21][2296]['sales_class'] = '4';
$new_array[21][2296]['option_order'] = '1';
$new_array[27][2434]['sales_class'] = '13';
$new_array[27][2434]['option_order'] = '0';
$new_array[34][2489]['sales_class'] = '4';
$new_array[34][2489]['option_order'] = '0';
$new_array[47][2055]['sales_class'] = '13';
$new_array[47][2055]['option_order'] = '1';
$new_array[107][1809]['sales_class'] = '2';
$new_array[107][1809]['option_order'] = '7';
$new_array[111][1447]['sales_class'] = '4';
$new_array[111][1447]['option_order'] = '2';
$new_array[112][2446]['sales_class'] = '2';
$new_array[112][2446]['option_order'] = '1';
$new_array[113][2498]['sales_class'] = '2';
$new_array[113][2498]['option_order'] = '4';
$new_array[116][2485]['sales_class'] = '2';
$new_array[116][2485]['option_order'] = '12';
$new_array[118][2472]['sales_class'] = '2';
$new_array[118][2472]['option_order'] = '14';
$new_array[120][2470]['sales_class'] = '2';
$new_array[120][2470]['option_order'] = '9';
$new_array[121][2475]['sales_class'] = '2';
$new_array[121][2475]['option_order'] = '15';
$new_array[122][2476]['sales_class'] = '2';
$new_array[122][2476]['option_order'] = '10';
$new_array[123][2501]['sales_class'] = '2';
$new_array[123][2501]['option_order'] = '11';
$new_array[124][2487]['sales_class'] = '2';
$new_array[124][2487]['option_order'] = '13';
$new_array[126][2509]['sales_class'] = '2';
$new_array[126][2509]['option_order'] = '0';
$new_array[128][2525]['sales_class'] = '2';
$new_array[128][2525]['option_order'] = '6';
$new_array[130][1409]['sales_class'] = '2';
$new_array[130][1409]['option_order'] = '17';
$new_array[162][2548]['sales_class'] = '9';
$new_array[162][2548]['option_order'] = '33';
$new_array[181][2568]['sales_class'] = '2';
$new_array[181][2568]['option_order'] = '5';
$new_array[199][2603]['sales_class'] = '2';
$new_array[199][2603]['option_order'] = '8';
我需要首先根据以下动态创建的数组按sales_class排序:
$order_array = array(1, 4, 2);
订购更真实的数组:
$new_order = array(1,13,4,2,14,9,3,15,16);
然后,其次,我需要对option_order进行排序。
生成的排序数组(对于小子集):
Array(
[6] => Array(
[1092] => Array(
[sales_class] => 1
[option_order] => 1
)
)
[3] => Array(
[2] => Array(
[sales_class] => 1
[option_order] => 3
)
)
[21] => Array(
[2296] => Array(
[sales_class] => 4
[option_order] => 1
)
)
[111] => Array(
[1447] => Array(
[sales_class] => 4
[option_order] => 2
)
)
[123] => Array(
[2501] => Array(
[sales_class] => 2
[option_order] => 11
)
)
[124] => Array(
[2487] => Array(
[sales_class] => 2
[option_order] => 13
)
)
)
答案 0 :(得分:0)
我最终在数组中创建了另一个元素(sales_class_order),这消除了对自定义订单($ order_array)的需求。然后我使用array_multisort结合array_combine来恢复我的密钥。添加的元素允许在array_multisort中使用SORT_ASC。
$keys = array_keys($array);
foreach($array as $first) {
foreach($first as $second) {
$sales_class[] = $second["sales_class_order"];
$option_order[] = $second["option_order"];
}
}
array_multisort($sales_class, SORT_ASC,
$option_order, SORT_ASC,
$array,
$keys);
$array = array_combine($keys, $array);