#はじめに
PHPにどのような型があるのかは、
こちらの記事でご確認ください。
PHPの型一覧
PHPでは暗黙的な型変換が行われるため、
bool以外の型の変数でも、
必要な状況では自動的にboolに変換されます。
bool型以外の変数で、
どのような値はtrueになりどのような値はfalseになるのか確認します。
#falseになるもの
わかりやすいのでまずはfalseになるものから。
- stringの空文字列
- stringの0
- intの0
- floatの0.0
- 要素が0個のarray
- null
がfalseとなります。
実際に検証。
$stringEmpty = '';
var_dump((bool)$stringEmpty);
// bool(false)
$stringZero = '0';
var_dump((bool)$stringZero);
// bool(false)
$int0 = 0;
var_dump((bool)$int0);
// bool(false)
$float0 = 0.0;
var_dump((bool)$float0);
// bool(false)
$arrayEmpty = [];
var_dump((bool)$arrayEmpty);
// bool(false)
$null = null;
var_dump((bool)$null);
// bool(false)
すべてfalseになりました。
#trueになるもの
上記のfalseになるもの以外はすべてtrueになります。
いくつか検証してみます。
まずは普通の例。
$string = 'aaa';
var_dump((bool)$string);
// bool(true)
$int = 123;
var_dump((bool)$int);
// bool(true)
$float = 0.1;
var_dump((bool)$float);
// bool(true)
$array = ['a'];
var_dump((bool)$array);
// bool(true)
これは普通に全部trueです。
次はちょっと特殊な例で、
何かfalseになるものがないかいろいろ試してみます。
// 文字列のfalse
$stringFalse = 'false';
var_dump((bool)$stringFalse);
// bool(true)
// 文字列の半角スペース
$stringSpace = ' ';
var_dump((bool)$stringSpace);
// bool(true)
//マイナスのint
$intNegative = -1;
var_dump((bool)$intNegative);
// bool(true)
//falseを入れた配列
$arrayFalse = [false];
var_dump((bool)$arrayFalse);
// bool(true)
//intの0を入れた配列
$arrayZero = [0];
var_dump((bool)$arrayZero);
// bool(true)
//インスタンス
class MyClass {};
$object = new MyClass();
var_dump((bool)$object);
// bool(true)
//クロージャ
$closure = function(){};
var_dump((bool)$closure);
// bool(true)
//リソース
$resource = fopen('index.php', 'r');
var_dump((bool)$resource);
// bool(true)
全部trueになりました。
#まとめ
まずは、下記のfalseになるもの一覧を把握し、
それ以外はすべてtrueになるということを把握しておく。
- stringの空文字列
- stringの0
- intの0
- floatの0.0
- 要素が0個のarray
- null
そのうえで、
ちょっと混乱しそうな
上で書いた特殊な例のようなものも把握しておくとよさそうです。