成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? php中二維數組排序問題方法詳解
全站頭部文字 我要出現在這里
php中二維數組排序問題方法詳解 828 2023-12-10   

PHP中二維數組排序,可以使用PHP內置函數uasort()

示例一:

使用用戶自定義的比較函數對數組中的值進行排序并保持索引關聯

回調函數如下:注意回調函數的返回值是負數或者是false的時候,表示回調函數的第一個參數在前,第二個參數在后排列

$person = array(
  array('num'=>'001','id'=>6,'name'=>'zhangsan','age'=>21),
  array('num'=>'001','id'=>7,'name'=>'ahangsan','age'=>23),
  array('num'=>'003','id'=>1,'name'=>'bhangsan','age'=>23),
  array('num'=>'001','id'=>3,'name'=>'dhangsan','age'=>23),
);
//負數或者false表示第一個參數應該在前
function sort_by_name($x,$y){
  return strcasecmp($x['name'],$y['name']);
}

使用如下:

uasort($person,'sort_by_name');

下面給出一個二維數組排序的方法,供參考和面試使用:

//$array 要排序的數組
//$row  排序依據列
//$type 排序類型[asc or desc]
//return 排好序的數組
function array_sort($array,$row,$type){
  $array_temp = array();
  foreach($array as $v){
    $array_temp[$v[$row]] = $v;
  }
  if($type == 'asc'){
    ksort($array_temp);
  }elseif($type='desc'){
    krsort($array_temp);
  }else{
  }
  return $array_temp;
}

示例二:

一維數組排序可以使用asort、ksort等一些方法進程排序,相對來說比較簡單。二維數組的排序怎么實現呢?使用array_multisort和usort可以實現

例如像下面的數組:

代碼如下:

$users = array(
  array('name' => 'tom', 'age' => 20)
  , array('name' => 'anny', 'age' => 18)
  , array('name' => 'jack', 'age' => 22)
);

希望能按照age從小到大進行排序。筆者整理了兩個方法出來,分享給大家。

1、使用array_multisort

使用這個方法,會比較麻煩些,要將age提取出來存儲到一維數組里,然后按照age升序排列。具體代碼如下:

代碼如下:

$ages = array();
foreach ($users as $user) {
  $ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);

執行后,$users就是排序好的數組了,可以打印出來看看。如果需要先按年齡升序排列,再按照名稱升序排列,方法同上,就是多提取一個名稱數組出來,最后的排序方法這樣調用:

代碼如下:

array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);

2、使用usort

使用這個方法最大的好處就是可以自定義一些比較復雜的排序方法。例如按照名稱的長度降序排列:

代碼如下:

usort($users, function($a, $b) {
      $al = strlen($a['name']);
      $bl = strlen($b['name']);
      if ($al == $bl)
        return 0;
      return ($al > $bl) ? -1 : 1;
    });

這里使用了匿名函數,如果有需要也可以單獨提取出來。其中$a, $b可以理解為$users數組下的元素,可以直接索引name值,并計算長度,而后比較長度就可以了。

=====================================================================

這里順便說一下PHP排序的幾個函數

sort 對數組排序一般適用于一維索引數組,不會保持索引

rsort 對數組逆向排序 和sort用法一致

asort 對數組進行排序并保持索引關系對值進行排序,一般適用于一維數組,保持索引關系

arsort 對數組進行逆向排序并保持索引關系和asort用法一致

ksort 對數組按照鍵名排序

krsort 對數組按照鍵名逆向排序



主站蜘蛛池模板: 免费头像图片| 极度猎杀| 美国舞男| 幸福年简谱| 日本大电影| 芭蕉扇图片| 斯科特阿金斯主演所有电影| 刘浩存个人资料及简介| 陈一龙是哪部电视剧| 四个月宝宝几斤才达标| midjourney中文版| 电影《瞬间》| 唐朝诡事录在线观看全集免费观看 | 阿兵| 哗鬼住正隔篱| 任喜宝| 电影《uhaw》免费观看| lanarhoades在线av| 小妹电影| 按摩服务电影| 鬼龙院花子的一生| 十大名茶排名顺序| 同悲万古尘| xxxxxxxxxxxxxxxxx69| 美女被吃| 红海行动2蛟龙行动电影在线观看| 刘峥| 中医基础理论试题题库及答案| 叶子楣伦理| 赫伯曼电影免费观看| 蹲着吐一地呕吐视频| 深夜在线播放| 鬣狗交配视频| 黄飞鸿电影全集| 福利视频观看| 内裤之穴| 还未入团思想汇报800字| 花宵道中1| 寡妇2| 嫦娥奔月读后感50字| 牛奶奶油是什么奶油|

?。?!站長長期在線接?。?!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103