2016-12-14 124 views
1

如果$ required var被設置並且等於bool true或string爲true,那麼我試圖輸出一個必需的字符串。檢查值是否設置爲true並且爲true true

我:

isset($required) && $required == true ? 'required' : '' 
以下一組

所以:

$required = true //required string set 
$required = 'true' //required string set 
$required = false //required string not set 

都好,直到:

$required = 'false' //required string set 

如何測試的條件,並允許對字符串和布爾類型?

+3

使用進行嚴格比較,而不是'$需要== = true'。你會體驗到這一點,這就是你所看到的。 'true =='string「'是真的,但是如果你使用嚴格比較,那麼類型也需要匹配(例如布爾型布爾值)。 – Qirel

+0

@Qirel不會工作,我不能傳入'真正的'字符串 - 傳遞這個字符串應該評估爲true。 – panthro

回答

3

有關使用filter_var如何...:

filter_var($required, FILTER_VALIDATE_BOOLEAN); 

會給你:

$required = 'false'; 
filter_var($required, FILTER_VALIDATE_BOOLEAN); // false 

$required = false; 
filter_var($required, FILTER_VALIDATE_BOOLEAN); // false 

$required = 'true'; 
filter_var($required, FILTER_VALIDATE_BOOLEAN); // true 

$required = true; 
filter_var($required, FILTER_VALIDATE_BOOLEAN); // true 

保存需要比較一個布爾值和一個字符串,所以:

$required = filter_var($required, FILTER_VALIDATE_BOOLEAN); 
isset($required) && $required == true ? 'required' : ''; 

的隨機downvoter(喜RF)的更多信息:

使用FILTER_VALIDATE_BOOLEANfilter_var將返回以下的基礎上,輸入:

TRUE for "1", "true", "on" and "yes" 
FALSE for "0", "false", "off" and "no" 
NULL for anything else 
+0

輝煌的解決方案,不要明白爲什麼它被低估。 – Qirel

+0

相同@Qirel - 不知道爲什麼downvote,我想我必須有一個「粉絲」... – Stuart

+0

我沒有downvote這一點。但我會喜歡 – panthro

2

試試這個:

(isset($required) && ($required === true || $required === 'true')) ? 'required' : ''; 
相關問題