递归PHP函数循环遍历多维对象

Mar*_*arc 2 php recursion

我试图使用递归来循环遍历多维对象,如果值不是对象则显示键值对,或者如果值是嵌套对象则从内部调用相同的函数.这是我的代码:

<?php
function display_fields($data,$html='')
{
    foreach($data as $key => $value)
    {
        if (is_object($value)) $html .= display_fields($value,$html);
        else $html .= '
            <div class="row">
                <div class="col-xs-3">'.$key.'</div>
                <div class="col-xs-9">'.$value.'</div>
            </div>';
    }
    return $html;
}
Run Code Online (Sandbox Code Playgroud)

然后,最初将通过传递完整对象来调用此函数.

我意识到可能有更好的方法来做到这一点,但我特别想了解递归,并希望有机会找到我在这里做错了什么.

编辑:我忘了提到,我得到的不良结果是相同的数据重复了很多次.因此,具有20个总属性的对象可能会产生数千行结果.

Tar*_*yan 5

据我了解你的问题,你只需要调用函数而不用$html返回结果的参数:

function display_fields($data, &$html='') // added pass by reference
{
    foreach($data as $key => $value)
    {
        if (is_object($value)) 
            display_fields($value,$html); // no need to concat
        else $html .= '
            <div class="row">
                <div class="col-xs-3">'.$key.'</div>
                <div class="col-xs-9">'.$value.'</div>
            </div>';
    }
    return $html;
}
Run Code Online (Sandbox Code Playgroud)