PHP 二維數組根據某個字段按指定排序方式排序

/**
 * 二維數組根據某個字段按指定排序方式排序
 * @param $arr array 二維數組
 * @param $field string 指定字段
 * @param int $sort_order string SORT_ASC 按照上升順序排序, SORT_DESC 按照降低順序排序(具體請參考array_multisort官方定義)
 * @param int $sort_flags string 排序類型標誌(具體請參考array_multisort官方定義)
 * @return mixed
 *
 * demo
 * // 定義數組
 * $arr = [['name'=>'bbb'], ['name'=>'aaa'], ['name'=>'Ccc']];
 * // 須要按照name字段字符串升序排序
 * $arr = arraySort($arr, 'name', SORT_ASC, SORT_STRING);
 * // 須要按照name字段字符串升序排序,但忽略大小寫
 * $arr = arraySort($arr, 'name', SORT_ASC, SORT_FLAG_CASE | SORT_STRING);
 */
function multiArraySort($arr, $field, $sort_order = SORT_ASC, $sort_flags = SORT_REGULAR)
{
    // 異常判斷
    if (!$arr || !is_array($arr) || !$field) {
        return $arr;
    }

    // 將指定字段的值存進數組
    $tmp = [];
    foreach ($arr as $k => $v) {
        $tmp[$k] = $v[$field];
    }
    if (!$tmp) {
        return $arr;
    }

    // 調用php內置array_multisort函數
    array_multisort($tmp, $sort_order, $sort_flags, $arr);
    return $arr;
}
相關文章
相關標籤/搜索