PHP min()但不是空的

时间:2012-07-09 11:55:13

标签: php function min

你如何最好编写一个函数来选择PHP中的min(),但忽略空值?

function minvar($var1,$var2) {
    $min=min($var1,$var2);
    return $min;
}

我知道你可以用if等来做,但我认为会有更优雅的方式吗?

3 个答案:

答案 0 :(得分:5)

function($var1,$var2) {
  return min($var1 ?: PHP_INT_MAX, $var2 ?: PHP_INT_MAX);
}

请注意,它也会将0视为“未定义”。

更新:当所有值都为空时,将返回PHP_INT_MAX。在此实现中,它旨在,因为OP明确要求忽略空值。因此,当忽略所有值时,最小值实际上是总体最大值(以某种方式)。我的主要目的是保持返回值的严格:当方法说忽略空值时,它会出乎意料,在某些情况下,它仍然会返回null

答案 1 :(得分:5)

我猜你可以用array_filter

来做
function($var1,$var2) {
    $min=min(array_filter(array($var1,$var2)));
    return $min;
}

array_filter删除数组中评估为布尔false的所有项。然后min从数组中获取最低项。请注意,0将被删除。

答案 2 :(得分:1)

King Crunch的方法不适用于像DateTime对象这样的非整数类型。下面的代码确实:

function minnotnull($var1, $var2) {
    if($var1 === null) { return $var2; } 
    if($var2 === null) { return $var1; } 
    return min($var1, $var2); 
}    

function maxnotnull($var1, $var2) {
    if($var1 === null) { return $var2; } 
    if($var2 === null) { return $var1; } 
    return max($var1, $var2); 
}   

(小心使用三重等式===)