在PHP中调整foreach循环中的最后一次迭代
我有一个问题和答案论坛。 用户可以浏览对问题的回答并且如果他们愿意的话可以将其提升。 下面的代码输出已提升给定问题的不同用户 - 用户在$ promoters = Promotion :: find_all_promotions_for_response($ response-> response_id)行中返回的数组'$ promoters'中。 。 然后foreach循环遍历每一个并输出它们,样式由css类“启动器列表”。 问题是这个.....如果我有一个推动者,我只想要他们的名字输出(没有问题)。 但是,如果我有很多,我想在每个名称之间插入一个逗号,然后在foreach循环中输入最后一个名称之后的逗号。 直截了当的问题,但我未能实现这一点......我试图在elseif条件中添加一个计数($ promoters)行,以便如果数组$ promoters具有多个值,那么它会输出用户全名,然后输出一个逗号,但当然这个名字在错误之后也有一个逗号。 你如何识别foreach循环中的最后一次迭代,并要求它做一些与此不同的事情.....
非常感谢你们......
<?php
$promoters = Promotion::find_all_promotions_for_response($response->response_id);
if(!empty($promoters)){
echo "<span class="promoted_by">Promoted by </span>";
foreach($promoters as $promoter){
echo "<span class="promoter_list">" . User::full_name($promoter->user_id) . ", </span>";
}
} else {
echo "";
};
?>
<?php
$promoters = Promotion::find_all_promotions_for_response($response->response_id);
if(!empty($promoters)){
echo "<span class="promoted_by">Promoted by </span>";
foreach($promoters as $idx=>$promoter){
echo "<span class="promoter_list">" . User::full_name($promoter->user_id);
if($idx < count($promoters) - 1) {
echo ", ";
}
echo "</span>";
}
} else {
echo "";
}
?>
更新:
这是另一种使用@deceze建议的使用implode
的方法:
<?php
$promoters = Promotion::find_all_promotions_for_response($response->response_id);
if(!empty($promoters)){
echo "<span class="promoted_by">Promoted by </span>";
$htmlParts = array();
foreach($promoters as $idx=>$promoter){
$htmlParts[] = "<span class="promoter_list">" . User::full_name($promoter->user_id);
}
echo implode(', </span>', $htmlParts) . '</span>';
} else {
echo "";
}
?>
链接地址: http://www.djcxy.com/p/47805.html
上一篇: Adjusting last iteration in a foreach loop in PHP
下一篇: Combine mysql query with sub query results into one PHP array