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。您的第三个解决方案打印出所有值,没有任何错误。谢谢。您的第三个解决方案打印出所有值,没有任何错误。非常感谢。