min函数忽略php中的负值

时间:2011-07-19 14:29:40

标签: php min

我有三个号码:

$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,然后再做其他事情?

3 个答案:

答案 0 :(得分: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;'));

See it in action

答案 1 :(得分: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;
}));

答案 2 :(得分: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));
?>