根据最小值和最大值消除数组元素

时间:2015-06-15 11:28:03

标签: php arrays

我有一个数组如下。

$denominations = array(100, 200, 500, 1000, 5000);

动态最小值和最大值,

例如;

$minimumValue = 150;
$maximumValue = 700;

所以我的面额数组应该消除100和1000以上。

我知道我可以通过for循环来做到这一点。但是为了简化我的编码,有没有任何数组函数可以做到这一点?

4 个答案:

答案 0 :(得分:3)

按array_filter

选择有效项目
$minimumValue = 150;
$maximumValue = 700;

$new = array_filter($denominations, 
     function($v) use($minimumValue, $maximumValue) 
         { return ($v > $minimumValue && $v < $maximumValue); });

答案 1 :(得分:2)

array_map&amp; array_filter可以提供帮助 -

$denominations = array(100, 200, 500, 1000, 5000);
$minimumValue = 150;
$maximumValue = 700;
$new = array_map(function($a) use($minimumValue, $maximumValue) {
    if($a > $minimumValue && $a < $maximumValue) {
        return $a;
    }
}, $denominations); // Will return the values if satisfied else null will be set

$new = array_filter($new); // Filter out the null values

使用array_filter -

$new = array_filter($denominations , function($a) use($minimumValue, $maximumValue) {
    if($a > $minimumValue && $a < $maximumValue) {
        return $a;
    }
});

答案 2 :(得分:1)

尚未测试,但使用array_filter函数应该是这样的:

<?php
$denominations = array(100, 200, 500, 1000, 5000);

$minimumValue = 150;
$maximumValue = 700;

$denominations = array_filter($denominations , function($key, $value) {
    return $value >= $minimumValue && $value <= $maximumValue;
}, ARRAY_FILTER_USE_BOTH)); 
?>

答案 3 :(得分:1)

您只需使用array_filter作为

即可
$denominations = array(100, 200, 500, 1000, 5000);
$minimumValue = 150;
$maximumValue = 700;
array_filter($denominations,function($v) use(&$result,$minimumValue,$maximumValue)
{
 if($v > $minimumValue && $v < $maximumValue) 
     $result[] = $v;
});
print_r($result);

Fiddle