我有这个数组:
$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
”是最后一个键数组。
感谢您的帮助:)
答案 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))];