当前位置:网站首页>PHP 二维数组根据某个字段排序
PHP 二维数组根据某个字段排序
2022-08-09 20:51:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
数据: data[] = array(‘customer_name’ => ‘小李’, ‘money’ => 12, ‘distance’ => 2, ‘address’ => ‘长安街C坊’); data[] = array(‘customer_name’ => ‘赵小雅’, ‘money’ => 89, ‘distance’ => 6, ‘address’ => ‘解放路恒基大厦A座’); data[] = array(‘customer_name’ => ‘李亮亮’, ‘money’ => 45, ‘distance’ => 26, ‘address’ => ‘天山西路198弄’);
方法一:
function arraySort($array,$keys,$sort='asc') {
$newArr = $valArr = array();
foreach ($array as $key=>$value) {
$valArr[$key] = $value[$keys];
}
($sort == 'asc') ? asort($valArr) : arsort($valArr);
reset($valArr);
foreach($valArr as $key=>$value) {
$newArr[$key] = $array[$key];
}
return $newArr;
}方法二:
/** * 二维数组根据某个字段排序 * @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;
}
# 按距离降序排序
$a = arraySort($data, 'distance', SORT_DESC);
print_r($a);
# 按money升序排序
$b = arraySort($data, 'money', SORT_ASC);
print_r($b);Array
(
[0] => Array
(
[customer_name] => 李亮亮
[money] => 45
[distance] => 26
[address] => 天山西路198弄
)
[1] => Array
(
[customer_name] => 董娟
[money] => 67
[distance] => 17
[address] => 新大南路2号
)
)扩展:
定义和用法 reset() 函数将内部指针指向数组中的第一个元素,并输出。 current() – 返回数组中的当前元素的值。 end() – 将内部指针指向数组中的最后一个元素,并输出。 next() – 将内部指针指向数组中的下一个元素,并输出。 prev() – 将内部指针指向数组中的上一个元素,并输出。 each() – 返回当前元素的键名和键值,并将内部指针向前移动。
sort 对数组的值按照升序排列(rsort降序),不保留原始的键 ksort 对数组的键按照升序排列(krsort降序) 保留键值关系 asort 对数组的值按照升序排列(arsort降序),保留键值关系
array_multisort
- 排序顺序标志: SORT_ASC – 按照上升顺序排序 SORT_DESC – 按照下降顺序排序
- 排序类型标志: SORT_REGULAR – 将项目按照通常方法比较 SORT_NUMERIC – 将项目按照数值比较 SORT_STRING – 将项目按照字符串比较 每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 – 在此之前为默认值 SORT_ASC 和 SORT_REGULAR。
$ar = array(
array("b10", 'c11', 101, 100, "a"),
array(1, 2, "2", 9, 5)
);
array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC);
print_r($ar);Array
(
[0] => Array
(
[0] => 100
[1] => 101
[2] => a
[3] => b10
[4] => c11
)
[1] => Array
(
[0] => 9
[1] => 2
[2] => 5
[3] => 1
[4] => 2
)
)发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105808.html原文链接:https://javaforall.cn
边栏推荐
猜你喜欢

Don't tell me to play, I'm taking the PMP exam: what you need to know about choosing an institution for the PMP exam

10个 Istio 流量管理 最常用的例子,你知道几个?

字节二面问的MySQL,差点没答好

Puyuan Jingdian turned losses into profits in the first half of the year, and high-end products continued to develop!Are you optimistic about "Huawei" in the instrument industry?

安科瑞无线物联网智能电表ADW300指导性技术要求-Susie 周

MySQL, which is asked on both sides of the byte, almost didn't answer well

hdu 1503 Advanced Fruits(最长公共子序列的应用)

Win11搜索不到文件的解决方法

分数阶混沌系统李雅普指数和分岔图

字节一面:TCP 和 UDP 可以使用同一个端口吗?
随机推荐
C语言中的文件是什么?
Overview of Security Analysis Technology for Smart Home Devices
MySQL Notes-06 Basic SQL Operations
企业数据打通有什么好处?不同行业怎么解决数据打通难题?
Unity2D_背景粒子效果
字符串哈希(2014 SERC J题)
SecureCRT 设置超时自动断开连接时长
线性表的定义和基本操作
Jensen (琴生) 不等式
顺序表的定义和基本操作
10个 Istio 流量管理 最常用的例子,你知道几个?
Can I make a TCP connection without accept?
智能家居设备安全分析技术综述
访问控制知识
Cholesterol-PEG-Thiol,CLS-PEG-SH,胆固醇-聚乙二醇-巯基用于改善溶解度
QGIS编译SIP的问题
基于模糊PID控制器的水温控制系统仿真
Word怎么设置图片衬于文字下方?两种方法教你设置Word图片衬于文字下方
下秒数据:湖仓一体带来的现代数据堆栈变革开始了
消防安全培训|“蓝朋友”,开课了!