$a[3] = 5; $a["3"] = 6; $a["3.14"] = 7; $a[3.14] = 8; echo $a[3], $a["3"], $a["3.14"], $a[3.14];
输出为什么是 8878?
$a[3] = 5; $a["3"] = 6; $a["3.14"] = 7; $a[3.14] = 8; echo $a[3], $a["3"], $a["3.14"], $a[3.14];
输出为什么是 8878?
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答1.2k 阅读
1 回答1.2k 阅读
1 回答1.1k 阅读
http://php.net/manual/en/language.typ...
Additionally the following key casts will occur:
.....
Floats are also cast to integers, which means that the fractional part will be truncated. E.g. the key 8.7 will actually be stored under 8.
-----
in you case, the 3.14 out of $a[3.14] will be cast to 3
--------------
Strings containing valid integers will be cast to the integer type. E.g. the key "8" will actually be stored under 8.
$a[3] = 5;
$a["3"] = 6;
both are same thing and will be cast to $a[3].
----
On the other hand "08" will not be cast, as it isn't a valid decimal integer.
$a["3.14"] = 7; //"3.14" is a string and it won't be cast.
---------------
Summary:
$a[3] = 5;
$a["3"] = 6; // $a[3] is 6 now.
$a["3.14"] = 7; //"3.14" is a string, no cast then.
$a[3.14] = 8; // 3.14 will be cast to 3 which results in $a[3] = 8
echo $a[3], $a["3"], $a["3.14"], $a[3.14];
is actually
echo $a[3],$a[3],$a["3.14"],$a[3]
想起了学生时代,呵呵. 经常看这种陷阱题,其实现实中从来没遇到过.......
都用引号吧.