【配列】
昔、まだPHPの技術が初心者に毛が生えた程度の頃。
【配列】というものの理屈というか、そのものがどうしても理解できなかった。
どの本を見ても、口裏を合わせたように「タンスの様なモノ」として例えてるし、友人に聞いても同じことを言ってくる。全然わかんない。
それがある日突然バチンっと入ってきたんです。
それは「foreach」文を書いている時でした。
それまで「foreach」は何度も使ってましたが、それまでは配列も理解していなかったので、foreach自体も使い方をイマイチ理解できてなかったのです。
でも、その時は本当に突然、同時に配列とforeachの使い方が入ってきたんです。
その時の喜びようって言ったら、会社で大きな独り言で「あ~、なるほど~!そういうことかぁ~!」と叫んで周りの人に心配をされてしまうくらい嬉しかった。
だから、もし「配列がよくわからない」という人がここに辿り着いたら、読んでみてください。
これもダメかもしれませんけどねw
【配列】とは、「グループの定義」だと思います。
例えば、配列って下のように定義しますよね?
$ay = array(‘A’,’B’,’C’,’D’,’E’);
これは「ay」というグループに属している値をまとめている、ということになります。
なので、この中の値を使う時は「$ay[0]」というように、グループ名を書いてその次に何番目の値なのかを指定する番号を書きます。
配列の場合のカウントは定義していなければ0~となります。最初は1ではありません。
例えるなら「数え年ではありませんよ」ということですね。
「数え年」ってのは生まれた年を1歳としますが、人間は生まれた年は0歳ですよね?
それと一緒です。
で、この番号ですが、上記でも書いた通り何も定義していなければ自動的に数値が割り当てられますが、自分で定義することもできます。
定義するときは確か以下のように書くんだったと思います。
$ay = array(‘a’=>’A’,’b’=>’B’,’c’=>’C’,’d’=>’D’,’e’=>’E’);
たぶんこんな感じw
で、出力するときは「$ay[a]」のような感じで書くと値が出力できます。
まぁ、ニックネームみたいなもんですね。
また、この配列というのは更に配列にすることが出来ます。
さぁ、言ってることがわけわかんなくなってきましたwww
プログラム上、配列というのは一つの変数で定義されています。
それらを更にグループ化すれば、使いやすくなるんじゃあないか、ということです。
これを「連想配列」といいます。
分かり易く言うと、大カテゴリ、小カテゴリなど、値に対してカテゴリを定義する、ということです。
この「カテゴリ定義」はいくつでもできますが、多すぎると逆にわかりづらく、使いづらいものになってしまうので、オレはせいぜい2~4個くらいで収めてます。
俗に言う「入れ子」の状態と同じですね。
さて、ここまでの解説でご理解いただけましたでしょうか。
まだイマイチ、という人。
今から配列を世の中に存在する物に例えます。
オレは【配列】というものは他のものに例えるものではないと思いますが、あえて例えるなら「学校」もしくは「会社」ですね。
コレ、配列を「タンス」で理解できた人たちから言わせると分かりづらい例えみたいですw
でもね、考えてみてください。
例えば「学校」。
「私立●●高等学校」という大きなグループに先生や生徒たちは属しているのですが、その中の「3年生」の「A組」の「アトム」と呼ばれている生徒は「○○」くんという人です。
これをプログラム的に配列定義をすると、
$ay = array(私立●●高等学校 = array(3年生 = array(A組 = array(‘アトム’ => ‘○○’))));
出力するときの書き方は、
$ay[私立●●高等学校][3年生][A組][アトム]
で「○○」という名前が呼び出されます。
学校や会社などの組織というのは配列を例えるのに非常に理解しやすいと思います。
なぜなら、タンスよりもよっぽど身近でその仕組みを理解しているものだからです。
そして、連想配列で定義が増えることというのは、一つの条件では目的の値に辿り着けない時の絞り込み条件を使えることだと思います。
例えば、友人との会話で「●●高校に行ったアイツの名前」と言ってその人物が特定できる場合とできない場合があります。「できる場合」というのは、「●●高校に進学した人間が1人しかいない場合」だったりします。
でも、特定できず「誰のこと?」となった場合、「背が高い」「太ってる」「禿げてる」など色々条件を出さないとわかりませんよね?
「●●高校に行った人数、10人」「そのうち背が高い人、6人」「更にその中で太ってる人、3人」「更に更にその中で禿げてる人、1人」とカテゴリで分類できます。
コレが配列の根本です。
。。。
。。。。。。
書いてて思ったのですが、あまり分かり易い例えではないですねw
図があると分かり易く作れるのになぁ。
でも、図を作るほどでもないので、気になった方は図を書いてみてください。
きっとわからないと思うけどw
投稿者プロフィール
最新の投稿
- PHP関連2022.08.24配列内に特定の値があるかどうかを判別する【in_array】
- PHP関連2019.02.06プログラム設計のお話し〜その1
- PHP関連2018.09.12横scroll付きのoverflow:hidden要素内で要素の固定を実装 – css:sticky
- JavaScript2016.05.11配列について