I have a simple associative array.
$a = array("a"=>"b", "c"=>"d");
I want to check if the key "1" exists in the array, e.g.
isset($a["1"]);
This string is being treated as an integer, so that
echo $a["1"]; //prints "d"
How do I get it to treat it as a string?
I don't want to use array_key_exists or in_array because my benchmarking shows isset will be a lot faster.
It doesn't appear that you can do what you want to do. from http://us.php.net/manual/en/language.types.array.php:
You'll probably have to use Fosco's suggestion of prefixing all your keys with something. If you use the same prefix on every key, then it doesn't matter if you're parsing a text that might have words and numbers - put the same prefix on everything regardless.
isset($a["1"]) | isset($a[1]) ?
Or just isset($a[1])
Or even isset($a[intval(1)]) to be 1000% sure.
if echo $a['1'] prints d, then your array has more elements than you realize.
see var_dump($a) and print_r($a) functions to help you debug your code.