PHP
JavaScript
URL

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


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

ある時、理由は忘れちまったが俺はそう思ったんだ。

思い立ったが吉日、すぐに旅に出たんた。


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

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日目

俺は一体何を書いているんだ???