php数组按首字母分组,按首字母分组排序及二维数组按键值排序

PHP 的精髓之一是什么? 数组! 数组完的不 6 根本不能算会 PHP。/**

* 按照 字母 分组 并 排序

* @param {Array} $list ; 需要 排序的 数据, 一维数组

* @param {string} $field ; 排序 需要 依据 的字段,该字段 必须为 字母

*/

public function data_letter_sort($list, $field) {

$resault = array();

foreach( $list as $key => $val ){

// 首字母 转 大写英文

$letter = strtoupper( mb_substr($val[$field], 0, 1) );

// 是否 大写 英文 字母

if( !preg_match('/^[A-Z]+$/', $letter) ){

$letter = '#';

}

// 创建 字母 分组

if( !array_key_exists($letter, $resault) ){

$resault[$letter] = array();

}

// 字母 分组 添加 数据

Array_push($resault[$letter], $val);

}

// 依据 键名 字母 排序,该函数 返回 boolean

ksort($resault);

// 将 # 分组 放到 最后

$arr_last = $resault['#'];

unset($resault['#']);

$resault['#'] = $arr_last;

return $resault;

}

支持区分中文,无法识别的全部会放在 # 分组里面,你学废了吗

二维数组按键值排序/**

* 二维数组根据某个字段排序

* @param array $array 要排序的数组

* @param string $keys 要排序的键字段

* @param string $sort 排序类型  SORT_ASC     SORT_DESC

* @return array 排序后的数组

*/

function arraySort($array, $keys, $sort = SORT_DESC)

{

$keysValue = [];

foreach ($array as $k => $v) {

$keysValue[$k] = $v[$keys];

}

array_multisort($keysValue, $sort, $array);

return $array;

}

二维数组按指定键值分组/**

* 二维数组按指定字段分组

* @param $arr

* @param $key

* @return array

*/

function array_group_by($arr, $key)

{

$grouped = [];

foreach ($arr as $value) {

$grouped[$value[$key]][] = $value;

}

if (func_num_args() > 2) {

$args = func_get_args();

foreach ($grouped as $key => $value) {

$parms = array_merge([$value], array_slice($args, 2, func_num_args()));

$grouped[$key] = call_user_func_array('array_group_by', $parms);

}

}

return $grouped;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值