PHPのdouble型キーの配列

PHP小技

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をコピーしました