min, которая игнорирует отрицательные значения в php

У меня три цифры:

$a = 1 $b = 5 $c = 8 

Я хочу найти минимум, и я использовал функцию PHP min для этого. В этом случае это даст 1 .

Но если есть отрицательное число, например

 $a = - 4 $b = 3 $c = 9 

теперь PHP min() должен давать $b а не $a , так как я просто хочу сравнить положительные значения, которые являются $b и $c . Я хочу игнорировать отрицательное число.

Есть ли способ в PHP? Я думал, что проверю, является ли значение отрицательным или положительным, а затем используйте min , но я не мог думать о том, как передать только положительные значения min() .

Или я должен просто увидеть, является ли это отрицательным, а затем сделать это 0, а затем сделать что-то еще?

    Сначала вы должны сначала отфильтровать отрицательные значения.

    Это делается легко, если у вас есть все в массиве, например

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

    В приведенном выше примере используется анонимная функция, поэтому она работает только в PHP> = 5.3, но вы можете сделать то же самое в более ранних версиях с

     $values = array_filter($values, create_function('$v', 'return $v >= 0;')); 

    Смотрите в действии .

     $INF=0x7FFFFFFF; min($a>0?$a:$INF,$b>0?$b:$INF,$c>0?$c:$INF) 

    или

     min(array_filter(array($a,$b,$c),function($x){ return $x>0; })); 

    http://codepad.org/DVgMs7JF

     <? $test = array(-1, 2, 3); function removeNegative($var) { if ($var > 0) return $var; } $test2 = array_filter($test, "removeNegative"); var_dump(min($test2)); ?>