阅读了一些关于这个的文档,但是我似乎不能得到正确的。
这是我的数据库表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>';
} ?>
首先你必须用TAB 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>
}
我觉得你应该从一个好的php教程开始。这是关于php的一个非常基本的问题。可以从简单教程开始,或者找一本好书,比如《Php入门》
如果您不能在初始值的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;