PHP |使用foreach的键值作为对象的属性值
我想打印对象的所有属性 有没有办法将键值用作对象的属性值?而不是使用PHP |使用foreach的键值作为对象的属性值,php,Php,我想打印对象的所有属性 有没有办法将键值用作对象的属性值?而不是使用get\u object\u vars 错误 未定义的属性:stdClass::$key 更新示例 foreach ($arrayOfArrays as $key => $arrayOfValues) { foreach($arrayOfValue as $key => $value){ $object = (object) $value; echo $object->$key;
get\u object\u 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"
)
您应该使用
标量
而不是键
:
<?php
$array = ['hi', 'there'];
foreach ($array as $key => $value) {
$object = (object) $value;
// print_r($object);
echo $object->scalar;
}
您应该使用标量
而不是键
:
<?php
$array = ['hi', 'there'];
foreach ($array as $key => $value) {
$object = (object) $value;
// print_r($object);
echo $object->scalar;
}
我认为在你的情况下,这是一个简单的打字错误:
$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;
}
}
我认为在你的情况下,这是一个简单的打字错误:
$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;
}
}
此时,我们仍然需要猜测数据结构。以下是我对完整示例的最佳猜测:
$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";
}
}
您自己在上试试吧。此时,我们仍然需要猜测数据结构。以下是我对完整示例的最佳猜测:
$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";
}
}
您可以自己在$object->$key
@JonStirling尝试一下。如果不起作用,您会得到前缀为“$”符号的值。您尝试过吗?$value
的类型是什么?为什么需要将其转换为对象?那么为什么不编写$value[$key]
而不是将其转换为对象?$object->$key
@JonStirling如果不起作用,则会得到前缀为“$”符号的值。您尝试过吗?$value
的类型是什么?为什么你需要把它转换成一个对象呢?那你为什么不写$value[$key]
而不是把它转换成一个对象呢?他的评论说$value
是一个数组,所以它不会把标量
作为属性。是的,我现在明白了。我已经用数组中的数组测试了一个代码。至少可以说是Wierd PHP行为。正如我在本例中测试的:什么东西这么奇怪?关联数组将转换为具有相同属性的对象。@omerowitz它将工作并打印出所有值。但它仍然会抛出一个错误。未定义的属性:stdClass:$scalar。他的评论说$value
是一个数组,因此它不会将scalar
作为属性。是的,我现在明白了。我已经用数组中的数组测试了一个代码。至少可以说是Wierd PHP行为。正如我在本例中测试的:什么东西这么奇怪?关联数组将转换为具有相同属性的对象。@omerowitz它将工作并打印出所有值。但它仍然会抛出一个错误。未定义的属性:stdClass:$scalar。您的第三个解决方案打印出所有值,没有任何错误。谢谢。您的第三个解决方案打印出所有值,没有任何错误。非常感谢。