我有一个数组如下。
$denominations = array(100, 200, 500, 1000, 5000);
动态最小值和最大值,
例如;
$minimumValue = 150;
$maximumValue = 700;
所以我的面额数组应该消除100和1000以上。
我知道我可以通过for循环来做到这一点。但是为了简化我的编码,有没有任何数组函数可以做到这一点?
答案 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);