値の真偽の判定とfilter_var関数

`$_GET`に格納された値など、PHPには文字列でしか取得できない情報が存在します。
その値を真偽値として扱いたいときには`filter_var`関数が個人的に便利だったので、その他真偽値の判定にまつわる関数とともに出力結果をまとめました。

https://www.php.net/manual/ja/function.filter-var.php

例:
```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_ |


<details open>
<summary>もっと見る</summary>

| 値 | 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_ |

</details>

## 特徴

- 唯一、文字列で渡された`"true"`、`"yes"`を、`true`として判定する関数である
- booleanという型自体が`Truely/Falsy`のように曖昧さを含むものではなく、本来の`True/False` の2択であるという概念を基準に判定している(ように見える)

第2引数に指定するオプションは、ここにまとめられています。

https://www.php.net/manual/ja/filter.filters.validate.php

## 参考

いつも参考にさせていただいています。

https://qiita.com/shinichi-takii/items/00aed26f96cf6bb3fe62