1

これが私がやりたいことです:

変数$inputは、次の値のいずれかと等しくなります。-2 -1 0 1 2

この入力を処理して、考えられる結果が-10、およびのみになるようにする必要があり1ます。数値は、それらのうち最も近いものに変換する必要があるため、 、 、、 、、およびすべてそのままになり-2ます。-12110-1

複数の行を使用してこれを行う方法は知っていますが、ネストされた一連の計算を使用してこれを行う方法があると確信しています。

それは理にかなっていますか?明確にする必要があるかどうか教えてください。

4

2 に答える 2

8

これらの値のみを確実に取得することがわかっている場合は、次を使用できます。

<?php
$value = max(-1, min(1, $value));
?>

念のため、通常はこれらを明示的に整数に変換します。

<?php
$value = max(-1, min(1, intval($value)));
?>
于 2012-07-19T05:13:19.940 に答える
0

GMP 拡張機能がある場合は、次を使用できます。

int gmp_sign(resource $a);

このような:

<?php $value = gmp_sign($value); ?>

GMP 拡張がない場合は、次のような関数を作成できます。

<?php
function sign( $number ) {
    return ( $number > 0 ) ? 1 : ( ( $number < 0 ) ? -1 : 0 );
} 

-2 と -1 の符号は負であるため、上記の関数は -1 を返します。符号は 1 と 2 は正であるため、上記の関数は 1 を返します。0 には符号がないため、上記の関数は 0 を返します。

于 2012-07-19T05:53:54.270 に答える