Php 从上次使用for/foreach开始向所有数组项添加字符
我有一个数组,我正在使用以下代码:Php 从上次使用for/foreach开始向所有数组项添加字符,php,arrays,Php,Arrays,我有一个数组,我正在使用以下代码: foreach ($taglist as $tag=>$size){ echo link_to( $tag, "@search-tag?tag=" . strtolower($tag), array( "class" => 'tag' . $size, "title" => "View all ar
foreach ($taglist as $tag=>$size){
echo link_to(
$tag,
"@search-tag?tag=" . strtolower($tag),
array(
"class" => 'tag' . $size,
"title" => "View all articles tagged '" . $tag . "'"
)
);
}
现在,这只是打印一个超链接
我想做的是在每个链接之后添加管道字符(|),除了最后一个链接之外
我可以循环做这个吗
谢谢您可以使用普通的旧布尔变量:
$first = true;
foreach($taglist as $tag=>$size){
if ($first) $first = false; else echo '|';
echo link_to($tage, ...);
}
请注意,从技术上讲,此代码在除第一个元素之外的每个元素之前输出一个条形图,其效果与在除最后一个元素之外的每个元素之后输出一个条形图完全相同。使用临时数组,然后连接元素/
$links = array();
foreach($taglist as $tag=>$size){
$links[] = link_to($tag, ...);
}
echo implode('|', $links);
你可以用仙人掌计算器
$links = new CachingIterator(new ArrayIterator($tagList));
foreach($links as $tag => $size) {
echo link_to(/* bla */), $links->hasNext() ? '|' : '';
}
有关CachinGierator的更多信息,请参见我在上的答案,该答案只会在第一次之前打印,而不是最后一次。他想在最后一次迭代中跳过该输出,而不是第一次。@Dogbert@Dan Grossman抱歉,我不理解您的评论。当我用一个数字循环替换foreach时,结果看起来像是0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9,这正是他想要的,不是吗?可能重复的可能重复的可能重复我将如何为最后4次执行此操作?@terrid25
sizeof($taglist))-4
@terrid25 replace$k!=sizeof($taglist),其中$k>=sizeof($taglist)-4如何使用它将|添加到除最后4个之外的所有项目中?Thanks@terrid25如果不使用helper变量来比较到目前为止迭代的频率和总数组大小,这是不可能的。如果你需要,更容易修改,因为它已经这样做了,以确定你是否在最后一项上。好的,我会看看他的解决方案,看看我是否可以以某种方式修改它。。。谢谢
$links = new CachingIterator(new ArrayIterator($tagList));
foreach($links as $tag => $size) {
echo link_to(/* bla */), $links->hasNext() ? '|' : '';
}