我想打印一个对象的所有属性。
有没有办法将键值用作对象的属性值?而不是使用get_object_vars
。
错误
未定义的属性:stdClass :: $ key
更新示例
foreach ($arrayOfArrays as $key => $arrayOfValues) {
foreach($arrayOfValue as $key => $value){
$object = (object) $value;
echo $object->$key;
}
}
$ arrayOfValues
的示例Array
(
[key1] => "value1"
[key2] => "value2"
)
$ value
的示例stdClass Object
(
[scalar] => "value1"
)
stdClass Object
(
[scalar] => "value2"
)
答案 0 :(得分:3)
我认为在你的情况下这是一个简单的拼写错误:
$arrayOfArrays = [[
'key1' => 'value 1',
'key2' => 'value 2',
]];
foreach ($arrayOfArrays as $key => $arrayOfValues) {
$object = (object) $arrayOfValues;
echo $object->key1; // you ommited the 1;
}
正如其他提到的,你可以直接使用数组。无需将其转换为对象:
foreach ($arrayOfArrays as $key => $arrayOfValues) {
echo $arrayOfValues['key1'];
}
如果要显示该阵列的所有键,可以使用以下内容:
foreach ($arrayOfArrays as $key => $arrayOfValues) {
$object = (object) $arrayOfValues;
foreach (array_keys($arrayOfValues) as $unkownKey) {
echo $object->$unkownKey;
}
}
答案 1 :(得分:1)
您应该使用scalar
代替key
:
<?php
$array = ['hi', 'there'];
foreach ($array as $key => $value) {
$object = (object) $value;
// print_r($object);
echo $object->scalar;
}
工作example here。
正如文档所说:
对于任何其他值,名为scalar的成员变量将包含该值。
答案 2 :(得分:0)
目前,我们仍然需要猜测数据结构。以下是我最好的猜测:
$array = array(
(object) "value1",
(object) "value2"
);
foreach ($array as $name => $array_value) {
$object = (object) $array_value;
foreach ($object as $property => $value) {
echo $object->$property . "\n";
}
}
处自行尝试