复杂的PHP数学转换,在一行上

时间:2012-07-19 05:09:28

标签: php math

这就是我想要做的事情:

变量$input可以等于以下任何值:-2 -1 0 1 2

我需要处理此输入,以便唯一可能的结果是-101。数字应该转换为最接近的数字,因此-2会变成-12会变成1,但是1,{{1 }}和0都会保持不变。

我知道如何使用多行来完成此操作,但我确信通过嵌套在一起的一组计算可以实现这一点。

这有意义吗?如果我要澄清,请告诉我。

2 个答案:

答案 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.