2025年05月20日
05.PHPの配列とループ処理
配列には「添字配列」と「連想配列」があります。
また配列のループ処理には「for」、「while」、「foreach」があります。
ここでは配列の操作方法とループ処理を解説します。
1.1 添字配列 :値のみの配列
1.2 連想配列 :キーと値の配列
1.1 添字配列
値のみの配列で、添字は0番目、1番目、2番目…で登録される配列です。
登録は [] (角括弧) または array() を利用します。
$fruit = ['リンゴ' , 'ミカン' ,'パイナップル'];
又は
$fruit = array('リンゴ' , 'ミカン' , 'パイナップル');
■0から始まる添字がついて登録されます。
値の取得は [] (角括弧)の中に数字を指定します。
<?php $fruit = ['リンゴ' , 'ミカン' ,'パイナップル']; echo $fruit[0]; ?>
■リンゴが表示されます。
1.2 連想配列
キーと値のセットで登録される配列です。
この配列は下記のダブルアロー演算子を使って登録します。
| 事例 | 解説 |
| 'キー名' => '値' | =>は、ダブルアロー演算子と呼ばれています。
キー名と値をセットで扱います。 |
登録は [] (角括弧) または array() を利用します。
$fruit = ['apple' => 'リンゴ' , 'orange' => 'ミカン' , 'pineapple' => 'パイナップル'];
又は
$fruit = array('apple' => 'リンゴ' , 'orange' => 'ミカン' , 'pineapple' => 'パイナップル');
■キーと値のセットで登録されます。
又、キーをダイレクトに指定した下記の様な登録も可能です。
$fruit['apple'] = 'リンゴ'; $fruit['orange'] = 'ミカン'; $fruit['pineapple'] = 'パイナップル';
値の取得は [] (角括弧) の中に key を指定して取り出します。
<?php $fruit = ['apple' => 'リンゴ' , 'orange' => 'ミカン' , 'pineapple' => 'パイナップル']; echo $fruit['apple']; ?>
■リンゴが表示されます。
2.forループ
for はカウンタを使ってループを制御します。
構文
for ( 式1 ; 式2 ; 式3 ){ 処理 }
式1:カウンタの初期値
例)$i = 0;
式2:カウンタの判断式。
値がtrueが場合{処理}を実行。
値がfalseの場合はループを終了します。
例)$i<5;
式3:カウンタ制御(下表参照)
| 加算子/減算子 | 説明 | 正式な名前 |
| $i++ | 現在の$iの値を返します。その後、1を加えます | 後置加算子 |
| ++$i | 現在の$iに1を加えた値を返します。 | 前方加算子 |
| $i-- | 現在の$iの値を返します。その後、1を減算します | 後置減算子 |
| --$i | 現在の$iに1を減算した値を返します。 | 前置減算子 |
■一般的には$i++が良く使われています。
事例
1.添字配列からデータを取りだす。
<?php
$array = ['リンゴ' , 'ミカン' ,'パイナップル'];
for( $i = 0 ; $i<count($array) ; $i++ ) {
echo $array[$i].'<br>';
}
?>
■ count() は添字配列や連想配列の要素数をカウントします。
0から始まって3で終了
■結果は下記が表示されます。
リンゴ
ミカン
パイナップル
2.連想配列からデータを取り出す
<?php
$array = ['apple' => 'リンゴ' , 'orange' => 'ミカン' , 'pineapple' => 'パイナップル'];// 配列を登録
$key = array_keys($array); // キーを取り出す
for( $i = 0 ; $i<count($key) ; $i++ ) {
echo $key[$i].':'.$array[$key[$i]].'<br>';
}
?>
■3行目
array_keys() は連想配列からキーを取り出す関数です。結果は添字配列になります。
■4行目
count() は上記の添字配列のキーの要素数をカウントしています。
■結果は下記が表示されます。
apple:リンゴ
orange:ミカン
pineapple:パイナップル
メモ
HTMLベースで for を利用する場合は for():処理endfor; になります。
<?php for($i = 0;$i<count($key);$i++ ):?> <!-- 命令の終わりは(:コロン)です --> <!-- HTML文 --> <?php endfor;?> <!-- 命令の終わりは(;セミコロン)です -->
3.whileループ
PHPの配列は内部ポインターを持っています。whileはこの内部ポインタを利用してループ制御を行います。
構文
while ( 式 ){ 処理 }
式:判断式。
値が true が場合{処理}を実行。
値が false の場合はループを終了します。
式又は処理で利用される関数
| 内部ポインタ関数 | 説明 |
| current() | 引数で指定した配列の内部ポインタが指している値を返します。
データが無い場合は false が返ります。 |
| key() | 引数で指定した配列の内部ポインタが指しているキーを返します。
キーが無い場合は null を返します。 |
| next() | 引数で指定した配列の内部ポインタを一つ進めて、値を返します。
これ以上ポインタが進められない場合は false が返ります。 |
事例
1.添字配列からデータを取りだす。
下記事例は内部ポインタ関数の current() と next() を利用しています。
<?php
$array = ['リンゴ' , 'ミカン' , 'パイナップル'];
while(current($array)) {
$val = current($array);
echo $val.'<br>';
next($array); // 内部ポインタを進めます。※重要です
}
?>
■6行目のnext($array)を省くと3行目のcurrent($array)は常にtrueになる為に無限ループになりまので注意して下さい。
■結果は下記が表示されます。
リンゴ
ミカン
パイナップル
2.連想配列からデータを取り出す。
下記事例は内部ポインタ関数の current() と next() と key() を利用しています。
<?php
$array = ['apple' => 'リンゴ' , 'orange' => 'ミカン' , 'pineapple' => 'パイナップル'];
while(current($array)) {
$key = key($array);
$val = current($array);
echo $key.':'.$val.'<br>';
next($array); // 内部ポインタを進めます。※重要です
}
?>
■7行目のnext($array)を省くと3行目のcurrent($array)は常にtrueになる為に無限ループになりますので注意して下さい。
■結果は下記が表示されます。
apple:リンゴ
orange:ミカン
pineapple:パイナップル
メモ
HTMLベースで while を使う場合は while():処理endwhile; を利用します。
<?php while(current($array)) :?> <!-- 命令の終わりは(:コロン)です --> <!-- HTML文 --> <?php endwhile;?> <!-- 命令の終わりは(;セミコロン)です -->
その他の内部ポインタ関数
あまり使いませんが下記の様な内部ポインタ関数もあります。
| 内部ポインタ関数 | 説明 |
| prev() | 引数で指定した配列の内部ポインタを一つ前に戻して、値を返します。
これ以上戻れない場合はfalseが返ります。 |
| reset() | 引数で指定した配列の内部ポインタを先頭にリセットし、先頭の値を返します。 |
| end() | 引数で指定した配列の内部ポインタ末尾に移動し、末尾の値を返します。 |
4.foreachループ
配列をループ処理するのに最もお勧めなのが、このforeachです。
forはカウンター、whileは内部ポインタを意識する必要がありましたが、foreachは何も意識しないでループを回せます。
構文
foreachには下記の2つの使い方があります。
■foreach(配列名 as $val)
値だけを取り出す場合
■foreach(配列名 as $key => $val)
キーと値を取り出す場合(ダブルアロー演算子で指定します)
事例
1.添字配列からデータを取りだす。
<?php
$array = ['リンゴ' , 'ミカン' , 'パイナップル'];
foreach($array as $val) {
echo $val.'<br>';
}
?>
■カウンターも内部ポインタも意識しないので、簡単です。
■結果は下記が表示されます。
リンゴ
ミカン
パイナップル
2.連想配列からデータを取り出す。
<?php
$array = ['apple' => 'リンゴ' , 'orange' => 'ミカン' , 'pineapple' => 'パイナップル'];
foreach($array as $key => $val) {
echo $key.':'.$val.'<br>';
}
?>
■カウンターも内部ポインタも意識しないので、簡単です。
■結果は下記が表示されます。
apple:リンゴ
orange:ミカン
pineapple:パイナップル
メモ
HTMLベースで foreach を使う場合は foreach():処理endforeach;になります。
<?php foreach($array as $val) :?> <!-- 命令の終わりは(:コロン)です --> <!-- HTML文 --> <?php endforeach;?> <!-- 命令の終わりは(;セミコロン)です -->