注目の投稿

[募集][告知] おしらせ

ここが一番デイビューあるのでダメ元で… 探しています: 2000 - 2010年頃までのいずれかの期間に、私が遊ばせていただいてたなりきりチャットのログ 該当多分3箇所くらい(表裏自前)だと思うのですが、いずれか一箇所でも上記期間のログをお持ちの方、もしいらっしゃったらコピーをお...

4.25.2008

マイナスから始めるPHP戦記その2。
皆さんご機嫌いかがですか。話しかけんなきめえって感じ。
ベーシックでハローワールド作ったことがあるだけの奴が自作テンプレエンジンもどきを作る話ですが、着々と進んでおります。ファンクション覚えました。(良かったね)
というわけで自分メモがてら。



便利道具?ファンクション。
[quote]function 適当な名前(){

ここにやりたい処理を書く

��[/quote]
とやっておくと、
[quote]
適当な名前();
[/quote]
とたった一言書くだけで、「適当な名前()」の「{}」で括られた内部の処理をやってくれちゃう優れもの。
ところでswitchで詰まりました。デフォルトが利かないのは多分
[quote]
switch(変数){

case (変数に対する条件):

処理

break;

default:

処理

��
[/quote]
の、一番最初に設定してる変数(switch()の括弧内)が間違ってるんでしょうね…orz
どういうことになってるかというと、
[quote]
��変数1 = $_GET[”変数3”];

switch($変数1){

case ($変数1 == TRUE):

��変数2 = ”アハハ”;

break;

default:

��変数2 = ”ウフフ”

��
[/quote]
このようなプログラムを組んだ。
期待した(つうか本来なるはずの)動き→変数3に何か送られた(入った)らスイッチでのケース1の処理を、変数3が空だったらデフォルトの処理を。
実際の動き→変数3が空だとデフォルトの処理を実行してくれない。
と今書いてて思ったんですが、
[quote]
��変数1 = $_GET[”変数3”];

if (isset($変数1)){

switch($変数1){

case (isで始まる変数の内容調べる系のやつ($変数1)):

��変数2 = ”アハハ”;

break;

default:

��変数2 = ”ウフフ”;

��

��

elese {

��変数2 = ”エヘヘ”;

��

[/quote]
こうすべきなのか? 試してみる。あ、動きました。そうらしい。そうか、そもそもswitchに使う変数1に代入される”変数3”があるかないか、でスイッチなんぞ出来んわな。
ここでさらに、ゲットした変数3の中身次第で処理を分岐させたい……と思ったのですがものすげえ躓いた。
やりたかったこと→変数3の中身が数字ならケース1へ。文字ならケース2へ。
以下そうなることを期待して書いたソース。

[quote]
case (is_numeric($_GET["変数3"]) == true)://ケース1、変数3が数字(numeric)だったら

��変数2 = 12345;

break;

case (is_string($_GET["変数3"]) == true)://ケース2の分岐条件

��変数2= 78945;

break;

default:

��変数2 = 45678;

��
[/quote]
多分、プログラム詳しい方ならソース見て「ちょwwwおまwww」となる筈。
GETでもPOSTでも、フォームから返されるものは全てstring、文字列になってるってことを知らないわけですよ素人さんは。ゲットタイプで型見ると毎回string返ってくる時点で気付きゃいいものを。
$_GET["変数"]なり、$_POST["変数"]なり、ともかくこれの内容判定に型判断(is_numericとか)はそもそも使えなかったわけでした。じゃあどうするのかというと、
http://jp.php.net/manual/ja/function.ctype-alnum.php
これだ。このctypeから始まるウキウキした感じのなんたら。読めない。くたいぷ?
というわけで、やりたかったことを全て叶えたソースがこちら。
[quote]
if (isset($_GET[”変数3”])){//もし変数3に何か入ってたら

$変数1 = $_GET[”変数3”];//変数3を変数1に代入して

switch ($変数1){//変数1の内容によって分岐開始

case (ctype_alpha($変数1))://もし変数1の中身が完全にアルファベットだけだったら

$変数2 = ”アハハ”;//…の処理

break;

case (ctype_digit($変数1))://もし変数1の中身が完全に数字だけだったら

$変数2 = ”ウフフ”;//…の処理

break;

default://もし変数1の中身がそれ以外(数字とアルファベットが混在してたりとか、記号だったりとか)だったら

$変数2 = ”エヘヘ”;//…の処理

��

��

else {//もし変数3が空っぽだったら

$変数2 = ”オホホ”;//…の処理

��
[/quote]
これでようやくキレイに分岐できた。ふつうに前途多難。
個人的お助かりサイトさんリンク
http://www.maiatech.com/varpage.php
シンプルテンプレエンジン。とても参考になります。こういうことが出来るんだなぁ。
http://nyx.pu1.net/
http://www.mapee.jp/dproom/cat7/php/
困った時にスーパー頼りにさせていただいてるサイトさん。阿呆な初心者でも分かり易い。スーパー感謝。
http://www.heeha.ws/index.php?PHP%B4%D8%B7%B8
今回の問題解決はこちらのサイトさんのお陰でした。スーパー感謝すぐる。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_k08.htm
正規表現の一覧。
caseでpreg_matchを使うときは
[quote]
case preg_match( '正規表現', $変数 ):
[/quote]
という書き方になる。
もうしばらく頑張ります……。
ところで優先事項の方は夢の500kb越えを果たしました。何でテキストファイルで500kbとかになるんだよ。orz

0 件のコメント:

コメントを投稿