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

echo a multidimensional array into multiple html table rows

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

我尝试这样做的方法是将原始数组分成 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>';
            }

当我 运行 这样做时,它显然陷入了一个永无止境的循环,因为什么都没有显示,但浏览器一直在消耗越来越多的内存:)

while 的说法是错误的。看看 here - 在你的 while 语句中你总是分配完整的 $display - 而不是一个条目。

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

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

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