phpで「変数が空の場合は」とかの処理を行う時にif文に直接変数を入れて判定したりしますが
配列を入れた場合とかの挙動が気になったので、まとめてみました。
挙動確認
null
$null_value = null;
if ($null_value) {
echoLine("null_value:true");
} else {
echoLine("null_value:false");
}
// null_value:false
nullはfalseになります。
空文字
$empty = '';
if ($empty) {
echoLine("empty:true");
} else {
echoLine("empty:false");
}
// empty:false
空文字(”)はfalseになります。
文字列の変数
$hoge_str = 'hoge';
if ($hoge_str) {
echoLine("string:true");
} else {
echoLine("string:false");
}
// string:true
文字列はtrueになります。
空配列
$empty_array = array();
if ($empty_array) {
echoLine("empty_array:true");
} else {
echoLine("empty_array:false");
}
// empty_array:false
空配列はfalseになります。
値が入っている配列
$hoge_array = array('apple', 'greap', 'peach');
if ($hoge_array) {
echoLine("hoge_array:true");
} else {
echoLine("hoge_array:false");
}
// hoge_array:true
ひとつでも要素があればtrueになります。
数値(正数)
if (1) {
echoLine("1:true");
} else {
echoLine("1:false");
}
// 1:true
1はtrue。
0(ゼロ)
if (0) {
echoLine("0:true");
} else {
echoLine("0:false");
}
// 0:false
0はfalse。
数値(負数)
if (-1) {
echoLine("-1:true");
} else {
echoLine("-1:false");
}
// -1:true
-1はtrueになります。
表にすると
empty(”) | null | ‘hoge’ | array() | array(‘apple’) | 1 | 0 | -1 |
---|---|---|---|---|---|---|---|
false | false | true | false | true | true | false | true |
終わりに
ほとんど思った通りでしたが
-1とか負の数はtrueなんですね…!
気をつけていきます…!
チェックしたコード全体
<?php
function echoLine ($output) {
echo $output."\n";
}
$empty = '';
$null_value = null;
$hoge_str = 'hoge';
$empty_array = array();
$hoge_array = array('apple', 'greap', 'peach');
if ($empty) {
echoLine("empty:true");
} else {
echoLine("empty:false");
}
if ($null_value) {
echoLine("null_value:true");
} else {
echoLine("null_value:false");
}
if ($hoge_str) {
echoLine("string:true");
} else {
echoLine("string:false");
}
if (1) {
echoLine("1:true");
} else {
echoLine("1:false");
}
if (0) {
echoLine("0:true");
} else {
echoLine("0:false");
}
if (-1) {
echoLine("-1:true");
} else {
echoLine("-1:false");
}
if ($empty_array) {
echoLine("empty_array:true");
} else {
echoLine("empty_array:false");
}
if ($hoge_array) {
echoLine("hoge_array:true");
} else {
echoLine("hoge_array:false");
}
コメント