2011-12-03 238 views
0

閱讀關於此的一些文檔,但我似乎無法做到正確。php嵌套循環,如何?

這就是所謂的TabContent我的數據庫表: http://www.mauricederegt.nl/dev/mahjong/tabtest2.php

現在我想打一個嵌套的循環,這樣的結果會是這樣的:

<div id="[TabId here]" class="tab_content"> 
    <ul class="columns"> 
     <li>[LayoutName here, all belonging to the TabId]</li> 
    </ul> 
</div> 

由於該表3 TabId的這個div應該是循環3次。但如何去做呢?

編輯:代碼我現在有:

<?php 
$result = mysql_query("SELECT * FROM TabContent"); 
$assoc_array[tab_id] = array($row1, $row2, $row3); 

foreach ($array as $k => $v) { 
    echo'<div id="'.$k.'" class="tab_content"> 
    <ul class="columns">'; 
    foreach ($v as $data) { 
     echo'<li>'.$data['LayoutName'].'</li>'; 
    } 
    echo' </ul> 
    </div>'; 
} ?> 
+1

你將不得不提供更多的細節,例如你想要達到什麼或一些php代碼的完整輸出。現在看來你只需要一個簡單的。 – deviousdodo

回答

1

首先,你必須通過標籤的ID,以單獨的數據,可能創建一個數據結構,如..

僞代碼:

$assoc_array[tab_id] = array($row1, $row2, $row3); 

一旦你有這樣的結構,你可以很容易循環

foreach ($array as $k => $v) { 
    <div id="$k" class="tab_content"> 
    <ul class="columns"> 
    foreach ($v as $data) { 
     <li>$data['LayoutName']</li> 
    } 
    </ul> 
    </div> 
} 
+0

嗯,這給了我一個錯誤:警告:爲foreach()提供的無效參數我調整了我的主要主題,並添加了我現在擁有的。 我還有另一個名爲Tabs的表(也將此表放在tabtest2.php示例鏈接中),它具有TabId(與主表相同)。如果我使用它來獲得一個數組(1,2,3)。這會讓事情變得更簡單嗎?但那麼,如何在foreach中實現呢? – Maurice

0

如果你不能在最初的tabid分割數據,你可以用這個例子

 class HtmlUlGenerator{ 
    private $_layoutNames=array(); 
    public function addLayoutName($layoutName){ 
     $this->_layoutNames[]=$layoutName; 
    } 
    public function __toString(){ 
    $retStr="<ul class=\"columns\">"; 
    foreach ($this->_layoutNames as $name){ 
     $retStr.="<li>$name</li>"; 
    } 
    return $retStr."</ul>"; 
    } 
} 

class TabIdDispatcher{ 
    private $_uls=array(); 
    public function addRow($row){ 
     $this->getUlbyTabId($row['TabId'])->addLayoutName($row['LayoutName']); 
    } 
    /** 
    * @return HtmlUlGenerator 
    */ 
    private function getUlbyTabId($TabId){ 
     if (!key_exists($TabId, $this->_uls)) 
      $this->_uls[$TabId]=new HtmlUlGenerator(); 
     return $this->_uls[$TabId]; 
    } 
    public function addTable($tableRows){ 
     foreach ($tableRows as $row){ 
      $this->addRow($row); 
     } 
    } 
    public function __toString(){ 
     $retStr=""; 
     foreach ($this->_uls as $key=>$ul){ 
      $retStr.="<div id=\"$key\" class=\"tab_content\"> ".$ul."</div>"; 
     } 
     return $retStr; 
    } 
} 

使用它:

$table=array(array("TabId"=>1, "LayoutName"=>"g"),array("TabId"=>1, "LayoutName"=>"ffg"),array("TabId"=>1, "LayoutName"=>"gfg"), 
array("TabId"=>2, "LayoutName"=>"g"),array("TabId"=>2, "LayoutName"=>"ffg"),array("TabId"=>2, "LayoutName"=>"gfg"), 
array("TabId"=>3, "LayoutName"=>"g"),array("TabId"=>3, "LayoutName"=>"ffg"),array("TabId"=>3, "LayoutName"=>"gfg")) ; 
$obj=new TabIdDispatcher(); 
$obj->addTable($table); 
echo $obj; 
1

我覺得你應該有一個很好的PHP教程開始。這是關於php的一個非常基本的問題。也許開始A Simple Tutorial或讓自己一本好書如Begining Php