15
PHP講座(3) 条件分岐・反復・関数 この教材ではすべてのプログラミングに共通する概念について学びます。 この授業で得る知識はあらゆるプログラミング言語に共通します。 しっかり理解すれば、PHP以外にも応用できる知識です。

03 条件分岐・反復・関数

  • Upload
    -

  • View
    498

  • Download
    1

Embed Size (px)

DESCRIPTION

講義資料です。

Citation preview

Page 1: 03 条件分岐・反復・関数

PHP講座(3)!条件分岐・反復・関数

この教材ではすべてのプログラミングに共通する概念について学びます。 この授業で得る知識はあらゆるプログラミング言語に共通します。 しっかり理解すれば、PHP以外にも応用できる知識です。

Page 2: 03 条件分岐・反復・関数

条件分岐とは?

10.4.18 (C) 株式会社破滅派

2

【どうやって複数の処理を行うのか?】 前回の授業でPHPはユーザーが入力した情報を処理できることを学びました。  では、どうやって情報を処理するのでしょうか?  たとえば、ログインフォームを考えて見ます。  

ユーザーが入力するもの  ログイン名  パスワード  

もし合ってたらログイン  間違ってたら エラー   

Page 3: 03 条件分岐・反復・関数

条件分岐の構文

10.4.18 (C) 株式会社破滅派

3

if(条件){    //合っている時の処理  }else{    //合っていない時の処理  }  

{~}を「ブロック」と呼びます

Page 4: 03 条件分岐・反復・関数

条件分岐の例「合計で10になる数値を入れなさい」

10.4.18 (C) 株式会社破滅派

4

//ユーザの入力した情報を取得  

$number1  =  $_POST[“number1”];  $number2  =  $_POST[“number2”];    

//二つの合計が10だったら  if($number1  +  $number  2  ==  10){    echo  “合ってる”;  

}else{    echo  “間違ってる”;  

}  

でも、これだとYes/Noしかできない…

Page 5: 03 条件分岐・反復・関数

複雑な条件分岐

10.4.18 (C) 株式会社破滅派

5

//ユーザの入力した情報を取得  

$number1  =  $_POST[“number1”];  $number2  =  $_POST[“number2”];    

//二つの合計が1000より大きかったら  

if($number1  +  $number  2  >  1000){    echo  “大きい”;  

//二つの合計が100より小さかったら  

}elseif($number1  +  $number  <  100){    echo  “小さい”;  

//それ以外  

}else{    echo  “普通”;  

}  

これでいくらでも条件をつけることができる!  

Page 6: 03 条件分岐・反復・関数

ところで条件とは?

10.4.18 (C) 株式会社破滅派

6

true  or  false ほんと うそ

1  +  1  ==  2  1  +  2  ==  2  “私”  ==  “たわし”  1001  >  1000  100  >  1000  100  ==  “ひゃく”  $londonboot[0]  ==  “淳”  $password  ==  $_POST[“password”]

?  ?  ?  ?  ?  ?  ?  ?

Page 7: 03 条件分岐・反復・関数

反復処理とは?

10.4.18 (C) 株式会社破滅派

7

【コンピューターが得意なものは?】 どんな処理でも「繰り返し」というものはあります。  まったく同じではなくても、「似たような処理」を繰り返すことはよくあります。  

それを一々プログラミングする必要があるでしょうか?(暇ならいいですけど…)  そう、コンピューターが一番得意なのは、「機械的な反復作業」です。言い換えれば、「反復処理はできる限りコンピューターにやらせるべき」なんです。  

毎日同じことなんてやってらんねーよ….

Page 8: 03 条件分岐・反復・関数

反復処理に向いているもの

10.4.18 (C) 株式会社破滅派

8

【反復処理に向いたデータ型=配列】 配列は複数の要素からなる出席簿のようなものだと説明しました。  

配列のインデックスは0から始まる  ↓  1~10 = 0~9  ↓  一番左を0と考えると、並ぶべき位置は(自分の番号×距離)  

出席番号1から10の奴、左から右に並べ!

Page 9: 03 条件分岐・反復・関数

反復の構文

10.4.18 (C) 株式会社破滅派

9

for(初期条件;終了条件;毎回行われる処理){  

 //毎回行われる処理  

}    {~}を「ブロック」と呼びます

Page 10: 03 条件分岐・反復・関数

反復の例:for文

10.4.18 (C) 株式会社破滅派

10

$member  =  array(“その1”,  “その2”,  “その3”,  “その4”,  “その5”,  “その6”,  “その7”,  “その8”,  “その9”,  “その10”);  

for($i  =  0;    $i  <  10;    $i++){  

 $position  =  $i  *  10;      echo  “{$member[$i]}は{$position}にいます。”;  

}    /*  その1は0にいます    その6は50にいます  その2は10にいます    その7は60にいます  その3は20にいます    その8は70にいます  その4は30にいます    その9は80にいます  その5は40にいます    その10は90にいます  */  

※何回繰り返せばいいか、あらかじめわかっていない場合は?  

初期値は0

$iが10より小さい限りは実行

繰り返しのたびに$iに1を加算

Page 11: 03 条件分岐・反復・関数

反復の例:foreach文

10.4.18 (C) 株式会社破滅派

11

$member  =  array(“JR”  =>  130,  “小田急”  =>  “120”,  “井の頭”  =>  110,  “営団”  =>  160,  “都営バス”  =>  200);  

foreach($member  as  $k  =>  $v){  

 echo  “{$k}の初乗りは{$v}円です。”;  }    

/*  JRの初乗りは130円です。  小田急の初乗りは120円です。  井の頭の初乗りは110円です。  営団の初乗りは160円です。  都営バスの初乗りは200円です。  */  

【for文と比べて…】  連想配列を扱うのに便利        いちいち要素の数を調べなくていい  

なんかかっこいい    

要素のキー 値だけでもいい

要素の値

Page 12: 03 条件分岐・反復・関数

反復を途中でやめる場合

10.4.18 (C) 株式会社破滅派

12

$girls;    /*  この配列は30個の要素を持っています。値は「付き合ってもいい」または「付き合いたくない」です。  あなたはいち早く彼女がほしいので、誰でもいいから「付き合ってもいい」と言う人が現れた時点で全員に告白するのをやめたいと思っています。  */  

$number_of_confession  =  0;  //告白回数  for($i  =  0;    $i  <  30;    $i++){  

 $number_of_confession  =  $i;      if($girls[$i]  ==  “付き合ってもいい”  ){      break;    }  

}  echo  $number_of_confession;  

※告白回数が何回になるかは、$girls次第!  

breakで強制的にループを終了

Page 13: 03 条件分岐・反復・関数

関数

10.4.18 (C) 株式会社破滅派

13

人間の考えることというのは、大体同じです。  これまで、数多くの人が同じようなことを考えてきました。

文字列の長さを教えてくれる関数があります。

パスワード1万字とか入れないでほしいな…  6~12文字にしてもらいたいな

Page 14: 03 条件分岐・反復・関数

関数は自分でも作れます

10.4.18 (C) 株式会社破滅派

14

function  hoge($foo,  $bar…){  

 //ここでなんか処理を行う    return  $fuga;  

}

引数。なくてもいいし、なんこあってもいい。 関数名 関数宣言

戻り値(なくてもいい)

Page 15: 03 条件分岐・反復・関数

実践課題

10.4.18 (C) 株式会社破滅派

15

【画像表示】 特定のフォルダ内にあるすべての画像をスキャンして、すべて表示する。フォルダに画像を追加したら勝手に表示。  

【メール送信フォーム】 指定したメールアドレスにメールを送信する。  ※スパムの温床  

【ファイルアップロード】 フォームで指定したファイルをサーバ上にアップロード