PHP数组Array2个字段排序,先按第一个字段排序,再按第二个字段排序

参考链接:https://blog.csdn.net/weixin_34336292/article/details/89051721?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-89051721-blog-121580507.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-89051721-blog-121580507.pc_relevant_paycolumn_v3&utm_relevant_index=1

参考链接里给的解决方式是这样的:

/**
 * Sort array by filed and type, common utility method.
 * @param array $array
 * @param string $filed1
 * @param string $type1 SORT_ASC or SORT_DESC
 * @param string $filed2
 * @param string $type2 SORT_ASC or SORT_DESC
 */
public function sortByTwoFiled($data, $filed1, $type1, $filed2, $type2)
{
    if (count($data) <= 0) {
        return $data;
    }
    foreach ($data as $key => $value) {
        $temp_array1[$key] = $value[$filed1];
        $temp_array2[$key] = $value[$filed2];
    }
    array_multisort($temp_array1, $type1, $temp_array2, $type2, $data);
    return $data;
}

我自己修改了一下:

/**
 * Sort array by filed and type, common utility method.
 * @param array $array
 * @param string $filed1
 * @param string $type1 SORT_ASC or SORT_DESC
 * @param string $filed2
 * @param string $type2 SORT_ASC or SORT_DESC
 */
public function sortByTwoFiled($data, $filed1, $type1, $filed2, $type2)
{
    if (count($data) <= 0) {
        return $data;
    }
    $temp_array1 = array_column($data, $filed1);
    $temp_array2 = array_column($data, $filed2);
    array_multisort($temp_array1, $type1, $temp_array2, $type2, $data);
    return $data;
}

 

posted @ 2022-05-09 16:51  骑着新浪狂奔  阅读(272)  评论(0编辑  收藏  举报