¿Cómo agregar “else” a “foreach”?

2 minutos de lectura

no se como agregar else a foreach!

aquí está mi código:

<?php $terms = get_the_terms( $post->ID , 'actor' ); 
    foreach ( $terms as $term ) {
        $term_link = get_term_link( $term, 'actor' );
        if( is_wp_error( $term_link ) )
        continue;
        echo '<a href="' . $term_link . '">' . $term->name . '</a>';
    }
?>

  • y tienes en realidad intenté cualquier cosa ¿hasta aquí? de paso: foreach no soporta elsepero if lo hace.

    – Franz Gleichman

    24 de febrero de 2017 a las 7:15


  • lo que quieres lograr ….. lógicamente?

    – Ingenuidad

    24 de febrero de 2017 a las 7:15


  • @FranzGleichmann – Curiosamente, hubo algunas sugerencias que vi recientemente proponiendo un else por foreach

    – Marcos Baker

    24 de febrero de 2017 a las 8:17

  • @MarkBaker He visto algo similar recientemente, creo que como parte de twig, y no es una mala idea, pero a partir de ahora, la mayoría de los lenguajes (incluido PHP) no implementan nada parecido.

    – Franz Gleichman

    24 de febrero de 2017 a las 8:22

Podrías intentar algo similar:

<?php 
    $terms = get_the_terms( $post->ID , 'actor' ); 
    if ($terms) {
        foreach ( $terms as $term ) {
            $term_link = get_term_link( $term, 'actor' );
            if ( is_wp_error( $term_link ) )
                continue;
            echo '<a href="' . $term_link . '">' . $term->name . '</a>';
        }   
    } else {
        // do the work for else
    }
?>

foreach es un bucle. else es parte de una declaración condicional. Parece que solo quieres un condicional dentro de tu ciclo. Esto sería simplemente un condicional estándar.

if ($a > $b) {
  echo "a is greater than b";
} else {
  echo "a is NOT greater than b";
}

Supongo que quieres break el bucle en ese caso.

En aras de la exhaustividad, hay un RFC antiguo (10 años) que propone loop+else:

https://wiki.php.net/rfc/loop_else

¿Ha sido útil esta solución?