首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想在一个循环中逐个显示关联数组值。

我想在一个循环中逐个显示关联数组值。
EN

Stack Overflow用户
提问于 2016-02-19 06:45:44
回答 3查看 169关注 0票数 0
代码语言:javascript
复制
$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
}
?>  

我想逐个显示循环中的数量,因为循环中有一个计数函数,它会打印出循环中的总数量。

My输出:

代码语言:javascript
复制
Sl No.  Name             Price      Quantity    
1   watches2              100            12                                 
2   pens1                 100            12 

期望输出:

代码语言:javascript
复制
Sl No.  Name             Price      Quantity    
1   watches2            100              1                                  
2   pens1               100              2  
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-19 07:00:01

使用以下代码:-

代码语言:javascript
复制
<?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循环如下:

代码语言:javascript
复制
$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_*在PHP5.5.0中被废弃,在PHP7.0.0中被删除。相反,应该使用MySQLi或PDO_MySQL扩展。

希望它能帮助你:)

票数 0
EN

Stack Overflow用户

发布于 2016-02-19 07:14:57

你需要用for循环来打印数量。只需使用下面的代码

代码语言:javascript
复制
  <?php echo $quantityId[$i]; ?>
票数 0
EN

Stack Overflow用户

发布于 2016-02-20 11:46:49

";.++$i;echo“。$row‘’name‘。“;回声”。美元行‘价格’。“;.$quantityId$counter”。“;$counter = $counter + 1;/或$counter = $counter + 1;}//foreach结束?>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35498954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档