ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

PHP:2次元配列へのデータの設定方法

あまり使いたくはありませんが、2次元配列で値を定義した方が後々管理が楽になる場合があります。

定義する値が少ないのであれば、以下のように書けば済みます。

<?php

$list = array(
    1 => array(1 => 'abc', 2 => 'def'),
    2 => array(3 => 'hij', 4 => 'klm'),
);

あるいは、

<?php

$list = array(
    1 => array(),
    2 => array(),
);
$list[1][1] = 'abcj';
$list[1][2] = 'def';
$list[2][3] = 'hij';
$list[2][4] = 'klm';

とも書けます。

f:id:AJYA:20181025124534p:plain
unsplash-logoDan LeFebvre

今回は2次元目が50個と多く、変更する可能性が高く、上記の書き方では変更した場合の修正が難しく感じたので、修正が簡単になる方法はないかと考えました。

考えた結果、以下のようになりました。

<?php

$list = array(
    1 => array(),
    2 => array(),
);

$list1 = array(
1 => 'abc',
2 => 'def',
);

$list2= array(
3 => 'hij',
4 => 'klm',
);

foreach ($list1 as $key => $value) {
    $list[1][$key] = $value;
}

foreach ($list2 as $key => $value) {
    $list[2][$key] = $value;
}

わざわざ代入元の配列を用意して、foreach()を使って代入するほうが手間がかかるのではと思ってしまいます。
代入元の配列を分けたほうが、後々修正が楽と考えて、このように分けています。
代入元の配列が2個や3個であれば、このような書き方はしていないです。