第3回 占いソフトを作ろう - rand()関数、配列、連想配列 - (その4)
キーに文字列を使う「連想配列」
- さっきのプログラムでは、キーが1~10番の配列を作ったよね。 実はキーには、数字だけじゃなくて文字列も指定できる。そうやって文字列をキーにした配列のことを連想配列と呼ぶんだよ。
- ふーん、使い道あるのかな・・・。
- まあまあ。実際のプログラミング、たとえばユーザーとのやりとりをコーディングするとき、この連想配列がよく使われるんだ。以下のようなコードを見てみよう。
<?php
$today = getdate();
print($today["year"]);
?>
- なんか短いコードですね。getdateって、新しい関数が出てきましたけど・・・。
- うん、この関数は現在の時間を元に、連想配列の形式で値を返してくれるものなんだ。
- ???前回やったdate関数とは違うんですか?
- 同じような事をするんだけど、返し方がちがうんだね。getdate関数には引数を渡してないでしょ。渡した文字を整形してくれるわけじゃないんだ。

- ふーん。。。なんだかよく分からないけど、とりあえず連想配列って、配列の「[」から「]」のところが文字列、上のコードの場合は「year」になってる配列のことなんですね。
- それだけわかっていれば、今のところは十分さ☆
配列の作り方
- 他に配列の事で知っておいた方が良いことはありますか?
- そうだね、配列と連想配列の基礎を勉強したけど、配列の作り方についてもう少しきちんと教えておこうかな。 配列を作るには、実はさっき説明した以外にも、以下のように何通りかの書き方があるんだ。
<?php
$array1[0] = "あいうえお";
$array1[1] = "かきくけこ";
$array1[2] = "さしすせそ";
$array2[] = "あいうえお";
$array2[] = "かきくけこ";
$array2[] = "さしすせそ";
$array3 = array("あいうえお", "かきくけこ", "さしすせそ");
$array4["a"] = "あいうえお";
$array4["ka"] = "かきくけこ";
$array4["sa"] = "さしすせそ";
$array5 = array(
"a" => "あいうえお",
"ka" => "かきくけこ",
"sa" => "さしすせそ"
);
?>
- $array1?$array3まで、また$array4と$array5はそれぞれ同じ内容の配列を定義しているよ。
- $array1は、さっきやったのと同じ形ですね。キーが0から始まってますけど、いいんですか?
- うん。キーが0から始まっているのは間違いじゃなくて、コンピューターの場合、数え文字の始まりは0である事が多いんだよ。だから、むしろこっちの方が一般的なんだ。
- へぇ。数を数えるのに0個、1個、2個…って数えるんだ。
- $array2はキーを指定せずに自動的にキーが追加されていく書き方なんだ。何も書かないと、勝手に0から順番にキーが入っていくよ。結果は$array1の場合とまったく同じになる。

- ふむふむ。$array3はどういう書き方なんですか?
- array()っていう関数(実際には言語構造)があるんだ。この引数に値を渡してやると、渡した引数で配列を作ってくれる。やはり結果は、$array1や$array2の場合と同じものになるんだ。
- えっと、次の$array4はキーに文字列が使われてるから、さっき説明してもらった連想配列ですね。
- そうだね。それに、$array5もやはり連想配列の書き方の一つなんだ。矢印のような記号「=>」があるけど、この矢印の左側が連想配列のキーで、右側が値になっているよ。$array4と比較するとわかりやすいかな。
- なるほど、色々ありますねぇ。
- うんうん。書き方は人の好みなんだけど、PHPでは命令を複数行に分けて書くことが出来るから、たとえば$array5は以下のように、一覧のような書き方もできるよ。
<?php
$array5 = array(
"a" => "あいうえお",
"ka" => "かきくけこ",
"sa" => "さしすせそ"
);
?>
- こうやって揃えて見やすく描く事も重要なんだ。後で見たときに解りやすいからね☆
- なるほど確かに美しい!(笑)
- さぁ、これで配列も覚えたし、やれる事がどんどん広がるね☆
- うん、そうですね・・・。
- おや、なんか不満な顔してるね。

- うん、だって、配列の話でうまくごまかされたけど、結局おみくじ占いだけで、誕生日から星占い☆とか教えてもらえなかったし。。。
- あはは、そうだったね。じゃあ次回は、ユーザー入力の処理について学びながら、入力した情報を元に結果が変わる占いプログラムを作ってみようか。
- ほんとですか?!やった☆さすが先生、カッコいい♪
- ふふふ・・・任せなさい☆
- ようし、次回もがんばらなくっちゃ!
今回の「Saity先生のPHP基礎講座」への評価・ご意見があればご記入下さい。






