PHP获取键值或最大值下限
我得到了这个数组:PHP获取键值或最大值下限,php,arrays,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 这可能导致数组中日期和最后一个键之间存在更大的差异 例如,如果日期是201
$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是数组中的最后一个键
感谢您的帮助:您可以使用一个简单的if条件来检查您作为数组上的键的输入。如果满足条件,则返回匹配的值,否则,使用和返回具有最高键的值
$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))];
你们这些家伙,对了,预告片的答案还不够好 我做了一个适合我的工作,但不确定效率
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];
感谢您的帮助和评论我认为您正在获得否决票,因为您尚未共享您的尝试代码。如果成功,则这将给出数组中的最低值,而不是给定日期中的较低值。OP声明这将是错误的。数组_key_exists最好检查密钥这是作为密钥存储的,它不会采用datetime格式。对于日期2018-10-09或2018-10-10,您的输出是否为2015-10-08=>31对于键2018-10-08,数组的值将为31。最低的键是2018-10-05,因此这将是2018-10-10的输出,或者是数组中找不到的任何其他键。