$ar['123'] = "test";
var_dump($ar); // Key is int
$ar2['123a'] = "test";
var_dump($ar2); //Key is string
這究竟是爲什麼?有沒有解決辦法?我想把一個數字鍵作爲一個字符串,而不是一個整數。作爲數組鍵,爲什麼一串數字會變成字符串?
日Thnx
$ar['123'] = "test";
var_dump($ar); // Key is int
$ar2['123a'] = "test";
var_dump($ar2); //Key is string
這究竟是爲什麼?有沒有解決辦法?我想把一個數字鍵作爲一個字符串,而不是一個整數。作爲數組鍵,爲什麼一串數字會變成字符串?
日Thnx
在需要時可以使用 「123」 作爲一個數字。也可以將substr或strlen「123」作爲字符串。 PHP變量是靈活的。
你不必擔心在PHP中的數據類型,則轉換會爲您自動完成。
只給你一個例子,下面的代碼:
<?php
if("10" == 10)
{
echo "It's equal!";
}
?>
將實際輸出:
這等於!
您可以在這裏的行動看出來:http://ideone.com/aayLx
底線是:不擔心,PHP將把它作爲一個字符串,當你需要它。
是的,我知道,我的問題是,我想這是一個字符串,因爲我編碼陣列JSON後者又怪異的事情發生了:P – 2012-03-17 02:43:40
好,奇怪的事情不應該發生。你可以再詳細一點嗎? – 2012-03-17 02:44:25
它確定我找到問題所在。 Json與此無關。我在對它進行編碼之前對它進行反轉,但是我忘了將第二個參數設置爲true以便保留數組的鍵。 – 2012-03-17 02:52:15
您可以強制轉換的關鍵字符串,但它最終會被轉換爲整數,由於PHP的鬆散打字。從手冊http://php.net/manual/en/language.types.array.php
密鑰可以是整數或字符串。如果一個密鑰是一個整數的標準 表示,但是將被解釋爲這樣的(即「8」 將被解釋爲8,而「08」將被解釋爲「08」)。當字符串是整數
自動澆鑄爲整數。有關詳細信息,請參閱http://php.net/manual/en/language.types.array.php。
要解決此問題,你必須在前面加上一個0整數:
$ar2["0123"] will use '123' as the key
看到這個重複的解釋:http://stackoverflow.com/questions/4100488/a-numeric-string-as-array -key-in-php – 2012-03-17 02:36:31
噢好吧謝謝你:)似乎我沒有足夠的搜索。 – 2012-03-17 02:38:49
似乎只用整數做它小於或等於2147483647 – 2012-03-17 02:43:39