我试图使用递归来循环遍历多维对象,如果值不是对象则显示键值对,或者如果值是嵌套对象则从内部调用相同的函数.这是我的代码:
<?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个总属性的对象可能会产生数千行结果.
据我了解你的问题,你只需要调用函数而不用$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)