あーる学習帳

自分が勉強したことや気になることなど、99%自分用です。コードを書いてるのでPCから閲覧を推奨。

PHP入門:whileとforでループ、配列とforeachでもループ、コロン構文

スターデューバレーが楽しすぎる…。

ec.nintendo.com

別に買いなさいという意味ではない。

 

では、PHPの続きをば。

 

#11

While文によるループ処理の話。

今回はWhileDo...Whileについて学んでいく。

まずは以下のコードを書いて出力してみる。

$i =0;

while ($i < 10){

  echo $i;

  $i++;

こうすると、「$iが10より小さい場合は画面に$iを表示」→「$iに1足す」→「$iが10より小さい場合は…」と繰り返しを行う。画面には「01233456789」と出力される。

Whileのあとに指定する条件(かっこの中)が真である限り、かぎかっこでくくられた処理を行っていくのがwhile文である。

また、Do...Whileという書き方についてもチェック。

&i=0;

do{

  echo $i;

  $i++;

} while ($i < 10) ;

 結果はどちらも同じだが、Do...Whileとした場合は条件が後ろに付く。

2つの違いは前判定か後ろ判定かということ。

Whileの場合、例えば$i=100だったらそもそも処理が行われない。

Do...Whileの場合、$i=100だったら画面には「100」と表示がされる。

 

#12

今回はfor文でループ。#11と同じように画面に「012345679」と出す場合は…

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

  echo $i;

}

 少し複雑なのでまとめると…

for (【初期値】; 【終了条件】;【繰り返しごとに行われる処理】;) {

  【ループ中に実行する処理】;

}

 また、whileでもforでも共通して使えるbreakcontinueについてもまとめる。

breakは「ループを抜ける」という命令、continueは「それ以降の処理を実行せずに次のループへ移る」という命令。

上のfor文を以下のように書き換え。

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

  if ($i===5){

    break;

  }

  echo $i;

}

すると画面には「01234」と表示される。breakによって$i===5のときに強制的にループから抜け出したからである。

上記のbreakをcontinueに書き換えると…

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

  if ($i===5){

    continue;

  }

  echo $i;

}

この場合、画面には「012346789」と5が抜けた状態で表示される。

$i===5のとき、continueで次のループ処理へ移ったからである。

 

#13

配列について。KeyとValue(値)がセットになったデータ構造。

社員の売上管理をしたい場合、社員の名前と売上の数値をペアで管理したい。

このような場合はarrayという命令を使う。

$sales = array(

  "yamada" => 100,

  "tanaka" => 200,

  "satou" => 300,

); 

このように、【key】=>【valueと書いていく。なお、最後のvauleの後のカンマはあってもなくてもよい。後から何か付け足す可能性もあるのでつけっぱなしの方がいいかも。

また、PHP5.4以降の場合は以下のように書くこともできる。

$sales = [

  "yamada" => 100,

  "tanaka" => 200,

  "sato" => 300,

] ;

大かっこでくくるとarrayと同じ意味になる。

arrayで定義したvalueにアクセスしたい場合は以下のように書く。例でvar_dumpを使うと…

var_dump($sales["tanaka"]); 

 このように、変数名[key]と書けばよい。

valueの上書きも可能。

$sales["yamada"]=500;

var_dump($sales["yamada"]); 

こうすれば画面にはint(500)と表示される。

配列のKeyは省略することも可能で、その場合は上から順に0,1,2,...と連番が振られる。

$colors = ["red","blue","pink"];

var_dump($colors[2]); 

こう書いたら、画面には「string(4) "pink"」と表示された。

 

#14

配列の内容をループ処理で取り出すことのできるforeachについて。単語としては「for each」という区切り。#13のコードも流用して以下のように書く。

$sales = [

  "yamada" => 100,

  "tanaka" => 200,

  "sato" => 300,

] ;

foreach($sales as $key => $value){

  echo "($key) $value";

}

このようなコードだと、画面には「(yamada) 100 (tanaka) 200 (sato) 300」と表示される。

また、keyが省略されている場合は…

$colors = ["red","blue","pink"];

foreach ($colors as $value){

  echo "$value ";

 画面には「red blue pink」と表示された。

foreachだけでなくif、while、forでも使えるコロン構文というものも扱う。

処理を示す波かっこの最初{をコロン:で書き、最後に閉じる波かっこ}については「endforeach / endfor / endif / endwhile」とする書き方である。

$colors = ["red","blue","pink"];

foreach ($colors as $value) :

  echo "$vaules "

endforeach; 

このように書く。こうすることで、HTMLへ埋め込むときにすっきり書けるという利点がある。

<?php $colors=["red","blue","pink"]; ?>

<ul>

  <?php foreach ($colors as $value): ?>

  <li> <?php echo "$value"; ?> </li>

  <?php endforeach; ?>

</ul> 

このコードで波かっこを使っていたら逆にわかりづらいなぁ、と感じる。

何気に初めてPHPとHTMLを組み合わせた。こう書くのか…という感動がある。

今夜はここまで。