数组循环问题,只显示一次



我想显示数组,在数组[0]显示后,显示下一个数据,在显示数据库中的所有数据之前循环执行。例如:

Array ( 
[0] => Array ( 
[ID] => 1 [name] => peter [time] = >1:00
)
[1] => Array ( 
[ID] =>2 [name]=> merry [time]=>3:00
)
...etc

我希望:

-------------- |id|name |time|
-------------- |1 |peter|1:00|
-------------- |2 |merry|3:00|
-------------- |..|.....|.:..|

但实际只是显示数组[0]。像这样:

-------------- |id|name |time|
-------------- |1 |peter|1:00|
---------------

你能告诉我如何改进和纠正吗?

$sql = "SELECT * FROM mytable";
$result = mysqli_query($conn, $sql);
$datas = array();
if (mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result)){
$datas[] = $row; 
}
}
$result = $conn->query($sql);
$x = 0;               
$a = $datas[$x];
if($a = array())
{
echo "";
}
else
{
foreach($datas[$x] as $data){
echo $data."<td>"."<br>";
$x++; 
}
}

您的代码中有很多问题:

  1. $result = $conn->query($sql)是多余的——几天前您已经运行了完全相同的查询。

  2. if($a = array())毫无意义。我想你可能是在测试$a是否绝对是一个数组?但你真正要做的是给它分配一个新的空数组。无论如何,这都无关紧要,因为你从来不会用$a做任何事情,而且我们知道$data永远是一个数组,所以没有必要检查它是否是一个阵列。如果没有行,循环就不会运行。

  3. 写入"<td>"."<br>"将生成无效的HTML。要么使用表和行,要么只使用换行符。你需要下定决心。表格可能更适合呈现表格数据。。。

  4. 对于您的问题,最重要的是,$datas[$x]只代表$datas中的第一个数据数组。循环只在第一个数组中的项上循环。您需要循环使用$datas中的所有索引。

以下是您的代码的固定版本:

$sql = "SELECT * FROM mytable";
$result = $conn->query($sql);
$datas = array();
if (mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result)){
$datas[] = $row; 
}
}
echo "<table>"; //start a table
echo "<tr><th>ID</th><th>Name</th><th>Time</th></tr>"; //print the table header
foreach($datas as $row) //loop over all the rows
{
echo "<tr>"; //start a new row
foreach ($row as $field) //loop over the fields in each row.
{
echo "<td>".$field."</td>"; //print a single field in a table cell
}
echo "</tr>"; //end the row
}
echo "</table>"; //end the table

最新更新