11日目 ゲストブック作ったよ\(^o^)/
- 2008/02/25(月) 00:00:00
日記
いい嫁とサシでデートしてきた\(^o^)/
やー。いいね。リア充すぎてこわいわ・・・っ
ぶっちゃけ PHP の話はマッタクしてないからね!
女2人ゆうたら、やっぱ恋バナですよ恋バナ。恋バナ充。
パスタとピザをシェアして食べて、最後に 「スイーツありますか?」 て聞いたら
「ドルチェならあります」 て言われた/(^o^)\ ドルチェ(笑)
もう1人のイイ嫁からも 「恋バナしたい!」 てメールもらったにょ!
バレンタインチョコももらっちゃったもんね!いいだろいいだろ!!
写真うpしようと思って体裁ととのえてるうち、気付いたら全部食べていた。
動物的本能おk。紅は自由だ。
ん。恋バナkwsk?
教えてあげないヨ!ジャン♪サクサクさんかくポリンキー\(^o^)/
そういえばITmediaにインタビューされました。「そういえば」 とは何だ。謝謝!
テキストベースのゲストブックに書き込んで!
メールはやっぱやめた。だって難しいんだもん(`・3・)
うわああごめんなさい!もっとぶって><
とりあえず、もう少し修行積んでから後編やる。今日はテキストベースのゲストブック作るよ。
以下ソース。
※タグの最初は全角にしてあります。
1 <html>
2 <head>
3 <title>ゲストブック</title>
4 </head>
5 <body>
6 <h1 style="background":#cccccc">ゲストブック(書き込み)
7 </h1>
8 <form method="POST" action="guest_write.php">
9 お名前:
10 <input type="text" name="name" size="20" maxlength="30" /><br>
11 メッセージ:
12 <input type="text" name="message" size="70" maxlength="255" /><br>
13 <input type="submit" value="送信" />
14 </form>
15 </body>
16 </html>
サンプル:guest_input.php
これの説明は省略。普通の入力フォームだ。同じようなことを既に何度もやってるっちゃね。
参考:3日目 今度はあなたに挨拶したい><
とゆことで、今回も2種類作るよ。
1 <?php
2 $file=fopen("guest.dat","a");
3 flock($file,LOCK_EX);
4 $line=date("Y年 m月 d日 H:i:s")."¥t";
5 $line.=$_POST['name']."¥t";
6 $line.=$_POST['message']."¥t";
7 fputs($file,$line."¥n");
8 flock($file,LOCK_UN);
9 fclose($file);
10 header("Location:guest_input.php");
11 ?>
このソースを見たとき、一番 「はぁ?」 と思ったのが4〜6行目。
変数 $lineに次々といろんなデータを代入している。これはおかしい。
だって変数は、一度代入しても、再び代入しなおすと中身が変わるはずだもん!
参考:3日目 今度はあなたに挨拶したい><
どうも5,6行目の $line.←このドットがクサイ。
参考書の印刷ミスかと思ってスルーしそうになったけど、きっとコレには意味があるはず。
独自に調査した結果、以下のことが判明。
$line="べにぢょ"
$line.="ナイスギーク"
print("$line");
実行結果:test.php
おおお!中身が上書きされていない!!!
一応、.(ドット)抜きのパターンもうpしてみた。
実行結果:test2.php
イエス!イエスイエス!やはりな!思ったとおりだ!!!
”女は上書き保存 男は名前を付けて保存”って名言があるじゃんかー。
以前、ブログでこの話をしたらdanちゃんからトラバもらた。嬉しかった。
というのはさておき。
$line. は男だ。名前をつけて保存しちゃうのだ。フランス語風に言うと男性変数だ。
$line だけだと女。上書き保存。フランス語風に言うと女性変数なのさ!
へへん!まるっとお見通したぞ!
これさえ分かれば、このソースの山場を越えたも同然っ。
あとはまたーりいきまっしょい。
2行目。
fopen(ファイル名,モード)
指定されたファイルを指定されたモードで開きます。
参考:10日でおぼえるPHP5 入門教室
guest.dat を "a"というモードで開いて、それを $file に代入。
モードの説明はこのへん。"a" は書き出し用のみでオープンする、とな。OK。
3行目。
flock
flock()は、指定したファイルをロックする関数です。
参考:PHP関数講座:flock - そふぃのphp入門
参考書によると、あるユーザAがファイルを開いて書き込んでいる間に、
別のユーザBが書き込みを行ったら困るから、あらかじめロックしておく必要があるらしい。
上記サイトによると、LOCK_EX は読み書き両方禁止なんだって。
ちなみに、ロックマンエグゼとは関係ない。そもそもそんなに似ていない。
4〜6行目は上で説明したとおり。
そうそう。"¥t"はタブの意味なんだって。データをどこで区切るかを明確にしたいとか。へぇ。
7行目。
fputs関数
fputs(ファイル・ハンドラ,書き込む文字列)
参考:10日でおぼえるPHP5 入門教室
ふぁいる・はんどら?
今回の内容とは関係ないけど、ググってたらこんなんめっけた。
参考:名前を使用して、エントリのファイルハンドラ (読み込み専用) を取得する
ファイル・ハンドラ=読み込み専用 と解釈。
つまり、読み込み専用ファイル guest.dat に$line の内容を書き込め、ということか。
そだ、"¥n" ってのは改行の意味ね。これを.(ドット) で連結させているよ。
8行目は3行目と一緒や。
今度は LOCK_UN だから、ロックを破棄しているのね。書き込みが終了したから破棄。
そじゃないと次の人が書き込めないもんね。
9行目。
fclose
fopen()関数 で開いたファイルに対する操作が終わったら閉じます。
参考:fclose()関数/PHP関数リファレンス
10行目。
これは確か、リダイレクトさせる関数。
参考:コレやってみたい! - べ、べつにブクマ禁止したいわけじゃないんだからっ!
でけた!終了!
書き込んだ内容はこのへんで見れるはず。
サンプル:guest.dat
ちかれた。寝るぞ。おやすみなさい(・∀・)/~~
10日目 めぇるみぃ!! 【前編】
- 2008/01/30(水) 00:00:00
日記
引っ越した\(^o^)/ターター!!
でね、つい先日までネット環境がなかった。田口さんに 「大丈夫なの?」 て心配された。
同情するなら監禁してよ!!
「こんなに脆弱性だらけじゃないか!仕方ない子だ。ライフハックしてやる!」て言われたい><
落ち着け。絡みすぎだ。ごめんなさい。以後気をつけヌ。
メール関数でネゲットしよう♪
けんすうが言っていた。
「メール関数を制する者はネゲットを制す」 と。さすがネゲッターの言葉は説得力がある。
ちょっと違ってたかな・・・でもだいたいそんな感じだろうと意訳。
PHP を使うとメールが送れる (or 受け取れる) らしい。
普通のメールのやり取りは糸電話ちっくというか、
相手のコップと自分のコップがなきゃダメだけど、PHP はなんだろ、私書箱?
とにかくもっと気軽な感じなのさ!
紅はメアドを公開してなくて、代わりにレンタルCGIのメールフォームを設置している。
てゆかコレ超ひさびさに見たw ちょっと可愛い・・・なかなか可愛いとこあるな・・・。
ソースちょろっと見たけど、さては PHP だよね?
ってことは、メール関数をマスターすればメールフォームも自作できるじゃん!
すんげぇすんげぇ!! がんばろう。
参考書に従って作るとすると、リスト1とリスト2の2種類、作成せねばならぬ。
しかもリスト2は php.ini の設定をいじる必要があるとかないとか。
エー。お願い、ないって言ってよハニー(*´・Д・)
長くなりそうなので2回に分ける。今日は前編。
じゃ、ソース貼るぞ。
参考:10日でおぼえるPHP5 入門教室 ●メール関数で訪問者の声を受け取ろう
※タグの最初は全角にしてあります。
1 <html>
2 <head><title>ギークなお姉さんは好きですか(めぇるみぃ!)</title></head>
3 <body>
4 <h1 style="background:#FFCCCC; color:#663333;" >
5 ギークなお姉さんは好きですか(めぇるみぃ!)</h1>
6 <form method="POST" action="sendmail.php">
7 <input type="hidden" name="email"
8 value="lovecall@geek.jp" />
9 <input type="hidden" name="_subject"
10 value="ギークなお姉さんは好きですか" />
11 <input type="hidden" name="_result"
12 value="<?php print($_SERVER['PHP_SELF']);?>" />
13 <table border="0">
14 <tr>
15 <th align="right">名前:</th>
16 <td><input type="text" name="name" size="20" maxlength="30" />
17 </td></tr>
18 <tr>
19 <th align="right">E-mail:</th>
20 <td><input type="text" name="_from" size="50" maxlength="255" />
21 </td></tr>
22 <tr>
23 <th align="right" valign="top">自由記入欄:</th>
24 <td><textarea name="memo" cols="50" rows="5">
25 </textarea></td></tr>
26 </table>
27 <input type="submit" value="送信" />
28 <input type="reset" value="クリア" />
29 </form>
30 </body>
31 </html>
サンプル:mail_input.php
おお。ほとんど html だ。
ねね、「めぇるみぃ!」って死語かい?
昔はよく見かけたのになあ。あの侍魂の健さんでさえ言ってた気がする。
当時はまさか自分に言ってると思わなかった。完全スルー。メールを送るって発想がなかった。
今なら分かる。俺が送らなくても代わりはいるもの。とか、そゆう綾波はいらんよ!
さぁ!今こそめぇるみぃっヾ(`・д´・)ツ))
1〜5行目は省略。
6行目。
全く同じものを使った記憶がある。
POST 形式でユーザが入力したデータを sendmail.php に送るよ、というアレだ。
で、コレを使うとsendmail.phpの方の $_POST に、ユーザが入力してくれたデータを
自動的に代入してくれるんだった。
参考:3日目 今度はあなたに挨拶したい><
7〜11行目は下記サイトが分かりやすい。
参考:隠しデータを送信する
12行目。value の中身がphpだ。
$_SERVER は何度か出てきてる気がする。
参考:7日目 ヘッダ情報が見たい!知りたい!晒したい!
そうそう。グローバル変数。いろいろ取得できる子だ。
今回は PHP_SELF を取得して、それを print するらしい。
$_SERVER['PHP_SELF']は現在実行されているスクリプトのパスを返します。
参考:10日でおぼえるPHP5 入門教室
もうちょい具体的に。
PHP_SELF
現在実行しているスクリプトのファイル名です。ドキュメントルートから取得されます。
$_SERVER["PHP_SELF"];
として使いますが、例えば・・・
URLが、http://www.test.com/index.phpなら
/index.php
http://www.test.com/somedir/somefile.phpなら
/somedir/somefile.php
が返されます。
(・∀・)ィィネ!!分かりやすい!
ってことは、この場合は mail_input.php が返ってくるのかな?
ふーん・・・・・
あああああ!分かった!いま分かった!!!!!なんだ、そゆうことね!
自分で7〜11行目の参考リンク貼っておきながら把握してなかった。
8行目の value に入れてるメアドは、自分が受信したいメアドを書くのか。
んで、件名は自分がこのメールフォームから届いたメールだと認識できる名前にするのね。
そうした方が振り分けとか便利だもんね。
だから12行目だけいきなり php が出てきたのか。
ここはユーザが入力したデータだから、紅の意思が介入する余地がない。
あぁあぁ、だから print。なるほどなるほど。
やーごめんごめん!ちょっと勘違いしてたw
うっかりユーザ気分で、受け取るための設定を全く考えてなかった。
大丈夫、もう完全に理解した。
で、なんだっけ。そだ。PHP_SELF だ。
$_SERVER['PHP_SELF'] で返ってきたmail_input.php を print しろ、ということね。
ふんふんふーん♪いい具合にしっくりきた。
このたびはお騒がせして誠にスミマセンでした><
13〜26行目はマジで大丈夫。だってこれは普通の table タグですもの。
27、28行目もおk。送信ボタンは3日目でも出てきたもんね。
はあー。よかったよかった。まったく一時はどうなることかと思ったよ。
でも後編がきっとキツいんだろな・・・・
次回は土曜の夜あたりに。こーはんへつづく!
9日目 カレンダを作ルンダ♪
- 2008/01/01(火) 17:00:00
日記
あけましておめでとうございますー!
書初めを写メでうpって、アナログとハイテクのコラボレーションって感じでなんかいいよね!
アナログとハイテクはもっと仲良くすればいい。
大晦日&元旦は、田口さん・いとまささん・けんすう・$dropdbさん・劇団ブサイコロジカルの
女優さんたちと、田口さんちで年越し&初詣。
おみくじ引いたら吉だったけど、吉のわりにはすごくいいことたくさん書いてあったので超満足♪
2007年はdanちゃんちにお邪魔したりひろゆきさんと朝まで飲めたりして、分不相応なくらいに
幸せな出来事がいっぱいあった。
先月は師走ってて後半更新が滞ったけど、きっとRSSリーダーで読んでる人が多いだろうし、
更新しなければしてないことはバレないんじゃ・・・なんてナンセンスなことを考えていた。
この考えはおそらく一理ある。がっ。一理あることが正しい行為とは限らない。
2008年も頑張ろう頑張ろう!みんなに素敵な出来事がたくさんたくさん訪れることを祈って。
本年もどうぞ宜しくお願いしますっ┏○"
カレンダを作ルンダ!
タイミング的に、カレンダを作りたいのでカレンダを作ルンダ。
昨日西武に行った時もたくさん売ってたし。きっと今が旬。旬に乗ルンダ。
んじゃ、ソース貼ルンダ。(←そろそろ飽きてきた)
※タグの最初は全角にしてあります。
あっ、前回コメントくださった Theoria Laevatain さん、ありがとうございました!
コンバータ改造したいです!今年の目標のひとつにするぞっ。
1 <?php
2 $today_year =date("Y");
3 $today_month =date("n");
4 $current=mktime(0,0,0,$today_month,1,$today_year);
5 $first_day=date("w",$current);
6 $last_day=date("t",$current);
7 ?>
8 <html>
9 <head>
10 <title>カレンダー</title>
11 </head>
12 <body>
13 <h1 style="background:#cccccc">
14 <?php print(date("Y年m月",$current)); ?>
15 のカレンダー</h1>
16 <table border="1" width="300">
17 <tr>
18 <td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td>
19 </tr>
20 <?php
21 for($i=1;$i<=$first_day+$last_day;$i++){
22 if($i%7==1){print("<tr>");}
23 if($i>$first_day){
24 print("<td>".($i-$first_day)."</td>");
25 }else{
26 print("<td> </td>");
27 }
28 if($i%7==0){print("</tr>");}
29 }
30 ?>
31 </table>
32 </body>
33 </html>
サンプル:carendar.php
Σ目がっ・・・目がぁあああーーーっ!!!
なにこのバルスコード。目がぶっ壊れルンダ><
これは堂本剛じゃなくても正直しんどい。わりとギブめ。
でもがんばルンダ!(←クセになってきた)
2行目。
変数 $today_year に date("Y") を代入。
さて。date とは何ぞ?
date - ローカルの日付/時刻を書式化する
参考:PHP: date - Manual
↑のページを下にスクロール。
Y 年。4 桁の数字。 例: 1999または2003
n 月。数字。先頭にゼロをつけない。 1 から 12
つまり、date("Y") でローカルで記録されてる西暦、今だったら2008を取得して、
それを $today_year に代入するってことね。
じゃあ $today_month も同じ理屈だ。
これは date("n") だから月、今だったら1を取得して $today_month に代入、っと。
ココまではいい。ココからがちょっとややこしくなってくルンd(←そろそろ自重)
4行目。
mktime って何?
mktime関数はタイムスタンプを取得します。
取得したタイムスタンプは、date関数やgetdateなど、タイムスタンプを
パラメータとして受け取る関数で使われます。
パラメータは下位の要素から省略可能です。
たとえば、「年、月、日」をまとめて省略することはできますが、
最初のパラメータ「時」を省略して「分、秒」を指定することはできません。
参考:PHP辞典 (Desktop reference)
この関数は直感的に分かり難いんだけど、上記の参考書の説明が紅は一番分かり易かった。
長くなるので引用はしないけど、文例が GJ なのだ。
たぶん、mktime 関数ってのは年表が読める子なんだと思う。
5行目。
また date が出てきた。
上で引用したページをもう1回見てみる。
説明
string date ( string $format [, int $timestamp ] )
指定された引数 timestamp を、与えられた フォーマット文字列によりフォーマットし、
日付文字列を返します。 タイムスタンプが与えられない場合は、現在の時刻が使われます。
つまり timestamp はオプションであり そのデフォルト値は time() の値です。
w 曜日。数値。 0 (日曜)から 6 (土曜)
t 指定した月の日数。 28 から 31
ふむん。
5行目は w と $current で今の月、つまりアクセスした月の最初の曜日を$first_day に代入。
6行目も同じく、その月の日数=最後の日付。
つまり31日まである月だったら31を$last_day に代入と。
はぁ・・・息苦しい・・・。
日本語でおk、と言いたいけど言えないのがつらい。我慢する。
8〜13行目までは html なので飛ばす。
14行目。
(date("Y年m月",$current)) を print せよ、だそうな。
これは上と同じだよね。date で今の年月日を取得して、それを出力せよって意味だ。
15〜19行目まで html。飛ばす。
21行目。
for が出てきた。前回やった。繰り返し構文。
参考:8日目 目指せ!ループマスターへの道!
まずは初期化。$i に 1 を代入。
次に終了条件。$i が $first_day と $last_day を足した値より小さいうちは繰り返しを続ける。
言い換えると、この条件が成り立たなくなったら繰り返しが終わる。
増分式は $i++。繰り返すごとに $i に 1 を足していく。
ココが非常に分かりにくい。
ええとね、$first_day ってのは最初の曜日の数字が入る、って言ってたよね。
たとえば、1月は最初の曜日が火曜日だから、ココに2が入るのね。
で、$last_day は最後の日付だから31が入る。2+31=33。$i は1だから、1よりは大きい。
なので、$i<=$first_day+$last_day はまだ成り立つ。
ループを重ねるごとにどんどん $i に1を足していって、この処理を延々と繰り返す。
いつ終わるかというと、$i が33になったとき。
その間、どんな処理を繰り返すかというのは22行目以降。
もし $i%7==1 だったら <tr> を出力せよ、と言ってる。
% は算術演算子っていうんだって。
算術演算子
加減乗除とは、最も基本的で簡単な足し算や引き算、掛け算、割り算を行う演算子です。
% 剰余 17 % 5 割り算したときの割り切れなかった数を求める
参考:演算子/PHP入門
$i を7で割って、余りが超イコールで1だったら、ってことか。
具体的にはなんだ。$i が8とか15のときは余りが1になるから、そのときは <tr> を出力か。
23〜24行目。
もし $i が $first_day より大きいときは、("<td>".($i-$first_day)."</td>") を出力せよ、と。
うーーーん。
1月の場合、$first_day は2だから、$i が3以上のときは(カッコ)内を出力、ってことらしい。
出力する内容は、$i から $first_day を引いた数値が入ったtd。
- 減算 17 - 5 2つ以上の値の引き算を行う
ピリオドは文字列を連結させるそうな。
$str = "土中" . "モグラ";
↑文字列を連結させるには(.)を使います
"土中"と"モグラ"が結合されて$strに代入されます
参考:もぐりん PHPのお勉強->演算子
なので、$i が3のときはそこから2を引いた数、つまり1というセルが出力される。
おおおおお!先ほどからひそかにじわじわ感じていたが!!理解できた気がするううう!!!
25〜26行目。
そうじゃなかったら、$i が$first_day より小さかったら ("<td> </td>") を出力せよ。
&nbsp というのは空白のこと。だから、数字が入ってない空のセルを出力してね、と言ってる。
28行目。
もし $i を7で割った余りが超イコールで0だったら。つまり7で割り切れたら。
</tr>だから、行を閉じろと言ってる。これにて終了。はぁ。ちかれた・・・。
まとめよう。
カレンダーなので、1月40日とか50日まで処理を繰り返されては困る。
だから、どこで終わるかを21行目で指定した。
一週間は7日なので、土曜まで進んだら新しい列を追加したい。それを22行目で指示。
23行目の $i>$first_day というのは、最初の曜日より前のセル、今月の場合だと
日・月に数字は入れないから、それ以降だったら日付を入れろ、と条件式で指示してる。
だって前のセルって先月だからね。本来なら12月31日が入るべき場所だから、
そこには空白を入れろと言ってる。
28行目は一週間が終わったら列を閉じろと。余りが3とか4のときは列を追加しない。
だってまだ水曜とか木曜なのに来週になっちゃうとか困るっしょ。
だから <tr> とか追加しない。話のわかるヤツだ。if ヤバイ。超がんばれ。
わぁー!できたできた!カレンダーだカレンダーだ!!すごいすごい!!
みんなコレをホームにしたらいいんじゃないかな!?だって便利だもんね!紅はしないけど!!
元旦からかなり疲れた。頑張った自分(笑)を褒めてあげたい。
途中で寝落ちしたのはバレていないはず.....|д・*)
4日目 おみくじとか作っちゃうかモナー!
- 2007/11/20(火) 00:00:00
日記
【べにぢょの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 ((通例受身))((形式))〈軍隊などを〉配列する, 配置する,
(…に対して)陣容を整える((against ...))
て言ってた。たぶん文字通り 「(カッコ)内の値を左の関数の中に置くよ」 ってことだと思う。
ソースに戻る。
$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
- HOME |


