微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

foreach、if、else php

如何解决foreach、if、else php

我一直在尝试将 else 添加到我的 foreach 循环中,它显示类别和子类别。但是,如果没有可用的类别,那么我希望它显示一个文本,说明没有类别或类别中的产品。

现在即使显示了一些类别,它仍然显示类别中没有产品的文本。

<?PHP

  $taxonomy     = 'product_cat';
  $orderby      = 'menu_order';  
  $show_count   = 0;      // 1 for yes,0 for no
  $pad_counts   = 0;      // 1 for yes,0 for no
  $hierarchical = 1;      // 1 for yes,0 for no  
  $title        = '';  
  $empty        = 1;

  $args = array(
         'taxonomy'     => $taxonomy,'orderby'      => $orderby,'show_count'   => $show_count,'pad_counts'   => $pad_counts,'hierarchical' => $hierarchical,'title_li'     => $title,'hide_empty'   => $empty
  );
 $all_categories = get_categories( $args );
 
      echo '<ul>';
      echo '<div class="category"><h1>CATEGORIES</h1></div>';
 
 foreach ($all_categories as $cat) {
    if($cat->category_parent == 0) {
        $category_id = $cat->term_id; 
        
         echo '<li class="parentcategory">';
        echo '<a href="'. get_term_link($cat->slug,'product_cat') .'">'. $cat->name .'</a>';
        echo '</li>';
        

        $args2 = array(
                'taxonomy'     => $taxonomy,'child_of'     => 0,'parent'       => $category_id,'hide_empty'   => $empty
        );
        $sub_cats = get_categories( $args2 );
        if($sub_cats) {
            foreach($sub_cats as $sub_category) {
                echo '<li class="subcategory">';
                echo  '<a href="'. get_term_link($sub_category->slug,'product_cat') .'">'. $sub_category->name .'</a>' ;
                echo '</li>';
            }   
        } 
    }    
else {
          echo '<li>';
          echo '<p>';
          echo 'Currently there is no categories made';
          echo ' or any products in the categories';
          echo '</p>';
          echo '</li>';

   } 
}

 echo '</ul>';
 
?>

enter image description here

解决方法

你的 if 语句在 foreach 循环中,所以如果有类别,它会写出该类别的名称。当在最后一个循环中没有类别(或 category_parrent 不等于 0 [$cat->category_parent ==0] then)时,它会进入 else 语句并告诉您有类别。在 foreach 循环之前做一个 if 语句

,

感谢@Doğuş,我想出了这个解决方案。我在 foreach 循环之前添加了一个 if( !empty($all_categories) ){ 并且它似乎像它应该的那样工作。它在有类别时显示类别,在没有类别时显示文本。

如果有人有更好的解决方案,请发布您的答案。

<?php

  $taxonomy     = 'product_cat';
  $orderby      = 'menu_order';  
  $show_count   = 0;      // 1 for yes,0 for no
  $pad_counts   = 0;      // 1 for yes,0 for no
  $hierarchical = 1;      // 1 for yes,0 for no  
  $title        = '';  
  $empty        = 1;

  $args = array(
         'taxonomy'     => $taxonomy,'orderby'      => $orderby,'show_count'   => $show_count,'pad_counts'   => $pad_counts,'hierarchical' => $hierarchical,'title_li'     => $title,'hide_empty'   => $empty
  );
 $all_categories = get_categories( $args );
 
      echo '<ul>';
      echo '<div class="categories"><h1>CATEGORIES</h1></div>';
 
 
  if( !empty($all_categories) ){
 
 foreach ($all_categories as $cat) {
    if($cat->category_parent == 0) {
        $category_id = $cat->term_id; 
        
         echo '<li class="parentcategory">';
        echo '<a href="'. get_term_link($cat->slug,'product_cat') .'">'. $cat->name .'</a>';
        echo '</li>';
        

        $args2 = array(
                'taxonomy'     => $taxonomy,'child_of'     => 0,'parent'       => $category_id,'hide_empty'   => $empty
        );
        $sub_cats = get_categories( $args2 );
        if($sub_cats) {
            foreach($sub_cats as $sub_category) {
                echo '<li class="subcategory">';
                echo  '<a href="'. get_term_link($sub_category->slug,'product_cat') .'">'. $sub_category->name .'</a>' ;
                echo '</li>';
            }   
        } 
    }    
 } }
else {
     
    

          echo '<li>';
          echo '<p>';
          echo 'Currently there is no categories made';
          echo ' or any products in the categories';
          echo '</p>';
          echo '</li>';
   
   } 

 echo '</ul>';
 
?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。