php - 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',
];
解决方案
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
}
推荐阅读
- ethereum - truffle migrate:部署时的调用方法
- go - 编译运行时无法禁用优化
- java - 如 String.intern() 方法的 Javadoc 中所述,字符串池最初是否真的为空?
- mysql - 如何计算去年未回复的消息?
- android - 单击recyclerView时如何从firestore获取数据
- clickonce - 使用 c# 代码从发布中获取 installUrl
- git - 如何在詹金斯中构建仅 git 更改的文件?
- django - Django Admin 附加自定义字段被隐藏
- javascript - 由于第一个 html 页面的 JavaScript 事件侦听器的输出,正在更新第二个 html 中的图像源
- r - 根据条件计算平均值