2

3 つの引数を取る PHP 関数があり、そのうちの 1 つはオプションの引数です。

function theRange($min, $max) {
    // Function Body
}

ただし、制限をデフォルトのパラメーターに設定し、それをオプションのパラメーターとして指定する必要があります。だから、私がしたことは次のとおりです。

function theRange($min, $max = 5) {
    // Function Body
}

$minがより大きい場合に問題が発生し5、最大値が最小値よりも小さい場合、値が無効になります。だから、私はデフォルトを に設定した$maxので$min、私がしたことは次のとおりです。

function theRange($min, $max = $min) {
    // Function Body
}

これにより、次のようなエラーがスローされます。

構文エラー: functions.phpの2行目に予期しない'$min'( T_VARIABLE)という構文エラーがあります。

現在、次のように処理しています。

function theRange($min, $max = null) {
    if (!isset($max) || is_null($max))
         $max = $min;
    // Function Body
}

前のパラメーターを入力シナリオとして使用するために、この既定のパラメーターを処理するより良い方法はありますか? 前もって感謝します!:)

4

2 に答える 2

1

別の方法は考えられませんが、もちろん、三項演算子を使用してかなり短縮できます。関数のパラメータで指定したため、常にisset設定さ$maxれます。

function theRange($min, $max = null) {
     $max = is_null($max) ? $min : $max;
    // Function Body
}

ただし、min=10 と max=5 を明示的に関数に渡すことができるため、追加のチェックを行う必要があります。

function theRange($min, $max = null) {
     $max = is_null($max) || $max < $min ? $min : $max;
    // Function Body
}

また、その関数が実際に行うべきことによっては、負の値もチェック/除外する必要があるかもしれません…</p>

于 2014-08-25T14:58:46.883 に答える