2

問題は私が使うときです

$fname = isset($_POST['fname']) ? $_POST['fname'] : 'sample';
die($fname);

PHP側では、入力されたfnameフィールドを使用してフォームを送信した後、入力した内容を正確に出力し、入力されていないfname入力フィールドを使用して送信した後、出力を取得します。!empty代わりにコードを使用

$fname = !empty($_POST['fname']) ? $_POST['fname'] : 'sample';
die($fname);

fname入力フィールドが入力されていない状態で送信した後、出力を取得しますsample

4

5 に答える 5

8

isset()変数がそうであるかどうかをチェックするだけNULLで、配列内の未定義のインデックスにアクセスした場合にE_NOTICEエラーをスローしません(とは異なりis_null()ます)。

変数に空の文字列が含まれているかどうかはチェックされません。

于 2011-11-09T14:24:46.433 に答える
5

これは、とにかく「fname」変数が送信されるためです。それは空ですが、送信されます!

フォーム メソッドを POST から GET に変更してみてください。

于 2011-11-09T14:28:13.670 に答える
4

これは私には完全に期待されているようです。

という要素を含むフォームを送信したfnameため、空であってもまだ設定されていました。

意味issetはtrueと評価されるため、何も送信しないと何も出力されません

于 2011-11-09T14:26:39.663 に答える
2

あなたの質問は何ですか?

変数自体が設定され、フォームから渡されているため、isset()onを使用すると、この状況で$_POST['key']返されます。の値を変数にtrue割り当てているため、値が空であっても常に割り当てられます。$_POST['fname']$fname

empty()その変数への割り当てがない場合、 false を返します。

于 2011-11-09T14:25:22.333 に答える
2

それは私には正しいようです。入力フィールドが空で送信されると、配列ではなくになることがあります。$_POST NULL

$_POST['fname'] = "";
isset($_POST['fname']) == true;

$_POST['fname'] = "";
!empty($_POST['fname']) == false;

あなたができることは、代わりに配列にあるarray_key_existsことを確認するために使用することです:$_POSTisset

$_POST['fname'] = "";
array_key_exists('fname', $_POST) == true; // independent of its value
于 2011-11-09T14:32:56.913 に答える