11

PHPで数値を「クランプ」する関数を書きましたが、この関数が言語にネイティブに存在するのだろうか。

数学のセクションで PHP.net のドキュメントを読みましたが、見つかりませんでした。

基本的に、私の関数が行うことは、変数、可能な値の配列、およびデフォルト値を受け入れることです。これは私の関数の署名です:

function clamp_number($value, $possible_values, $default_value)

$valueのいずれにも一致しない場合は$possible_values、デフォルトで$default_value

プログラムで頻繁に使用しているため、PHP が既にネイティブで提供している場合、関数ははるかに高速になると思います。

4

2 に答える 2

57

セット内の数値を見つけようとしているだけのようです。実際のクランプ関数は、数値が 2 つの数値 (下限と上限) 内にあることを確認します。したがって、疑似コードは、を生成しclamp(55, 1, 10)、を生成します。あなたがもっとメソッドを探していることは知っていますが、Googleからここにたどり着いた人のために、関数を作成せずに(またはこれを関数にすることで)PHPでクランプする方法を次に示します。10clamp(-15, 1, 10)1clamp(7, 1, 10)7in_array

max($min, min($max, $current))

例えば:

$min = 1;
$max = 10;
$current = 55;
$clamped = max($min, min($max, $current));
// $clamped is now == 10

簡単なクランプ方法は次のとおりです。

function clamp($current, $min, $max) {
    return max($min, min($max, $current));
}
于 2016-02-16T17:11:21.183 に答える
7
$value = in_array($value, $possible_values) ? $value : $default_value;
于 2013-07-15T21:51:03.857 に答える