在 for 循环中迭代数组返回 null



<?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 时发生冲突,但这也没有解决任何问题。

为什么$valuefor循环中使用时返回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>";
}
?>

相关内容

  • 没有找到相关文章

最新更新