这就是我想要做的事情:
变量$input
可以等于以下任何值:-2
-1
0
1
2
我需要处理此输入,以便唯一可能的结果是-1
,0
和1
。数字应该转换为最接近的数字,因此-2
会变成-1
,2
会变成1
,但是1
,{{1 }}和0
都会保持不变。
我知道如何使用多行来完成此操作,但我确信通过嵌套在一起的一组计算可以实现这一点。
这有意义吗?如果我要澄清,请告诉我。
答案 0 :(得分:8)
如果您知道您肯定只会获得这些值,则可以使用:
<?php
$value = max(-1, min(1, $value));
?>
我通常会根据具体情况将这些转换为整数表达式。
<?php
$value = max(-1, min(1, intval($value)));
?>
答案 1 :(得分: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.