【发布时间】:2014-09-12 00:05:14
【问题描述】:
我有以下数组,我想将其转换为无序列表 (HTML)。
Array
(
[0] => Array
(
[url] => /
[id] => 53a8717fe9ab5
[template] => home
[title] => Home
)
[1] => Array
(
[url] => /about
[id] => 53a871fe8b05b
[template] => content
[title] => About
)
[2] => Array
(
[url] => /about/sub
[id] => 53cb88b7ed22d
[template] => content
[title] => About (sub)
)
[3] => Array
(
[url] => /about/sub/subsub
[id] => 53cb88bc7d32d
[template] => content
[title] => About (subsub)
)
[4] => Array
(
[url] => /contact
[id] => 53a8718981161
[template] => content
[title] => Contact us
)
)
所以我正在尝试从上面的数组创建一个多维数组,如下所示:
Array
(
[0] => /
[1] => /about
[about] => Array
(
[0] => /about/sub
[sub] => Array
(
[0] => /about/sub/subsub
)
)
[2] => /contact
)
但就我所知……更不用说创建实际的<ul>了。
非常感谢任何帮助。
编辑
我使用以下方法生成了递归<ul>:
private function generateTree($from) {
$to = [];
foreach ( $from as $element ) {
$path = explode('/', $element["url"]);
if ( count($path) === 1 ) array_unshift($path, '/');
$_to = &$to;
for ( $i = 0; $i < count($path)-1; $i++ ) {
if ( !array_key_exists($path[$i], $_to) ) $_to[$path[$i]] = [];
$_to = &$_to[$path[$i]];
print_r ( implode("/", $path));
echo "<br>";
}
$_to[] = $element["url"];
}
return $to[""];
}
这是我的预期输出:
<ul>
<li><a href="/">Home</a></li>
<li>
<a href="/about">About</a>
<ul>
<li>
<a href="/about/sub">About (sub)</a>
<ul>
<li><a href="/about/sub/subsub">About (subsub)</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="/contact">Contact</a></li>
</ul>
【问题讨论】:
-
查看任何可用于 PHP 的模板库。
-
我想在没有图书馆的情况下这样做。这更像是一种学习体验;)如果您的意思是举例;介意给我一个起点吗?
标签: php html arrays multidimensional-array