[PHP]リクエスト変数のキーの重複を避ける
- 2007-09-04
- カテゴリ: Server Side
- タグ: PHP Tips
$_POSTや$_GETで使うキーはグローバルだから、変数名の重複が起こらないかがいつも不安だった。
formごとに切り分けられる$_POSTの方はまだいいんだが、URLに追加しまくってしまえる$_GETは特に不安。
ということで、いつもは変数名にprefixをつけたりして回避していた。
<form action="sample.php" method="post">
<dl>
<dt>名前</dt>
<dd><input type="text" name="prefix_name" value="" /></dd>
<dt>年齢</dt>
<dd><input type="text" name="prefix_age" value="" /></dd>
<dt>メール</dt>
<dd><input type="text" name="prefix_email" value="" /></dd>
</dl>
<p><input type="submit" value="送信" /></p>
</form>
でも、これをPHP側で処理しようとすると、$_POSTのキーにわざわざprefixを追加しなくてはいけなくて、結構面倒だった。
$pf = 'prefix_'; if (!empty($_POST[$pf . 'name'])) $name = $_POST[$pf . 'name']; if (!empty($_POST[$pf . 'age'])) $age = $_POST[$pf . 'age']; if (!empty($_POST[$pf . 'email'])) $email = $_POST[$pf . 'email'];
配列使えばいいんじゃん!
ってことにさっき気づいた。
<form action="sample.php" method="post">
<dl>
<dt>名前</dt>
<dd><input type="text" name="param[name]" value="" /></dd>
<dt>年齢</dt>
<dd><input type="text" name="param[age]" value="" /></dd>
<dt>メール</dt>
<dd><input type="text" name="param[email]" value="" /></dd>
</dl>
<p><input type="submit" value="送信" /></p>
</form>
変数の受け取りは↓
if (!empty($_POST['param'])) $p = $_POST['param']; if (!empty($p['name'])) $name = $p['name']; if (!empty($p['age'])) $age = $p['age']; if (!empty($p['email'])) $email = $p['email'];
なんで、
今まで思いつかなかったのかがわからない。
トラックバックURL
- http://liosk.blog103.fc2.com/tb.php/33-0d13d027

