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

php 通用的数组排序,PHP 数组排序 多维数组排序

发布时间:2022-11-23 12:38:49 所属栏目:PHP教程 来源:
导读:  数组排序

  asort 升序 保持索引

  arsort 降序 保持索引

  多维数组排序

  $data[] = array('mingzi' => '张三', 'baifenbi' => 100 );

  $data[] = ar
  数组排序
 
  asort 升序 保持索引
 
  arsort 降序 保持索引
 
  多维数组排序
 
  $data[] = array('mingzi' => '张三', 'baifenbi' => 100 );
 
  $data[] = array('mingzi' => '李四', 'baifenbi' => 25);
 
  $data[] = array('mingzi' => '郑五', 'baifenbi' => 40);
 
  //排序前
 
  echo "
 
  ";
 
  print_r($data);
 
  echo "
 
  ";
 
  //要求,把 baifenbi 升序排列。
 
  //现在有了包含有行的数组 $data,但是 array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序。
 
  // 取得列的列表
 
  foreach ($data as $key => $row) {
 
  $baifenbi[$key] = $row['baifenbi'];
 
  }
 
  // 根据 baifenbi 升序排列
 
  // 把 $data 作为最后一个参数,以通用键排序
 
  array_multisort($baifenbi1, $data);
 
  //排序后
 
  echo "
 
  ";
 
  print_r($data);
 
  echo "
 
  ";
 
  还能不能更灵活一点呢PHP数组排序,每次想排序都要另外弄些数组出来吗? 其实在qeephp的helper_array类里面已经封装得很好,下面是它的两个方法,需要的人自己修改一下就可以用了: /** * 根据指定的键对数组排序 * * 用法: * @code php * $rows = array( * array('id' => 1, 'value' => '1-1', 'parent' => 1), * array('id' => 2, 'value' => '2-1', 'parent' => 1), * array('id' => 3, 'value' => '3-1', 'parent' => 1), * array('id' => 4, 'value' => '4-1', 'parent' => 2), * array('id' => 5, 'value' => '5-1', 'parent' => 2), * array('id' => 6, 'value' => '6-1', 'parent' => 3), * ); * * $rows = Helper_Array::sortByCol($rows, 'id', SORT_DESC); * dump($rows); * // 输出结果为: * // array( * // array('id' => 6, 'value' => '6-1', 'parent' => 3), * // array('id' => 5, 'value' => '5-1', 'parent' => 2), * // array('id' => 4, 'value' => '4-1', 'parent' => 2), * // array('id' => 3, 'value' => '3-1', 'parent' => 1), * // array('id' => 2, 'value' => '2-1', 'parent' => 1), * // array('id' => 1, 'value' => '1-1', 'parent' => 1), * // ) * @endcode * * @param array $array 要排序的数组 * @param string $keyname 排序的键 * @param int $dir 排序方向 * * @return array 排序后的数组 */ static function sortByCol($array, $keyname, $dir = SORT_ASC) { return self::sortByMultiCols($array, array($keyname => $dir)); } /** * 将一个二维数组按照多个列进行排序,类似 SQL 语句中的 ORDER BY * * 用法: * @code php * $rows = Helper_Array::sortByMultiCols($rows, array( * 'parent' => SORT_ASC, * 'name' => SORT_DESC, * )); * @endcode * * @param array $rowset 要排序的数组 * @param array $args 排序的键 * * @return array 排序后的数组 */ static function sortByMultiCols($rowset, $args) { $sortArray = array(); $sortRule = ''; foreach ($args as $sortField => $sortDir) { foreach ($rowset as $offset => $row) { $sortArray[$sortField][$offset] = $row[$sortField]; } $sortRule 。
 
  = '$sortArray[\'' 。 $sortField 。 '\'], ' 。 $sortDir 。 ', '; } if (empty($sortArray) || empty($sortRule)) { return $rowset; } eval('array_multisort(' 。 $sortRule 。 '$rowset);'); return $rowset; }
 

(编辑:我爱资讯网)

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