PHP循环输出co-authors数组元素时如何移除最后一个元素后的逗号
你的逻辑错误核心是没有将当前遍历元素的键和数组最后一个键做比对,现有判断if ( endKey( $co_authors ) )仅校验数组最后一个键是否为真值,只要数组非空该条件就始终成立,因此所有输出项的逗号都被移除了。
方案1:修复原有逻辑
建议提前提取数组最后一个键,避免循环内反复调用函数移动数组内部指针,修改后代码如下:
// endKey 函数保持不变 function endKey( $array ) { end( $array ); return key( $array ); } // 原逻辑修改 if ( $hasCoAuthors ) : // 提前获取最后一个键 $last_co_author_key = endKey( $co_authors ); // 遍历同时取当前元素的键 foreach ( $co_authors as $current_key => $co_author ) : $coAuthorDisplayName = $co_author->display_name; // 非最后一项加逗号,最后一项不加 if ( $current_key !== $last_co_author_key ) : $coAuthor = '<span class="co-author">' . $coAuthorDisplayName . '</span>, '; else : $coAuthor = '<span class="co-author">' . $coAuthorDisplayName . '</span>'; endif; echo $coAuthor; endforeach; endif;
方案2:更简洁的推荐实现(无需手动处理逗号)
直接先把所有要输出的HTML片段存入数组,再用PHP内置的implode函数拼接,天然不会生成末尾多余逗号,代码更易维护:
if ( $hasCoAuthors ) : $co_author_html = []; foreach ( $co_authors as $co_author ) : $co_author_html[] = '<span class="co-author">' . $co_author->display_name . '</span>'; endforeach; // 用逗号加空格拼接所有片段 echo implode(', ', $co_author_html); endif;
内容的提问来源于stack exchange,提问作者Scotty
相关产品推荐
相关产品推荐

