开发者

adding a char to all array items ap art from last using for/foreach

I have an array, which I am using the following code:

    foreach ($taglist as $tag=>$size){
      echo link_to(
          $tag, 
          "@search-tag?tag=" . strtolower($tag), 
          array(
              "class"  => 'tag' . $size, 
               "title" => "View all articles tagged '" . $tag . "'"
           )
        );
    }

Now, this simply prints a hyperlink

What I'm looking to do, is to ad开发者_开发知识库d the pipe char ( | ) after every link, apart from the last one.

Could I do this in a loop?

Thanks


$k = 0;
foreach($taglist as $tag=>$size)
{
    $k++;
    echo link_to($tage, ...);
    if ($k != sizeof($taglist)) echo '|';
}


You can use a plain old boolean variable:

$first = true;
foreach($taglist as $tag=>$size){
    if ($first) $first = false; else echo '|';
    echo link_to($tage, ...);
}

Note that technically, this code outputs a bar before every element except the first, which has the exact same effect as outputting a bar after every element except the last.


Use a temporary array then join elements /

$links = array();
foreach($taglist as $tag=>$size){
    $links[] = link_to($tag, ...);
}
echo implode('|', $links);


You can use a CachingIterator

$links = new CachingIterator(new ArrayIterator($tagList));
foreach($links as $tag => $size) {
    echo link_to(/* bla */), $links->hasNext() ? '|' : '';
}

For more info on the CachingIterator see my answer at Peek ahead when iterating an array in PHP

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜