【问题标题】:Counter to add seperator on foreach在 foreach 上添加分隔符的计数器
【发布时间】:2016-02-12 10:05:18
【问题描述】:

我有一个 foreach 可以在 Wordpress 上的帖子中添加术语,效果很好。代码如下:

<h3>
<?php foreach($terms as $term) {?>
    <?php echo $term->name;?>
<?php } ?>
</h3>

但是我需要添加一个计数器,以便如果&lt;h3&gt; 中有多个术语,它会在它们之间添加一个 /。例如:

<h3>Term Name</h3>
<h3>Term Name / Term Name / Term Name</h3>

这是我到目前为止的代码,但它不起作用。

        <?php
        $i = 1;
        foreach($terms as $term) {

        if($i == 1){ 
         echo ' / '.$term->name;
        } else { 
            echo $term->name;
        }   
        $i++;  
        } ?>

【问题讨论】:

  • 你的 $i 是第一个循环的,但你需要 / 在第一次通过后,尝试 $i == 2
  • 你不需要在每一行都有一个&lt;?php,只需要一个在PHP代码块的开头和一个?&gt;在末尾​​span>
  • 您的代码有问题。首先,问号 (?) 出现在您的 if 和 else 语句中,您犯了一个逻辑错误。如果 $i 等于 1 那么你不需要 /,你需要 / 在 else 语句中。用你自己的代码祝你好运。

标签: php wordpress foreach


【解决方案1】:

请尝试以下代码。

<?php $terms = array_values($terms); 
if( sizeof($terms) > 1){ ?>
        <h3><?php echo  implode(' / ', array_map(function($term) { return $term->name; }, $terms)); ?></h3>
<?php }else{ $term = $terms[0]; ?>
            <h3>echo $term->name;</h3>
<?php } ?>

【讨论】:

  • 你将如何删除尾部斜杠?
【解决方案2】:

您不需要使用计数器。只需将每个 $term-&gt;name 放入一个数组中,然后将其内爆:

echo implode(' / ', array_map(function($term) { return $term-&gt;name; }, $terms));

Here's a demo

【讨论】:

    【解决方案3】:
    <?php
        $i = 1;
        foreach($terms as $term) {  
            if($i > 1) { 
                echo ' / '.$term->name;
            } else { 
                echo $term->name;
                $i++; 
            } 
        }
    ?>
    

    【讨论】:

      【解决方案4】:

      这是可行的解决方案:)

       <?php 
          $terms = array("Term One","Term Two","Term Three","Term Four");
          $i = 1;
          $result="";
          foreach($terms as $term)
          {
              if($i==1)
               {
                  $result=$result.$term.' ';
                  $i++;   
                } 
              else
                  {               
                      $result=$result."/".' ';
                      $result=$result.$term.' ';
                  }       
      
          }
         echo $result;    
       ?>
      

      【讨论】:

      • 这很简单,不使用任何内置函数:)
      猜你喜欢
      • 2020-06-22
      • 2012-10-16
      • 2012-02-11
      • 2016-08-04
      • 2019-03-16
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多