我必须从PERL脚本生成的文件创建导航系统。 此脚本解析目录树并生成一个文件,其中每一行代表一个目录级别。
我无法访问此PERL脚本。 它生成类似这个模型的东西。
产品/ Manufacturer1 /产品1 产品/ Manufacturer1 /产品1 /说明 产品/ Manufacturer1 /产品2 产品/ Manufacturer1 /产品2 /说明 产品/ Manufacturer2 /产品1 / 产品/ Manufacturer2 /产品1 /说明
我构建了一个脚本,用于创建一个数组,如下所示
$array = array(
array(
'Products',
'Manufacturer1',
'Product1'
),
array(
'Products',
'Manufacturer1',
'Product1',
'Description'
),
array(
'Products',
'Manufacturer1',
'Product2'
),
array(
'Products',
'Manufacturer1',
'Product2',
'Description'
),
array(
'Products',
'Manufacturer2',
'Product1'
),
array(
'Products',
'Manufacturer2',
'Product1'
'Description'
),
)
哪个应创建这样的HTML:
<ul>
<li>Products
<ul>
<li>Manufacturer1
<ul>
<li>Product1
<ul>
<li>Description</li>
</ul>
</li>
<li>Product2
<ul>
<li>Description</li>
</ul>
</li>
</ul>
</li>
<li>Manufacturer2
<ul>
<li>Product1
<ul>
<li>Description</li>
</ul>
</li>
<li>Product2
<ul>
<li>Description</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
我无法弄清楚如何解决它。
答案 0 :(得分:0)
这是一个讨厌的阵列结构来处理;理想情况下,您可以轻松识别产品,制造商等。假设值的位置保持不变,您可以执行以下操作:
$products = array();
foreach ( $array as $v ) {
if ( isset($v[1]) && isset($v[2]) ) {
$products[$v[1]][$v[2]] = isset($v[3]) ? $v[3] : '';
}
}
但是你这样做,你会想把它变成一个多维数组,这样那个HTML就变得像以下一样简单:
<ul>
<li>Products
<ul>
<?php
foreach ( $products as $k => $v ) {
?>
<li><?php echo $k ?>
<ul>
<?php
foreach ( $v as $k2 => $v2 ) {
?>
<li><?php echo $k2 ?>
<ul>
<li><?php echo $v2 ?></li>
</ul>
<?php
}
?>
</ul>
</li>
<?php
}
?>
</ul>
</li>
</ul>