Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I have one array(dynamically created) that contains the following numbers

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

I want to create new array (filtered) by >= and <= for example the new array to contains numbers greater or equal(>=) than 800 and lower or equal(<=) than 1600

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

is that possible without using foreach?

share|improve this question
 
array_filter() with a callback –  Mark Baker Apr 2 '13 at 23:13
 
^ array_filter($numbers, function($n){ return $n >= 800 && $n <= 1600 } –  elclanrs Apr 2 '13 at 23:14
 
yes! I did not know it how to pass two variables to array_filter. thanks both of you! –  AkisC Apr 2 '13 at 23:17
add comment

2 Answers

up vote 3 down vote accepted
$min = 800;
$max = 1200;
$newNumbers = array_filter(
    $numbers,
    function ($value) use($min,$max) {
        return ($value >= $min && $value <= $max);
    }
);
share|improve this answer
add comment

You are looking for array_filter http://php.net/manual/en/function.array-filter.php

A good example of use would be:

array_filter($numbers, function($n){ 
    return $n >= 800 && $n <= 1600 });
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.