【问题标题】:echo a multidimensional array into multiple html table rows将多维数组回显到多个 html 表格行中
【发布时间】:2015-06-08 05:21:48
【问题描述】:

我正在运行一个查询,它将输出未知数量的结果。我想在一个 5 列的表格中显示这些结果。所以我需要数组打印到第六个结果,然后开始新的一行。

我尝试这样做的方法是获取原始数组并将其分成 5 个块。

$display=array_chunk($row_Classrooms,5);

这给了我一个这样的数组。

  Array ( 
      [0] => Array ( 
            [0] => Array ( 
                  [id_room] => 1 
                  [Name] => Classroom 1 
                  [class] => Yes 
                  ) 
            [1] => Array ( 
                  [id_room] => 5 
                  [Name] => Classroom 2 
                  [class] => Yes 
                  ) 
            [2] => Array ( 
                  [id_room] => 6 
                  [Name] => Classroom 3 
                  [class] => Yes 
                  ) 
            [3] => Array ( 
                  [id_room] => 7 
                  [Name] => Classroom 4 
                  [class] => Yes  
                  ) 
            [4] => Array ( 
                 [id_room] => 8 
                 [Name] => Classroom 5 
                 [class] => Yes 
                 ) 
            ) 
     [1] => Array ( 
           [0] => Array ( 
                  [id_room] => 9 
                  [Name] => Classroom 6 
                  [class] => Yes 
                  ) 
             ) 
   ) 

然后我试图用一对 while 循环来回应这一点,就像这样。

while ($rows = $display) {
                echo '<tr>';
                    while ($class = $rows) {
                        echo'<td>'.$class['name'].'<br>
                            <input name="check'.$i.' type="checkbox" value="'.$class['id_room'].'></td>';
                            $i++;
                    }
                echo '</tr>';
            }

当我运行它时,它显然陷入了一个永无止境的循环,因为什么都没有显示,但浏览器只是不断地咀嚼越来越多的内存:)

【问题讨论】:

    标签: php multidimensional-array while-loop


    【解决方案1】:

    while 语句是错误的。看看here - 在你的while-statement 中你总是分配完整的$display - 没有一个条目。

    您可以尝试使用while(($rows = array_shift($display)) !== false) - 这将始终获取第一个数组项,直到没有更多项为止。

    第二个 while 语句中的情况相同。

    【讨论】:

    • 好的,我尝试了您的建议,但结果完全相同。您对 while 循环的评论能否解释一下我的 while 循环和 while ($data = mysql_fetch_assoc($requeteID)) 之间的不同之处
    【解决方案2】:

    我最终用 foreach 循环替换了 while 循环,从而解决了这个问题。

        foreach ($display as $rows) {
                echo '<tr class="popup">';
                    foreach($rows as $class) {
                        if(isset($row_Rego)){
                            $exist=NULL;
                            $exist=array_search($class['id_room'], array_column($row_Rego, 'id_room'));
                        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 2014-05-17
      • 1970-01-01
      • 2019-12-14
      相关资源
      最近更新 更多