我必须从PERL脚本生成的文件创建导航系统。此脚本解析目录树并生成一个文件,其中每一行都表示一个目录级别。
我无法访问这个 PERL 脚本。它生成类似这个模型的东西。
产品/制造商1/产品1产品/制造商1/产品1/描述产品/制造商1/产品2产品/制造商1/产品2/描述产品/制造商2/产品1/产品/制造商2/产品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>
我不知道如何解决它。
这是一个
令人讨厌的数组结构;理想情况下,您将拥有轻松识别产品、制造商等的密钥。 假设值的位置保持不变,您可以执行以下操作:
$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>