Trying to print a nested array as a list:
$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)
Produces error
Catchable fatal error: Object of class stdClass could not be converted to string on line
$out .= "<li><span>$key:[$elem]</span></li>";
So its an object, but what should I be doing to fix this?
Array is like:
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
)
)
)
UPDATE
Tried the following:
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)
which produces:
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:[]
Line 66 is echo "<li>$key:[$value->name]</li>";