【问题标题】:php nested loop, how to? [closed]php嵌套循环,怎么做? [关闭]
【发布时间】:2011-12-03 13:47:49
【问题描述】:

阅读一些关于此的文档,但我似乎无法正确理解。

这是我的名为 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>';
} ?>

【问题讨论】:

  • 您必须提供更多详细信息,例如您想要实现的完整输出或一些 php 代码。现在看来你只需要一个简单的 for。

标签: php iteration nested-loops


【解决方案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>
}

【讨论】:

  • 嗯,这给了我一个错误:警告:为 foreach() 提供的参数无效 我已经调整了我的主题并添加了我现在拥有的内容。我还有另一个名为 Tabs 的表(也将此表放在 tabtest2.php 示例链接中),它具有 TabId(与主表相同)。如果我用它来获取一个数组(1,2,3)怎么办。这会让事情变得更容易吗?但是,如何在 foreach 中实现呢?
【解决方案2】:

我觉得你应该从一个好的 php 教程开始。这是关于php的一个非常基本的问题。也许从A Simple Tutorial开始,或者给自己买一本好书,比如Begining Php

【讨论】:

    【解决方案3】:

    如果你不能在首字母的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;
    

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 2013-11-17
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      相关资源
      最近更新 更多