2014-01-06 54 views
0

我必須從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

回到步驟 - 這是你必須從頭開始的可怕數組。如果你已經編寫了一個迭代遞歸樹的腳本 - 爲什麼你將它輸出爲 - 基本上 - 一個平面列表?你能告訴我們***那段代碼。 – Emissary

回答

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>