我有一个如下所示的数组:$array = [ 1000 => 'something', 2000 => 'something', 10000 => 'something', 20000 => 'something', 300000 => 'something',];假设我想获得 和 之间的间隔。我需要循环还是有更好的方法?200020000它不是索引,因此在这种情况下我无法使用切片。我所希望的我可以用一个循环自己做这件事,但希望有更聪明的东西。$range = getRange(2000, 20000, $array);print_r($range);输出$range = [ 2000 => 'something', 10000 => 'something', 20000 => 'something',];
3 回答
梦里花落0921
TA贡献1772条经验 获得超5个赞
array_filter可以根据值或键进行过滤...
function getRange($min, $max, $array) {
return array_filter($array, function($key) use ($min, $max) {
return $key >= $min && $key <= $max;
}, ARRAY_FILTER_USE_KEY ); // flag to pass the key into the callback function
}
Cats萌萌
TA贡献1805条经验 获得超9个赞
function getRange($start,$end, $array){
$dataArray= array();
foreach($array as $key=>$value){
if($key>=$start && $key<=$end){
$dataArray[$key]= $value;
}
}
return $dataArray;
}
您将需要循环访问数组并手动执行此操作。即使有任何内置函数将循环访问结果。简而言之,您将始终需要遍历数据集,并且您将始终具有O(N)的复杂性。
- 3 回答
- 0 关注
- 79 浏览
添加回答
举报
0/150
提交
取消