uiuifree.com

- サイト制作のノウハウと最適化を目指して-

2020.11.13【PHP】foreach文を使って配列の中身を取り出し処理してみましょう

【PHP】foreach文を使って配列の中身を取り出し処理してみましょう

foreachとは

PHPのforeachは配列を反復処理するための便利な方法です。配列の要素が存在する数だけ繰り返しループ処理をしてくれて、配列とオブジェクトに対して使うことができます。

foreachの構文

foreach
foreach ($array as $value){
  // 実行処理
}

foreach ($array as $key => $value ){
  // 実行処理
}
  • $arrayは配列
  • $key は配列の添字
  • $value は $arrayに入ってる値

foreach (配列 as $value)は、配列 で指定した値を$valueに反復して代入します。 foreach (配列 as $key => $value)の形式にすると連想配列のキーを$keyに代入します。

foreachで配列の値を取り出してみよう

では実際にforeach文のサンプルをみてみましょう。 $itemsという配列を使ってforeachを使ってみます。

例文
<?php
$items = ['Windows', 'Mac'];
foreach ($items as $value) {
    echo $value . "\r\n";
}
出力結果
Windows
Mac 

配列に設定されたiPhone Mac Bookが順番に処理されていることがわかりました。

foreachで連想配列の値を取り出してみよう

次に2つめの使い方になる連想配列のキーを出力する方法を確認していきましょう。

例文
<?php
$items = [
    'Microsoft' => 'Windows',
    'Apple' => 'Mac',
];
foreach ($items as $key => $value) {
    echo $key . ':' . $value . "\r\n";
}
出力結果
Microsoft:Windows
Apple:Mac

このように連想配列のキーが繰り返し処理の中で出力されていることができました。 通常の配列でもキーを取得すると配列の添字が数字で設定されます。

ループ処理の中断

PHPの繰り返し処理ではループの途中で処理を中断するbreakと次のループ処理に飛ばすcontinueを使うことができます。

構文 意味
break 繰り返しを中断
continue 現在の処理を停止し次の処理を開始する

一般的にbreakcontinueは条件分岐と合わせて実装されます。

breakを使って繰り返し処理を中断する

例文
<?php
$array = [
    'PHP',
    'Ruby',
    'HTML',
    'CSS',
    'JavaScript'
];

foreach ($array as $value) {
    if ($value !== 'HTML') {
        continue;
    }
    echo $value . "\r\n";
}
出力結果
PHP
Ruby

breakが設定されていることで3回目のループでforeachの処理が終了したことが確認できました。 このように特定の条件で処理を中断させたい場合に使用します。

continueを使って繰り返し進める

例文
<?php
$array = [
    'PHP',
    'Ruby',
    'HTML',
    'CSS',
    'JavaScript'
];

foreach ($array as $key => $value) {
    echo $key . ':';
    if ($value !== 'HTML') {
        echo "\r\n";
        continue;
    }
    echo $value . "\r\n";
}
出力結果
0:
1:
2:HTML
3:
4:

この例ではHTMLの場合のみテキストを出力する処理を実装しました。 continueは処理を早期に中断して、次の値の処理を実行させたい場合に使用します。

まとめ

配列の中身を繰り返し処理させたい場合はforeachを使うことで簡単に処理できることがわかりました。 PHP開発をするならforeachは必ず使う構文になるので使いこなせるよう覚えていきましょう。

目次
PROFILE

このサイトを運営してるuiuifreeです。
渋谷のベンチャー企業で2年ほど新規事業を担当した後にフリーランスエンジニアにキャリア転換。
求人サイトの開発が多くエンジニア/看護師/保育士などの分野でサイトを運営しています。

アウトプット中の技術

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)