php 最后一次循环,关于数组:在PHP的foreach循环中调整最后一次迭代

我有一个问答论坛。用户可以浏览对问题的回答,并根据需要进行宣传。下面的代码输出已提升给定问题的不同用户-这些用户位于从行$ promoters = Promotion :: find_all_promotions_for_response($ response-> response_id)返回的数组'$ promoters'中; 。然后,foreach循环遍历每个循环,并通过css类"启动子列表"输出它们的样式。问题是.....如果我有一个启动子,我只想输出他们的名字(这个没问题)。但是,如果我有很多我想在每个名称之间使用逗号,然后在foreach循环中的姓氏后面再添加一个逗号。直截了当的问题,但我未能实现这一目标。...我试图在elseif条件下添加count($ promoters)行,以便如果数组$ promoters具有多个值,则它将输出用户全名,然后输出逗号,但是姓氏后面当然也带有逗号,这是错误的。您如何确定foreach循环中的最后一次迭代,并要求它对此做一些不同的事情.....

非常感谢你们...

$promoters = Promotion::find_all_promotions_for_response($response->response_id);

if(!empty($promoters)){

echo"";

foreach($promoters as $promoter){

echo"" . User::full_name($promoter->user_id) .", ";

}

} else {

echo"";

};

?>

通常,这是通过将所有项目放入数组并使用join(,, $items)来完成的。

@deceze通常,我会同意,但是在这种情况下,逗号位于SPAN标记内。 即使您使用join(, , $items),最后一项也不会带有结束SPAN标记。

使用数组,并内爆+添加第一个开始跨度和最后一个关闭跨度。

@Typoheads ID认为跨度可能不应该包含逗号。 由于该类称为"列表",因此将每个单独的项目包装在一个单独的跨度中似乎很奇怪。

是的,我同意这一点。 我在您的答案中添加了您的建议。

$promoters = Promotion::find_all_promotions_for_response($response->response_id);

if(!empty($promoters)){

echo"";

foreach($promoters as $idx=>$promoter){

echo"" . User::full_name($promoter->user_id);

if($idx < count($promoters) - 1) {

echo",";

}

echo"";

}

} else {

echo"";

}

?>

更新:

这是@deceze建议的使用implode的另一种方式:

$promoters = Promotion::find_all_promotions_for_response($response->response_id);

if(!empty($promoters)){

echo"";

$htmlParts = array();

foreach($promoters as $idx=>$promoter){

$htmlParts[] ="" . User::full_name($promoter->user_id);

}

echo implode(', ', $htmlParts) . '';

} else {

echo"";

}

?>

它工作得很漂亮..将在6分钟内确认.....! 欢呼错字..

还有更多很棒的建议。...谢谢大家。 我认为上述方法非常实用。 Stackoverflow非常有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值