PHPのdouble型キーの配列

phpでdouble型でも配列を扱うことは出来るんだけど、
double型だとint型やstring型とは違って、
完全にこちらの認識通りには動いてくれない。

※ex1

define('MY_DOUBLE', 1.1);
$my_double = MY_DOUBLE;
$arr_box = array(
		1.1	=> '1.1',
		3.0	=> '3.0',
		1.0	=> '1.0',
	);

としたとき

print($arr_box[MY_DOUBLE]);
print($arr_box[$my_double]);

ともに
『1.1』ではなく、『1.0』が表示される。

※ex2
で、ex1を下記のように 1.0をコメントアウトすると

$arr_box = array(
		1.1	=> '1.1',
		3.0	=> '3.0',
//		1.0	=> '1.0',
	);

1.1』が表示される。

ex1状態(コメントアウト前)の$arr_box配列をprint_rしてみた。

Array
(
    [1] => 1.0
    [3] => 3.0
)

『1.1』消滅している。
ていうかキー整数になってる…

しかし

define('MY_DOUBLE', 1.1);
print(MY_DOUBLE);

だと『1.1』が出てるから、
むしろ何でex2で『1.1』が取れたのか、そこが疑問になるわけです。

数字がキーの場合に限り、近い値でも出るのか?

コメント

タイトルとURLをコピーしました