>백엔드 개발 >PHP 튜토리얼 >求助关于PHP数组的问题

求助关于PHP数组的问题

WBOY
WBOY원래의
2016-06-06 20:50:47983검색

$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으로 문의하세요.