12

我有一个包含以下数字的数组(动态创建)

$numbers = array (200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 12000, 14000, 15000, 16000, 18000, 20000, 21000, 24000, 25000, 27000, 30000, 35000, 40000, 45000, 50000, 60000, 70000, 75000, 80000, 90000, 100000, 105000, 120000, 135000, 140000, 150000, 160000, 180000, 200000, 250000, 300000, 350000, 400000, 450000, 500000, 600000, 700000, 800000, 900000, 1000000)

我想通过 >= 和 <= 创建新数组(过滤),例如,新数组包含大于或等于(>=)800 且小于或等于(<=)1600 的数字

New Array
(
    [0] => 800
    [1] => 1000
    [2] => 1200
    [3] => 1400
    [4] => 1600
)

不使用foreach有可能吗?

4

2 回答 2

25
$min = 800;
$max = 1200;
$newNumbers = array_filter(
    $numbers,
    function ($value) use($min,$max) {
        return ($value >= $min && $value <= $max);
    }
);
于 2013-04-02T23:16:48.300 回答
12

您正在寻找array_filter http://php.net/manual/en/function.array-filter.php

一个很好的使用示例是:

array_filter($numbers, function($n){ 
    return $n >= 800 && $n <= 1600;
});
于 2013-04-02T23:18:16.990 回答