php foreach循环将同一ID的多次迭代计数为一次


php foreach loop counts multiple iterations of the same ID as one

woocommerce有一个循环,用于打印购物车中每个商品的类别名称。这是代码:

function myFunction(){
global $woocommerce;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
    $_product = $values['data'];
    $terms = get_the_terms( $_product->id, 'product_cat' );
    foreach ($terms as $term) {
        $_categoryid = $term->name;
        echo $term->name;
    }   
}
}

行得通,echo $term->name;会回显数组,然而,如果我有两个相同的项目,也就是2个相同的$_product->id,它只会在回显中将其列为1个项目。我需要它单独列出每一个项目。

购物车里有三件商品

项目1)$_product->id为20(类别为帽)

第2项)$_product->id为20(类别为hat)

项目3)$_product->id为15(类别为衬衫)

将显示:帽子衬衫

我需要它来显示:帽子帽子衬衫

如果您需要单独使用项目,则使用计数器作为:

  1. 首先查找物品总数
  2. 然后为打印的每个项目设置一个计数器。代码如下:

    function myFunction(){
       global $woocommerce;
       foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
    $_product = $values['data'];
    $terms = get_the_terms( $_product->id, 'product_cat' );
    $count = count($terms);
    $i = 0;
    foreach ($terms as $term) {
      $i++;
        $_categoryid = $term->name;
         if($i < $count){
           echo $term->name;
         }
    }   
     }
    }