7

我有一个简单的关联数组。

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

我想检查数组中是否存在键“1”,例如

isset($a["1"]);

该字符串被视为整数,因此

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

我如何让它把它当作一个字符串?

我不想使用 array_key_exists 或 in_array 因为我的基准测试显示 isset 会快很多。

4

3 回答 3

6

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

键可以是整数或字符串。如果键是整数的标准表示,它将被解释为这样(即“8”将被解释为 8,而“08”将被解释为“08”)。

您可能不得不使用 Fosco 的建议,即在所有键前面加上一些东西。如果您在每个键上使用相同的前缀,那么您是否正在解析可能包含单词和数字的文本并不重要 - 无论如何都要在所有内容上使用相同的前缀。

于 2011-01-09T04:41:52.727 回答
0

isset($a["1"]) | isset($a[1]) ?

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

甚至 isset($a[intval(1)]) 1000% 确定。

于 2011-01-09T04:29:33.373 回答
0

如果 echo $a['1'] 打印 d,那么您的数组中的元素比您意识到的要多。

请参阅 var_dump($a) 和 print_r($a) 函数来帮助您调试代码。

于 2011-01-09T04:47:49.267 回答