2次元配列を初期化するおすすめの方法

PHPにおける2次元配列の初期化には様々な方法が存在しますが、おすすめは短縮構文[]を使用する方法です。この方法は読みやすく、簡潔に記述することができます。

任意の値を入れて2次元配列を初期化する

$myArray = [
    ['A', 'B', 'C'],
    ['D', 'E', 'F'],
    ['G', 'H', 'I']
];

この方法を利用することで、2次元配列を簡単に初期化することができます。

実行結果

Array
(
    [0] => Array
        (
            [0] => A
            [1] => B
            [2] => C
        )
    [1] => Array
        (
            [0] => D
            [1] => E
            [2] => F
        )
    [2] => Array
        (
            [0] => G
            [1] => H
            [2] => I
        )
)

このように、2次元配列は非常に扱いやすく、多くのシチュエーションで役立ちます。上記の方法を基本として、さまざまな操作を加えることで、データ処理の幅を広げることができます。

空の値で2次元配列を初期化する

時には、初めは空の状態で2次元配列を初期化し、後からデータを埋めていくことが必要な場面があります。この場合、以下のように空の2次元配列を初期化することができます。

$emptyArray = [];
$emptyArray[] = [];

上記のコードでは、$emptyArrayは2次元の空の配列として初期化されます。

まず、$emptyArray = [];によって、空の一次元配列を$emptyArray変数に初期化しています。
ここでの[]は、PHPの短縮配列構文を使用しており、新しい空の配列を作成します。

次に、$emptyArray[] = [];によって、この空の配列に新しい要素を追加します。
追加する要素は再び空の配列[]です。この行が実行されると、$emptyArrayの中には1つの空の配列が格納され、結果的に2次元の空の配列が作成されます。

具体的には、このコードの後に$emptyArrayを出力すると、以下のような結果が得られます:

実行結果

Array
(
    [0] => Array
        (
        )
)

要素を後から追加する場合は、以下のように指定して値を追加することができます。

$emptyArray[0][] = 'A';
$emptyArray[0][] = 'B';
$emptyArray[1][] = 'X';
$emptyArray[1][] = 'Y';
実行結果

Array
(
    [0] => Array
        (
            [0] => A
            [1] => B
        )
    [1] => Array
        (
            [0] => X
            [1] => Y
        )
)

このように、空の2次元配列を初期化した後に、必要に応じてデータを追加していくことができます。これにより、動的にデータ構造を変更しながらプログラミングを進めることが可能となります。

その他の2次元配列を初期化する方法まとめ

2次元配列とは

2次元配列は、配列の中にさらに配列が格納されている形式を指します。通常の配列が1次元の線上にデータを格納するのに対し、2次元配列は格子状にデータを格納します。たとえば、学校の成績表やエクセルのようなテーブルデータは、2次元配列として表現できます。

array()を用いた初期化方法

PHPで最も基本的な配列の初期化方法は、array()関数を用いる方法です。

$array = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);
実行結果

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )
    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )
    [2] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
)

要素数がゼロの配列を用いて、2次元配列の枠組みだけを初期化することも可能です。

$array = array(array());
実行結果

Array
(
    [0] => Array
        (
        )
)

この方法は、後から配列の要素を動的に追加する場合に便利です。この配列には何もデータが格納されていませんが、後からデータを追加することが可能です。

array_fill()を使った初期化

array_fill()関数は、指定した数の要素を指定した値で埋めて新しい配列を作成します。

$array = array_fill(0, 3, array_fill(0, 3, 0));

このコードは、array_fill()関数を使って2次元配列を初期化しています。具体的には、3×3の2次元配列をすべての要素を0で初期化しています。

まず、内側のarray_fill(0, 3, 0)関数について説明します。この関数は、以下の3つの引数を取ります。

・配列の開始インデックス
・配列の長さ
・配列に入れる値

この例では、開始インデックスが0、長さが3、そして値が0に設定されています。
そのため、この関数は次のような配列を生成します: [0, 0, 0]

次に、外側のarray_fill(0, 3, array_fill(0, 3, 0))関数も同じ3つの引数を取りますが、3番目の引数に先ほどのarray_fill(0, 3, 0)の結果が渡されます。この関数は3つの[0, 0, 0]配列を持つ配列を生成します。結果的に、以下のような2次元配列が生成されます:

実行結果

Array
(
    [0] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
        )
    [1] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
        )
    [2] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
        )
)

 

ポイント: 2次元配列は、データの構造や取り扱う情報に応じて、適切な初期化方法を選択することが重要です。

多次元配列を初期化する方法

一次元配列からの多次元配列初期化

一次元配列を使用して多次元配列を初期化することも可能です。具体的には、一次元配列の各要素に配列を代入することで、多次元配列を構築できます。

$array = array();
$array[] = array(1, 2, 3);
$array[] = array(4, 5, 6);
実行結果

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )
    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )
)

array_fill()での多次元配列の初期化

array_fill()関数は、2次元配列だけでなく、3次元以上の多次元配列の初期化にも使用できます。

$array = array_fill(0, 2, array_fill(0, 3, array_fill(0, 2, 0)));
実行結果

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 0
                    [1] => 0
                )
            [1] => Array
                (
                    [0] => 0
                    [1] => 0
                )
            [2] => Array
                (
                    [0] => 0
                    [1] => 0
                )
        )
    [1] => Array
        (
            [0] => Array
                (
                    [0] => 0
                    [1] => 0
                )
            [1] => Array
                (
                    [0] => 0
                    [1] => 0
                )
            [2] => Array
                (
                    [0] => 0
                    [1] => 0
                )
        )
)

連想配列(ハッシュ)を用いた多次元配列の初期化

PHPでは、キーと値のペアを持つ連想配列もサポートしています。連想配列を使用して多次元配列を初期化することもできます。

$array = array(
    "first" => array("A", "B", "C"),
    "second" => array("D", "E", "F"),
    "third" => array("G", "H", "I")
);
実行結果

Array
(
    [first] => Array
        (
            [0] => A
            [1] => B
            [2] => C
        )
    [second] => Array
        (
            [0] => D
            [1] => E
            [2] => F
        )
    [third] => Array
        (
            [0] => G
            [1] => H
            [2] => I
        )
)

ポイント: 連想配列は、キーを使用してデータにアクセスする場合に非常に便利です。キーを指定することで、データの読み取りや更新が容易になります。

初期化されているかどうか判定する方法

isset()関数を使用した判定方法

isset()関数は変数が存在し、かつNULLでない場合にTrueを返します。これを使用して配列が初期化されているかどうかを確認できます。

$array = null;
$result = isset($array);
var_dump($result);
実行結果

bool(false)
$array = array();
$result = isset($array);
var_dump($result);
実行結果

bool(true)
$array = array(1, 2, 3);
$result = isset($array);
var_dump($result);
実行結果

bool(true)

上記のように変数の状態によってisset()関数の返り値が変わります。

empty()関数を使用した判定方法

PHPのempty()関数を使用すると、変数が空または設定されていない場合にTrueを返します。これにより、配列が初期化されているかどうかを簡単に確認できます。

$array = null;
$result = !empty($array);
var_dump($result);
実行結果

bool(false)
$array = array();
$result = !empty($array);
var_dump($result);
実行結果

bool(false)
$array = array(1, 2, 3);
$result = !empty($array);
var_dump($result);
実行結果

bool(true)

!empty()とすることで、真偽値を逆転することが出来ます。
※ isset()関数と比較する際はこちらの方がわかりやすいのでそのようにしています。

上記のように、空の配列を持つときempty()関数と返り値が異なるので、
取得した状態に応じて使い分けると良いでしょう。

配列の要素数での確認

配列の要素数を取得するcount()関数を使用して、配列が初期化されているかどうかを判定することも可能です。

$array = array();
$result = count($array) > 0;
var_dump($result);
実行結果

bool(false)

print_r()関数を用いた内容確認方法

print_r()関数は、配列やオブジェクトの情報を読みやすい形式で出力します。これを使用して、配列の内容や構造を確認することができます。

$array = array("A", "B", "C");
print_r($array);
実行結果

Array
(
    [0] => A
    [1] => B
    [2] => C
)

初期化と代入の違いに基づく判定

配列の初期化と代入は異なるコンセプトです。配列の初期化は、配列を作成するプロセスを指すのに対し、代入は既存の配列に新しい値を追加することを指します。この違いを理解することは、配列が初期化されているかどうかを正確に判定する上で重要です。
ポイント: これらの関数や方法を使用して、配列が初期化されているかどうか、あるいは特定の値が配列に含まれているかどうかを確認することができます。適切な関数や方法を選択することで、コードの可読性や効率を向上させることができます。

発展:【PHP】2次元配列のソート方法9つをサンプルコード付きで解説

まとめ

この記事では、2次元配列および多次元配列の初期化方法や、初期化された配列の判定方法について詳しく説明しました。初期化の方法は、プロジェクトの要件や状況に応じてさまざまですが、ここで紹介した方法を利用することで、簡潔かつ効率的に配列を初期化できます。

特に、2次元配列の初期化方法や多次元配列の初期化方法は、データの構造を理解し、適切にデータを管理するために非常に重要です。また、初期化された配列の判定方法は、デバッグやエラーハンドリングの際に役立ちます。