国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP實現二維數組按照指定的字段進行排序算法示例

2024-05-05 00:08:35
字體:
來源:轉載
供稿:網友

本文實例講述了PHP實現二維數組按照指定的字段進行排序算法。分享給大家供大家參考,具體如下:

遇到問題:把兩個數組用php自帶的array_merge()函數合并之后,想按照兩個數組中共有的'post_time'字段為新數組進行排序

解決辦法:通過查閱官方手冊,得知有array_multisort()這個函數,可以對多個數組或多維數組進行排序,返回排序之后的數組,其中字符串鍵名將被保留,但是數字鍵名將被重新索引,從 0 開始,并以 1 遞增。

下面封裝了這個函數,便于調用:

/** * 二維數組按照指定字段進行排序 * @params array $array 需要排序的數組 * @params string $field 排序的字段 * @params string $sort 排序順序標志 SORT_DESC 降序;SORT_ASC 升序 */function arraySequence($array, $field, $sort = 'SORT_DESC') { $arrSort = array(); foreach ($array as $uniqid => $row) {  foreach ($row as $key => $value) {   $arrSort[$key][$uniqid] = $value;  } } array_multisort($arrSort[$field], constant($sort), $array); return $array;}//測試:$arrDemo = array(array('name'=>'Jack','age'=>'22'),array('name'=>'Tom','age'=>'24'),array('name'=>'Green','age'=>'21'),array('name'=>'Ben','age'=>'23'),);$arrDemo = arraySequence($arrDemo,'age');print_r($arrDemo);

運行結果:

Array
(
    [0] => Array
        (
            [name] => Tom
            [age] => 24
        )

    [1] => Array
        (
            [name] => Ben
            [age] => 23
        )

    [2] => Array
        (
            [name] => Jack
            [age] => 22
        )

    [3] => Array
        (
            [name] => Green
            [age] => 21
        )

)

新增:按照指定的多個字段排序

/** * 二維數組按照指定的多個字段進行排序 * * 調用示例:sortArrByManyField($arr,'id',SORT_ASC,'age',SORT_DESC); */function sortArrByManyField(){ $args = func_get_args(); if(empty($args)){  return null; } $arr = array_shift($args); if(!is_array($arr)){  throw new Exception("第一個參數應為數組"); } 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);}//測試:$arrDemo = array(array('name'=>'Jack','age'=>'22'),array('name'=>'Tom','age'=>'24'),array('name'=>'Green','age'=>'21'),array('name'=>'Ben','age'=>'23'),);$arrDemo = sortArrByManyField($arrDemo,'age');print_r($arrDemo);

運行結果:

Array
(
    [0] => Array
        (
            [name] => Green
            [age] => 21
        )

    [1] => Array
        (
            [name] => Jack
            [age] => 22
        )

    [2] => Array
        (
            [name] => Ben
            [age] => 23
        )

    [3] => Array
        (
            [name] => Tom
            [age] => 24
        )

)

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 桐城市| 奉贤区| 化州市| 宁远县| 邹平县| 滁州市| 宝清县| 汝城县| 建湖县| 杭锦旗| 铁岭市| 江永县| 无为县| 定结县| 淮阳县| 太仓市| 湄潭县| 长沙市| 余干县| 白朗县| 乌鲁木齐市| 长岛县| 乾安县| 溧阳市| 尼勒克县| 屏东市| 辉县市| 瑞丽市| 平乐县| 陇川县| 泗洪县| 行唐县| 芒康县| 安福县| 青浦区| 河源市| 新丰县| 巧家县| 钟山县| 江北区| 施甸县|