Istruzione continue in PHP

Oltre all'istruzione break, che termina l'esecuzione di un ciclo, esiste anche l'istruzione continue, che avvia una nuova iterazione del ciclo. Questa istruzione a volte può essere utile per semplificare il codice, sebbene quasi sempre il problema possa essere risolto anche senza di essa. Diamo un'occhiata a un esempio pratico.

Supponiamo di avere un array di numeri. Iteriamolo con un ciclo e eleviamo al quadrato i numeri divisibili per 2 e li stampiamo a schermo, mentre i numeri divisibili per 3, li eleviamo al cubo e li stampiamo a schermo.

Ecco la soluzione al problema descritto:

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  
  foreach ($arr as $elem) {
    if ($elem % 2 === 0) {
      $res = $elem * $elem;
      echo $res;
    } elseif ($elem % 3 === 0) {
      $res = $elem * $elem * $elem;
      echo $res;
    }
  }
?>

Come puoi vedere, la riga echo $res si ripete due volte. Portiamola fuori dall'if, in questo modo:

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  
  foreach ($arr as $elem) {
    if ($elem % 2 === 0) {
      $res = $elem * $elem;
    } elseif ($elem % 3 === 0) {
      $res = $elem * $elem * $elem;
    }
    
    echo $res; // abbiamo spostato l'output fuori dalla condizione
  }
?>

Tuttavia, ora il nostro script funziona in modo leggermente diverso: succederà che anche per gli elementi ordinari, non elaborati dal nostro if, verrà eseguita l'output della variabile $res a schermo, cosa che in base alle condizioni del nostro problema non ci serve.

Risolviamo il problema, aggiungendo alla nostra if un'ulteriore condizione else, che verrà attivata per gli elementi non divisibili per 2 e 3, e richiamiamo l'istruzione continue, che ci reindirizzerà immediatamente alla nuova iterazione del ciclo:

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  
  foreach ($arr as $elem) {
    if ($elem % 2 === 0) {
      $res = $elem * $elem;
    } elseif ($elem % 3 === 0) {
      $res = $elem * $elem * $elem;
    } else {
      continue; // passeremo alla nuova iterazione del ciclo
    }
    
    echo $res; // verrà eseguito se divisibile per 2 o 3
  }
?>
Задание 1

Scrivi un ciclo che stampi solo i numeri pari da 1 a 100, saltando quelli dispari utilizzando continue.