1

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

我试过移动循环,添加中断和继续点并使用替代语法——我觉得我只是在这里遗漏了一些小东西。我需要进一步定义数组吗?我是否以某种方式将 foreach 循环集成到 while 中?任何指针将不胜感激。这是代码的基本运行(使用“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 - 重量:12 克
购物车项目 2 - 重量:12 克

这是预期的输出:

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

提前致谢!

IH

编辑:

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

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

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

4

2 回答 2

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';
于 2014-08-12T20:17:40.333 回答
0
echo $item->quantity * $item->weight; // multiplies weight by quantity

可能返回不正确,但可能很简单

echo ($item->quantity * $item->weight);

我还建议使用除 Item 之外的东西作为 $item $Item 和 $items 看起来真的很混乱。

于 2013-09-09T21:56:24.323 回答