php 二维数组排序

时间:2022-04-18 04:15:05
   /**
     * 二维数组排序(td是two-dimension的意思)
     *
     * @param array $arr
     * @param string $fieldA
     * @param string $sortA
     * @param string $fieldB
     * @param string $sortB
     * @param string $fieldC
     * @param string $sortC
     */
    static function tdSort(&$arr, $fieldA, $sortA = SORT_ASC, $fieldB = '', $sortB = SORT_ASC, $fieldC = '', $sortC = SORT_ASC) {
        if (!is_array($arr) || count($arr) < 1) {
            return false;
        }
        $arrTmp = array();
        foreach ($arr as $rs) {
            foreach ($rs as $key => $value) {
                $arrTmp["{$key}"][] = $value;
            }
        }
        if (empty($fieldB)) {
            if (!$arrTmp[$fieldA]) {
                return false;
            }
            array_multisort($arrTmp[$fieldA], $sortA, $arr);
        } elseif (empty($fieldC)) {
            if (!$arrTmp[$fieldA] || !$arrTmp[$fieldB]) {
                return false;
            }
            array_multisort($arrTmp[$fieldA], $sortA, $arrTmp[$fieldB], $sortB, $arr);
        } else {
            if (!$arrTmp[$fieldA] || !$arrTmp[$fieldB] || !$arrTmp[$fieldC]) {
                return false;
            }
            array_multisort($arrTmp[$fieldA], $sortA, $arrTmp[$fieldB], $sortB, $arrTmp[$fieldC], $sortC, $arr);
        }
        return true;
    }