
JavaScriptとPHPのifの違い
PHPはWeb開発に適しており、JavaScriptと同様にHTMLに埋め込むこともできるので、JavaScriptとPHPは同じ人物が書くことがある。
JavaScriptとPHPのifでは判定内容によってはboolean値の結果に違いが出るので注意が必要だ。
JavaScriptでは if ('0') と if (Array()) はtrueを返すが、PHPの if ('0') と if (array()) はfalseを返す。
もしPHPのifをJavaScriptのifと同じ結果にしたい場合はif ('0')はorで '0'ならtrueを返して、if (Array())はis_arrayを使用する。
JavaScriptのifをPHPのifと同じ結果にしたい場合はif ('0')はandで'0'でないか判定して、Arrayはandでlengthが0でないか判定すれば同じに結果にできる。
PHPのifをJavaScriptのifの結果と同じにするサンプル
JavaScriptとPHPのundefinedの違い
JavaScriptとPHPではundefinedにも違いがある。
まずPHPでは未定義だと変数には自動的にNULLが入る。
そしてPHPの変数でundefinedを代入するとWarningが発生する。
$foo = undefined;
echo $foo;
// 以下のようなエラーが表示される
// Warning: Use of undefined constant undefined - assumed 'undefined' (this will throw an Error in a future version of PHP) in /home/iwbjp/iwb.jp/public_html/index.php on line 7
そのため、JavaScriptでよくある if ($foo !== undefined) という条件式はPHPでは使用できない。
JavaScriptでいう「$foo !== undefined」はPHPでは isset() を使用して未定義(NULL)でないか判定する。
// PHPでは間違い
if ($foo !== undefined) {
// 処理
}
// 正しい
if (isset($foo)) {
// 処理
}
JavaScriptとPHPのifはこう覚える
JavaScriptのifの条件式はfalse, null, 0, undefined, '' (空文字) の5種類のどれかだとfalseを返す。
PHPのifの条件式はJavaScriptのundefinedを除いた4種類の条件に文字列の'0'と空配列の2つを加えた6種類でfalseを返す。
そのため、先にJavaScript側の5種類のfalseになる条件さえ覚えてしまえば、あとはPHPだと'0'と空配列がfalseになると覚えればわかりやすい。
ちなみにJavaScriptのオブジェクトでif ({})はtrueになるが、PHPで空のクラスを定義してオブジェクトを作成してifで判定した場合もtrueとなる。
// クラスを定義
class sampleObj {}
// オブジェクト作成
$obj = new sampleObj();
if ($obj) {
echo 'true';
} else {
echo 'false';
}
// => true