LoginSignup
33
19

More than 5 years have passed since last update.

PHPでクエリパラメータから配列を受け取る物語

Posted at

クエリパラメータで配列を渡してぇ(唐突

ある時、理由は忘れちまったが俺はそう思ったんだ。
思い立ったが吉日、すぐに旅に出たんた。

単純に配列書いちまえば良いんじゃねぇか?

http:www.sakdor.net?var=[1,2,3]

varという変数は配列、そう書いちまえば良い。
俺はそう思ってたから旅支度は簡単にしていて
日帰りのつもりだったんだ。
でも甘かった、この旅は短くは無い。
PHPで$_GETvar_dumpしてみると…

array(1) { ["var"]=> string(7) "[1,2,3]" }

と表示される。
そう、var[1,2,3]という文字列が入った、ただの変数だ。

じゃぁ逆転の発想をしてしまえ

最初に訪れた街を出て一ヶ月はたっただろうか
悩み続けた先に、ある1つの閃きが生まれた。
「$varという配列に代入したら良いのではないか?」
ということだ。

http:www.sakdor.net?var[0]=1&var[1]=2&var[2]=3

結果はこうなった

array(1) { ["var"]=> array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" } }

無事にvarという配列が出来上がっている!!

研究を重ねた末に

奇跡の大発明で満足しなかった俺は
更に旅を続けて、研究に研究を重ねた。
すると新しい発見がみつかった。

  • 連想配列もクエリパラメータから受け取れる
http://www.sakdor.net/test/?var[a]=1&var[b]=2&var[c]=3

こういう感じにURLを書くことで

array(1) { ["var"]=> array(3) { ["a"]=> string(1) "1" ["b"]=> string(1) "2" ["c"]=> string(1) "3" } }

連想配列を受け取ることが出来るのを発見した。
ちなみに?var["a"]=1とURLを書くと出力はarray(1) { ["var"]=> array(1) { [""a""]=> string(1) "1" } }となってしまう。

  • keyが無くても代入出来る。
http://www.sakdor.net/test/?var[]=1&var[]=2&var[]=3

こういう感じにURLを書くことで

array(1) { ["var"]=> array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" } }

URLの左から右の順で配列に格納される。

引き算されたスマートなものへ

旅を終え、自宅へ帰った。
研究が世に認められ、俺は富と名声を得た。
だが、なんだろうか、この虚しさは。
全てを知り尽くしたからだろうか。
次に私は何を求めれば良い?

答えはすぐに見つかった。
追い求め足し算するのはやめにしたんだ。

https://www.sakdor.net/test/?var=1,2,3

そうコレでよかったんだ。
「これでは1,2,3という文字列じゃないか」って?

$array=explode(",",$_GET[var]);

こうすれば良いのさ。
そうしたら

array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" }

出来上がりだ。

何も仰々しくURLを書かなくたって良い。
ありのままの姿で良いんだ。

編集後記

入社18日目
俺は一体何を書いているんだ???

33
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
19