在php中忽略负值的min函数

在php中忽略负值的min函数,php,min,Php,Min,我有三个号码: $a = 1 $b = 5 $c = 8 我想找到最小值,我使用了PHPmin函数。在这种情况下,它将给出1 但是如果有一个负数,比如 $a = - 4 $b = 3 $c = 9 现在PHPmin()应该给出$b而不是$a,因为我只想比较正值,它们是$b和$c。我想忽略负数 PHP中有什么方法吗?我想我会检查该值是负值还是正值,然后使用min,但我想不出一种方法可以只将正值传递给min() 或者我应该看看它是不是负值,然后把它设为0,然后再做些别的事情吗?你应该先过滤掉负值

我有三个号码:

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



创建一个数组,过滤数组,如果值<0,删除此数组元素,然后在arrayshudder上使用min()。字符串“-ve”和“+ve”不是英语中的单词。BLAST您。。。几秒钟就被打败了。你救了我的命:-)
<?
$test = array(-1, 2, 3);

function removeNegative($var)
{
   if ($var > 0)
       return $var;
}

$test2 = array_filter($test, "removeNegative");

var_dump(min($test2));
?>
$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;
}));