1

这是我想要做的:

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

我需要处理这个输入,以便唯一可能的结果是-101。数字应转换为最接近的数字,因此-2会变成-12会变成1,但是10,并且-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 回答