为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 切片范围按键而不是按索引

PHP 切片范围按键而不是按索引

PHP
HUWWW 2022-09-03 17:24:53
我有一个如下所示的数组:$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

}


查看完整回答
反对 回复 2022-09-03
?
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)的复杂性。


查看完整回答
反对 回复 2022-09-03
?
杨魅力

TA贡献1811条经验 获得超6个赞

array_splice是此问题的解决方案。但问题是钥匙永远不会被保留。查看此内容,了解保留密钥array_splice解决方案array_splice



查看完整回答
反对 回复 2022-09-03
  • 3 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信