2011-01-09 61 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)函数来帮助您调试代码。