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

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

发布时间:2022-11-16 17:32:25 所属栏目:PHP教程 来源:互联网
导读: 数组排序
asort 升序 保持索引
arsort 降序 保持索引
多维数组排序
$data[] = array('mingzi' => '张三', 'baifenbi' => 100 );
$data[] = array('mingzi&#39

数组排序

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; }

(编辑:源码网)

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