我有一个简单的关联数组。
$a = array("a"=>"b", "c"=>"d");
我想检查数组中是否存在键“1”,例如
isset($a["1"]);
该字符串被视为整数,因此
echo $a["1"]; //prints "d"
我如何让它把它当作一个字符串?
我不想使用 array_key_exists 或 in_array 因为我的基准测试显示 isset 会快很多。
我有一个简单的关联数组。
$a = array("a"=>"b", "c"=>"d");
我想检查数组中是否存在键“1”,例如
isset($a["1"]);
该字符串被视为整数,因此
echo $a["1"]; //prints "d"
我如何让它把它当作一个字符串?
我不想使用 array_key_exists 或 in_array 因为我的基准测试显示 isset 会快很多。
看来你不能做你想做的事。来自http://us.php.net/manual/en/language.types.array.php:
键可以是整数或字符串。如果键是整数的标准表示,它将被解释为这样(即“8”将被解释为 8,而“08”将被解释为“08”)。
您可能不得不使用 Fosco 的建议,即在所有键前面加上一些东西。如果您在每个键上使用相同的前缀,那么您是否正在解析可能包含单词和数字的文本并不重要 - 无论如何都要在所有内容上使用相同的前缀。
isset($a["1"]) | isset($a[1]) ?
或者只是 isset($a[1])
甚至 isset($a[intval(1)]) 1000% 确定。
如果 echo $a['1'] 打印 d,那么您的数组中的元素比您意识到的要多。
请参阅 var_dump($a) 和 print_r($a) 函数来帮助您调试代码。