遍历Object和echo值

时间:2013-03-14 14:28:32

标签: php object loops foreach

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

我有一个存储在$food中的对象,此对象的print_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的代码块,我尝试过一些东西,但效果不好。感谢

2 个答案:

答案 0 :(得分: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";
        }
    }
}

Working Example

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

答案 1 :(得分:0)

为什么不使用get_object_vars()功能?

在此处查看更多内容:http://php.net/manual/fr/function.get-object-vars.php