为什么foreach里面的价值重复了两次

时间:2017-11-07 14:51:27

标签: php loops foreach while-loop

我想知道为什么foreach里面的值重复了两次? 我把foreach放在一个while循环中。但是while循环条件变为false并且仍然重复foreach中的值

{{1}}

3 个答案:

答案 0 :(得分:0)

<?php

         `$conn = mysqli_connect('localhost','root','','capstone_prac_db');

   $sql1 = "SELECT id FROM stocks ORDER BY id DESC LIMIT 1,1";
       $result1 = mysqli_query($conn,$sql1);

  ?>
   <!DOCTYPE html>
   <html>
   <head>
     <title></title>
    </head>
    <body>
       <?php
       $i=0;
           while($row = mysqli_fetch_array($result1)){

                    echo $row[$i];
                    $i++;

           }
       ?>
   </body>
   </html>

你有2个循环,一个嵌套另一个循环。试试上面的代码。

答案 1 :(得分:0)

请参阅mysqli_fetch_array()的文档,并注意第二个参数默认为MYSQLI_BOTH。这意味着您正在迭代的数组由单个记录组成,但以数字和关联方式进行索引。因此,您将迭代两个指向相同值的数组索引。

$row[0];
$row['id'];

要更正,请调用此函数:

mysqli_fetch_array($result1, MYSQLI_ASSOC)

答案 2 :(得分:0)

mysqli :: fetch_array将所有行作为数组返回。 while循环通常与fetch_row一起使用,它将循环遍历所有行并分别对每个行执行循环操作。

选择一个并运行它,而不是使用两种类型的循环。你可以使用

$result = mysqli_fetch_array($result1);
foreach($result1 as $value){
    //Do your stuff here
}

while($row = mysqli_fetch_row($result)){
    //Do stuff here
}

请记住query会返回mysqli::result个对象,而不是直接返回数组。您必须使用结果文档页面上列出的方法之一才能从对象中获取可用数据。