ホーム

スタッフブログ

2015年6月19日

PHP初心者講座その⑤

こんにちは。Aです。バイトの人です。

前回に引き続きPHP初心者講座の第5弾。
第4弾では入力した内容を変数に入れて、更に配列にいれてみました。→前回

で。
配列って何が便利なんだろうという話になって、ループの概念に触れようって所でした。
試しに、アルファベット26文字を入力して、出力してみるとこんな感じ。
$arr[0]=’A’から始まって、$arr[25]=’Z’までの各値が配列$arrに入ってます。

blog_abe16

blog_abe15

ソースコードを見た限り、「別に出来ないことは無いですけど・・・^^;」って感じ。
これをループを使ってしまうと

blog_abe17

ここまで短く出来てしまいます。それが、ループのいいところ。

forループ(for(式1; 式2; 式3;){文})

phpマニュアルには”for(式1; 式2; 式3;){文}”とありました。
3つの式についても、一応原理に触れておきます。

式1はループを開始したときに無条件に実行される式。
今回の例だと、$i = 0 ですから、”0という値を変数$iに代入します” って意。
式2は、”その式の値がTRUE(真)の場合にループを継続します” の意。
今回の例だと$i <26 ですから、$iの値が26を超えない限りループが続きます。
式3は繰り返しの後に実行される式。
今回の例だと $i++ ですから、”処理を行った後に変数$iに1を加える” の意ですね。

まぁ結局何をやっていたかというと、
$arr[0]等の[0]の部分に変数を入れて、その変数を1ずつ増やしたって感じ。

$iの値が”0”のときは$arr[$i]=$arr[0]=”A”で、
$iの値が”10”のときは$arr[$i]=$arr[10]=”J”で、
$iの値が”25”のときは$arr[$i]=$arr[25]=”Z”であることがそれぞれ言えますから
[]の中身を変数にしておいて、その変数を変えて、繰り返してechoしてみました って所です。

ちょっと試しに、式3にあたる部分を”$i++”から”$i = $i + 2”にしてみます。

blog_abe18

偶数番目の文字しか出力されてませんね。
$i = 0, 2, 4, 6, 8, 10, …..24の添え字に対応する中身が出力されてるわけです。

ただ、この場合だと必ず26文字分の文字列を入力しないと駄目なんですよね。
例えば25文字しか入力してない場合だと、$i = 25のときにエラーが出るはず。

blog_abe19

やっぱり出ました。注意書きには”Undefined offset: 25”とあります。
“0から初めて25番目の要素がありません!”って注意が出てますね。

柔軟性に欠けるのでこの部分だけなんとかしてしまいましょう。

php関数 count()

上で出たエラーの原因はというと。
“26文字分出力しようとしているのに、文字が25文字しかないから”ですよね。
じゃあ、入力した文字の分だけ出力出来るようにしてしまうと大丈夫なはず。

そこで出てくるのがcount()関数。配列の要素数(ここでは文字数)をカウントしてくれます。
そこでカウントされた値を、先ほどの式2に入れてしまえばOK。
“$i < 26” の”26”の部分ですね。

blog_abe20

ちゃんと25文字分出してくれてます。

コードはこんな感じ。
文字数を変数$num に代入して、for文の式2に適用させています。
あんまりかっこいいやり方じゃないんですけど、原理的にはおかしくない。

構造化プログラミング

初心者講座も第5回に差し掛かり、プログラミングの初歩の初歩には触れた訳ですが…
別に意識はしてなかったんですけど、所謂”構造化プログラミング”には触れたと思ってます。

※構造化プログラミング…
順次・反復・分岐の3つの構造化文を用いてプログラムを作る考え方の事

echo “HELLO WORLD”で、順次結果を出力して、
if(isset($_POST[‘naiyou’]))で、入力内容がある場合とない場合の分岐を用意しました。
そして今日はfor文を使って反復もさせてみました。

あくまで個人的になんですけどね。
これらを知っておけば、作りたいものは作れるんだと思ってます。
言語の仕様をキチンと理解してない事もあって、毎日躓いてばかりな気もしますが
どんなものだって、原理的には作れるんじゃないの?と思ってます。

大学の卒業研究でもプログラミングしてたんですけど、そんなことばかり考えてました(笑)
結構面白いものを作った(つもり)なので、いつかご紹介出来ると良いのですが・・・。

さて。次回はもっとPHPらしいことが出来ればと思います。では。

求人バナー

このページの上部へ戻る