未分類

[PHP] foreach|for|while|switch

foreach

foreachは変数の中の配列の値を一つ一つ取り出す関数です。

サンプルは以下です。

<?php 
//配列を用意
$members = [
    'name' => '本田',
    'height' => 170,
    'hobby' => 'サッカー'
];

//バリューのみ表示
foreach($members as $member) {
    echo $member;
}

書き方は、まず何か配列があることが前提ですので、配列を用意します。

そして、foreachと書いてカッコを書いて、カッコの中に配列の変数名を書きます。

そしてasを書いて、代入用変数を書きます。代入用変数はどんな名前でも構いませんが、配列の変数名の単数形が望ましいです。

そして、代入用変数の中には配列変数の中の値が1ループごと順番に代入されていきます。

例えば、配列に【本田、170、サッカー】と入っていたとします。これをforeachの処理を通すと代入用変数に入れ替わり立ち替わり本田、170、サッカーと順番に代入されていきます。なので結果は以下になります。

結果

本田170サッカー

nameやheight、hobby といったkeyも一緒に表示したい場合は以下です。

<?php 
//配列を用意
$members = [
    'name' => '本田',
    'height' => 170,
    'hobby' => 'サッカー'
];

//キーとバリューそれぞれ表示
foreach($members as $key => $value) {
    echo $key . 'は' . $value . 'です。';
}

結果

nameは本田です。heightは170です。hobbyはサッカーです。

for

forは決まった回数繰り返す関数です。

書き方の日本語表記は以下です。

<?php 
for(初期値; 条件; 加算) {
    処理
}
?>

まずforと書いて、次にかっこを書いてその中に初期値、条件分、インクリメンタル演算子を書きます。これが基本的な構文です。

次は実際に値を入れて書いてみます。

<?php 
for($i = 0; $i < 10; $i++) {
    echo
}
?>

まず初期値のところに、$i = 0と書きます。これは0から始まるという意味です。

次に、条件のところに$i < 10($i小なり10)と書きます。これは$iが10より小さい間、処理を繰り返すという意味です。

次に、加算のところに$i++(インクリメンタル演算子)を書きます。これは1処理が終わるごとに$iの値を1ずつ加算させるという意味です。

まとめますと、$iが0から始まって1つずつ加算されてその値が10より小さい間処理が繰り返され、0から9までの値が表示される。となります。したがって結果は以下です。

結果

0123456789

for文のbreak、continue

for文にcontinueやbreakといった構文を足すことがあります。

ではどのような時に使うのかを説明したいと思います。

まずはbreakです。結果を見てからどのような処理になるかを把握します。

下のようなコードを書きました。

<?php 
for($i = 0; $i < 10; $i++) {
    if($i === 5) {
        break;
    }
    echo $i;
}
?>

結果

01234

上記のような結果になります。条件は$i < 10となっていますが

if文に注目するとif($i === 5)とあり、その中でbreak;と書かれています。

このことから、もし$iが5になったらbreakで処理を止めるという意味になります。

なので結果のようになります。

ちなみに結果的に5まで出力できなかた意味はわかりますか?

理由は、if文の中でbreakされてしまったのでechoまで辿り着かなかったからです。

次は、continueです。どのような時に使うのか結果から把握します。

以下のようなコードを書きました。

<?php 
for($i = 0; $i < 10; $i++) {
    if($i === 5) {
        continue;
    }
    echo $i;
}
?>

結果

012346789

上記のような結果となりました。よく見ると5だけスキップされていて表示されていません。

このように指定したループをキャンセルする時にcontinueは使われます。

while

whileも決まった回数繰り返す処理になります。

書き方の日本語表記は以下です。

<?php
初期値; 
while(条件) {
    echo $j;
    インクリメンタル演算子;
}
?>

for文よりまとまりがないような形になっていますが処理的には変わりはありません。

まず先に初期値を書いて、whileと書きます。次にカッコを書いてその中に条件を書きます。

そしてechoしてインクリメンタル演算子で初期値を加算します。

実際に値を入れて処理をします。

<?php
$j = 0; 
while($j < 10) {
    echo $j;
    $j++;
}
?>

まず$jに初期値を設定します。そしてwhileと書いてカッコを書いて、カッコ内は条件を書きます。今回は$j < 10とすることによって、$jが10より小さい間処理を繰り返すとなっています。そしてechoしてその後にインクリメンタル演算しで$jを加算します。すると結果は以下になります。

結果

0123456789