【问题标题】:Iterate though a Object and echo values遍历一个对象并回显值
【发布时间】:2013-03-02 23:09:41
【问题描述】:

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

我有一个对象存储在$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,我尝试了一些方法但效果不佳。谢谢

【问题讨论】:

  • 如果您只是为了调试而这样做,请查看 var_dump()。
  • @ScoPi var_dump() == print_r() 我认为可以肯定地说这是一个学习练习。

标签: php object loops foreach


【解决方案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

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

【讨论】:

    【解决方案2】:

    你为什么不直接使用get_object_vars() 函数呢?

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

    【讨论】:

    • var_dump 是生成上述对象块的原因。我m sure theres 可以添加另一个循环以从他的代码中提取“fruitstype”。我只是想不通-_- [code] foreach ($food->objects as $id => $owner) { foreach ($owner->values as $key => $value) { echo "$key => $价值"; } }[/code]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    相关资源
    最近更新 更多