2011-07-19 57 views
1

负值我有三个数字:分函数忽略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,然后做其他的事情?

+1

创建一个数组,滤波器阵列中,如果值<0,删除这个数组元素,则该阵列 –

+0

上使用min()*不寒而栗*字符串“-ve”和“+ ve”不是英语中的单词。 – 2011-07-19 14:32:46

回答

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做同样的早期版本。

+0

爆炸你......被殴打仅仅几秒钟。 – FinalForm

+0

@FinalForm:对不起! :) – Jon

+0

你救我一天:-) – vietnguyen09

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)); 
?> 
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; 
}));