我有一个查询,我正在运行,它将输出一个未知数量的结果。我想在一个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>';
}
当我运行这个时,它显然陷入了一个永不结束的循环,因为没有显示任何内容,但浏览器只是不断消耗越来越多的内存:)
while
语句是错误的。看看这里-在您的while
-语句中,您总是分配完整的$display
-而不是一个条目。
您可以尝试使用while(($rows = array_shift($display)) !== false)
-它将始终获得第一个数组项,直到没有更多的项。
第二个while语句也是同样的情况
我最终将while循环替换为foreach循环,从而解决了问题。
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'));
}