php - 从嵌套数组中获取最大日期
问题描述
如果我有以下数组,我怎样才能获得最大到期日期?到期日期始终是键为 5 的值数组中的值,即 $results['values']['5']
array (
0 =>
array (
'values' =>
array (
1 => '123456',
2 => 'Blue',
3 => 'Container',
4 => '03-01-2020', // start date
5 => '03-01-2021', // exp date
6 => '',
7 => '',
),
),
1 =>
array (
'values' =>
array (
1 => '21312',
2 => 'Green',
3 => 'Box',
4 => '2019-04-12', // start date
5 => '', //exp date
6 => '',
7 => '',
),
),
2 =>
array (
'values' =>
array (
1 => '434324',
2 => 'Orange',
3 => 'Box',
4 => '2018-04-28', // start date
5 => '2019-04-23', // exp date
6 => '',
7 => '',
),
),
)
我知道我可以为一个简单的数组执行以下操作:
$max = max(array_map('strtotime', $arr));
echo date('d F Y', $max);
如何使用嵌套数组实现相同的效果?
解决方案
由于您已经在使用array_map
,您可以使用一个自定义函数来获取到期日期并strtotime
一次性使用它:
$expiryDates = array_map(static function ($entry) {
return strtotime($entry['values'][5]);
}, $input);
echo date('d F Y', max($expiryDates));
奖励 - 使用 PHP 7.4 短闭包:
$expiryDates = array_map(fn($entry) => strtotime($entry['values'][5]), $input);
echo date('d F Y', max($expiryDates));
推荐阅读
- c++ - 当您可以使用构造函数时,为什么要在 C++ 类或结构中重载 () 运算符(可调用运算符)?
- .net - dev-certs 生成没有根的证书
- html - 提供指向背景 url html 的链接
- android - RecyclerView的适配器,哪种形式的设置比较好?
- c# - Dispose() 方法中是否需要调用“Clear()”?
- c - 为什么一个字符串在 C 中写入两个字符?
- python - 如果 slug 已存在于 postgresql 数据库中,则跳过保存行 - python
- java - 为什么我的堆栈是空的?空堆栈异常
- php - 为什么 Ajax 仅在禁用 Internet 时工作?
- c# - 如何序列化/反序列化分布在程序集中的多个相同类实例