Tengo una función simple que muestra los valores seguidos de una coma.
if ( $hasCoAuthors ) : foreach ( $co_authors as $co_author ) : $coAuthorDisplayName = $co_author->display_name; $coAuthor = '<span class="co-author">' . $coAuthorDisplayName . '</span>, '; echo $coAuthor; endforeach; endif;¿Cómo obtener el último valor para eliminar la coma?
Agregué esta función:
function endKey( $array ) { end( $array ); return key( $array ); }Luego agregué esto en mi función:
if ( endKey( $co_authors ) ) : $coAuthor = '<span class="co-author">' . $coAuthorDisplayName . '</span>'; endif;Pero no funciona, elimina las comas de todos los valores.
Está imprimiendo valor cada vez que no es necesario, concáctelos en una variable de cadena y luego imprímalo una vez que finalice el ciclo usando rtrim() para eliminar la última coma.
Debe corregir el código de bucle como se muestra a continuación:
if ( $hasCoAuthors ) : $coAuthor = ''; foreach ( $co_authors as $co_author ) : $coAuthor .= '<span class="co-author">' . $co_author->display_name . '</span>, '; endforeach; echo rtrim($coAuthor, ','); endif;Cree el html en una cadena, luego recorte la coma final usando trim() antes de repetirlo una vez cuando se complete el ciclo.
if ( $hasCoAuthors ) : $coAuthor = ''; foreach ( $co_authors as $co_author ) : $coAuthor .= '<span class="co-author">' . $co_author->display_name . '</span>, '; endforeach; echo rtrim($coAuthor, ','); endif;O como sugiere @CBroe
if ( $hasCoAuthors ) : $coAuthor = ''; foreach ( $co_authors as $k => $co_author ) : if ($k > 0 ) { $coAuthor .= ',' } $coAuthor .= '<span class="co-author">' . $co_author->display_name . '</span>'; endforeach; echo $coAuthor; endif;Si las claves son numéricas (0, 1, 2, etc.), puede usar simplemente este código para agregar , a 2nd y otros.
if ( $hasCoAuthors ) : foreach ( $co_authors as $key => $co_author ) : $coAuthor = ''; if ($key > 0) { $coAuthor = ', '; } $coAuthorDisplayName = $co_author->display_name; $coAuthor .= '<span class="co-author">' . $coAuthorDisplayName . '</span>, '; echo $coAuthor; endforeach; endif; La segunda forma es poner valores en array y usar implode .
if ( $hasCoAuthors ) : $coAuthors = []; foreach ( $co_authors as $key => $co_author ) : $coAuthorDisplayName = $co_author->display_name; $coAuthors[] = '<span class="co-author">' . $coAuthorDisplayName . '</span>'; endforeach; echo implode(', ', $coAuthors); endif;