更新履歴
更新日 | 更新者 | 更新内容 |
---|---|---|
2021/8/19 | JJI | ・サンプルプログラムの実行結果に画面の画像を追加 |
多次元配列
「配列の復習」では、$array[0]のように添え字が1つの配列について説明しました。
配列は、$array[0][1]・・・のように複数の添え字が持つことができる多次元配列を作ることができます。
この記事ではよく使用する2次元配列について説明します。
3次元、4次元などの多次元配列も作ることはできますが、2次元配列の応用で簡単に理解できます。
2次元配列
最初に$array[0][1]のように添え字がすべて数字である2次元配列について説明します。
2次元配列は次の図のようなイメージです。
縦(行)、横(列)に番号が振った表で、表の1マスを指定する場合、$array[1][2]のように添え字を指定します。

2次元配列を使用したサンプルプログラムを載せておきます。
<?php
// 引数の値への厳密な型付け
declare(strict_types = 1);
echo "ファイル名:sample02_03_03.php<br>\n";
echo "【PHP】関数<br>\n";
echo "多次元配列<br>\n";
// 2次元配列
$ary1 = [
["山田", "太郎", 35, "男性"],
["山田", "次郎", 30, "男性"],
["山田", "花子", 28, "女性"]
];
// 配列の要素数、個別の配列の表示
echo "配列の行数:" . count($ary1) . ":<br>\n";
echo "0行目の配列の要素数:" . count($ary1[0]) . ":<br>\n";
echo '$ary1[1][2]:' . $ary1[1][2] . ":<br>\n";
echo "<br>\n";
// 配列の全要素の表示
echo "for文<br>\n";
for($i = 0; $i < count($ary1); $i++) {
for($j = 0; $j < count($ary1[$i]); $j++) {
if($j !== 0) {
echo " ";
}
echo "[$i][$j]:" . $ary1[$i][$j] . ":";
}
echo "<br>\n";
}
echo "<br>\n";
echo "foreach文<br>\n";
$i = 0;
foreach($ary1 as $rows) {
$j = 0;
foreach($rows as $data) {
if($j !== 0) {
echo " ";
}
echo "[$i][$j]:" . $data . ":";
$j++;
}
echo "<br>\n";
$i++;
}
?>
実行結果は次の通りです。
・画面

・HTML
ファイル名:sample02_03_03.php<br>
【PHP】関数<br>
多次元配列<br>
配列の行数:3:<br>
0行目の配列の要素数:4:<br>
$ary1[1][2]:30:<br>
<br>
for文<br>
[0][0]:山田: [0][1]:太郎: [0][2]:35: [0][3]:男性:<br>
[1][0]:山田: [1][1]:次郎: [1][2]:30: [1][3]:男性:<br>
[2][0]:山田: [2][1]:花子: [2][2]:28: [2][3]:女性:<br>
<br>
foreach文<br>
[0][0]:山田: [0][1]:太郎: [0][2]:35: [0][3]:男性:<br>
[1][0]:山田: [1][1]:次郎: [1][2]:30: [1][3]:男性:<br>
[2][0]:山田: [2][1]:花子: [2][2]:28: [2][3]:女性:<br>
2次元連想配列
次に$array[1][“name”]のように添え字の最初が数字、次の添え字が文字列である2次元連想配列について説明します。
この連想配列はデータベースから複数件のデータが取得した場合、Webプログラムで一覧の表示を行う際などで使用することが多いので、知っておいた方がよいです。
図で説明すると次のようになります。

この連想配列を使用したサンプルプログラムを載せておきます。
<?php
// 引数の値への厳密な型付け
declare(strict_types = 1);
echo "ファイル名:sample02_03_04.php<br>\n";
echo "【PHP】関数<br>\n";
echo "2次元の連想配列<br>\n";
// 2次元連想配列
$ary2 = [
["first_name" => "山田", "second_name" => "太郎", "age" => 35, "seibetsu" => "男性"],
["first_name" => "山田", "second_name" => "次郎", "age" => 30, "seibetsu" => "男性"],
["first_name" => "山田", "second_name" => "花子", "age" => 28, "seibetsu" => "女性"]
];
// 2次元配列の表示
echo "配列の行数:" . count($ary2) . ":<br>\n";
echo '配列[1]["age"]:' . $ary2[1]["age"] . ":<br>\n";
echo "0番目の配列数:" . count($ary2[0]) . ":<br>\n";
echo "<br>\n";
// 配列の全要素の出力
// foreach文
echo "foreach文<br>\n";
$i = 0;
foreach($ary2 as $rows) {
$j = 0;
foreach($rows as $key => $val) {
if($j !== 0) {
echo " ";
}
echo "[$i][$key]" . ":" . $val . ":";
$j++;
}
echo "<br>\n";
$i++;
}
echo "<br>\n";
?>
実行結果は次の通りです。
・画面

・HTML
ファイル名:sample02_03_04.php<br>
【PHP】関数<br>
2次元の連想配列<br>
配列の行数:3:<br>
配列[1]["age"]:30:<br>
0番目の配列数:4:<br>
<br>
foreach文<br>
[0][first_name]:山田: [0][second_name]:太郎: [0][age]:35: [0][seibetsu]:男性:<br>
[1][first_name]:山田: [1][second_name]:次郎: [1][age]:30: [1][seibetsu]:男性:<br>
[2][first_name]:山田: [2][second_name]:花子: [2][age]:28: [2][seibetsu]:女性:<br>
<br>
コメント