いろんな空白
偏すが空白かどうかは普段($a=="")で調べるている、ただ、$a=0の場合は問題ないが$a="0";の場合はfalseになってしまう。
空白については前に書いたが誤りがあるようなので調べ直してみた。
ついでにJavaScriptも調べたがJavaScriptは未定義の変数を見ると止まるので未定義は調べていない。
PHP | JavaScript | ||||
---|---|---|---|---|---|
($a=="") | (!$a) | (empty($a)) | (a=="") | (!a) | |
未定義 | true | true | true | ||
$a=0; | true | true | true | true | true |
$a="0"; | false | true | true | false | false |
$a=-1; | false | false | false | false | false |
$a=null; | true | true | true | false | true |
$a=false; | true | true | true | true | true |
$a=array();※ | false | true | true | true | false |
※javascriptはa=new Array();
色々違いすぎてよく分からなくなってくるがPHPの(!$a)と(empty($a))は同じで($a=="")の様に型に縛られる事もなさそうなので(!$a)が一番思ってる動作に近い。
ただ、-1がfalseにならないのが以外だ。何かの言語でflaseを返した気がするんだけど色んな言語をかじりすぎて分からない・・・
最終的にはTPOで、厳密に知りたければ($a==="")みたいに=を3つ連ねて確認が一番なんだけどね。
Tags: JavaScript, PHP