首页 > 解决方案 > 检查日期是否在 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 循环应始终仅针对相同的索引发生),但数组的数量或内部的日期范围可能不同。

非常感谢你!!

标签: phparraysmultidimensional-array

解决方案


您可以对 中的值使用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
)

3v4l.org 上的演示


推荐阅读