阅读一些关于此的文档,但我似乎无法做到正确。
这是我的名为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>';
} ?>
答案 0 :(得分: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>
}
答案 1 :(得分:1)
我觉得你应该从一个很好的PHP教程开始。这是关于php的一个非常基本的问题。也许从A Simple Tutorial开始,或者为自己写一本好书,例如Begining Php
答案 2 :(得分: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;