【发布时间】:2019-09-06 08:59:25
【问题描述】:
尝试将嵌套数组打印为列表:
$result = $connection->query($query);
$data = array();
while ($row = $result->fetch_object()) {
$data[$row->global_id] = $row;
}
$roots = array();
foreach ($data as $row) {
if ($row->parent_global_id === null) {
$roots[]= $row;
} else {
$data[$row->parent_global_id]->children[] = $row;
}
unset($row->parent_global_id);
unset($row->global_id);
}
function array2ul($array) {
$out = "<ul>";
foreach($array as $key => $elem){
if(!is_array($elem)){
$out .= "<li><span>$key:[$elem]</span></li>";
}
else $out .= "<li><span>$key</span>".array2ul($elem)."</li>";
}
$out .= "</ul>";
return $out;
}
array2ul($roots)
产生错误
可捕获的致命错误:stdClass 类的对象无法在线转换为字符串
$out .= "<li><span>$key:[$elem]</span></li>";
所以它是一个对象,但我应该怎么做才能解决这个问题?
数组是这样的:
Array
(
[0] => stdClass Object
(
[name] => MD
[children] => Array
(
[0] => stdClass Object
(
[name] => Year 1
[children] => Array
(
[0] => stdClass Object
(
[name] => Integrated Medical Sciences 1
)
[1] => stdClass Object
(
[name] => Integrated Medical Sciences 2
)
)
)
[1] => stdClass Object
(
[name] => Year 2
[children] => Array
(
[0] => stdClass Object
(
[name] => Integrated Medical Practice 1
[children] => Array
(
[0] => stdClass Object
(
[name] => Centralised Teaching
[children] => Array
(
[0] => stdClass Object
(
[name] => Seminar - General Medicine Student Led Presentations
)
[1] => stdClass Object
(
[name] => Surgery - CBL
)
)
)
更新
尝试了以下方法:
function walk($array){
foreach ($array as $key => $value) {
echo "<ul>";
if(!is_array($value->name)){
echo "<li>$key:[$value->name]</li>";
walk($value);
}
echo "</ul>";
}
}
walk($roots)
产生:
0:[MD]
Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 65 Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 66
name:[]
Warning: Invalid argument supplied for foreach() in /var/www/html/md/json/generate_json_by_year_print.php on line 63
Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 65 Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 66
children:[]
0:[Year 1]
Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 65 Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 66
name:[]
Warning: Invalid argument supplied for foreach() in /var/www/html/md/json/generate_json_by_year_print.php on line 63
Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 65 Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 66
children:[]
0:[Integrated Medical Sciences 1]
Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 65 Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 66
name:[]
Warning: Invalid argument supplied for foreach() in /var/www/html/md/json/generate_json_by_year_print.php on line 63
1:[Integrated Medical Sciences 2]
Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 65 Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 66
name:[]
Warning: Invalid argument supplied for foreach() in /var/www/html/md/json/generate_json_by_year_print.php on line 63
1:[Year 2]
Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 65 Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 66
name:[]
Warning: Invalid argument supplied for foreach() in /var/www/html/md/json/generate_json_by_year_print.php on line 63
Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 65 Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 66
children:[]
0:[Integrated Medical Practice 1]
Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 65 Notice: Trying to get property of non-object in /var/www/html/md/json/generate_json_by_year_print.php on line 66
name:[]
第 66 行是echo "<li>$key:[$value->name]</li>";
【问题讨论】:
-
您能否提供一些示例数据以供使用 - 以及您期望它输出的内容。
-
在哪一行显示错误?
-
查看更新的 OP..
-
尝试将$result->fetch_object()改为$result->fetch_assoc()
-
您在与@Tenderfoot 合作吗?他在 15 分钟前问了一个类似的问题。