PHP 配列と連想配列の違い
PHP では配列と連想配列は内部的に同じデータ構造で実装されています。他の言語のように「配列は配列、連想配列は別の型」という区別はありません。すべてが順序付きマップとして動作します。
通常の配列
キーが 0, 1, 2… と自動的に振られる。要素の追加は $arr[] = 値 で末尾に追加される。
連想配列
キーを明示的に指定する。$arr['key'] = 値 のように文字列キーで管理する。
両者を混在させることも可能ですが、意図しないバグの原因になりやすいので避けるべきです。
// 混在例(非推奨)
$mixed = [
'name' => 'Alice',
'banana', // キーは 0
'age' => 25,
'orange' // キーは 1
];
echo $mixed[0]; // banana
echo $mixed[1]; // orange判定方法
PHP には「連想配列かどうか」を直接判定する関数がありません。キーが 0 から連続した整数かどうかをチェックするのが一般的なアプローチです。
function isAssoc(array $arr): bool {
if ($arr === []) {
return false;
}
return array_keys($arr) !== range(0, count($arr) - 1);
}
$list = ['a', 'b', 'c'];
$map = ['x' => 1, 'y' => 2];
var_dump(isAssoc($list)); // false
var_dump(isAssoc($map)); // true使い分けの指針
リストとして順番に処理するなら通常の配列、キーと値のペアを管理するなら連想配列を使います。JSON との相互変換を考えると、この区別は重要になります。通常の配列は JSON の配列 [] に、連想配列は JSON のオブジェクト {} に対応するためです。