3 回答
TA贡献2011条经验 获得超2个赞
$elem大概是一个对象。当你检查类型$elem
if(!is_array($elem)){
$out .= "<li><span>$key:[$elem]</span></li>";
}
else $out .= "<li><span>$key</span>".array2ul($elem)."</li>";
你也需要检查is_object($elem)。对象的 var_dump 会生成一个包含第一个元素的数组:
[0] => stdClass Object
首先,您必须在类中实现一个 __toString() 方法,以便将这些类的对象自动转换为字符串。 我们在哪里以及为什么在 PHP 中使用 __toString() ?
之后,您可以简单地:
if (is_array($elem))
$out .= "<li><span>$key</span>".array2ul($elem)."</li>";
else
$out .= "<li><span>$key:[$elem]</span></li>";
因为__toString()类的实现
TA贡献1836条经验 获得超5个赞
我得到了这样的事情:
function walk($array)
{
//convert object to key-value array
if (is_object($array)) {
$array = (array)$array;
}
$pdf_result = "<ul>";
foreach ($array as $key => $value) {
if (is_int($value) || is_string($value)) {
$pdf_result .= "<li>" . $value;
} elseif (is_array($value) || is_object($value)) {
$pdf_result .= walk($value);
}
$pdf_result .= "</li>";
}
$pdf_result .= "</ul>";
// Here we return result array
return $pdf_result;
}
walk($roots);
// And here we set another-scope variable from function
$pdf_result = walk($roots);
- 3 回答
- 0 关注
- 151 浏览
添加回答
举报