【问题标题】:I want to show the associative array values one by one in a loop我想在循环中一一显示关联数组值
【发布时间】:2016-02-19 06:45:44
【问题描述】:
$order=mysql_query("SELECT * FROM `order_details` WHERE id='".$_GET['id']."'") or die(mysql_error());
$orderArray=mysql_fetch_array($order);

$productId=explode(',',$orderArray['product_id']);
$productId=(array_values($productId));
$quantityId=explode(',',$orderArray['quantity']);
$quantityId=(array_values($quantityId));
print_r($quantityId);

$i=0;
foreach($productId as $id)  
{   
    $i++;
    //echo "SELECT * FROM products WHERE id=$id";
    $productId=mysql_query("SELECT * FROM products WHERE id=$id");  
    $productArray=mysql_fetch_array($productId);
?>
       <tr>
          <td><?php echo $i;?></td>
          <td>
              <?php echo $productArray['name'];?>
          </td>
          <td>
              <?php echo $productArray['price'];?>
          </td>
          <td>
              <?php 
                  for($j=0;$j<count($quantityId);$j++){
                      echo $quantityId[$j];
                  }   

              ?>
          </td>
          <td>
              <?php 

                      echo $orderArray['price'];
              ?>
          </td>
      </tr>   
<?php
}
?>  

我想在循环内部一一显示数量,并且由于循环内部有一个计数函数,它会打印内部的总量

我的输出:

Sl No.  Name             Price      Quantity    
1   watches2              100            12                                 
2   pens1                 100            12 

想要的输出:

Sl No.  Name             Price      Quantity    
1   watches2            100              1                                  
2   pens1               100              2  

【问题讨论】:

  • 指定你得到什么数组输出和你想要什么?向我们展示您的确切输出?
  • 你需要一个while循环。并使用 mysql_fetch_assoc。
  • 如果我打印 $quantityId 数组,输出是数组([0] => 1 [1] => 2),所以我从数据库中得到了预期的数组,但我想循环一个一个地通过它而不是一次,就像我一样。
  • 嗨 ravi,你能帮我写代码吗,我将如何使用 while 循环,因为产品 ID 是从数据库中获取的。你的帮助将挽救我的生命。

标签: php mysql sql loops associative-array


【解决方案1】:

使用下面的代码:-

<?php

$order=mysql_query("SELECT * FROM `order_details` WHERE id='{$_GET['id']}'") or die(mysql_error());
// Use mysql_fetch_assoc here
$orderArray=mysql_fetch_assoc($order);
// No need to do explode.  assign directly to query
$productId=$orderArray['product_id'];
// no need of below line explode set array index from 0 same as array_values does
//$productId=(array_values($productId));
$quantityId=explode(',',$orderArray['quantity']);
// no need of below line explode set array index from 0 same as array_values does
//$quantityId=(array_values($quantityId));

//foreach($productId as $id){   // No need for this loop

// Use IN in mysql query
$sql = "SELECT * FROM products WHERE id IN ($productId)";
$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}   

// Use mysql_fetch_assoc here
for ($i = 0; $row = mysql_fetch_assoc($result); ++$i){   
    echo "<tr>";
    echo "<td>".$row['name']. "</td>";
    echo "<td>".$row['price']. "</td>";
    echo "<td>".$quantityId[$i]. "</td>";
    echo "<td>".$orderArray['price']."</td>";
    echo "</tr>";    
}
//}

你也可以使用while循环如下:-

$counter = 0;
while($row = mysql_fetch_assoc($result)) {
    echo "<tr>";
    echo "<td>".$row['name']. "</td>";
    echo "<td>".$row['price']. "</td>";
    echo "<td>".$quantityId[$counter]. "</td>";
    echo "<td>".$orderArray['price']."</td>";
    echo "</tr>"; 
    $counter++; // or $counter = $counter + 1;
}

警告:-

mysql_* 在 PHP 5.5.0 中被弃用,并在 PHP 7.0.0 中被删除。 相反,应该使用 MySQLi 或 PDO_MySQL 扩展。

希望对你有帮助:)

【讨论】:

  • 他将其设置为 $orderArray=mysql_fetch_array($order); 的派生词,您的代码中没有该派生词
  • @RamRaider:我已经编辑了我的答案。感谢您的评论:)
  • foreach($quantityId a $Id){ echo $Id.'
    '; }这会导致服务器错误 500
  • 请在您的问题中发布您想要的输出。
  • 是的 ravi。顺便说一句,非常感谢您这么快回复我。再次感谢
【解决方案2】:

您需要使用 for 循环来打印数量.. 只需使用如下代码

  <?php echo $quantityId[$i]; ?>

【讨论】:

    【解决方案3】:
    "; 回声“”。++$i。 ""; echo "".$row['name']. ""; echo "".$row['price']. ""; echo "".$quantityId[$counter]. ""; echo "".$orderArray['price'].""; 回声“”; } $ 计数器 = $ 计数器 + 1; // 或 $counter = $counter + 1; }//foreach 结束 ?>

    【讨论】:

    • 请看How to Answer。仅代码答案对社区没有用处。格式化代码以获得更好的可读性
    猜你喜欢
    • 2021-12-30
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2022-11-03
    • 1970-01-01
    • 2013-12-07
    相关资源
    最近更新 更多