I have a PHP array that has numeric keys as a string type.
But when I try and access them PHP is giving me an undefined index error.
$a = (array)json_decode('{"1":1,"2":2}');
var_dump($a);
var_dump(isset($a[1]));
var_dump(isset($a["1"]));
var_dump($a[1]);
var_dump($a["1"]);
Output:
array (size=2)
'1' => int 1
'2' => int 2
boolean false
boolean false
ERROR: E_NOTICE: Undefined offset: 1
null
ERROR: E_NOTICE: Undefined offset: 1
null
How do I access these values?
So, I haven’t seen any other answers touch upon this, but @xdazz came close.
Let’s start our environment,
$objequals the object notation of a decoded string:If you want to access the strings, we know the following will fail:
Accessing the object variables
You can access it like so:
Which is the same as saying:
Accessing the array variables
The issue with arrays is that the following return blank, which is the issue with typecasting.
If you typecast it back, the object is once again accessible:
Here is a function which will automate the above for you:
Example usage: