1--TEST-- 2Implicit float to int conversions when float too large should warn, array variant 3--FILE-- 4<?php 5 6$float = 10e120; 7$string_float = (string) $float; 8 9var_dump((int) $float); 10var_dump((int) $string_float === PHP_INT_MAX); 11 12$arrayConstant = [10e120 => 'Large float', (string) 10e120 => 'String large float']; 13$arrayDynamic = [$float => 'Large float', $string_float => 'String large float']; 14 15var_dump($arrayConstant); 16var_dump($arrayDynamic); 17 18$array = ['0', '1', '2']; 19var_dump($array[10e120]); 20var_dump($array[(string) 10e120]); 21var_dump($array[$float]); 22var_dump($array[$string_float]); 23 24?> 25--EXPECTF-- 26int(0) 27bool(true) 28 29Deprecated: Implicit conversion from float 1.0E+121 to int loses precision in %s on line %d 30 31Deprecated: Implicit conversion from float 1.0E+121 to int loses precision in %s on line %d 32array(2) { 33 [0]=> 34 string(11) "Large float" 35 ["1.0E+121"]=> 36 string(18) "String large float" 37} 38array(2) { 39 [0]=> 40 string(11) "Large float" 41 ["1.0E+121"]=> 42 string(18) "String large float" 43} 44 45Deprecated: Implicit conversion from float 1.0E+121 to int loses precision in %s on line %d 46string(1) "0" 47 48Warning: Undefined array key "1.0E+121" in %s on line %d 49NULL 50 51Deprecated: Implicit conversion from float 1.0E+121 to int loses precision in %s on line %d 52string(1) "0" 53 54Warning: Undefined array key "1.0E+121" in %s on line %d 55NULL 56