这是我想要做的:
变量$input
可以等于以下任何值:-2
-1
0
1
2
我需要处理这个输入,以便唯一可能的结果是-1
、0
和1
。数字应转换为最接近的数字,因此-2
会变成-1
,2
会变成1
,但是1
,0
,并且-1
都将保持原样。
我知道如何使用多行来做到这一点,但我确信有一些方法可以通过嵌套在一起的一组计算来做到这一点。
那有意义吗?让我知道我是否应该澄清。
如果你知道你肯定会得到这些值,你可以使用:
<?php
$value = max(-1, min(1, $value));
?>
为了以防万一,我通常会将它们显式转换为整数。
<?php
$value = max(-1, min(1, intval($value)));
?>
如果你有 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。