2015年12月4日

PHP 2次元配列をfor文で表示する

«
»

Pocket

今回も内容としてはかなり難しいです。
2次元配列をfor文で表示する」を書いていきます。
前回はforeachでしたが、今回はfor文です。
 
これを理解するには以下の2つを理解しておくことが重要です。
PHP 二重ループ
PHP 配列の要素数を取得する
 
ではサンプルプログラムを見てみましょう。
 

<?php

$x = array(); 
$y = array(1,3,5,7); //奇数の数値を格納
$z = array(2,4,6,8); //偶数の数値を格納

array_push($x,$y) ; //xにyを追加
array_push($x,$z) ; //xにzを追加


//count($x)は$xの行数を返す、つまり2となる。
for($i = 0 ; $i < count($x) ; $i++){
	
	$row = $x[$i]; //$i行目の要素を$rowにコピーする

	//for文の二重ループ	
	for($j = 0; $j < count($row); $j++){ //count($row)は列数となる。つまり、4となる。

		echo $x[$i][$j]; //$i行目の$j列目を表示
		echo "<br>";
	}	
}

実行結果

PHP 2次元配列 for

解説

いかがでしょうか。かなり難しいことはわかって頂けたのではないでしょうか。
 
PHP 2次元配列
 
2次元配列は上図の様な表形式で表せます。
外側のforでは、行の部分を繰返します。1行目、2行目・・・と。
 
ただし、繰り返す回数は行数ということになりますので、ここでcount関数を用います
$xの行数を求めるためには count($x)で取得できます。
 
サンプルプログラムにおいては、1回目のループで取得した$rowは
実は$yと同じデータということになります。
 
そして、内側のforでは、列の部分を繰返します。1列目、2列目・・・と。
1回目のループでは、繰り返す回数は $xの0行目の列数ということになりますので、
count($x[0])で取得できます。これはcount($y)と同じ意味になります。
 
最後に、表示ですが、$xの1行目の1列目を表示するには $x[0][0]とすれば良かったので、
ここを $x[i][j] とすることで実現できます。
 
前回同様、ここまでの説明ですぐに理解できるのであれば、ここまでの内容をかなりよく
理解できていると思います。
 
ただし、私も含めて多くの人が1回で理解するのは難しいと思います。
なので、そういう方はここでもう一度復習しておきましょう。
特に以下の2つは抑えておきましょう。
PHP 二重ループ
PHP 配列の要素数を取得する

【関連する記事】