PHPでハッシュで構成された配列を作る方法

過去にハッシュで構成された配列(配列の中に複数のハッシュが入っているイメージ)を作ろうと思った時になかなかうまくいかなくて手こずった時があったのでメモ。

コードの例を出すと、

$names = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j');
$cnt = 1;

foreach($names as $name) {
  $ar[] = array('id' => $cnt, 'name' => $name);
  $cnt++;
}

これの$arの中身を見てみると

Array ( [0] => Array ( [id] => 1 [name] => a ) [1] => Array ( [id] => 2 [name] => b ) 
[2] => Array ( [id] => 3 [name] => c ) [3] => Array ( [id] => 4 [name] => d ) [4] => 
Array ( [id] => 5 [name] => e ) [5] => Array ( [id] => 6 [name] => f ) [6] => Array 
( [id] => 7 [name] => g ) [7] => Array ( [id] => 8 [name] => h ) [8] => Array ( [id]
 => 9 [name] => i ) [9] => Array ( [id] => 10 [name] => j ) )

このように添字0~9の大きさ10の配列の中に複数のハッシュを生成することができます。

ちなみに、ar = array(‘id’ => $cnt, ‘name’ => $name);にして実行すると、

Array ( [id] => 10 [name] => j )

ループされるごとに初期化されるため、配列が1つしか入りません。なので必ず[]を付けましょう。
1つのハッシュだけ出力したい時には、

print_r($ar[4]);

のように一般的な配列のやり方で取れます。

お見積もりフォーム