Array_multisort不按第二个数组排序

时间:2017-03-24 22:28:54

标签: php arrays sorting multidimensional-array

我有一个多维数组,我想对它进行排序,以便两个数组按标志SORT_NATURAL排序,然后排序SORT_ASCSORT_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);
}

1 个答案:

答案 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一样工作。