加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 数组按某个键排序,一个好用的数组按特定键排序的方法

发布时间:2022-11-18 10:57:30 所属栏目:PHP教程 来源:
导读:  一个好用的数组按特定键排序的方法

  这个方法是官方文档上排序方法评论里评分比较高的方法,在实际开发中有时候会有这样的需求,sql查询里的order by 无法满足自己排序的需求是需要对数据进行一个排序,p
  一个好用的数组按特定键排序的方法
 
  这个方法是官方文档上排序方法评论里评分比较高的方法,在实际开发中有时候会有这样的需求,sql查询里的order by 无法满足自己排序的需求是需要对数据进行一个排序,php官方的排序方法并没有完美解决这个问题的方案时就需要自己写一个排序方法,作者的基本思路是用一个A数组保存原数组的key1和需要排序的key2,然后将数组A按排序key2排序PHP数组排序,最后循环A数组用一个数组B接收原数组里key2里的value。这是一个非常巧妙的想法,如果对描述表示一脸懵逼那就直接看代码。
 
  /**
 
  * 按键排序一个二维数组
 
  * @param array $array 要排序的数组
 
  * @param string $on 排序的键
 
  * @param $order 方式
 
  * @return array 排序结果
 
  */
 
  public function array_sort($array, $on, $order=SORT_ASC)
 
  {
 
  $new_array = array();
 
  $sortable_array = array(); //保存key的数组
 
  if (count($array) > 0) {
 
  foreach ($array as $k => $v) {
 
  if (is_array($v)) {
 
  foreach ($v as $k2 => $v2) {
 
  if ($k2 == $on) {
 
  $sortable_array[$k] = $v2;
 
  }
 
  }
 
  } else {
 
  $sortable_array[$k] = $v;
 
  }
 
  }
 
  var_dump($sortable_array);exit;
 
  switch ($order) {
 
  case SORT_ASC:
 
  asort($sortable_array);
 
  break;
 
  case SORT_DESC:
 
  arsort($sortable_array);
 
  break;
 
  }
 
  foreach ($sortable_array as $k => $v) {
 
  $new_array[$k] = $array[$k];
 
  }
 
  }
 
  return $new_array;
 
  }
  
 

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!