提问者:小点点

循环并比较


我这里有这个代码,产品标签可以是动物、生命或市场。我想做的是分开它们的列表,但是这个代码为动物后的每个标签创建了一个新的ul,我不知道为什么,有人能帮忙吗

<?php

$versionvalues = get_the_terms( $product->id, 'product_tag');

if($versionvalues){
        $previousTag = 'animals';
        foreach ( $versionvalues as $versionvalue ) { 

                $currentTag = $versionvalue->name;


                if($currentTag != $previousTag){

                        echo '</ul><ul class="products" style="text-align:center;">';
                        $previousTag = $currentTag;
                }else{
                        $previousTag = $currentTag;
                }



       } 
}

?>

也许wordpress不允许我把get_the_terms值放入变量。我重复了循环中的$previousTag是不断返回动物。

我已经意识到is代码在我的产品的woocommerce循环中,因此,$versionvales会针对每个产品进行更新,$previousTag也会针对每个产品重置为动物。


共3个答案

匿名用户

在进入foreach循环之前,您需要初始化$previousTag='animals',否则它将在每次迭代开始时重新初始化为相等的'animals':

if($versionvalues){ 
        $previousTag = 'animals';
        foreach ( $versionvalues as $versionvalue ) { 

         .....

        }
} 

匿名用户

您在每个循环中重新初始化了$previousTag

<?php
$versionvalues = get_the_terms( $product->id, 'product_tag');
if($versionvalues){ 
  $previousTag = 'animals';
  foreach ( $versionvalues as $versionvalue ) { 
    $currentTag = $versionvalue->name;
    if($currentTag != $previousTag){
      echo '</ul><ul class="products" style="text-align:center;">';
      $previousTag = $currentTag;
    } else {
      $previousTag = $currentTag;
    }
  } 
}
?>

匿名用户

只是不要每次都覆盖变量

$versionvalues = get_the_terms( $product->id, 'product_tag');

if($versionvalues){ 
                $previousTag = 'animals';
        foreach ( $versionvalues as $versionvalue ) { 

                $currentTag = $versionvalue->name;


                if($currentTag != $previousTag){

                        echo '</ul><ul class="products" style="text-align:center;">';
                        $previousTag = $currentTag;
                }else{
                        $previousTag = $currentTag;
                }



       } 
}

?>