php - 按日期排序数组
问题描述
我的数组对每个字段都有一个数组(即日期、名称等)。如何按日期对数组进行排序?我应该创建另一个数组吗?我可以在这里使用排序或取消排序吗?如果是,如何?这是我的数组:
Array
(
[date] => Array
(
[0] => 03/11/2019
[1] => 03/19/2019
[2] => 03/15/2019
[3] => 12/15/2018
)
[name] => Array
(
[0] => Lowa
[1] => Stephanie
[2] => Allan
[3] => Joffer
)
[number] => Array
(
[0] => 178989898
[1] => 111111111
[2] => 222222222
[3] => 333333333
)
[unit] => Array
(
[0] => HR
[1] => VPP
[2] =>
[3] => OAT
)
[department] => Array
(
[0] => Chemistry
[1] => IT
[2] => Lab
[3] => Contractor
)
)
最后,我的第一个元素将是:
03/19/2019 Stephanie 111111111 VPP IT
解决方案
首先保存数组的键 - 然后使用array_value
转换为整数键,以便您可以使用...
运算符。
然后你可以使用array_filter
withnull
函数来重新组织你的数组。下一步将是使用array_map
和取回密钥array_combine
。
最后一步 - 按“数据”排序usort
考虑以下示例:
$arr = ["date" => ["3", "7", "5"], "name" => ["aa", "bb", "cc"]]; // this can have a lot more sub-array inside
$keys = array_keys($arr); // extract the keys for later use
$res = array_map(null, ...array_values($arr)); // transposed the array
$res = array_map(function ($e) use ($keys) {return array_combine($keys, $e);}, $res); // return the keys to the transposed array
usort($res, function ($a, $b) {return strcmp($a['date'], $b['date']);} ); // sort all by "date"
参考:
通知@MarcoS 发表关于比较日期的评论
推荐阅读
- c++ - 使用 fstream 读取和写入文件
- ajax - 使用 Timber 和 Shopify,如何在木材的 ajax 迷你购物车上添加元字段?
- python - 查找两个字典键之间的重叠并从两个字典值创建一个新字典
- sharepoint - Sharepoint 2019 FBA配置错误,无法打开FBA用户管理设置
- r - (tidyverse 方法)跨多个列计算行和,其中要包含的列信息来自不同的数据框
- bash - Slurm --cpus-per-task 命令
- android - WIFI ADB ULTIMATE 在 Android Studio 4 及更高版本中不起作用
- javascript - 下一个 JS 样式问题与样式化组件
- swift - SwiftUI 无法显示用户位置
- json - 从 Delphi 中的 JSON 对象读取值