ギークなお姉さんは好きですか

恋焦がれる理想の男性・ギークに近づくため、プログラミングがわかるお姉さんを目指すブログ

4日目 おみくじとか作っちゃうかモナー!

日記

【べにぢょの1日】

朝起きる
 ↓
PC起動
 ↓
ギークで検索
 ↓
『ギークなお姉さんは好きですか』 をクリック
 ↓
S・E・O! S・E・O!!

 (中略)

帰宅する
 ↓
PC起動
 ↓
ギークで検索
 ↓
『ギークなお姉さんは好きですか』 をクリック
 ↓
S・E・O! S・E・O!!


ということを繰り返してたら、ある日突然1ページ目に『ギークなお姉さんは好きですか』を確認。





いやー、SEO対策ってちゃんと報われるんですね^^^^^^
最終的には ”ギーク” と検索すると ”もしかしてべにぢょ” と出るところまで持っていきたい。
いや、そのりくつはおかしい。

ていうか、単にこのブログをブックマークしてないからなんだけど。
だってぷにるのリンクバーがいっぱいなんだもん><
TinyURLとか不要ですか?でもなかったらイザというときイラっとするしなぁ。
まぁいいや。[あとで考える]





配列を知ろう

やばい、もう勉強会から一週間経ってるではないか。
早いトコ復習せねば。
配列おぼえたときは「ちょwココまで来たらもう、Majiでコンパイル5秒前じゃん!!」って
超・テンション上がったのに。
でも PHP ってコンパイルしないんでしょ?知ってる。
もうとっくに気付いてるよ。
どうせみんなで紅のこと笑ってるんでしょう。
いいよ。
笑えばいいと思うよ。
笑う角には福来る。



配列とは

前々回、変数について勉強した。
あの時の変数は1つにつき1つのデータしか入れられなかったけど、
配列というのはたくさん引き出しがあって、複数のデータを格納?できるらしい。


変数は、基本的に1つの値しか代入することができません。
(中略)
PHPでも1つの変数に複数の値を持たせることができます。
それを「配列」と呼びます。

参考:配列 / PHP入門


意味は理解した。実際やってみる。
※タグの最初は全角にしてあります。



1 <html>
2 <head><title>配列の練習</title></head>
3 <body>
4 <?php
5   $lovecall="べにぢょ";
6  print("$lovecall");
7  print("<br>");
8   $lovecall=array("ギークなお姉さん","辮髪なお兄さん","けんすうのあほ");
9  print("$lovecall[0]"); ?>
10 </body>
11 </html>


サンプル:hairetu_test.php



説明してあげるね!(一発で表示されて感動した)

7行目まではOKだよね、この前と一緒。$lovecall に"べにぢょ"を代入して表示。で、改行。
新しいのは8,9行目だ。
今度は $lovecall に3つのデータが入ってる。
array というのは配列関数と言うらしい。
参考書の説明をまんま引用すると、


関数
[戻り値=] 関数名([引数1,引数2,...])



分かった?紅は分からない。
Yahoo辞書

array
[動](他)[III[名]([副])] 1 *1*2〈軍隊などを〉配列する, 配置する,
(…に対して)陣容を整える*3


て言ってた。たぶん文字通り 「(カッコ)内の値を左の関数の中に置くよ」 ってことだと思う。


ソースに戻る。
$lovecall=array("ギークなお姉さん","辮髪なお兄さん","けんすうのあほ");
とあるから、$lovecall に "ギークなお姉さん","辮髪なお兄さん","けんすうのあほ"
という3つのデータを arrayするよ!と言ってる。

で、その次の print("$lovecall[0]") で表示させてるんだけど、
この [0] っていう数字は、データに自動的に振られるらしい。
あきやんが言ってた。
0から順に振られるので、この場合は "ギークなお姉さん" が0、"辮髪なお兄さん" が1、
"けんすうのあほ" が2、ってことになる。
今回は0を指定したので "ギークなお姉さん" と出るのね。
ためしに2を指定すると "けんすうのあほ" が出る。

サンプル:hairetu_test2.php

2回言ったのは深い意味はない。
気持ちの問題だ。





配列を使っておみくじを作ろう

ちょっとギークっぽくなってきた!!!
『おみくじとか作っちゃうかMona-』 ていうサイト開設しようかな!!!!!
その前にソース貼るね。


1<?php
2  //おみくじデータの用意
3  $aryTitle=array("大吉","中吉","小吉","吉","凶");
4  $aryKuji =array(
5   "大吉"=>"ラッキー”今日は超ハッピー!!",
6   "中吉"=>"良かった良かった。
今日も元気に頑張りましょう。
",
7   "小吉"=>"小さな幸せを大事にネ。
",
8   "吉" =>"今日も無難に良い1日を・・・",
9   "凶" =>"ムムムな今日は大人しくすごしましょう。
");
10  //おみくじのシャッフル
11  shuffle($aryTitle);
12 ?>
13 <html>
14 <head><title>今日の運勢は?</title></head>
15 <body>
16 <h1 style="background:#cccccc">今日の運勢は?</h1>
17 <dl>
18 <dt style="font size:14pt;font-weight:bold">
19  <?php print($aryTitle[0]);?></dt>
20 <dd><?php print($aryKuji[$aryTitle[0]]);?></dd>
21 </dl>
22 </body>
23 </html>




超つかれた。死にそう。
わたし、このおみくじがちゃんと動いたらお風呂入って寝るんだ・・・。
2行目の // 以下はユーザには見えない自分用メモ。
ソースにも反映されない。
3行目は変数の名前が違うけど、やってることは上と一緒。
$aryTitle の中に "大吉","中吉","小吉","吉","凶" という5つのデータを配置。

4行目からちょっと慎重に行こう。
これは連想配列というらしい。
参考書によると、

array("キー名"=>"値" ,"キー名"=>"値",...)
このように定義した連想配列の値は「$配列名['キー名']」の形式で
アクセスすることができます。



えーと。
つまり、大吉を呼び出せばその中身が出てくる、ということ。
数字じゃなくて、中身が連想できる名前が付けられるから連想配列、っていうらしい。


たとえば

$lovecall=array(
  "表の顔"=>"リア充",
  "裏の顔"=>"ネット充",
  "理想の私"=>"ギークなお姉さん",
  "頑張った自分へのご褒美"=>"スイーツ");


とか。こんな感じ。連想ゲームだ。引き出しがたくさんある女っていいよね!



話を戻してソースの続き。
11行目で shuffle というのが出てくる。以下、参考書より引用。


shuffle(配列)
指定された配列内の要素をランダムに並べ替えます。



OK。$aryTitle 内の "大吉","中吉","小吉","吉","凶" を並べ替えなさい、という意味ね。
PHP はいったんココで終わる。次から html だ。
html の説明は省略。詳細は下記サイトを参照せよ。
参考:定義型リストを作るTAG indexさま)


19行目で $aryTitle の0番目のデータを表示しなさい、と言ってる。これは上でやった。
番号振ってないけどshuffleして最初に来たデータを print ってことだよね。
問題はその次だ。

($aryKuji[$aryTitle[0]])

これ、[カッコ] が二重になってる。意味不明。
でもココは先週あきやんに聞いたの!
えとね、プログラミング言語っていうのはみんなそうらしいんだけど、
こういう場合は ”内側から評価” するらしい。
左から順番に読んでいくとイミフなんだけど、PHP 的に考えると内側から読むんだって!
だから、まず最初に $aryTitle[0] を見る。
これは繰り返しになるけど shuffle して最初に来たデータのこと。
ここで "吉" とか "大吉" とか、ランダムで何かが入る。
その次に $aryKuji[ ] を見る。
そうすると $aryKuji["吉"] とか $aryKuji["大吉"] とか、そんな感じになる。
4〜9行目の連想配列でそれぞれに文字列を入れてるので、それが print されるってこと!
おぉ!でけた!!分かった!分かったよ!!!!!

サンプル:kuji.php





マジで超疲れた。
これは死ぬかも分からんね。
それじゃ、今からお風呂入ってうわなんだおまえやめr


*1:通例受身

*2:形式

*3:against ...