第2章 PHPの基本 / 第4回 模擬試験
PHPの補足配列に関する次の記述のうち、通常配列と連想配列の関係として正しいものはどれか。
数値添字配列は、内部的にはキーが0,1,2...と自動採番された連想配列と見なせる。
正解
連想配列には、数値のキーを一切使用できない。
数値添字配列と連想配列は、PHP内部では全く互換性のない別の型として扱われる。
連想配列は、キーの重複を許可するデータ構造である。
解説
PHPの配列は本質的にすべて「連想配列(マップ)」であり、数値添字配列(`[0=>'a', 1=>'b']`のような配列)は、その中でもキーが`0, 1, 2...`と自動的に採番された特別なケースとみなせます。内部的にまったく別のデータ構造として実装されているわけではありません。
他の選択肢が誤りである理由は次の通りです。
・連想配列は文字列キーだけでなく、数値のキーも問題なく使用できます(文字列キーと数値キーを混在させることも可能です)。
・数値添字配列と連想配列は、PHP内部では同じ配列(`HashTable`というデータ構造)として扱われ、互換性のない別の型ではありません。
・配列のキーは重複を許可しません。同じキーに複数回代入すると、後から代入した値で上書きされます。
例:
```
$arr = [0 => 'a', 1 => 'b']; // 数値添字配列
$assoc = ['x' => 'a', 'y' => 'b']; // 連想配列(実装は同じ仕組み)
```
(参照: 独習PHP 第4版 第2章 PHPの基本 2.4.5節 補足 通常配列と連想配列の関係 p.79〜81)