在while循环foreach循环(A foreach loop in a while loop)

2019-11-02 12:39发布

我试图WordPress的标签(和其他输入)转换为HTML类。 首先,我查询职位,在一个while循环将它们设置在这个while循环我转换标签有用的课程。 我有这个权利现在:

 <?php while ($query->have_posts()) : $query->the_post(); 


    $posttags = get_the_tags();
    if ($posttags) {
      foreach($posttags as $tag) {
        $thetags =  $tag->name . ''; 
        echo $the_tags;

        $thetags = strtolower($thetags);


        $thetags = str_replace(' ','-',$thetags);
        echo $thetags;


      }
   }
    ?>

    <!-- Loop posts -->         
    <li class="item <?php echo $thetags ?>" id="<?php the_ID(); ?>" data-permalink="<?php the_permalink(); ?>">

<?php endwhile; ?>

现在有什么问题:

第一个回声,回声的标签,如:标签1个标签2.第二相呼应,它像标签1tag-2,是不是我想要的东西或者是因为有每个标签之间没有空格。 因此只有在HTML类所示的最后的标签,因为它不是在foreach循环。

我想要什么:我想有在html类的所有相关的标记。 所以,最终的结果一定是这样的:

<li class="item tag-1 tag-2 tag-4" id="32" data-permalink="thelink">

但是,如果我把列表项在foreach循环中,我会得到一个<li>项对每个标记。 如何做到这正常吗? 谢谢!

Answer 1:

我会做这样的事情(使用数组而不是再使用破灭与它之间的空间得到它:)

<?php while ($query->have_posts()) : $query->the_post(); 

$tags = array(); // a array for the tags :)
$posttags = get_the_tags();
if (!empty($posttags)) {
  foreach($posttags as $tag) {
    $thetags =  $tag->name . ''; 
    echo $the_tags;

    $thetags = strtolower($thetags);


    $thetags = str_replace(' ','-',$thetags);
    $tags[] = $thetags;

    echo $thetags;


  }
}
?>

<!-- Loop posts -->      
<li class="item <?= implode(" ", $tags) ?>" id="<?php the_ID(); ?>" data-permalink="<?php the_permalink(); ?>">


Answer 2:

使用数组来代替,然后implode它。 请你帮个忙,你的在使用括号while条款代替(如果你喜欢它的可读性-我知道我在这种情况下做的):

<?php
    while ($query->have_posts()) {
        $query->the_post(); 

        $posttags = get_the_tags();

        $tags = array(); //initiate it
        if ($posttags) {
            foreach($posttags as $tag) {
                $tags[] = str_replace(' ','-', strtolower($tag->name)); //Push it to the array
            }
        }
        ?>
            <li class="item<?php echo (!empty($tags) ? ' ' . implode(' ', $tags) : '') ?>" id="<?php the_ID(); ?>" data-permalink="<?php the_permalink(); ?>">
        <?php
    }
?>


文章来源: A foreach loop in a while loop