【问题标题】:My For loop in PHP used to iterate an array works on the first loop, but not the second我的 PHP 中用于迭代数组的 For 循环适用于第一个循环,但不适用于第二个循环
【发布时间】:2016-10-17 22:43:40
【问题描述】:

如果 (isset($_GET['q'])){ $q = $_GET['q'];

              //variables
              $sql = "SELECT * FROM products WHERE product LIKE '%$q%' OR search LIKE '%$q%'";
              $result = $conn->query($sql);


              //check database
              if($result->num_rows > 0){        
                while ($row = $result->fetch_array()){
                  $product = $row['product'];
                  $productImage = $row['product_image'];
                  $price = $row['price'];
                  $seller = $row['seller_name'];
                  $sellerImage = $row['seller_image'];
                  $desc = $row['description'];
                  $search = $row['search'];
                  $console = $row['console'];

                  $array = array($product, $price, $productImage);
                  $arrayDesc = array($desc, $sellerImage);



                  if (preg_match('/Game/', $seller)){                    
                    for ($num = 0; $num < 3; $num++) {
                      echo '<div class="tile col-md-4 col-sm-3">';
                      if($num == 0){
                        echo '<div class="tileTitleBox"><h4>' . $array[$num] . '</h4></div>';
                      }
                      if($num = 1){
                        echo '<p class="price">' . $array[$num] . '</p>';
                      }
                      if($num = 2){
                        echo '<img class="tilePic" src="' . $array[$num] . '"/>';
                      }
                      // if($num = 3){
                      //   echo '<div class = "desc"><p>' . $array[$num] . '</p></div>';
                      // }
                      echo '</div>';
                    }//For Iteration Loop - TILE

                    for($count = 0; $count < 2; $count++){
                      echo '<div class="tile-description col-md-4 col-sm-3 hidden">';
                      if($count == 0){
                        echo '<div class="desc"><p>' . $arrayDesc[$count] . '</p></div>';
                      }
                      if($count == 1){
                        echo '<img class="sellerImg" src="' . $arrayDesc[$count] . '"/>';
                      }

                      echo '</div>';
                    }//end for loop - TILE-DESCRIPTION

正如您在上面看到的,我有一个 for 循环创建“tile”,第二个应该创建“tile-description”。第一个可以很好地创建一个带有“tile”类的单个 div,其中我的剩余内容被加载到 div 中。但在第二个 for 循环中,“desc”dev 和“sellerImg”div 是分开的。循环需要多次遍历数组。

如下图: You can see that the "Tile" div contains "tileTitleBox", "price", and "tilePic". But the "tile-description" which is hidden, is separated into two divs. As opposed to holding both elements inside the same div.

【问题讨论】:

  • 你根本不需要循环。
  • 仅供参考:$num = 1 是一个分配而不是比较。
  • 遍历数组的最佳方式是什么?
  • 我需要数组经历不同的时间。不只是一次迭代。

标签: php for-loop


【解决方案1】:

@sam-dufel 正确地指出您正在覆盖迭代器

if($num = 1){

但实际上你不应该在这里使用任何循环:

  echo '<div class="tile col-md-4 col-sm-3">';
  echo '<div class="tileTitleBox"><h4>' . $array[0] . '</h4></div>';
  echo '<p class="price">' . $array[1] . '</p>';
  echo '<img class="tilePic" src="' . $array[2] . '"/>';
  echo '</div>';

  echo '<div class="tile-description col-md-4 col-sm-3 hidden">';   
  echo '<div class="desc"><p>' . $arrayDesc[0] . '</p></div>';
  echo '<img class="sellerImg" src="' . $arrayDesc[1] . '"/>';
  echo '</div>';

【讨论】:

  • 问题是,我需要多次遍历一个数组。
  • @CarlosHernandez 也许,但不是通过您在示例中显示的任何数组。
  • 数组需要多次迭代。这将如何实现?
  • 在您更新的示例中,您将在 while 的每个循环中创建这些数组。正确的答案是:不要将人员放入新数组中,而只是显示 $row 中的内容。
猜你喜欢
  • 2018-03-04
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多