Developer

【PHP基礎】変数と配列③
2020.10.01
Lv1

【PHP基礎】変数と配列③

前回記事で紹介した、配列のインデックスを、
文字列の名前(キー)に置き換えたものを、
連想配列と呼びます(前回記事: 配列とは)。


連想配列

連想配列とは、配列のインデックスを、
文字列のキーに置き換えたものです。
配列と違って、
各値の意味を、キーとして明示することができます。

定義するときは、array()の()の中、または[]の中に、
キー => 値のペアを、カンマ区切りで書いていきます。
また、1つずつキーと値を追加していく方法もあります。


連想配列の定義例

// もっとも古くからある方法
$dict1 = array("name" => "A", "age" => 33);

// array()でなく[]で挟むのでコーディングが短く済む
$dict2 = ["name" => "A", "age" => 33];

// 1つずつ要素を追加するので動的に連想配列を作成するとき用いる
$dict3["name"] = "A";
$dict3["age"] = 33;

配列の要素

通常の配列のインデックスにあたるものがキーなので、連想配列の場合はキーを指定して要素を取得します。

<?php
	$product = [
		"name" => "ペン",
		"price" => 100,
		"color" => "黒", 
	];

	echo $product["name"];
?>

表示結果:ペン
※列挙する際にカンマで終わっていてもOKです


連想配列とfor文

前回記事で、配列はfor文と組み合わせて使用されることを説明しました(参考: for文とは)。
理由はfor文でインクリメントされる変数と、配列のインデックスがうまく紐づくからです。

しかし、連想配列は通常の配列と異なり、インデックスではなくキーで管理されています。
そのため通常のfor文では値をまとめて取得することができません。
代わりに、次のセクションで示すように、foreach文を使います。


連想配列とforeach文

連想配列にはforeach文を使います(参考: foreach文とは)。
foreach文の詳細は、上記の記事をご覧ください。
ここでは、そのような構文があり、連想配列とセットになることだけ押さえてください。

<?php
	$product = [
		"name" => "ペン",
		"price" => 100,
		"color" => "黒", 
	];

	foreach($product as $key => $value){
                echo $key." ".$value.",";
        }
?>

表示結果:name ペン, price 100, color 黒,

カスタムインデックス配列と混合配列

PHPでは、典型的な配列と、典型的な連想配列の中間のデータ構造を定義できます。
1つ目がカスタムインデックス配列。
2つ目が混合キー配列です。

カスタムインデックス配列

例えば、地下一階や地下2階といった概念を表す際、
PHPの通常の配列では、インデックスが0始まりなので表現できません。
そのため、カスタムインデックス配列を用います。

<?php

$stairs = [
    -1 => "B1",
    1 => "GF",
    2 => "2F"
];

foreach($stairs as $key => $value){
    echo $key.":".$value."</br>";
}

?>

表示結果:
-1:B1

1:GF

2:2F

混合キー配列

数値と文字列の双方をキーとして用いる配列です。

<?php
$data = [
    1 => "A",
    "B" => "B",
    3 => "C"
];

foreach($data as $key => $value){
    echo $key.":".$value."</br>";
}
?>

表示結果:
1:A

B:B

3:C


PHP基礎 連載目次リンク

PHP基礎 連載目次