我有一个数组,其日期(例如“2011-10-31”)作为键和一些与之关联的值。数组已排序。现在,我想通过给出开始日期和结束日期来切片数组?我怎么能在PHP中做到这一点?
答案 0 :(得分:4)
简单循环:
function getRange($array, $start, $end) {
$inRange = false;
$result = array();
foreach($array as $date => $value) {
if($date >= $start && !$inRange) {
$inRange = true;
}
if($date > $end) {
break;
}
if($inRange) {
$result[$date] = $value;
}
}
return $result;
}
如果开始日期和结束日期与数组中的键完全匹配,您还可以使用array_keys
,array_search
和array_slice
的组合(但可能不会更快):
function getRange($array, $start, $end) {
$keys = array_keys($array);
$starti = array_search($start, $keys);
$endi = array_search($end, $keys);
return array_slice($array, $starti, $endi-$starti+1);
}
我假设您希望在结果数组中包含开始日期和结束日期。
当然,如果开始和/或结束日期不在数组中,你必须考虑应该发生什么。