当前位置:网站首页>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
边栏推荐
- 10个 Istio 流量管理 最常用的例子,你知道几个?
- Error when source install/setup.bash
- LoRa Basics无线通信技术和应用案例详解
- [Essay] To the friends of the 19th issue
- 哪款C语言编译器(IDE)适合初学者?
- Word怎么制作双面席卡?使用Word制作双面席卡方法
- Access Characteristics of Constructor under Inheritance Relationship
- 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?
- 微软Excel表格点击单元格行和列都显示颜色怎么弄?聚光灯效果设置
- [Generic Programming] Full Detailed Explanation of Templates
猜你喜欢
线性表的定义和基本操作
Access control knowledge
Word箭头上面怎么打字
DSPE-PEG-PDP, DSPE-PEG-OPSS, phospholipid-polyethylene glycol-mercaptopyridine reduce the immunogenicity of peptides
PMP daily practice | didn't lost a 8.9 (including agile + multi-select)
Definition and Basic Operations of Sequence Tables
安科瑞无线物联网智能电表ADW300指导性技术要求-Susie 周
Excel如何打出正负号?Excel打出正负号的方法
数据集成API如何成为企业数字化转型的关键?
[Deep learning] pix2pix GAN theory and code implementation
随机推荐
SQL语句及索引的优化
【图文并茂】如何进行Win7系统的重装
MySQL跨表、多表更新SQL语句总结
FET Mosfet Leiditech corresponds to Infineon Infineon
Don't use array.length-1 to get the last item of the array
LoRa无线技术在物联网应用市场的概况和发展
继承关系下构造方法的访问特点
Endpoint mode for NetCore routing
Hessian Matrix 海森矩阵
PMP每日一练 | 考试不迷路-8.9(包含敏捷+多选)
PMP每日一练 | 考试不迷路-8.8(包含敏捷+多选)
Word怎么设置图片衬于文字下方?两种方法教你设置Word图片衬于文字下方
UE4_定序器控制蓝图对象
URL Protocol 网页打开应用程序
字符串哈希(2014 SERC J题)
Overview of Security Analysis Technology for Smart Home Devices
Jmeter 使用正则表达式提取器将返回值全部保存到一个文件中
[Generic Programming] Full Detailed Explanation of Templates
C语言中的文件是什么?
How to deal with keys when Redis is large?