PHP获取键值或降低最大值

时间:2018-10-17 12:43:14

标签: php arrays

我有这个数组:

$by_date = array(
    "2018-10-05"=>54,
    "2018-10-07"=>20,
    "2018-10-08"=>31,
    "2018-10-12"=>52
    );

我想按日期获取值,但是如果该日期不存在,则获取最低的日期值

例如:

如果日期为“ 2018-10-07”,我会得到 20

如果日期为“ 2018-10-10”,我会得到 31

可以使日期和数组中的最后一个键之间的差异更大

例如,如果日期为“ 2019-01-25”,我将得到 52 ,因为“ 2018-10-12”是最后一个键数组。

感谢您的帮助:)

2 个答案:

答案 0 :(得分:0)

在正确的预览答案上还不够好的你们
我已经进行了一项工作,对我有用,但不确定效率

if (!isset($by_date[$testVal])){
    $by_date[$testVal] = null;
    ksort($by_date);
    $date_key = array_search($price_date,array_keys($by_date));
    $by_date[$testVal] = (array_values($by_date)[$date_key-1]);
}

$by_date_price =  $by_date[$testVal];

感谢您的帮助和评论

答案 1 :(得分:-1)

您可以使用一个简单的if条件来执行此操作,该条件使用isset()来检查输入作为数组上的键。如果满足条件,则返回匹配的值,否则,使用max()array_keys()返回具有最高键的值。

$by_date = array(
    "2018-10-05"=>54,
    "2018-10-07"=>20,
    "2018-10-08"=>31,
    "2018-10-12"=>52
    );

$testVal = '2018-10-12'

if (isset($by_date[$testVal]))
    return $by_date[$testVal];
else 
    return $by_date[max(array_keys($by_date))];