首頁 >後端開發 >php教程 >求助关于PHP数组的问题

求助关于PHP数组的问题

WBOY
WBOY原創
2016-06-06 20:50:47982瀏覽

$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?

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]

想起了学生时代,呵呵. 经常看这种陷阱题,其实现实中从来没遇到过.......
都用引号吧.

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn