I want to print all the properties from an object.
Is there a way to use the key value as a property value of a object? instead of using get_object_vars
.
Error
Undefined property: stdClass::$key
Update Example
JavaScript
x
foreach ($arrayOfArrays as $key => $arrayOfValues) {
foreach($arrayOfValue as $key => $value){
$object = (object) $value;
echo $object->$key;
}
}
Example of $arrayOfValues
JavaScript
Array
(
[key1] => "value1"
[key2] => "value2"
)
Example of $value
JavaScript
stdClass Object
(
[scalar] => "value1"
)
stdClass Object
(
[scalar] => "value2"
)
Advertisement
Answer
I think that in your case it was a simple typo:
JavaScript
$arrayOfArrays = [[
'key1' => 'value 1',
'key2' => 'value 2',
]];
foreach ($arrayOfArrays as $key => $arrayOfValues) {
$object = (object) $arrayOfValues;
echo $object->key1; // you ommited the 1;
}
As the other mentioned you can use directly the array. No need to convert it to object:
JavaScript
foreach ($arrayOfArrays as $key => $arrayOfValues) {
echo $arrayOfValues['key1'];
}
If you want to display all the keys of that array you can simply use something like:
JavaScript
foreach ($arrayOfArrays as $key => $arrayOfValues) {
$object = (object) $arrayOfValues;
foreach (array_keys($arrayOfValues) as $unkownKey) {
echo $object->$unkownKey;
}
}