とある案件でPHPを触れて、学んだことを書いておく。
変数チェック
変数を宣言・定義しているか、NULLかなどをTRUE,FALSEで返してくれる関数を調べたのでまとめておきます。
PHPの前提として、NULLと変数宣言をしただけのものは基本的に同じです。
$defNull = NULL;
$defOnly;
is_null
is_int
やis_string
など型ごとにチェックする関数があります。
- 変数が宣言されていない
- NULLで定義されている
ならば、True
が返ってきます。
ただし、未宣言の場合はおそらくNoticeが出てくると思います。
isset
- 変数が宣言されている
- NULLで定義されていない
ならば、True
が返ってきます。
数値0か空(空文字列、空配列)でも定義しておけばTrue
になります。
empty
- 数値0
- 変数が空(空文字列、空配列)
- NULL
- 文字列"0"
- 未定義
ならば、True
が返ってきます。
文字列でも0だけだと数値同様True
が返ってくることに注意が必要です。
True
の条件が多いため、覚えやすそうなFalse
になる条件をまとめておきます。
- 数値0以外
- 文字列""と"0"以外
- 配列の空以外
おまけ 変数をbooleanにcastする
(bool)$var
<?php
var_dump((bool)1); // bool(true)
var_dump((bool)0); // bool(false)
var_dump((bool)""); // bool(false)
var_dump((bool)"0"); // bool(false)
var_dump((bool)"ABC"); // bool(true)
?>
boolval($var)
<?php
var_dump(boolval(1)); // bool(true)
var_dump(boolval(0)); // bool(false)
var_dump(boolval("")); // bool(false)
var_dump(boolval("0")); // bool(false)
var_dump(boolval("ABC")); // bool(true)
メモ
ブラウザでの実行環境
コードを試したい場合は使ってください。バージョンを指定できるのでバージョンによって動かないものを確認できます。