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