【PHP】isset()とempty()の使い方とJavaScriptとの違い
PHPで値の確認のときに頻繁に使うisset()とempty()の使い方を紹介します。
またJavaScriptとの違いについてもまとめました。
目次から読む
isset()とempty()
phpのisset()はnull以外の値でtrue
phpでは、JavaScriptにはないisset()を使って値の確認を行うことが多いです。 issetは、変数が定義されており、かつnull以外の値のときにtrueを返します。$num = 0;
$num2 = 2;
if(isset($num)) {
echo '値あるよ';
} else {
echo '値ないよ';
}
// 値あるよ
上の場合、0でfalsyな値ではあっても、値が定義されていて、かつ、nullではないため、trueとなります。
このように、基本的には変数が定義されている場合、trueを返します(nullと定義しない限り)
issetがfalseになるケース
if(isset($num5)) {
echo '値あるよ';
} else {
echo '値ないよ';
}
// 値ないよ
上のように定義していない変数の場合、falseになります。
$num8 = null;
if(isset($num8)) {
echo '値あるよ';
} else {
echo '値ないよ';
}
// 値ないよ
上のようにnull、空ですよと定義した場合、falseになります。
JavaScriptでやるphpのisset()を使いたい場合
JavaScriptでやる場合は、if (typeof obj.foo !== 'undefined') {
// your code here
}
と通常はtypeofを使って確認する方法を使います。
その他にも関数で定義したり、inはhasOwnPropertyを使う方法もあります。
詳しくは、stackoverflowがわかりやすいです。
phpのempty()はisset()がfalseの場合か値がfalsyなときにtrue
empty()は、isset()がfalseの場合か値がfalsyなときにtrueを返します。$num = 0;
$num2 = 3;
if(empty($num)) {
echo '空ですよ';
} else {
echo '空じゃないですよ';
}
// 空ですよ
falsyな値をいれるとtrueになります。
- “"(空文字)
- NULL
- 0(数値、文字列)
- FALSE
!empty()で「空でないとき」
否定の論理演算子をつけて、「空でないとき」を確認したい場合によくempty()を使います。if(!empty($num)) {
...
}