- 締切済み
★PHP★パラメータで配列全てのデータを渡せる?
初歩的ですみません。 パラメータで下記のように変数は渡せるのは理解できます。 <a href="ppp.php?act=prev&popid=5&category=おおお&size=aaa"></a> このデータをひとつにまとめて、配列とし、渡すことは可能でしょうか?
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- honoka-cha
- ベストアンサー率54% (40/73)
事情が許せば <a href="ppp.php?act=" ではなく <form method="post" action="ppp.php" の形でppp.phpを呼び出すように変更する手があります。 以前、formでPOSTメソッドを使い、受け取ったPHP側で配列を配列として再現するような 処理をしたことがあります。 formを使う形に変更できるのであれば、挑戦してみてはどうでしょう
- shimix
- ベストアンサー率54% (865/1590)
<a href="ppp.php?act=prev&popid=5&category=おおお&size=aaa"></a> ちょっと質問の意図がわかりませんが $arg = array ('act'=>'prev', 'popid'=>'5', 'category'=>'おおお', 'size'=>'aaa'); を(配列のまま)渡すのであれば、serialize/unserializeを使って print '<a href="ppp.php?arg=' . urlencode(serialize($arg)). '">target_url</a>'; とかですかね。受け取った側は $arg = unserialize($_GET['arg']); とすれば配列に戻ります。 #何のためにそうしたのかはわかりませんが(汗 ちなみに例示された配列であれば http://hostname/ppp.php?arg=a%3A4%3A%7Bs%3A3%3A%22act%22%3Bs%3A4%3A%22prev%22%3Bs%3A5%3A%22popid%22%3Bs%3A1%3A%225%22%3Bs%3A8%3A%22category%22%3Bs%3A9%3A%22%E3%81%8A%E3%81%8A%E3%81%8A%22%3Bs%3A4%3A%22size%22%3Bs%3A3%3A%22aaa%22%3B%7D となります。下記のようなサンプルで確認できます。 <?php if (isset($_GET['arg'])) { print '<pre>'; print_r(unserialize($_GET['arg'])); print '</pre>'; } print '<hr>'; $arg = array ('act'=>'prev', 'popid'=>'5', 'category'=>'おおお', 'size'=>'aaa'); print '<a href="?arg=' . urlencode(serialize($arg)) . '">target_url</a><br />'; print urlencode(serialize($arg));
お礼
ご丁寧にありがとうございました。 質問がわかりにくく失礼しました。
- yambejp
- ベストアンサー率51% (3827/7415)
>argという配列を渡したいです。 >ppp.php?arg=$arg[] かなり突拍子もない質問ですが、釣りじゃないですよね? マジレスすると、理論上不可能です。 ppp.phpにパラメータを渡したいのに、パラメータを省略するって 意味が通じないでしょ? もし前のページから引き継いだデータを別のページに引き継ぎたい という話なら、セッションを使ってやることはできます
お礼
ありがとうございました。 セッションを使ってできました。
- kosukejlampnet
- ベストアンサー率44% (126/282)
> 渡したい配列がひとつの場合は、下記でよいのでしょうか? > ?hairetsu[] OKです
- yambejp
- ベストアンサー率51% (3827/7415)
>category=おおお パラメータにダイレクトにマルチバイト文字を書くのはやめたほうがいいでしょう >データをひとつにまとめて、配列とし うーん、こういうことがしたいのでしょうか? ppp.php?arg%5Bact%5D=prev&arg%5Bpopid%5D=5&arg%5Bcategory%5D=%A4%AA%A4%AA%A4%AA&arg%5Bsize%5D=aaa とすれば、$_REQUEST["arg"]で受けられますね。
お礼
ご連絡ありがとうございました。 説明が下手ですみません。 私がやりたいことは、パラメータをたくさん追加せず、 argという配列を渡したいです。 ppp.php?arg=$arg[] 不可能かと思うのですが、こうゆうことです。 よろしくお願いします。
- kosukejlampnet
- ベストアンサー率44% (126/282)
GETで配列を渡す場合 ?hairetsu[]=0&hairetsu[]=1&hairetsu[]=2&hairetsu[]=3 こんな感じになります。
お礼
ご連絡ありがとうございます。 渡したい配列がひとつの場合は、下記でよいのでしょうか? ?hairetsu[] よろしくお願いします。
お礼
ありがとうございました。 勉強不足で失礼しました。