PHPの参照(&)に奇妙な問題があります。
次のようなフォームがあるとします。
<form name="form1" id="form1" method="post">
Name: <input type="text" name="name" /><br />
Email: <input type="text" name="email" /><br />
Location: <input type="text" name="location" /><br />
Phone Number: <input type="text" name="phonenumber" /><br />
</form>
次に、そのフォームを別のPHPハンドラーに送信します。そして、ハンドラーはこれを行います:
foreach($_POST as $name => &$value)
{
//more code here
}
echo $_POST['phonenumber']; //Returns value of $_POST['location'] for some reason
電話番号の値がどこにあるのかという値になる理由を誰かが私に説明できますか?foreach内にコードがない場合でも、これを実行します。
編集:
foreach内で何が起こっているのか、なぜ私がこれを行っているのか疑問に思っている人にとっては、ハンドラーに送信されたすべてのデータを手動で一度に1つの変数で実行するのではなく、エスケープするためのクリーンな方法であるためです。動的入力が入ってくるので、次のようになります。
foreach($_POST as $name => &$value)
{
$value = preg_replace( "/[<>#$%]/", "", $value);
$value = preg_replace('/\s\s+/', ' ', $value);
}
私が上で述べた問題を除いて、それは美しく働きます。