3

我有三个数字:

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

我想找到最小值,为此我使用了 PHPmin函数。在这种情况下,它会给1.

但是如果有一个负数,比如

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

现在 PHPmin()应该给出$band not $a,因为我只想比较正值,它们是$band $c。我想忽略负数。

PHP有什么办法吗?我想我会检查该值是负数还是正数,然后使用min,但我想不出一种方法如何仅将正值传递给min().

还是我应该只看它是否为负然后将其设为0,然后再做其他事情?

4

3 回答 3

8

您应该首先过滤我们的负值。

如果您将所有这些都放在一个数组中,这很容易完成,例如

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

看到它在行动

于 2011-07-19T14:33:07.827 回答
3
$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;
}));
于 2011-07-19T14:34:24.093 回答
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));
?>
于 2011-07-19T14:34:23.727 回答