記一次產品需求中的陣列排序方法

Ali發表於2019-03-21
  • 程式碼寫的不好。有更高校的排序方法,希望貼出來,學習學習
    /**
     * 根據欄位排序
     * asc正向排序 desc逆向排序 nat自然排序
     * @param     [type]     $array   需要排序的陣列
     * @param     [type]     $field   指定排序的欄位
     * @param     string     $sortby  排序型別
     * @return    arrayOrbool         排完序的新陣列或者排序失敗
     */
    public function listSortBy($array, $field, $sortby = 'asc')
    {
        if (is_array($array)) {
            $refer = $resultSet = array();
            foreach ($array as $key => $data) {
                $refer[$key] = &$data[$field];
            }
            switch ($sortby) {
                case 'asc': // 正向排序
                    asort($refer);
                    break;
                case 'desc': // 逆向排序
                    arsort($refer);
                    break;
                case 'nat': // 自然排序
                    natcasesort($refer);
                    break;
            }
            foreach ($refer as $k => $val) {
                $resultSet[] = &$array[$k];
            }
            return $resultSet;
        }
        return false;
    }
本作品採用《CC 協議》,轉載必須註明作者和本文連結

高永立

相關文章