2011-01-09 36 views
7

我有一個簡單的關聯數組。PHP關聯數組 - 如何將整數視爲字符串

$a = array("a"=>"b", "c"=>"d"); 

我想檢查數組中是否存在鍵「1」,例如,

isset($a["1"]); 

此字符串被視爲一個整數,讓

echo $a["1"]; //prints "d" 

我如何得到它把它作爲一個字符串?

我不想使用array_key_exists或in_array,因爲我的基準顯示isset會快很多。

+3

..簡單的答案是,不要爲您的關聯數組使用字符串整數。添加一個前綴,或完全改變你的命名約定。爲什麼要創建一個解決方案來適應這種可預防的設計選擇? – Fosco 2011-01-09 04:31:22

+0

我正在解析文本中的單詞並檢查它們的索引,其中一些將是數字,所以我必須這樣做。 – bcoughlan 2011-01-09 04:34:37

回答

6

看來你不能做你想做的事情。 from http://us.php.net/manual/en/language.types.array.php

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

您可能必須使用Fosco的建議,即將所有密鑰加上前綴。如果在每個鍵上使用相同的前綴,那麼解析可能包含單詞和數字的文本無關緊要 - 無論如何都要在所有內容上放置相同的前綴。

0

isset($ a [「1」])| isset($ a [1])?

或者只是isset($ A [1])

甚至isset($ A [INTVAL(1)])爲1000%的把握。

0

如果echo $ a ['1']輸出d,那麼你的數組比你意識到的要多。

請參閱var_dump($ a)和print_r($ a)函數來幫助您調試代碼。

相關問題