在PHP中将数组转换为treeview(convert array to treeview in php)

编程入门 行业动态 更新时间:2024-10-25 23:23:48
在PHP中将数组转换为treeview(convert array to treeview in php)

如何在php中将数组转换为treeview

下面是我的阵列

Array ( [0] => Array ( [efi] => Array ( ) ) [1] => Array ( [grub] => Array ( [0] => Array ( [fonts] => Array ( ) ) [1] => Array ( [i386-pc] => Array ( ) ) [2] => Array ( [locale] => Array ( ) ) [3] => Array ( [x86_64-efi] => Array ( ) ) ) ) )

我希望输出为树视图

EFI

蛴螬

在我想要的grub下

字体

I386-PC

现场

x86_64的电喷

我使用下面的代码相同

function generateTreeMenu($dir_array, $parent = 0, $limit=0){ if($limit > 1000) return ''; $tree = ''; $tree = '<ul>'; for($i=0, $ni=count($dir_array); $i < $ni; $i++){ if($dir_array[$i]['parent_id'] == $parent){ $tree .= '<li><a>'; $tree .= $dir_array[$i]['title'].'</a>'; $tree .= generatePageTree($dir_array, $dir_array[$i]['id'], $limit++); $tree .= '</li>'; } } $tree .= '</ul>'; return $tree; } generateTreeMenu($dir_array);

它显示警告Undefined属性:stdClass :: $ parent_id in

How to convert array to treeview in php

Below is my array

Array ( [0] => Array ( [efi] => Array ( ) ) [1] => Array ( [grub] => Array ( [0] => Array ( [fonts] => Array ( ) ) [1] => Array ( [i386-pc] => Array ( ) ) [2] => Array ( [locale] => Array ( ) ) [3] => Array ( [x86_64-efi] => Array ( ) ) ) ) )

I want output as treeview

efi

grub

and under grub I want

fonts

i386-pc

locale

x86_64-efi

I have used below code for same

function generateTreeMenu($dir_array, $parent = 0, $limit=0){ if($limit > 1000) return ''; $tree = ''; $tree = '<ul>'; for($i=0, $ni=count($dir_array); $i < $ni; $i++){ if($dir_array[$i]['parent_id'] == $parent){ $tree .= '<li><a>'; $tree .= $dir_array[$i]['title'].'</a>'; $tree .= generatePageTree($dir_array, $dir_array[$i]['id'], $limit++); $tree .= '</li>'; } } $tree .= '</ul>'; return $tree; } generateTreeMenu($dir_array);

it show warning Undefined property: stdClass::$parent_id in

最满意答案

这是我的解决方案,基于您的帖子:

<?php echo "<pre>"; $dir_array = array( array( "efi" => array() ), array( "grub" => array( array("fonts" => array()), array("i386-pc" => array()), array("locale" => array()), array("x86_64-efi" => array()) ) ) ); print_r($dir_array); echo "</pre>\n"; function mygenerateTreeMenu($dir_array,$limit = 0) { $key = ''; if ($limit > 1000) return ''; foreach ($dir_array as $key => $value) { if (!is_int($key)) { $tree .= "<li>"; $tree .= "<a>$key</a><ul>"; $tree .= mygenerateTreeMenu($value,$limit++); $tree .= "</ul></li>\n"; } else { $tree .= mygenerateTreeMenu($value,$limit++); } } return $tree; } echo "<ul>\n"; $tree = mygenerateTreeMenu($dir_array); echo $tree; echo "</ul>\n"; ?>

我删除了$ parent,因为我不需要它。 然后,由于构建数组的方式,将忽略整数索引。 如果您可以修改数组,则可以简化它并完全删除整数索引,并将其视为哈希表。 它会使递归代码更简单。

Here is my solution, based on your post:

<?php echo "<pre>"; $dir_array = array( array( "efi" => array() ), array( "grub" => array( array("fonts" => array()), array("i386-pc" => array()), array("locale" => array()), array("x86_64-efi" => array()) ) ) ); print_r($dir_array); echo "</pre>\n"; function mygenerateTreeMenu($dir_array,$limit = 0) { $key = ''; if ($limit > 1000) return ''; foreach ($dir_array as $key => $value) { if (!is_int($key)) { $tree .= "<li>"; $tree .= "<a>$key</a><ul>"; $tree .= mygenerateTreeMenu($value,$limit++); $tree .= "</ul></li>\n"; } else { $tree .= mygenerateTreeMenu($value,$limit++); } } return $tree; } echo "<ul>\n"; $tree = mygenerateTreeMenu($dir_array); echo $tree; echo "</ul>\n"; ?>

I removed the $parent as I did not need it. Then because of the way your array is built, integer indexes are ignored. If you can modify your array, you could streamline it and remove integer indexes completely and treat is as a hash table. It would make the recursive code simpler.

更多推荐

本文发布于:2023-08-07 23:40:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1466443.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   转换为   中将   PHP   php

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!