前回の記事「データが入力されたかチェック」にいくつかコメント貰ったのでちょっと書き直します。
調べたときに使用したコードは、フォームを用意してそこに入力された値をそれぞれの関数で調べるというものです。
で、、コメントで突っ込まれた
strlen() は整数、empty(), is_null() は逆かと思われます。
これを調べてみたら、こっちは変数に値を入れた物を調べるとその通りになりました。
コードでいうと、↓がフォームから値を受け取ってから関数で調べたもの。empty()の部分はそれぞれの関数に書き換えます。
[php]
< ?php
$a=$_POST['text1'];
if(empty($a)) {
echo "TRUE";
} else {
echo "FALSE";
}
?>
[/php]
↓が、始めから変数に値を入れておいて、それを関数で調べたもの。(今回追記のもの)
[php]
$a=”";
if(empty($a)) {
echo “TRUE”;
} else {
echo “FALSE”;
}
[/php]
そして以下の表がそれぞれの結果。
※$_POSTで受け取った結果
| strlen() | empty() | is_null() | isset() | |
| 「""」 | false | false | true | true |
| 0 | true | false | true | true |
| 123 | true | true | true | true |
※変数($a)に始めから値を入れておいた結果
| strlen() | empty() | is_null() | isset() | |
| 「""」 | false | true | false | true |
| 0 | true | true | false | true |
| 123 | true | false | false | true |
| NULL | false | true | true | false |
こんな感じになりました。
先に変数に代入しておいたものを調べるべきでした。
これで概ね問題ないだろうけど、考え方としてはこのスクリプトで返ってくる結果ってif文の結果で表示された文字リテラルだから、単純に
var_dump(empty($a));
こっちのが意味としては正しいよね。
http://www.php.net/manual/ja/types.comparisons.php
要はココ見ればいいんじゃないですかね.
リクエスト情報は概ね文字列として入ってくるので,「入力されているか否か」は 0