2011年11月24日 星期四

php string 轉 boolean (php_filter)

PHP它是一個weak type的程式語言 所以只要字串有值,拿去做if判斷時,就一定會回傳true 但有時候會希望帶進來的參數為字串 "false" 時希望它的boolean為 false

在php5以前的版本可能只能這樣寫

$bool = 'false';
$result = NULL;
if ($bool == 'false' OR !$bool){
$result = FALSE;
}
var_dump($result);

不過php5之後的版本可以換一個方式寫了

$bool = filter_var($_GET['bool'], FILTER_VALIDATE_BOOLEAN);

這樣$_GET['bool']帶進來的值為 'false','no','null','0' 都會被轉為 FALSE

這個函式就像是JAVA的

Boolean.parseBoolean(strBoolean);

如果要寫一些比較嚴謹的PHP程式用這個函式可能是比較好的作法...

PS. filter_var這個函式不只可以字串轉boolean、也可以驗證email、ip、url等等....

有興趣的話就上PHP官網查一查吧

3 則留言:

  1. 還有三個等於的用法 Orz....

    回覆刪除
  2. 是的!有 === 的用法

    我不知道有沒有誤解你的意思

    此例中講的是把字串的內容

    'true' , 'yes' , 'on' 轉為 純boolean的true

    'false', 'no' , 'off' 轉為 純boolean的false

    回覆刪除
  3. @白目捷 三個等號的作法和本篇所要達表的功能好像沒關係@_@

    @Tsai 之前沒用過filter_var,剛看了一下官網,的確是好物。

    回覆刪除