masayuki5160's diary

名古屋でエンジニアしてます。

連想配列を使っていてちょっとはまってしまったこと

ついこないだ連想配列でちょっとはまってしまったのでメモ。



まずはとりあえずふつうに連想配列をつくってみる。

$array1 =array(
1 => 'first',
2 => 'second',
3 => 'third',
);

foreach($array1 as $value){
echo $value.'<br/>';
}


実行結果

first
second
third


これはわかったんだけど、
問題はこれ。

$array2 = array(
2 => 'second',
3 => 'third',
);

//要素追加
$array2['1'] = 'first';

foreach($array2 as $value){
echo $value.'<br/>';
}


実行結果

second
third
first


てっきり、
first
second
third
て結果になるかと思ったら違って1時間くらいはまってしまったw



連想配列で使用していたキーが数字の連番でふってあったので、
配列の添字と混同してしまったのが原因だったんかな〜と思います。
連想配列は便利だけど意外にくせものだなと感じましたが、
ソートしとけば問題ないみたいなので便利だな〜とも感じました。

$array2 = array(
2 => 'second',
3 => 'third',
);

//要素追加
$array2['1'] = 'first';

//sortする
sort($array2);

foreach($array2 as $value){
echo $value.'<br/>';
}


実行結果

first
second
third