• ベストアンサー

URLエンコードした配列を使う方法

<php $data[5] = array(6,4,3,7,9); ?> <a href='image.php? <?php print http_build_query($data,'','&'); ?> '>リンク先</a> リンク先へのURLの後ろにhttp_build_queryを使いつけて 送り側で$_GETで受け取って配列を使うようなことを しようと思ったのですが Undefined index: dataと言われてうまくいきません。 どのようにして配列を取り出せばよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.3

・PHPにおいて配列サイズの指定は不要な上、これだと5番目の要素に更に配列を作ってしまい、別の意味になります。 ・http_build_queryは変数名を親配列にはしません。 ・HTML中に埋め込む場合は「&」ではなく「&amp;」としなければHTMLとして不正になります。 正しくは下記のようになります。 <a href="image.php?<?=http_build_query(array('data' => array(6,4,3,7,9)), '', '&amp;')?>">リンク先</a> また、これらの値を受け取って使う場合、特に今回のように ・GETを使う場合 ・配列を渡す場合 該当する場合は十分に「正しい構造を受け取っているか」の検証を行ってください。GETはURLを書き換えるだけで簡単に渡す値を操作できてしまうので特に注意が必要です。 $_GET, $_POSTなどを受け取る際の処理 http://qiita.com/mpyw/items/2f9955db1c02eeef43ea 汎用的な変数構造フィルタリング関数 http://qiita.com/mpyw/items/c39b9ee695a5c2e74627

cern5100
質問者

お礼

回答ありがとうございます。 色々試してみて複数の配列もこのやり方で渡せました。 本当にありがとうございました。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

これで生成される<a href='image.php? 以降のものに data=XXXX といったパラメータは無いように思うのですが。

cern5100
質問者

お礼

回答ありがとうございます。 確かに、そのようでした。書き方間違ってました。

  • mjtanaka
  • ベストアンサー率39% (34/86)
回答No.1

単にリンク先に配列のデータを渡したいだけならばセッションに格納する方法があります。 この方法にこだわるのでしたらわかりかねます。

cern5100
質問者

お礼

ありがとうございます。初心者なので、後でセッションについて調べておきます。