修正foreach循环中的自动增量

jkp*_*phl 2 php commission-junction magento

我有一个循环遍历订单数组的脚本,内部循环遍历按特定顺序排列的所有项目.在脚本的末尾,我需要将一个字符串与所有项目数据连接起来,每个项目数据都有一个唯一的标识符.当我超过第一个订单时,我的问题就出现了.

我们假设这个循环将迭代3个订单.这是我的例子:

foreach ($_orders as $order)
{
$oid = $order['id'];
$i = 1;
foreach ($order['items'] as $item)
         {
            $cjItemStr .= '&ITEM'. $i . '=' . $item['sku'] . '&AMT' . $i . '=' . $item['price'] . '&QTY' . $i . '=' . $item['qty'];
            $i++;
         }
}
Run Code Online (Sandbox Code Playgroud)

这将正确输出我需要的1个订单.该字符串将显示为:

&ITEM1 = TT-5555&AMT1 = 5.00&QTY1 = 2&ITEM2 = TT-3333&AMT2 = 10.00&QTY2 = 1&ITEM3 = TT-2222&AMT3 = 15.00&QTY3 = 1

这适用于一个订单但是一旦我进入下一个订单,我需要增量器从另一个订单停止的地方继续.它需要转移到ITEM4,AMT4,QTY4,ITEM5,AMT5,QTY5等.现在它只是回到1.任何人都知道如何解决这个问题?

Mic*_*ski 5

只需将$i外部循环外部的初始化移动即可.

// Initialize $i outside the first loop:
$i = 1;
foreach ($_orders as $order)
{
  $oid = $order['id'];
  foreach ($order['items'] as $item)
  {
     $cjItemStr .= '&ITEM'. $i . '=' . $item['sku'] . '&AMT' . $i . '=' . $item['price'] . '&QTY' . $i . '=' . $item['qty'];
     // And increment $i for each order item
     $i++;
  }
}
// Assuming count($_orders) == 3 and each has count($order['items'] == 3)
// $i is now 10 after all loops complete.
Run Code Online (Sandbox Code Playgroud)

但是,如果你需要的价值$i坚持超越这个脚本的每次运行,你需要存储在某个地方,比如它写入一个文本文件,或将其粘到数据库中.就像现在一样,无论何时运行此脚本,都要重新开始$i = 0

最后,我不确定Magento如何处理数组元素,但如果要通过PHP解析此查询字符串,则可以对其进行格式化,使每个元素都是一个数组.然后在收到时,$_GET['ITEM'][]例如访问.

 // Surrounding each with [] will allow PHP to process them as arrays in the script that receives this
 $cjItemStr .= '&ITEM['. $i . ']=' . $item['sku'] . '&AMT[' . $i . ']=' . $item['price'] . '&QTY[' . $i . ']=' . $item['qty'];
Run Code Online (Sandbox Code Playgroud)