【问题标题】:min function that ignores negative values in php忽略php中负值的min函数
【发布时间】:2011-10-08 14:17:51
【问题描述】:

我有三个数字:

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

【问题讨论】:

  • 创建一个数组,过滤数组,如果value
  • shudder 字符串“-ve”和“+ve”不是英语单词。

标签: php min


【解决方案1】:

你应该先过滤掉我们的负值。

如果您将它们全部放在一个数组中,这很容易完成,例如

$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.

【讨论】:

  • BLAST YOU... 被击败了几秒钟。
  • 你拯救了我的一天:-)
【解决方案2】:
$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;
}));

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 2011-06-05
      • 2018-04-24
      • 2018-07-05
      • 1970-01-01
      • 2020-12-22
      相关资源
      最近更新 更多