第3回 占いソフトを作ろう - rand()関数、配列、連想配列 - - PHP基礎講座

PHP 中級 講座

Saity先生のPHP基礎講座

Lecutures on PHP

第3回 占いソフトを作ろう - rand()関数、配列、連想配列 - (その3)

 このエントリーをはてなブックマークに追加

配列って?

  • 前回、変数ってのを学んだよね。たとえば日付とか、今日の場合は占いの番号などが入ってた。
  • そうでしたね。変数の使い方についてはだんだんわかってきたかも。
  • 配列というのは、1つの変数に、文字列や数字を複数個を持たせるための仕組みなんだ。 例えば、ものを持ち運ぶときだって、ばらばらの積み木を別々に運ぶのは大変でしょ?そういうときは、積み木をまとめて一つの箱の中に入れて持ち運んだ方が効率的だよね。
  • なるほどー。でも、一つの箱の中にいろいろ入れたら、欲しいものそれだけを取り出そうとしたときに、どれを取り出せばいいかわからなくなりません?
  • そうだね。だから配列では、箱に番号付の引き出しをつけておいて、その中に文字列や数値をいれていくんだ。実際の配列の記述は、下のコードのようになるよ。
<?php
$message
[1] = "あいうえお";
$message[2] = "かきくけこ";
$message[3] = "さしすせそ";
 
print(
$message[1]);
print(
$message[2]);
print(
$message[3]);
?>
  • 先述の説明と照らし合わせると、$messageという箱に、1,2,3という番号の引き出しをつけて、その中に「あいうえお」などの積み木を別々に入れている、ってとこかな。
  • ふむふむ。。
  • このように、配列の箱に振った大括弧([])の中の引き出し番号のことを「配列のキー」もしくは「配列のインデックス」、それぞれの引き出しに代入した値のことを「配列の値」というんだ。 こうすることで、上の例の場合、「"あいうえお"、"かきくけこ"、"さしすせそ"」を一つの$message変数として扱うことができるんだ。
  • なるほど。こうすることで、複数の文字列を一つの変数をとして扱うことができるのね。さらに、変数名の後ろに配列のキー、つまり番号を付けることで、どこに何が入っているか識別できるようにするんだ。 でも、下のように、1つずつ変数に文字列を代入するのは、どうしてダメなんですか?
<?php
$message1 
"あいうえお";
$message2 "かきくけこ";
$message3 "さしすせそ";
 
print(
$message1);
print(
$message2);
print(
$message3);
?>
  • んーとね、文字列や数字を一つにまとめて扱いたい場合があるんだ。詳しくは、占いソフトの改良版を見てから説明するよ。
  • わかりました。じゃあ、配列を使った方法でプログラムを書き直すとどうなるんですか?
  • では早速。こんな感じのコードになるよ。
<?php
$uranai_message
[1]  = "今日は運気が下降ぎみです。";
$uranai_message[2]  = "#好きな文章その2・・・";
$uranai_message[3]  = "#好きな文章その3・・・";
$uranai_message[4]  = "#好きな文章その4・・・";
$uranai_message[5]  = "#好きな文章その5・・・";
$uranai_message[6]  = "#好きな文章その6・・・";
$uranai_message[7]  = "#好きな文章その7・・・";
$uranai_message[8]  = "#好きな文章その8・・・";
$uranai_message[9]  = "#好きな文章その9・・・";
$uranai_message[10] = "#好きな文章その10・・・";
  
$uranai_bangou rand(1,10);
print(
$uranai_message[$uranai_bangou]);
?>
  • わお、なんか大分変わった。すごくスッキリしましたね。
  • しかもifを使ってないんだ。こっちの方がずっと読みやすいよね。
  • うん。たしかに!占い結果が最初にまとめられてるから、内容の修正も簡単ですね。
  • そうだね。同じプログラムでもいろいろな書き方ができるけど、見た目がわかりやすくて、後々修正が簡単そうな書き方が望ましいんだ。 どんな書き方が良いかマスターするには経験が必要だけど、良い書き方をしようと常に心がけよう。その方が、バグが少なく作れるしね。
  • これで配列はおしまい?もっと色々なテクニックがありそうだけど・・・。
  • もちろんあるよ。でも、先に、先述のコードについて説明しなくても大丈夫?
  • うん、分からないところは特にないかなぁ。最後の行は、$uranai_message配列のキーのところに、変数$uranai_bangouの中の1から10の数字が入る、って事ですよね。
  • その通り。図解すると以下のようになる。

  • つまり「$uranai_message配列のキーが、$uranai_bangou番の占い結果を表示する」ってわけ。こういう変数の使い方もあるんだ。
  • なるほど!こういうことができるから、
<?php
$message1 
"あいうえお";
$message2 "かきくけこ";
$message3 "さしすせそ";
?>
  • という書き方をしなかったんですね!
  • そういうことさ☆。2種類の括弧「[ ]」と「( )」が現れて見分けづらいけど、書き間違いに注意してね。
  • はい。
  • OKそうだね☆ それじゃ、配列についてもう少し詳しく解説していくよ。

  



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)