通常の変数の流れについて困惑している、そしてそれで私は、次のチェックボックスがあります。
<input type="checkbox" name="test">
注:このフォームはされていますそれ自体に提出されます。フォームの上
、私は次のPHPいる:私は、フォームを処理するとき、私は私が期待するもの
if (empty($_POST['test'])) {
$thevalue = 0;
} else {
$thevalue = 1;
}
var_dump($thevalue);
得ます。私がボックスにチェックして提出すると、int(1)
となります。チェックしないと、私はint(0)
となります。私のPHPコードの最初の行で
、私はいくつかの単純な変数と$_POST['test']
を交換したかったです。
だから私は自分のコードの上に次の行を追加:私はその後、empty($simplevar)
であることを私if statement
に条件を置き換えしかし、私は、フォームを送信すると、私は"Notice: Undefined index:"
エラーを取得する
$simplevar = $_POST['test']
をメッセージ
- どうしてですか?
- 私が後にしたことを達成することができたと仮定すると(つまり、$ _POSTを$ simplevarに挿入する)、どうすればよいでしょうか?
ご協力いただきありがとうございます。
PS:私はこの質問にフォローアップしているかもしれませんが、すべてをここに詰め込んで混乱させたくありませんでした。
もう一度おねがいします...ああ、メリークリスマス! ;-)
フォームが送信される前に '$ _POST ['test']'を変数に代入しているので、これが起こっています。だからあなたは代わりにするべきです: '$ simplevar =(isset($ _ POST ['test']))? $ _POST ['test']:null; '。 'empty()'は、変数が0であるか、空であるか、まったく設定されていないかをチェックするので、この関数で$ _POSTを直接チェックすると、設定されているかどうかがチェックされます。 –
あなたの問題は '$ _POST'とは何の関係もなく、クレイジーウェイチェックボックスはHTMLで動作します。表示される動作は、チェックボックスにのみ適用されます。 –
@Abhi Beckert - そうではありません。 'test'要素はフォームが提出された後にのみ' $ _POST'スーパーグローバルに挿入されています。したがって、 '$ _POST'配列にない要素に対する操作は、入力のタイプに関係なくこのエラーを生成します。それは入力のタイプとは関係ありません。 –