如何解决从数组中获取过滤后的值,例如10-20范围内的值
| 如何从数组中获取过滤后的值,例如介于10到20之间的值。 我的数组包含10、15、18、25、88、20。 我只想在10到20之间打印。解决方法
将
array_intersect
与range
一起使用
$input = array(10,15,18,25,88,20);
$myrange = range(10,20);
$output = array_intersect($input,$myrange );
print_r($output );
演示
, 你可以用array_filter
function range10_20($var) {
return ( $var >= 10 && $var <= 20 );
}
$input = array(10,20);
$output = array_filter($input,\'range10_20\');
或类似的东西:
$input = array(10,20);
$range = array(
\'from\' => 10,\'to\' => 20
);
$output = array_filter($input,function ($element) use ($range) {
return ( $var >= $range[\'from\'] && $var <= $range[\'to\'] );
});
, PHP中有多种过滤数组的方法。
使用array_filter
$your_array = array(10,20);
$filtered = array_filter($your_array,create_function(\'$var\',\'return $var >= 10 && $var <= 20;\'));
var_export($filtered);
在行动
如果要更改范围起点和范围终点而无需修改create_function代码:
$your_array = array(10,20);
$range_start = 10;
$range_end = 20;
$filtered = array_filter($your_array,\'return $var >= \'.$range_start.\' && $var <= \'.$range_end.\';\'));
var_export($filtered);
在行动
$ your_array = array(10,20);
使用foreach循环:
$filtered = array();
$range_start = 10;
$range_end = 20;
foreach ($your_array as $k=>$v) {
if ($v >= $range_start && $v <= $range_end) {
$filtered[$k] = $v;
}
}
var_export($filtered);
在行动
或者,如果您不需要创建新数组,而修改现有数组,则:
$your_array = array(10,20);
$range_start = 10;
$range_end = 20;
foreach ($your_array as $k=>$v) {
if (!($v >= $range_start && $v <= $range_end)) {
unset($your_array[$k]);
}
}
var_export($your_array);
在行动
, 有什么具体要求吗?
php标准数组不支持范围搜索。
我有2条建议:
1)对数组进行排序,然后搜索您的上限,上限之前的任何内容都是您的结果
2)遍历数组,遍历时,应用范围条件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。