求助關於PHP數組的問題

來源:互聯網
上載者:User
$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]

想起了學生時代,呵呵. 經常看這種陷阱題,其實現實中從來沒遇到過.......
都用引號吧.

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.