最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP實現(xiàn)多維數(shù)組多字段自定義排序

 更新時間:2023年10月23日 11:00:35   作者:ZhiHuaWei  
這篇文章主要介紹了PHP實現(xiàn)多維數(shù)組多字段自定義排序,通過將待排序數(shù)組的各個數(shù)組的$field保存在一維數(shù)組fieldArr中,在傳入array_multisort中參與排序,相當于對$field一維數(shù)組的排序,而后根據(jù)排序后的key重新構建傳入的待排序數(shù)組,需要的朋友可以參考下

一、多維數(shù)組根據(jù)某一字段排序

此處用到了PHP的array_multisort方法(對多個數(shù)組或多維數(shù)組進行排序),關于此方法的用法可以查看PHP開發(fā)手冊。

首先我們假設一個數(shù)組:

    $demo_array = array(
        array('id' => 8, 'name' => 'Bob', 'age' => 18, 'score' => 92),
        array('id' => 9, 'name' => 'Sun', 'age' => 16, 'score' => 99),
        array('id' => 3, 'name' => 'Snow', 'age' => 16, 'score' => 82),
        array('id' => 11, 'name' => 'Frank', 'age' => 22, 'score' => 90)
    );

實現(xiàn)思路:

通過將待排序數(shù)組的各個數(shù)組的$field保存在一維數(shù)組fieldArr中,在傳入array_multisort中參與排序。傳入 array_multisort后,相當于對$field一維數(shù)組的排序,而后根據(jù)排序后的key重新構建傳入的待排序數(shù)組。

實現(xiàn)方法:

    /**
     * 數(shù)組按照某一字段排序
     * @param $array 需要排序的二維數(shù)組
     * @param $field 所根據(jù)排序的字段
     * @param bool $desc 排序類型
     */
    function array_sort_by_one_field(&$array, $field, $desc = false)
    {
        $fieldArr = array();
        foreach ($array as $k => $v) {
            $fieldArr[$k] = $v[$field];
        }
        $sort = $desc == false ? SORT_ASC : SORT_DESC;
        array_multisort($fieldArr, $sort, $array);
    }
    array_sort_by_one_field($demo_array, 'age', true);
    print_r($demo_array);

打印結果: 

Array
(
    [0] => Array
        (
            [id] => 11
            [name] => Frank
            [age] => 22
            [score] => 90
        )
    [1] => Array
        (
            [id] => 8
            [name] => Bob
            [age] => 18
            [score] => 92
        )
    [2] => Array
        (
            [id] => 3
            [name] => Snow
            [age] => 16
            [score] => 82
        )
    [3] => Array
        (
            [id] => 9
            [name] => Sun
            [age] => 16
            [score] => 99
        )
)

二、多維數(shù)組多個字段自定義排序

這個方法用到了PHP的func_get_args函數(shù),關于此函數(shù)用法不會的也可以查看PHP開發(fā)手冊。

同樣的首先假設一個數(shù)組:

    $demo_array = array(
        array('id' => 8, 'name' => 'Bob', 'age' => 18, 'score' => 92),
        array('id' => 9, 'name' => 'Sun', 'age' => 16, 'score' => 99),
        array('id' => 3, 'name' => 'Snow', 'age' => 16, 'score' => 82),
        array('id' => 11, 'name' => 'Frank', 'age' => 22, 'score' => 90)
    );

實現(xiàn)思路:

實現(xiàn)思路和上面的差不多,只是多了采用PHP中的func_get_args函數(shù),來動態(tài)獲取傳入的值,既可以解決多字段個數(shù)不確定的問題。

實現(xiàn)方法:

    /**
     * 多維數(shù)組多個字段自定義排序
     * 參數(shù)傳遞不確定
     */
    function array_sort_by_many_field()
    {
        //獲取函數(shù)傳遞的參數(shù),第一個參數(shù)必須是一個數(shù)組
        $args = func_get_args();
        if (empty($args)) {
            return null;
        }
        $arr = array_shift($args);
        if (!is_array($arr)) {
            throw new Exception("第一個參數(shù)必須要是一個數(shù)組");
        }
        foreach ($args as $key => $field) {
            if (is_string($field)) {
                $temp = array();
                foreach ($arr as $index => $val) {
                    $temp[$index] = $val[$field];
                }
                $args[$key] = $temp;
            }
        }
        $args[] = &$arr;//引用值
        call_user_func_array('array_multisort', $args);
        return array_pop($args);
    }
 
    $arr = array_sort_by_many_field($demo_array, 'score', SORT_DESC, 'age', SORT_ASC);
    print_r($arr);

打印結果: 

Array
(
    [0] => Array
        (
            [id] => 9
            [name] => Sun
            [age] => 16
            [score] => 99
        )
    [1] => Array
        (
            [id] => 8
            [name] => Bob
            [age] => 18
            [score] => 92
        )
    [2] => Array
        (
            [id] => 11
            [name] => Frank
            [age] => 22
            [score] => 90
        )
    [3] => Array
        (
            [id] => 3
            [name] => Snow
            [age] => 16
            [score] => 82
        )
)

 到此這篇關于PHP實現(xiàn)多維數(shù)組多字段自定義排序的文章就介紹到這了,更多相關PHP多維數(shù)組自定義排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

文山县| 麻江县| 桃江县| 宜阳县| 丰顺县| 德格县| 永德县| 兴文县| 台州市| 五大连池市| 茌平县| 沛县| 大石桥市| 图们市| 太仓市| 格尔木市| 丹寨县| 茌平县| 竹山县| 汝阳县| 象山县| 张家港市| 清水河县| 德清县| 九龙城区| 长寿区| 汝阳县| 呼图壁县| 彭阳县| 威海市| 盐山县| 沅江市| 镇沅| 孝昌县| 舟曲县| 武山县| 贡嘎县| 邹平县| 尼木县| 桦甸市| 渑池县|