2017-09-07 88 views
1

可能是一個愚蠢的問題,但是有沒有一種更聰明的方式來檢查圖像1360x455是否在允許的容差範圍內,我已經定義了兩個其他數字的+10。 :比較數字與容差

<?php 
$w = 1360; 
$h = 455; 

$cw = 1360; 
$ch = 460; 

$tol = 10; //px 
if ((int) $w >= (int) ($cw-$tol) && (int) $w <= (int) ($cw+$tol) && 
    (int) $h >= (int) ($ch-$tol) && (int) $h <= (int) ($ch+$tol)) { 

    echo "you are within the tolerance {$cw}x{$ch}px by +-{$tol} px."; 
}; 

所以我基本上只是想確保用戶在上傳時不會超出這些範圍。上面的代碼工作,只是想知道我是否可以更聰明。該方法在傳入時已知道這些值。

回答

3

更簡潔的方法是將輸入值與參考值相減,並確保結果的絕對值(abs())小於或等於您的容差。

參考值與輸入值之間的差值必須在10以內,並將它們相減會產生正整數或負整數。使用abs()去掉它的符號,所以這是一個簡單的<=與容差值的比較。

$w = 1360; 
$h = 455; 

$cw = 1360; 
$ch = 460; 

$tol = 10; //px 

if (abs($cw - $w) <= $tol && abs($ch - $h) <= $tol) { 
    echo "you are within the tolerance {$cw}x{$ch}px by +-{$tol} px."; 
} 

這裏通常不需要鑄造(int)。但是如果你的函數可能會接收字符串值,我會建議在計算之前將變量轉換爲整數,以減少混亂。

+0

我很欣賞這個反饋。 –

+0

@MikeQ很高興幫助。 –