細節:php array會把string key自動轉成int嗎?

來源:互聯網
上載者:User

PHP array和別的語言不一樣。

PHP數組的key可以為int,也可以為string,引申出下面的問題。

<?php$a = array(    1 => 'as',    2 => '22',);var_dump($a[0]);var_dump($a[2]);var_dump($a['2']);exit;?>

結果:$a[0]未定義,$a[2] 與 $a['2']相同。

<?php$a = array(    '1' => 'as',    '2' => '22',);var_dump($a[0]);var_dump($a[2]);var_dump($a['2']);exit;

結果:$a[0]未定義,$a[2] 與 $a['2']相同。

問題:string作為key,然後輸出是string還是int。

<?php$a = array(    '1' => 'as',    '2' => '22',);foreach($a as $k=>$v) {    if($k === 1) {        echo 'int';    }}exit;

結果:輸出int。

問題:現在可以得出結論說php array會自動把數字字串的key轉成int?請看下面的例子。

參考:http://www.cnblogs.com/sink_cup/archive/2010/12/12/php_intval_mysql_int.html

<?php$a = array(    'asdf' => 'a',    '2' => '22',    '2147483647' => '32 max',    '2147483648' => '32 max + 1',    '9223372036854775807' => '64 max',    '9223372036854775808' => '64 max + 1',    9223372036854775809 => '64 max + 2',);foreach($a as $k=>$v) {        var_dump($k);        echo ' ';        var_dump($v);}exit;

在64位的機器上輸出:

string(4) "asdf" string(1) "a"int(2) string(2) "22"int(2147483647) string(6) "32 max"int(2147483648) string(10) "32 max + 1"int(9223372036854775807) string(6) "64 max"string(19) "9223372036854775808" string(10) "64 max + 1"int(-9223372036854775808) string(10) "64 max + 2"

結論:php的int取值範圍與系統有關,在int的有效範圍內,php array會把數字字串的key轉成int;當key超過int範圍時,不再轉換。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.