2024年03月28日

5.PHPの配列とループ処理

配列には「添字配列」と「連想配列」があります。

また配列のループ処理には「for」、「while」、「foreach」があります。

ここでは配列の操作方法とループ処理を解説します。

添字配列の作成とデータ取得

連想配列の作成とデータ取得

forループ

Whileループ

foreachループ

添字配列の作成とデータ取得

添字配列は値のみの配列で、添字は0番目、1番目、2番目…で登録される配列です。

登録は [] (角括弧)または array() を利用します。

$no_array = ['リンゴ' , 'ミカン' ,'パイナップル'];
又は
$no_array = array('リンゴ' , 'ミカン' , 'パイナップル');

■0から始まる添字がついて登録されます。

 

値の取得は [] (角括弧)の中に数字を指定します。

<?php
	$no_array = ['リンゴ' , 'ミカン' ,'パイナップル'];
	echo $no_array[0];
?>

■リンゴが表示されます。

 

連想配列の作成とデータ取得

連想配列は、キーと値のセットで登録される配列です。

この配列は下記のダブルアロー演算子を使って登録します。

事例 解説
'キー名' => '値' =>は、ダブルアロー演算子と呼ばれています。

キー名と値をセットであつかいます。

登録は [] (角括弧) または array() を利用します。

$key_array =  ['apple' => 'リンゴ' , 'orange' => 'ミカン' , 'pineapple' => 'パイナップル'];
又は
$key_array = array('apple' => 'リンゴ' , 'orange' => 'ミカン' , 'pineapple' => 'パイナップル');

■キーと値のセットで登録されます。

又、キーをダイレクトに指定した下記の様な登録も可能です。

$key_array['apple']       = 'リンゴ';
$key_array['orange']     = 'ミカン';
$key_array['pineapple'] = 'パイナップル';

 

値の取得は [] (角括弧) の中に key を指定して取り出します。

<?php
	$key_array = ['apple' => 'リンゴ' , 'orange' => 'ミカン' , 'pineapple' => 'パイナップル'];
	echo $key_array['apple'];
?>

■リンゴが表示されます。

 

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;?>                      <!-- 命令の終わりは(;セミコロン)です -->

 

関数一覧
  • 1.PHPとWordPressプログラム
  • 2.PHPの出力コマンド
  • 3.PHPの変数規則と文字連結
  • 4.PHPのif文
  • 5.PHPの配列とループ処理
  • 6.PHPのオブジェクトとループ処理
  • 7.PHPの文字列操作関数
  • 8.PHPファイルや関数の読み込み
  • 9.PHPのフォーム操作
  • array_keys()
  • array_reverse()
  • checkdate()
  • count()
  • date()
  • echo
  • explode()
  • implode()
  • in_array()
  • intval()
  • isset()
  • preg_match_all()
  • preg_match()
  • preg_replace()
  • preg_split()
  • print_r()
  • session_id()
  • session_start()
  • sprintf()
  • str_replace()
  • strpos()
  • trim()
  • var_dump()