arr_sort 方法
# arr_sort 方法//对PHP数组(类似MYSQL查出来的数据)进行排序,用法:fun::arr_sort($data, array('id','asc','num'), array('val','desc','num'));public static function arr_sort(){$p = func_get_args();$data = $p[0];if(!$data || !is_array($data)) return $data;unset($p[0]);if(!$p) return $data;$aTemp = [];foreach($data as $k => $rs){$aTemp['__key'][] = $k;foreach($p as $v){$aTemp[$v[0]][] = $rs[$v[0]];}}foreach($p as $v){$sc = $v[1] == 'desc' ? SORT_DESC : SORT_ASC;if($v[2] == 'num'){$tp = SORT_NUMERIC;}else if($v[2] == 'str'){$tp = SORT_STRING;}else{//保持原样$tp = SORT_REGULAR;}$par[] = &$aTemp[$v[0]];$par[] = $sc;$par[] = $tp;}$par[] = &$aTemp['__key'];call_user_func_array('array_multisort', $par);$ret = [];foreach($aTemp['__key'] as $i => $k){$ret[$k] = $data[$k];}return $ret;}
#二维数组排序 用法$arr = [['key'=>2, 'v'=>'22'],['key'=>3, 'v'=>'33'],];$arr = array_values(fun::arr_sort($arr, ['key', 'desc', 'num']));//二维数组排序#二维数组求和$rs = [['t'=>'aaa', 'val'=>'12'], ['t'=>'aaa2', 'val'=>'13']];$sum = array_sum(array_column($rs, 'val'));//指定key 求和#sum = 25;#以下方法需要先安装 bcmacth/*** 数组求和,支持浮点数* @param array $aData 数组* @param int $digit 保留小数位数* @return float*/public static function array_sum($aData, $digit = 2){if(!$aData || !is_array($aData)){return 0;}$ret = 0;foreach($aData as $v){$ret = bcadd($ret, $v, $digit);}return (float)$ret;}#二维数组查找$rs = [['t'=>'aaa', 'val'=>'12'], ['t'=>'aaa2', 'val'=>'13']];$found_key = array_search(13, array_column($rs, 'val'));#found_key = 1 位置1表示命中#array_column 表示从二维数据里抽出定指key 的字段值。#array_search 表示查找目标最后出现的位置 index 判断>-1 才正确
最简单方法
$cfg2 = [["id" => 11"coins" => 40000000"rate" => 1"index" => 10],["id" => 15"coins" => 80000000"rate" => 0.5"index" => 14]];array_multisort(array_column($cfg2, 'coins'), SORT_DESC, $cfg2);
其它经典方法
if(!function_exists('p')){//业务common.php里也有此方法,兼容一下function p(){//格式化输入数组echo '<pre>';$arr = debug_backtrace();$arr = $arr[0];echo '◆ ' . $arr['file'] . ':' . $arr['line'] . "\n";$p = func_get_args();func_num_args() === 1 && $p = $p[0];print_r($p);die();}}//数组json化,非数组原样返回 PHP5.4以上版本支持public static function json($a){(!isset($a) || $a === '') && $a = [];if(is_array($a)){if(version_compare(phpversion(), '5.4.0') >= 0){//5.4以上才支持中文不转码$a = json_encode($a, JSON_UNESCAPED_UNICODE);}else{$a = json_encode($a);}}return $a;}public static function arr2str($msg){if(is_array($msg)){ob_start();print_r($msg);$msg = ob_get_clean();}return $msg;}
