PHP foreach 循环仅每隔一次迭代递增一次

标签 php arrays foreach

这个真的让我很困惑,所以感谢您的帮助。我正在尝试输出 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/

相关文章:

php - 如何计算SQL时间和PHP时间之间的时间差

javascript - 如何从我的日历中禁用过去的日期?

php - $_GET 超全局*总是*以 ISO-8859-1 编码吗?

javascript - Node JS forEach 内存泄漏问题

javascript - 如何计算xsl中每个的使用次数

php - 如果日期时间大于当前日期,则使用查询检索总记录 ID

c++ - 从没有参数的函数返回整数数组

C - 合并排序的合并部分

Python NumPy : create 2d array of values based on coordinates

c# - 尝试分配给 C# 'foreach iteration variable' 会生成编译时错误。在 Linq [IEnumerable].ForEach(...) 中这样做不会。为什么?