我有以下表/ PHP数组;PHP将行数组转换为树状结构关联数组
fileid | storage | parent | name | is_dir | last_changed | size | revision
--------+---------+--------+------------+--------+----------------------------+-----------+----------
1 | 1 | | bunny.mov | f | 2016-05-17 12:20:45.430934 | 514832018 | 103
2 | 1 | | 10mb.bin | f | 2016-05-17 12:24:11.291796 | 10000000 | 104
3 | 1 | | 10mb.bin | f | 2016-05-17 12:28:16.867 | 10000000 | 105
4 | 1 | | bunny.mov | f | 2016-05-17 12:34:42.191069 | 514832018 | 106
5 | 1 | | miep2 | t | 2016-05-17 12:38:09.286883 | 4096 | 107
6 | 1 | 5 | bunny.mov | f | 2016-05-17 12:38:09.295631 | 514832018 | 107
7 | 1 | | miep2 | t | 2016-05-17 12:48:25.375968 | 4096 | 108
8 | 1 | 7 | bunany.mov | f | 2016-05-17 12:48:25.384048 | 514832018 | 108
我想在关联数组中获取这些数据,所以我可以构建一个树状结构。 (某些类型的文件浏览器,其中每个文件都有用户可以选择的修订列表)
到目前为止,我有以下代码;
private function rebuildStructure($files, $parent)
{
$result = array();
foreach ($files as $file){
$entries = array();
//get entries with $parent
foreach ($files as $entry_file){
if ($entry_file->parent == $file->id){
array_push($entries, $this->rebuildStructure($files, $entry_file->fileid));
}
}
array_push($result, array(
'name' => $file->name,
'entries' => $entries
));
}
return $result;
}
但是,这并没有工作(无限循环)。任何想法,我错了? 我希望沿着一些方向行事;
array(
array('name' => 'miep2',
'entries' => array(...and repeat...)
)
)
有什么建议吗?谢谢!
您在该方法的for循环中调用该方法,该方法确实以无限循环结束。另外,为什么如果你不打算使用''parent''参数给你的函数;) – Loek