将多维数组回显到多个html表行

时间:2015-06-08 05:21:48

标签: php multidimensional-array while-loop

我有一个我正在运行的查询,它会输出未知数量的结果。我想在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>';
            }

当我运行它时,显然卡在一个永无止境的循环中,因为没有任何东西显示但是浏览器只是不断地咀嚼越来越多的内存:)

2 个答案:

答案 0 :(得分:0)

while语句错误。查看here - 在您的while语句中,您始终指定完整的$display - 而不是一个条目。

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

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

答案 1 :(得分:0)

我最终用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'));
                    }