2011-11-09 13 views
2

私が充填fnameのフィールドが埋められていないfnameの入力フィールドで提出した後、私は満たされた正確に何の出力を取得してフォーム送信後にPHP側でPHPのISSET()VS!空()

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

を使用する場合の問題は、あります絶対に何も出力されていません。使用されるコード!empty代わり

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

未充填fnameの入力フィールドで提出した後、出力sampleを取得。

+0

他の人がhttp://stackoverflow.com/questions/1219542/in-を見たいと思うことがあります。

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

何を行う可能性は、それが$_POST配列の代わりに、issetにあるチェックするarray_key_existsを使用していますここでは-e-use-isset-and-empty?rq = 1 – ErichBSchulz

+2

RTFMは***ではありません***有効な答えです。 – iconoclast

答えて

5

に提出した場合、したがって、あなたの出力は何も意味しない、それだけで空が、送られたのです!

フォームメソッドをPOSTからGETに変更してみると、あなた自身が表示されます。

8

isset()は、ちょうど変数がNULLであるかどうかをチェックし、あなたが配列で未定義のインデックスにアクセスした場合(is_null()とは違って)E_NOTICEエラーがスローされません。

変数に空の文字列が含まれているかどうかを確認してください!

+1

'is_null()'がヌルかどうかをチェックし、 'isset()'がそれがまったくセットされているかどうかをチェックすることを期待するかもしれません。残念ながら、あなたの説明は正確です。 –

2

ご質問はありますか?

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

empty()は、その変数への代入がない場合はfalseを返します。

4

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

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

issetがtrueと評価あなたが「fnameの」変数がとにかく送信されるためです何も

2

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

$_POST['fname'] = ""; 
array_key_exists('fname', $_POST) == true; // independent of its value