我有一个多维数组,我想对它进行排序,以便两个数组按标志SORT_NATURAL
排序,然后排序SORT_ASC
或SORT_DESC
所以根据我的理解,它应该是这样的:
array_multisort($array1, SORT_NATURAL, SORT_ASC, $array2, SORT_NATURAL, SORT_ASC, $array);
但它似乎只是将SORT_NATURAL
应用于$array1
,而$array2
根本没有排序,甚至没有应用排序方向。
但是,只要我删除SORT_NATURAL
表单$array2
,排序方向就会有效。
所以 - $array1
排序很好,但$array2
根本不排序。
可能是什么问题?我错过了什么吗?
public function sortMultiDimensional(&$array, $subKey, $subKey2, $sortorder_packing_bool=false, $sortorder_packing_secondary_bool=false) {
$array1 = array();
$array2 = array();
foreach ($array as $key => $row) {
$array1[$key] = $row[$subKey];
$array2[$key] = $row[$subKey2];
}
if($sortorder_packing_bool)
$sortorder_packing_bool = SORT_ASC;
else
$sortorder_packing_bool = SORT_DESC;
if($sortorder_packing_secondary_bool)
$sortorder_packing_secondary_bool = SORT_ASC;
else
$sortorder_packing_secondary_bool = SORT_DESC;
array_multisort($array1, $sortorder_packing_bool, SORT_NATURAL, $array2, $sortorder_packing_secondary_bool, SORT_NATURAL, $array);
}
答案 0 :(得分:0)
检查此示例,
$data = [];
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
array_multisort($volume, SORT_DESC,SORT_NATURAL, $edition, SORT_ASC,SORT_NATURAL, $data);
print_r($data);
点击此处code。
就像a,b。
组 SORT_NATURAL
就像this一样工作。