【发布时间】:2026-02-16 18:45:01
【问题描述】:
<?php
//Called at start of page
while( $row = mysqli_fetch_assoc($result)){
$dataset[] = $row;
}
//Called in middle of page, inside <table><tbody>
$dSize = count($dataset);
for( $i = 0; $i < $dSize; $i++){
//foreach($dataset as $row){
$row = $dataset[$i];
$thisIsId = true;
echo "<tr>";
$rSize = count($row);
for( $j = 0; $j < $rSize; $j++){
//foreach($row as $value){
$value = $row[$j];
//Next line output ex: <td id='r1c2' class='editable'>Bob
echo "<td id='r$i" . "c$j'" . ($thisIsId ? "" : " class='editable'") . ">$value";
$thisIsId = false;
}
}
?>
我正在尝试填写包含客户信息的表格,但 $value 不断返回 null。被注释掉的 foreach 循环保留在那里,因为这些循环有效,但我无法根据 $i 和 $j 为元素分配 id(显然)。
如果我在$row = $dataset[$i]; 行之后添加console.log 或json_encode($row),我会得到一个JSON 对象,其中所有值都已正确填写。一旦我进入嵌套的 for 循环,如果我直接调用它,我就会不断得到 $value 和 $row[$j] 的空值。
存在三元运算符以检查它是否是第一列(ID 列),因为这是唯一不可编辑的单元格。
我曾尝试使用global $row,因为我之前在 PHP 中遇到了范围问题,但它似乎没有解决任何问题。我还尝试重命名$row 变量以确保它与我在页面开头使用$row 时没有冲突,但这也没有解决任何问题。
tl;dr 为什么$value 在for 循环中使用时返回null 而在foreach 循环中使用时却没有返回?
【问题讨论】:
标签: php arrays for-loop multidimensional-array foreach