这个真的让我很困惑,所以感谢您的帮助。我正在尝试输出 SQL 结果集的值,但 foreach 循环似乎迭代了两次,然后递增数组索引。这样,如果我的数据库行包含连续的整数 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。有任何想法吗?谢谢。
最佳答案
默认情况下,mysql_fetch_array
的第二个参数设置为 MYSQL_FETCH_BOTH
,它将在索引下注册每个值以及列的名称。提供 MYSQL_FETCH_NUM
以仅获取数字索引:
while($row = mysql_fetch_array($result, MYSQL_FETCH_NUM)) {
...
关于PHP foreach 循环仅每隔一次迭代递增一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8845620/