我有三个号码:
$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,然后再做其他事情?
答案 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;'));
答案 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)
<?
$test = array(-1, 2, 3);
function removeNegative($var)
{
if ($var > 0)
return $var;
}
$test2 = array_filter($test, "removeNegative");
var_dump(min($test2));
?>