Reputation: 2332
I have three numbers:
$a = 1
$b = 5
$c = 8
I want to find the minimum and I used the PHP min
function for that. In this case it will give 1
.
But if there is a negative number, like
$a = - 4
$b = 3
$c = 9
now the PHP min()
should give $b
and not $a
, as I just want to compare positive values, which are $b
and $c
. I want to ignore the negative number.
Is there any way in PHP? I thought I will check if the value is negative or positive and then use min
, but I couldn't think of a way how I can pass only the positive values to min()
.
Or should I just see if it's negative and then make it 0, then do something else?
Upvotes: 3
Views: 3874
Reputation: 47650
$INF=0x7FFFFFFF;
min($a>0?$a:$INF,$b>0?$b:$INF,$c>0?$c:$INF)
or
min(array_filter(array($a,$b,$c),function($x){
return $x>0;
}));
Upvotes: 3
Reputation: 5974
<?
$test = array(-1, 2, 3);
function removeNegative($var)
{
if ($var > 0)
return $var;
}
$test2 = array_filter($test, "removeNegative");
var_dump(min($test2));
?>
Upvotes: 0
Reputation: 437654
You should simply filter our the negative values first.
This is done easily if you have all of them in an array, e.g.
$a = - 4;
$b = 3;
$c = 9;
$values = array($a, $b, $c);
$values = array_filter($values, function($v) { return $v >= 0; });
$min = min($values);
print_r($min);
The above example uses an anonymous function so it only works in PHP >= 5.3, but you can do the same in earlier versions with
$values = array_filter($values, create_function('$v', 'return $v >= 0;'));
Upvotes: 7