我正在處理一個類來處理php中的html十六進制顏色代碼。在內部,該類將RGB值視爲小數。當我加入或減去時,我從來不希望該值超過255,也不會將「subceed」置零。在php中unsigned tinyint?
如果當然,我可以做一些零碎像
if ($val > 255) {
$val = 255;
}
if ($val < 0) {
$val = 0;
}
但是,這是冗長:P
有一個聰明,一個linish方法可以讓我得到的價值留在0和255之間?
我正在處理一個類來處理php中的html十六進制顏色代碼。在內部,該類將RGB值視爲小數。當我加入或減去時,我從來不希望該值超過255,也不會將「subceed」置零。在php中unsigned tinyint?
如果當然,我可以做一些零碎像
if ($val > 255) {
$val = 255;
}
if ($val < 0) {
$val = 0;
}
但是,這是冗長:P
有一個聰明,一個linish方法可以讓我得到的價值留在0和255之間?
你可能會這樣說: $ val = max(0,min(255,$ val));
使用bitwise OR operator會工作
if(($num | 255) === 255) { /* ... */ }
例子:
foreach (range(-1000, 1000) as $num) {
if(($num | 255) === 255) {
echo "$num, ";
};
}
會打印出所有的數字從0到255
或者你可能是人誰使用嵌套三元運營商。
例如。
(($num > 255) ? 255 : (($num < 0) ? 0 : $num))
嵌套的三元運算符只對個人興趣有趣。 – 2011-07-02 10:12:06
他們要求一個聰明的單行代碼,我認爲這符合該定義(除了需要包含的額外文檔行外) – 2011-07-05 13:49:58
@Jonathan我和你在一起到最後。我會不止給予一點意見? – user151841 2011-07-05 19:23:30
爲什麼要打擾ORing?一個簡單的'$ var&= 0xFF'會將這個值屏蔽到0-255的範圍 – 2010-04-29 17:52:20
@MarcB關於使用OR有什麼困擾* – Gordon 2010-04-29 19:31:33
馬克B的回答很有道理 - 我不明白戈登想要達到的目標。 – symcbean 2010-04-29 22:07:29