/** * 二維數組根據某個字段按指定排序方式排序 * @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; }