如何从数组中获取过滤值,范围为10-20。 我的数组包含10,15,18,25,88,20。 我想只在10-20范围内打印。
答案 0 :(得分:11)
$input = array(10,15,18,25,88,20);
$myrange = range(10,20);
$output = array_intersect($input , $myrange );
print_r($output );
<强> DEMO 强>
答案 1 :(得分:6)
您可以使用array_filter
function range10_20($var) {
return ( $var >= 10 && $var <= 20 );
}
$input = array(10,15,18,25,88,20);
$output = array_filter($input, 'range10_20');
或类似的东西:
$input = array(10,15,18,25,88,20);
$range = array(
'from' => 10,
'to' => 20
);
$output = array_filter($input, function ($element) use ($range) {
return ( $var >= $range['from'] && $var <= $range['to'] );
});
答案 2 :(得分:1)
在PHP中有多种方法可以过滤数组。
$your_array = array(10,15,18,25,88,20);
$filtered = array_filter($your_array, create_function('$var', 'return $var >= 10 && $var <= 20;'));
var_export($filtered);
如果要在不修改create_function代码的情况下更改范围开始和范围结束:
$your_array = array(10,15,18,25,88,20);
$range_start = 10;
$range_end = 20;
$filtered = array_filter($your_array, create_function('$var', 'return $var >= '.$range_start.' && $var <= '.$range_end.';'));
var_export($filtered);
$ your_array = array(10,15,18,25,88,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,15,18,25,88,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);
答案 3 :(得分:0)
有什么具体要求吗? php标准数组不支持范围搜索。
我有2条建议: 1)对数组进行排序,然后搜索上限,在上限之前的任何内容都是你的结果 2)遍历阵列,在遍历时应用您的范围条件。