min()
空の値を無視して、PHP で選択する関数をどのように記述するのが最善でしょうか?
function minvar($var1,$var2) {
$min=min($var1,$var2);
return $min;
}
etcでできることは知っていますがif
、もっとエレガントな方法があると思いましたか?
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);
}
(トリプルイコール===を使用するように注意してください)