カテゴリー : 制御・関数

WHILE

while文は指定した条件式が真(true)の間、繰り返し実行します。

配列の中身も下記のように取り出すことができます。

多次元配列も下記のようにすると中身を取り出すことができます。

連想配列もできないことはないですが、今はforeachというものがあるのでそのときに説明します。

比較演算子

先ほどのwhile文の説明にしようしていた <  を比較演算子と呼びます。

比較演算子の種類を下記に示します。

これを利用して条件式で評価を行い、trueの場合、処理を行っていくのです。

名前 結果
$a == $b 等しい 型の相互変換をした後で $a が $b に等しい時に TRUE
$a === $b 等しい $a が $b に等しく、および同じ型である場合に TRUE 。
$a != $b 等しくない 型の相互変換をした後で $a が $b に等しくない場合に TRUE
$a <> $b 等しくない 型の相互変換をした後で $a が $b に等しくない場合に TRUE
$a !== $b 等しくない $a が $b と等しくないか、同じ型でない場合に TRUE 。
$a < $b より少ない $a が $b より少ない時に TRUE
$a > $b より多い $a が $b より多い時に TRUE
$a <= $b より少ないか等しい $a が $b より少ないか等しい時に TRUE
$a >= $b より多いか等しい $a が $b より多いか等しい時に TRUE

while 練習問題

その1

このようなボタンを十個作ってください。

その2

数字の1から30までの間の偶数を全て表示させるプログラムを作ってください。

その3

数字の3から40までの間の奇数を全て表示させるプログラムを作ってください。

その4、

今回の練習ファイルは現在で3つリンクが存在しています。
この3つのファイルを配列とwhileを使用してリストしてください。

  • http://127.0.0.1/php_p/index.php
  • http://127.0.0.1/php_p/first.php
  • http://127.0.0.1/php_p/second.php

アドバンス問題

上記のリストを<a>タグでマークアップをしてリンクできるようにしましょう。

 

 

for

条件式 の値が TRUE の場合、ループは継続され、文 が 実行 されます。

条件式 の値が FALSE の場合、ループの実行は 終了 します。

カウンタ初期設定の式 は、for 文の開始時 に 1 度 だけ実行されます。

条件式 の値は、各ループの開始時 に 毎回、評価されます。

カウンタ増減設定の式 は、各ループの最後 に 毎回、実行されます。

また、下記のように書くこともできます。

配列の要素の値を取り出すこともできます。

多次元配列も要素を取り出すことができます。

for 練習問題

問題1 => 掛け算の九九を表示させてください。
ヒント:二重for文

問題2 => 配列(イチゴ、バナナ、オレンジ、マンゴー)を作り、
イチゴとオレンジを表示させてください。

 

問題3 => 問題1で作った九九をテーブルを使って表示させてください。

問題4 => 赤 青 黄 というvalueを持ったボタンを3個作成して、それぞのボタンを押した場合にはテーブルの背景色が変わるようにしてください。(jQueryを使いましょう)

foreach

foreach は、配列を反復処理するための便利な方法です。
指定された配列/連想配列に対して先頭から順に繰り返し処理を行います。

配列の場合
foreach(配列 as 値変数):
処理
endforeach;

サンプルコード

連想配列の場合
foreach(配列 as キー変数 => 値変数):
処理
endforeach;

サンプルコード

このように配列の要素数がある分だけ繰り返し処理をしてくれます。

また連想多次元配列でも使用ができます。
サンプルコード

PHP5.5からは多次元配列をlist()関数を使いながら反復処理ができます。が!! みなさんのXAMPP環境はPHP5.4系なのでこれはエラーが出ます。

foreach 練習問題1

現在の練習サイトのリンクパスとページ名を連想配列に格納してください。
その後、foreachを使用して、下記のように ページ名とリンク先を出力できるようにしてください。

この仕組みを利用刷れば、INDEXページのINDEXリンクと ヘッダのグローバルナビに利用できます。やってみてください。

 

foreach練習問題2

foreach練習問題1で実行したままだとリンクリストを更新する時若干手間がかかってしまいます。

そこで、リンクナビ用の処理を別ファイルにしインクルードをおこなって一元管理ができるようにしましょう。

見本→

 

IF

IFは条件分岐です。 もし~~なら++をする。 という分岐処理を行っていきます。

if(条件式) 処理 ;

これが、一番シンプルなIF文です。{}や : ~ endif;がないとお思いでしょうが、ifの次にくる処理が一文のみの場合はこれでOKなのです。処理の行頭に条件分岐をつけているだけです。なのでIF文と呼ばれるのです。ためしに下記コードをやってみましょう。

IF文は真ん中の一行だけですよ!!

ただ、条件分岐での処理は複数の行で構成されることが多いので、

 if(条件式)
{ 処理 ;}
または
if(条件式):
処理 endif;

とされます。

となるわけですね。

上の例だと、条件式にあった場合は処理をそうでなければなにもしない。ということになりますが、そうでなかった場合の処理もおこないたい場合は、elseを使います。

 
if(条件式){ 
 trueの処理 ;
}else{
false の処理
}
または
if(条件式):
trueの処理 
else:
falseの処理
endif;

先ほどのサンプルコードにelse処理を付け加えます。

このようになります。またelseの時に条件式をつけることもできます。

 
if(条件式){ 
 trueの処理 ;
}elseif(条件式){
最初の条件がfalseであり、かつ次の条件がtrueのときの処理
}else{
全てfalseの処理
}
または
if(条件式):
trueの処理 
elseif:
最初の条件がfalseであり、かつ次の条件がtrueのときの処理
else:
全てfalseの処理
endif;

たとえば、

また、三項演算子といわれるもので、if~elseの処理を行うこともあります。

 
条件式 ? trueの処理 : falseの処理; 

サンプルコード

処理の値を即代入できる利点があります。

IF文練習問題

  • その1
    • $numに任意の数字を代入して、偶数なら丁 奇数なら半とだすプログラムを作成しましょう。
    • rand関数 rand() を使用して $numの値をランダムに生成して、丁半を判定するようにしましょう。 $numの値を表示させるのも忘れずに。
  • その2
    • 20未満なら未成年、20以上なら成人、77なら喜寿 88なら米寿 と表示されるような年齢判定プログラムを作成しましょう。
    • 配列変数 $ageを用意して、配列の値をarray(8,17,19,20,21,76,77,80,81,89,88)とし、$ageの添え字をrand関数で生成し、値をとりだし 年齢判定プログラムに判定させてください。