$_GETに格納された値など、PHPには文字列でしか取得できない情報が存在します。
その値を真偽値として扱いたいときにはfilter_var関数が個人的に便利だったので、その他真偽値の判定にまつわる関数とともに出力結果をまとめました。
例:
sample.php
$model = getData($_POST["id"]);
$model->isPublished = filter_var($_POST("isPublished"), FILTER_VALIDATE_BOOLEAN);
$model->save();
早見表
| 値 | if($var) | isset($var) | empty($var) | is_null($var) | filter_var($val, FILTER_VALIDATE_BOOLEAN) |
|---|---|---|---|---|---|
| true | true | true | false | false | true |
| 'true' | true | true | false | false | true |
| false | false | true | true | false | false |
| 'false' | true | true | false | false | false |
| 1 | true | true | false | false | true |
| '0' | false | true | true | false | false |
| 0 | false | true | true | false | false |
| '' | false | true | true | false | false |
| 'hoge' | true | true | false | false | false |
| NULL | false | false | true | true | false |
| (unset) | false | false | true | true | false |
| array() | false | true | true | false | false |
| array(1) | true | true | false | false | false |
もっと見る
| 値 | if($var) | isset($var) | empty($var) | is_null($var) | filter_var($val, FILTER_VALIDATE_BOOLEAN) |
|---|---|---|---|---|---|
| true | true | true | false | false | true |
| 'true' | true | true | false | false | true |
| false | false | true | true | false | false |
| 'false' | true | true | false | false | false |
| 't' | true | true | false | false | false |
| 'y' | true | true | false | false | false |
| 'yes' | true | true | false | false | true |
| 'f' | true | true | false | false | false |
| 'n' | true | true | false | false | false |
| 'no' | true | true | false | false | false |
| 0 | false | true | true | false | false |
| '0' | false | true | true | false | false |
| -1 | true | true | false | false | false |
| '-1' | true | true | false | false | false |
| 1 | true | true | false | false | true |
| '1' | true | true | false | false | true |
| 1.0 | true | true | false | false | true |
| '1.0' | true | true | false | false | false |
| 1.1 | true | true | false | false | false |
| '1.1' | true | true | false | false | false |
| 100 | true | true | false | false | false |
| '100' | true | true | false | false | false |
| -100 | true | true | false | false | false |
| '-100' | true | true | false | false | false |
| '' | false | true | true | false | false |
| 'hoge' | true | true | false | false | false |
| NULL | false | false | true | true | false |
| (unset) | false | false | true | true | false |
| array() | false | true | true | false | false |
| array(1) | true | true | false | false | false |
特徴
- 唯一、文字列で渡された
"true"、"yes"を、trueとして判定する関数である - booleanという型自体が
Truely/Falsyのように曖昧さを含むものではなく、本来のTrue/Falseの2択であるという概念を基準に判定している(ように見える)
第2引数に指定するオプションは、ここにまとめられています。
参考
いつも参考にさせていただいています。