PHPの多次元配列とは?基本構文と実用的なサンプルコード集
多次元配列とは?定義と基本的な使い方
PHPにおける多次元配列とは、「配列の中にさらに配列」が格納されたデータ構造のことです。外側の配列の各要素がそれ自体ひとつの配列になっており、その内側の要素には、連想配列(文字列キーを使用)とインデックス配列(数値添字を使用)のどちらも利用できます。
配列は理論上、何重にでもネストすることが可能ですが、実際の開発現場で実用的に使われているのは、最も外側の配列の中に複数の配列を格納する2次元配列が中心です。
基本構文
2次元配列は、連想配列とインデックス配列のいずれの組み合わせでも作成できます。代表的な構文は以下の通りです。
// 2次元の連想配列
$twodim = array(
"row1" => array("k1" => "v1", "k2" => "v2", "k3" => "v3"),
"row2" => array("k4" => "v4", "k5" => "v5", "k6" => "v6")
);
// 2次元のインデックス配列
$twodim = array(
array("v1", "v2", "v3"),
array("v4", "v5", "v6")
);インデックス形式の2次元配列では、次の構文を使って「行」と「列」を指定することで、個々の要素へアクセスできます。
$arr[行][列];
対応するPHPバージョン
角括弧([])による配列の代入構文は、PHP 5.4以降で利用可能です。
サンプル1:各要素がインデックス配列である2次元配列
まずは最もシンプルな例として、各要素がインデックス配列になっている2次元配列を扱います。foreachループとforループの2通りの方法で全要素を出力してみましょう。
<?php
$arrs = array(
array(1, 2, 3, 4, 5),
array(11, 22, 33, 44, 55),
);
// foreachループでの走査
foreach ($arrs as $arr) {
foreach ($arr as $i) {
echo $i . " ";
}
echo "\n";
}
// forループでの走査
$cols = count($arrs[0]);
$rows = count($arrs);
for ($i = 0; $i < $rows; $i++) {
for ($j = 0; $j < $cols; $j++) {
echo $arrs[$i][$j] . " ";
}
echo "\n";
}
?>出力結果
1 2 3 4 5 11 22 33 44 55 1 2 3 4 5 11 22 33 44 55
サンプル2:連想配列を要素に持つ2次元配列
次の例では、インデックス配列の各要素として連想配列を格納しています。キーと値のペアを「キー->値」の形式で出力します。
<?php
$arrs = array(
array(1 => 100, 2 => 200, 3 => 300),
array(1 => 'aa', 2 => 'bb', 3 => 'cc'),
);
// foreachループでの走査
foreach ($arrs as $arr) {
foreach ($arr as $i => $j) {
echo $i . "->" . $j . " ";
}
echo "\n";
}
// forループ+foreachの組み合わせ
for ($row = 0; $row < count($arrs); $row++) {
foreach ($arrs[$row] as $i => $j) {
echo $i . "->" . $j . " ";
}
echo "\n";
}
?>出力結果
1->100 2->200 3->300 1->aa 2->bb 3->cc 1->100 2->200 3->300 1->aa 2->bb 3->cc
サンプル3:連想配列による2次元配列
外側の配列にも内側の配列にも文字列キーを使った連想配列の例です。ここでは人物の名前をキーに、出席番号と点数を値として持つ配列を作成しています。
<?php
$arr1 = array("rno" => 11, "marks" => 50);
$arr2 = array("rno" => 22, "marks" => 60);
$arrs = array(
"Manav" => $arr1,
"Ravi" => $arr2
);
foreach ($arrs as $key => $val) {
echo "name : " . $key . " ";
foreach ($val as $i => $j) {
echo $i . "->" . $j . " ";
}
echo "\n";
}
?>出力結果
name : Manav rno->11 marks->50 name : Ravi rno->22 marks->60
サンプル4:値としてインデックス配列を持つ連想配列
最後に、連想配列の各値がインデックス配列になっているパターンです。カテゴリ名をキーに、その項目一覧を値として格納するなど、実務でもよく使われる形式です。
<?php
$arr1 = array("PHP", "Java", "Python");
$arr2 = array("Oracle", "MySQL", "SQLite");
$arrs = array(
"Langs" => $arr1,
"DB" => $arr2
);
foreach ($arrs as $key => $val) {
echo $key . ": ";
for ($i = 0; $i < count($val); $i++) {
echo $val[$i] . " ";
}
echo "\n";
}
?>出力結果
Langs: PHP Java Python DB: Oracle MySQL SQLite
-
C言語における多次元配列の初期化方法を徹底解説
配列とは、同じ型の要素が連続したメモリ領域に順番に格納されたデータの集合です。先頭の要素には最も小さいアドレスが割り当てられ、末尾の要素には最も大きいアドレスが割り当てられます。配列のインデックスは 0 から始まり、配列サイズ - 1 で終わる点に注意しましょう。また、配列のサイズは必ず 0 より大きい整数である必要があります。配列のインデックスとサイズの関係具体的な例で確認してみましょう。配列サイズ = 10 の場合 最初のインデックス = 0 最後のインデックス = 配列サイズ - 1 = 10 - 1 = 9多次元配列とは多次元配列とは、いわば「配列の配列」のことです。データは表形式(行
-
C言語の多次元配列とは?行優先・列優先の仕組みとサンプルコード
多次元配列とは配列とは、同種のデータ(ホモジニアスなデータ)をまとめて管理するための基本的なデータ構造です。配列の要素は、メモリ上の連続した領域に順番に配置されます。しかし実際のプログラミングでは、1次元の配列だけでは不十分なケースが少なくありません。例えば、表形式のデータや行列を扱う場合には、2次元配列やさらに多くの次元を持つ多次元配列を作成する必要があります。行優先方式と列優先方式多次元配列をメモリ上に表現する方法には、大きく分けて2つのアプローチがあります。ひとつは行優先(Row-Major)方式、もうひとつは列優先(Column-Major)方式です。r行 c列の2次元配列を考えてみま