У меня три цифры:
$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; }));
<? $test = array(-1, 2, 3); function removeNegative($var) { if ($var > 0) return $var; } $test2 = array_filter($test, "removeNegative"); var_dump(min($test2)); ?>