你会如何最好地编写一个函数来min()
在 PHP 中选择,但忽略空值?
function minvar($var1,$var2) {
$min=min($var1,$var2);
return $min;
}
我知道你可以用if
etc 做到这一点,但我认为会有更优雅的方式?
function($var1,$var2) {
return min($var1 ?: PHP_INT_MAX, $var2 ?: PHP_INT_MAX);
}
请注意,它也会被0
视为“未定义”。
更新:当所有值都为空时PHP_INT_MAX
返回。在此实现中,这是有意的,因为 OP 明确要求忽略空值。因此,当忽略所有值时,最小值实际上是总体最大值(不知何故)。我的主要目的是保持返回值严格:当方法说忽略空值时,这是出乎意料的,在某些情况下它仍然返回null
。
我想你可以这样做array_filter
:
function($var1,$var2) {
$min=min(array_filter(array($var1,$var2)));
return $min;
}
array_filter
从数组中删除所有评估为 boolean 的项目false
。min
然后从数组中获取最低的项目。请注意,0
将被删除。
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);
}
(小心使用三等式===)