<?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];
后添加json_encode($row)
console.log
,我会得到一个 JSON 对象,该对象正确填写了所有值。一旦我进入嵌套的 for 循环,我就会不断获得 U $value
的空值,如果我直接调用它,我会$row[$j]
。
三元运算符的存在是为了检查它是否是第一列(ID 列),因为这是唯一不可编辑的单元格。
我尝试使用global $row
因为我之前在 PHP 中遇到过作用域问题,但它似乎没有解决任何问题。我还尝试重命名 $row
变量,以确保它不会与我在页面开头使用 $row
时发生冲突,但这也没有解决任何问题。
为什么$value
在for
循环中使用时返回null
,而在foreach
循环中使用时则不返回?
mysqli_fetch_assoc返回一个关联数组而不是有序数组: http://php.net/manual/en/mysqli-result.fetch-assoc.php。
因此,键是表中列的名称,这就是为什么您不能使用 for 循环循环它的原因。请改用 foreach 循环。
您应该在嵌套循环中引发E_NOTICE
错误(未定义的索引)。
我已经进行了必要的更改。我希望这能奏效。:)
请分别提供上面和下面的 php 代码<table>
和</table>
。
while( $row = mysqli_fetch_assoc($result)){
$dataset[] = $row;
}
//Called in middle of page, inside <table><tbody>
$dSize = count($dataset);
$i = 1;
foreach($dataset as $row){
$thisIsId = true;
echo "<tr>";
$j = 1;
foreach($row as $key=>$value){
//Next line output ex: <td id='r1c2' class='editable'>Bob
echo "<td id='r$i" . "c$j'" . ($thisIsId ? "" : " class='editable'") . ">$value</td>";
$thisIsId = false;
$j++;
}
$i++;
echo "</tr>";
}
?>