Foreach在一段时间内循环

时间:2013-09-09 21:35:52

标签: php arrays foreach while-loop

我遇到一个foreach循环问题,在while循环的每个实例中迭代它的整个数组内容。

我试过移动循环,添加了break&继续点和使用替代语法 - 我觉得我只是在这里缺少一些小东西。我是否需要进一步定义数组?我会以某种方式将foreach循环整合到一起吗?任何指针都将非常感激。以下是代码的基本版本(使用“Shopp”电子商务插件,代码示例如下: https://shopplugin.net/api/shopp_cart_items/):

<?php  while(shopp('cart','items')): // initializes the shopping cart loop

           $Items = shopp_cart_items(); 
            foreach ( $Items as $item ):

        echo $item->quantity * $item->weight; // multiplies weight by quantity

                endforeach; echo 'g'; endwhile; ?>

产品以重量来衡量,例如,购物车中有2件物品,重量分别为1克和2克。

以下是当前的输出:

购物车项目1 - 重量:12g
购物车项目2 - 重量:12克

这是预期的输出:

购物车项目1 - 重量:1g
购物车项目2 - 重量:2克

提前致谢!

IH

修改

Shopp中没有关于产品重量的文档,因此我必须找到产品对象和数组,并添加一个++运算符,以便在每次迭代时循环使用它们。这是我使用的代码。

echo $ Items [$ i ++] - &gt; option-&gt; dimensions ['weight'] * shopp('cartitem','quantity','echo = false');

在循环外设置整数:$ i = 0;

2 个答案:

答案 0 :(得分:0)

echo $item->quantity * $item->weight; // multiplies weight by quantity

可能不正确地返回,但可能就像

一样简单
echo ($item->quantity * $item->weight);

我还建议使用除Item之外的东西$ item $ Item和$ items让人感到很困惑。

答案 1 :(得分:0)

另一种方法

  $product_id = shopp('cartitem.get-product');
  $weight = shopp('product.get-weight'); // use product tag to get weight
  $quantity = shopp('cartitem.get-quantity'); // use cart-item tag to get quantity
  echo $weight * $quantity .' g';