【PHP】これで分かる関数! – 多次元配列 –

PHP

更新履歴

更新日更新者更新内容
2021/8/19JJI・サンプルプログラムの実行結果に画面の画像を追加

多次元配列

配列の復習」では、$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>

コメント