php
2015-06-13 38 views 0 likes 
0

這是一個簡單的年份驗證,應該檢查年份是否在1900年和當年之間。如果年份有效,則應顯示爲輸入值。簡單的PHP如果聲明不按預期行事

if(!empty($year) && $year >= 1900 || !empty($year) && $year <= date('Y')){ 
$yearHolder = 'value="'.$year.'"'; 
}else{ 
$yearHolder = 'placeholder="Year"'; 
} 

我遇到的問題是該聲明不起作用,並通過任何數字。

+2

因爲'||'需要和AND運算符。現在換句話說,你的'$ year'可以大於1900或者小於2015.長話短說:'if(!empty($ year)&& $ year> = 1900 && $ year <= date(「 Y))'(< - 也注意:由於函數調用'date'在最後只會在所有其他條件都爲TRUE的情況下被調用) – Rizier123

+0

將條件改爲:if(!empty($ year)&& $ year> = 1900 && $ year <= date('Y')) – sAcH

+0

@ Rizier123 It works!非常感謝您的幫助和解釋。 – nickyb

回答

1

你可以試試這個。

if(!empty($year) && $year >= 1900 && $year <= date('Y')){ 
    $yearHolder = 'value="'.$year.'"'; 
}else{ 
    $yearHolder = 'placeholder="Year"'; 
} 
0

嘗試:

if(!empty($year) && $year >= 1900 && $year <= date('Y')){ 

不需要檢查是否$year是空的兩倍,讓它們與運算。

0

爲了確保條件,請單獨放置。

if(!empty($year)) 
{ 
    if ($year >= 1900 && $year <= date('Y')) 
    { 
     $yearHolder = 'value="'.$year.'"'; 
    }else{ 
     $yearHolder = 'placeholder="Year"'; 
    } 
} else { 
    echo "Year is empty"; 
} 
0

你要你的中間|| OR condition改變並和使用條件,讓你的邏輯,你想要的。眼下換句話說,你的條件是:

IF $year不爲空並且$year或者是大於1900 OR低於2015年

但你想要的是:

IF $year不爲空AND $year要麼大於1900 AND小於2015

所以,你的if語句應該是這個樣子:

if(!empty($year) && $year >= 1900 && $year <= date("Y")) 

還要注意,函數調用date()是在年底,這使得它只能執行,如果其他兩件在條件是真的。那是因爲PHP有​​short circuit evaluation

0

鞏固其他的建議,你可以嘗試這樣的事:

if (!empty($year) && $year >= 1900 && $year <= date('Y')) { 
    $yearHolder = 'value="' . $year . '"'; 
} else { 
    $yearHolder = 'placeholder="Year"'; 
} 

這消除了空值的冗餘的檢查,糾正你的||到一個& &

相關問題