首页 > 解决方案 > PHP按键切片范围而不是按索引

问题描述

我有一个如下所示的数组:

$array = [
  1000 => 'something',
  2000 => 'something',
  10000 => 'something',
  20000 => 'something',
  300000 => 'something',
];

假设我想得到 和 之间的2000间隔20000。我需要循环还是有更好的方法?

它不是索引,所以在这种情况下我不能使用 slice。

我所希望的

我可以自己用一个循环来做这件事,但希望有更聪明的东西。

$range = getRange(2000, 20000, $array);
print_r($range);

输出

$range = [
  2000 => 'something',
  10000 => 'something',
  20000 => 'something',
];

标签: phparraysrangeintervals

解决方案


array_filter可以根据值键进行过滤……</p>

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
}

推荐阅读