php arrayのkeyについてのメモ

arrayのkeyにはintval的なものがかかってるらしい。
確認したphpのバージョンは5.2.9。

>php -r "$a=array('1'=>'a');var_dump($a);"
array(1) {
[1]=>
string(1) "a"
}

うんうん。

>php -r "$a=array('1'=>'a',1=>'b');var_dump($a);"
array(1) {
[1]=>
string(1) "b"
}

あ、key"1"が上書きされた。

>php -r "$a=array('1'=>'a',1=>'b','0.1'=>'c');var_dump($a);"
array(2) {
[1]=>
string(1) "b"
["0.1"]=>
string(1) "c"
}

文字列として定義すればkeyに小数設定しても大丈夫。

>php -r "$a=array('1'=>'a',1=>'b','0.1'=>'c',0.1=>'d');var_dump($a);"
array(3) {
[1]=>
string(1) "b"
["0.1"]=>
string(1) "c"
[0]=>
string(1) "d"
}

げーkey"0.1"が上書きされると思ったのに。

>php -r "$a=array('1'=>'a',1=>'b','0.1'=>'c',0.1=>'d',1.5=>'e');var_dump($a);"
array(3) {
[1]=>
string(1) "e"
["0.1"]=>
string(1) "c"
[0]=>
string(1) "d"
}
>php -r "$a=array('1'=>'a',1=>'b','0.1'=>'c',0.1=>'d',1.2=>'e');var_dump($a);"
array(3) {
[1]=>
string(1) "e"
["0.1"]=>
string(1) "c"
[0]=>
string(1) "d"
}

あとは想像通り。