以下是我想要做的:
变量$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。