从数组中获取过滤值,范围为10-20

时间:2011-05-30 09:53:57

标签: php

如何从数组中获取过滤值,范围为10-20。 我的数组包含10,15,18,25,88,20。 我想只在10-20范围内打印。

4 个答案:

答案 0 :(得分:11)

array_intersectrange

一起使用
$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中有多种方法可以过滤数组。

使用array_filter

$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);

In action

如果要在不修改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);

In action

$ 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);

In action

或者如果您不需要创建新数组,但修改现有数组:

$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);

In action

答案 3 :(得分:0)

有什么具体要求吗? php标准数组不支持范围搜索。

我有2条建议: 1)对数组进行排序,然后搜索上限,在上限之前的任何内容都是你的结果 2)遍历阵列,在遍历时应用您的范围条件。