今天给大家推荐两个函数
(一)数组分组函数
/**
*数组分组函数
*
*@param Array $arr 需要分组的数组
*@param String $key 按照这个键对应的值来分组(可能用词不好,不过跑一波就知道了)
*@return Array
*/
public 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;
}
(二)返回数组当中的多列哦~实用推荐
/**
* 返回数组中指定多列
*
* @param Array $input 需要取出数组列的多维数组
* @param String $column_keys 要取出的列名,逗号分隔,如不传则返回所有列
* @param String $index_key 作为返回数组的索引的列
* @return Array
*/
public function array_columns($input, $column_keys=null, $index_key=null){
$result = array();
$keys =isset($column_keys)? explode(',', $column_keys) : array();
if($input){
foreach($input as $k=>$v){
// 指定返回列
if($keys){
$tmp = array();
foreach($keys as $key){
$tmp[$key] = $v[$key];
}
}else{
$tmp = $v;
}
// 指定索引列
if(isset($index_key)){
$result[$v[$index_key]] = $tmp;
}else{
$result[] = $tmp;
}
}
}
return $result;
}
(三)二维数组按照摸个字段排序
/**
* 对二维数组进行排序
* @param $array
* @param $keyid 排序的键值
* @param $order 排序方式 'asc':升序 'desc':降序
* @param $type 键值类型 'number':数字 'string':字符串
*/
public function sort_array(&$array, $keyid, $order = 'asc', $type = 'number') {
if (is_array($array)) {
foreach ($array as $val) {
$order_arr[] = $val[$keyid];
}
$order = ($order == 'asc') ? SORT_ASC : SORT_DESC;
$type = ($type == 'number') ? SORT_NUMERIC : SORT_STRING;
array_multisort($order_arr, $order, $type, $array);
}
}
2.具体的实现的效果 就给小伙伴们自己去实践吧~~