0

我尝试了很多不同的方法。我设法让第一部分工作,但第二部分让水果名称不起作用。

我有一个存储在 中的对象,该对象$foodprint_r()输出如下所示:

Food Object
(
    [id] => 1
    [values] => Array
        (
            [name] => Myfood
        )
    [objects] => Array
        (
            [0] => Fruits Object
                (
                    [id] => 1
                    [values] => Array
                        (
                            [name] => My Fruits
                        )
                    [objects] => Array
                        (
                            [0] => FruitType Object
                                (
                                    [id] => 1
                                    [values] => Array
                                        (
                                            [name] => Orange1
                                        )
                                )
                        )
                )
        )
)

此代码成功显示“Myfood”:

foreach ($food->values as $key => $value) {
    echo "$key => $value";
}

此代码成功显示“我的水果”:

echo '<br/>';

foreach ($food->objects as $id => $owner) {
    foreach ($owner->values as $key => $value) {
        echo "$key => $value";
    }
}

我需要显示FruitType对象值的第二个代码块Orange1,我尝试了一些方法,但效果不佳。谢谢

4

2 回答 2

1

看起来您好像遇到了所有开发人员面临的最大绊脚石……命名事物。我可能没有做得更好,因为我不是 100% 确定你的最终目标是什么,但就嵌套循环而言,你走在正确的轨道上。

foreach ($food->objects as $i => $obj) {
    echo "name => {$obj->values['name']}\n";
    foreach ($obj->objects as $j => $type) {
        foreach($type->values as $key => $val){
            echo "    $key => $val\n";
        }
    }
}

工作示例

虽然查看对象的结构 - 递归迭代可能更具可读性。

于 2013-03-14T15:15:04.943 回答
0

你为什么不直接使用这个get_object_vars()功能?

在这里查看更多信息:http: //php.net/manual/fr/function.get-object-vars.php

于 2013-03-14T14:40:27.530 回答