2012-03-17 81 views
0
$ar['123'] = "test"; 
    var_dump($ar); // Key is int 
    $ar2['123a'] = "test"; 
    var_dump($ar2); //Key is string 

這究竟是爲什麼?有沒有解決辦法?我想把一個數字鍵作爲一個字符串,而不是一個整數。作爲數組鍵,爲什麼一串數字會變成字符串?

日Thnx

+3

看到這個重複的解釋:http://stackoverflow.com/questions/4100488/a-numeric-string-as-array -key-in-php – 2012-03-17 02:36:31

+0

噢好吧謝謝你:)似乎我沒有足夠的搜索。 – 2012-03-17 02:38:49

+0

似乎只用整數做它小於或等於2147483647 – 2012-03-17 02:43:39

回答

0

在需要時可以使用 「123」 作爲一個數字。也可以將substr或strlen「123」作爲字符串。 PHP變量是靈活的。

0

你不必擔心在PHP中的數據類型,則轉換會爲您自動完成。

只給你一個例子,下面的代碼:

<?php 
     if("10" == 10) 
     { 
       echo "It's equal!"; 
     } 
?> 

將實際輸出:

這等於!

您可以在這裏的行動看出來:http://ideone.com/aayLx

底線是:不擔心,PHP將把它作爲一個字符串,當你需要它。

+0

是的,我知道,我的問題是,我想這是一個字符串,因爲我編碼陣列JSON後者又怪異的事情發生了:P – 2012-03-17 02:43:40

+0

好,奇怪的事情不應該發生。你可以再詳細一點嗎? – 2012-03-17 02:44:25

+1

它確定我找到問題所在。 Json與此無關。我在對它進行編碼之前對它進行反轉,但是我忘了將第二個參數設置爲true以便保留數組的鍵。 – 2012-03-17 02:52:15

0

您可以強制轉換的關鍵字符串,但它最終會被轉換爲整數,由於PHP的鬆散打字。從手冊http://php.net/manual/en/language.types.array.php

密鑰可以是整數或字符串。如果一個密鑰是一個整數的標準 表示,但是將被解釋爲這樣的(即「8」 將被解釋爲8,而「08」將被解釋爲「08」)。當字符串是整數