php - 检查日期是否在 PHP 中的多维数组中的多个日期范围之间
问题描述
我尽力解决它,但我不能。如果你能在这方面帮助我,那就太好了。
我有这两个数组..
$firstarray — 它包含日期 [0] 和当天的产品成本 [1]。
[0] => Array (
[0] => 2020-12-01
[1] => 24.00
)
[1] => Array (
[0] => 2020-12-05
[1] => 16.00
)
[2] => Array (
[0] => 2020-12-07
[1] => 12.00
)
[3] => Array (
[0] => 2020-12-15
[1] => 0.00
)
[4] => Array (
[0] => 2020-12-16
[1] => 0.00
)
[5] => Array (
[0] => 2020-12-16
[1] => 100.00
)
$secondarray — 包含多个日期范围 [0] 和 [1],其中成本 [2] 在给定期间内异常不同。
[0] => Array (
[0] => Array (
[0] => 2020-12-01
[1] => 2020-12-05
[2] => 42.00
)
[1] => Array (
[0] => 2020-12-06
[1] => 2020-12-08
[2] => 35.00
)
[2] => Array (
[0] => 2020-12-09
[1] => 2020-12-12
[2] => 76.00
)
)
[1] => Array (
[0] => Array (
[0] => 2020-12-01
[1] => 2020-12-05
[2] => 42.00
)
[1] => Array (
[0] => 2020-12-06
[1] => 2020-12-08
[2] => 35.00
)
[2] => Array (
[0] => 2020-12-09
[1] => 2020-12-12
[2] => 76.00
)
)
[2] => Array (
[0] => Array (
[0] => 2020-12-04
[1] => 2020-12-09
[2] => 10.00
)
[1] => Array (
[0] => 2020-12-10
[1] => 2020-12-13
[2] => 45.00
)
)
[3] => Array (
[0] => Array (
[0] => 2020-12-04
[1] => 2020-12-09
[2] => 10.00
)
[1] => Array (
[0] => 2020-12-10
[1] => 2020-12-13
[2] => 45.00
)
)
[4] => Array (
[0] => Array (
[0] => 2020-12-04
[1] => 2020-12-09
[2] => 10.00
)
[1] => Array (
[0] => 2020-12-10
[1] => 2020-12-13
[2] => 45.00
)
)
[5] => Array (
[0] => Array (
[0] => 2020-12-01
[1] => 2020-12-05
[2] => 42.00
)
[1] => Array (
[0] => 2020-12-06
[1] => 2020-12-08
[2] => 35.00
)
[2] => Array (
[0] => 2020-12-09
[1] => 2020-12-12
[2] => 76.00
)
)
我想检查 $firstarray 中的每个日期是否在 $secondarray 中的一个日期范围之间,如果是 - 从该日期范围的 $secondarray 中回显索引 [2] 处的值,如果不是 - 回显在$firstarray 中的索引 [1]。
两个数组将始终具有相同的数字,在这种情况下为5(foreach 循环应始终仅针对相同的索引发生),但数组的数量或内部的日期范围可能不同。
非常感谢你!!
解决方案
您可以对 中的值使用foreach
循环$firstarray
,将默认价格设置为该数组中的值。然后,您可以使用每个值中的键来索引$secondarray
并将日期$firstarray
与 中的每个范围进行比较$secondarray
。如果日期在该范围内,请将价格设置为该范围内的值。
$prices = array();
foreach ($firstarray as $key => $value) {
$price = $value[1];
foreach ($secondarray[$key] as $range) {
if ($value[0] >= $range[0] && $value[0] <= $range[1]) {
$price = $range[2];
break;
}
}
$prices[] = $price;
}
print_r($prices);
输出(用于您的样本数据):
Array
(
[0] => 42
[1] => 42
[2] => 10
[3] => 0
[4] => 0
[5] => 100
)
推荐阅读
- asp.net-mvc - 如何加快页面加载时间,使用 asp.net(MVC) 开发的网站
- mysql - mySQL - 有限选择后的 UNION
- c# - C#:将双精度数隐式转换为浮点数?
- c# - Asp.Net Webform 自定义视图引擎
- amazon-web-services - 如何在 tomcat 上安装证书?它是在让我们加密 ssl 免费 ssl 证书上生成的
- reactjs - 如何在表单的输入上方放置标签?
- spring - 不使用 springsecurity 的忘记密码功能
- coq - 如何将真实的东西重写为真实
- ios - 禁用 UICollectionView 的向右滑动
- android - 在导航栏上方显示一行