这个真的让我很困惑,所以谢谢你的帮助。我试图输出SQL结果集的值,但foreach循环似乎迭代了两次,然后递增数组索引。这样,如果我的DB行包含连续整数1,2,3,4,5,则foreach循环的输出为1,1,2,2,3,4,5,5。看不出原因。代码如下。
$result = mysql_query("SELECT * FROM Test");
echo "<table border=1><tr></tr>";
While($row = mysql_fetch_array($result))
{
echo "<tr>";
foreach($row as $value)
{
echo "<td>" . $value . "</td>";
}
echo "</tr><tr>";
for($x=0;$x<5;$x++)
{
echo "<td>" . $row[$x] . "</td>";
}
echo "</tr>";
}
第二个for循环随后被抛出进行调试,以确保数组实际上不包含每个值的两个实例。但该循环输出如预期:1,2,3,4,5。有什么想法吗?谢谢
默认情况下,mysql_fetch_array
的第二个参数设置为MYSQL_FETCH_BOTH
,它将在索引下注册每个值以及列的名称。提供MYSQL_FETCH_NUM
以仅获得数字索引:
while($row = mysql_fetch_array($result, MYSQL_FETCH_NUM)) {
...
mysql_fetch_array返回一个关联数组,使用mysql结果的列名作为键,但它也允许通过列号访问它们,因此行:
Mysql COL:A|B|CMysql VAL:1|2|3
将在执行mysql_fetch_array函数后返回一个如下所示的数组:
array(
'A'=>1,
0 =>1,
'B'=>2
1 =>2,
'C'=>3,
2 =>3
)
foreach循环将遍历定义的和数字键(产生重复)
另一个选项是执行foreach循环,同时调用键和值。
foreach($row as $key=>$value)
更改
While($row = mysql_fetch_array($result))
{
echo "<tr>";
foreach($row as $value)
{
echo "<td>" . $value . "</td>";
}
echo "</tr><tr>";
for($x=0;$x<5;$x++)
{
echo "<td>" . $row[$x] . "</td>";
}
echo "</tr>";
}
到
While($row = mysql_fetch_array($result))
{
echo "<tr>";
foreach($row as $value)
{
echo "<td>" . $value . "</td>";
}
echo "</tr>";
}
并告诉我您的输出是什么…