[PHP]リクエスト変数のキーの重複を避ける

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP]リクエスト変数のキーの重複を避ける

$_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

トラックバック

コメント

コメントの投稿

お名前
コメント
編集キー
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。