這就是我想做的事:複雜的PHP數學轉換,在一行
變量$input
可以等於任何下列值:-2
-1
0
1
2
我需要處理這個輸入,以便唯一可能的結果是-1
,0
和1
。數字應該轉換爲最接近的數字,所以-2
將變成-1
,2
將變成1
,但是1
,0
和-1
都將保持原樣。
我知道如何使用多行來做到這一點,但我相信有一些方法可以將一些計算嵌套在一起。
這有道理嗎?讓我知道我是否應該澄清。
這就是我想做的事:複雜的PHP數學轉換,在一行
變量$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);
}
Sinc e -2和-1的符號是負數,上述函數將返回-1。符號是1和2是正數,所以上述函數將返回1. 0沒有符號,所以上述函數將返回0.
如果需要,可以將整個程序放在一行上。這並不是一個好主意...... – 2012-07-19 05:11:16
在這種情況下,這是一個好主意。 – Jake 2012-07-19 05:12:04
永遠不要以爲你在做什麼是一個「好主意」。雙方總是有理由(除了在線樣式),你可能沒有考慮過。在這種情況下,可讀性可能就是其中之一。 – Jon 2012-07-19 05:13:02