这个让我很困惑,所以感谢您的帮助。我试图输出SQL结果集的值,但foreach循环似乎迭代两次,然后递增数组索引。这样,如果我的DB行保持连续的整数1,2,3,4,5,则foreach循环的输出为1,1,2,2,3,3,4,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。有任何想法吗?感谢。
答案 0 :(得分:4)
默认情况下,mysql_fetch_array
的第二个参数设置为MYSQL_FETCH_BOTH
,它将在索引下注册每个值以及列的名称。提供MYSQL_FETCH_NUM
仅获取数字索引:
while($row = mysql_fetch_array($result, MYSQL_FETCH_NUM)) {
...
答案 1 :(得分:0)
mysql_fetch_array使用mysql结果的列名作为键返回一个关联数组,但它也可以通过列号访问它们,所以行:
Mysql COL:A | B | C. Mysql VAL:1 | 2 | 3
在通过mysql_fetch_array函数后,将返回一个如下所示的数组:
array(
'A'=>1,
0 =>1,
'B'=>2
1 =>2,
'C'=>3,
2 =>3
)
并且foreach循环将遍历定义的和数字键(产生重复)
答案 2 :(得分:0)
另一个选项是执行一个调用键和值的foreach循环。
foreach($row as $key=>$value)
答案 3 :(得分:0)
更改强>
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>";
}
告诉我你的输出是什么......