データが入力されたかチェック その2

前回の記事「データが入力されたかチェック」にいくつかコメント貰ったのでちょっと書き直します。

調べたときに使用したコードは、フォームを用意してそこに入力された値をそれぞれの関数で調べるというものです。
で、、コメントで突っ込まれた

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

こんな感じになりました。
先に変数に代入しておいたものを調べるべきでした。

2 responses to “データが入力されたかチェック その2”

  1. nic

    これで概ね問題ないだろうけど、考え方としてはこのスクリプトで返ってくる結果ってif文の結果で表示された文字リテラルだから、単純に

    var_dump(empty($a));

    こっちのが意味としては正しいよね。

  2. kosugi

    http://www.php.net/manual/ja/types.comparisons.php
    要はココ見ればいいんじゃないですかね.

    リクエスト情報は概ね文字列として入ってくるので,「入力されているか否か」は 0

Leave a Reply