W3docs

PHP Looping: Capire il Ciclo Foreach

Il ciclo foreach è uno strumento potente ed essenziale per gli sviluppatori PHP. Offre un modo pratico per iterare su array e object in un ciclo.

Il ciclo foreach è il modo più comodo per iterare su array e object in PHP. A differenza del ciclo for, non richiede alcun contatore né calcoli sulla lunghezza — scorre semplicemente ogni elemento in ordine. Questa guida tratta la sua sintassi, come leggere sia le chiavi che i valori, la modifica degli elementi per riferimento, i cicli annidati e le insidie comuni che mettono in difficoltà i principianti.

Cos'è il Ciclo Foreach?

Il ciclo foreach è un ciclo progettato specificamente per array e object. Attraversa una collezione e ti consegna ogni elemento uno alla volta, così non devi mai gestire una variabile indice né preoccuparti di uscire dai limiti. Questo lo rende ideale per array indicizzati, array associativi e object iterabili allo stesso modo.

Esiste in due forme:

  • foreach ($array as $value) — quando hai bisogno solo di ogni valore.
  • foreach ($array as $key => $value) — quando hai bisogno anche di ogni chiave.

Se hai bisogno di un contatore, di un passo diverso da 1, o di eseguire un ciclo un numero fisso di volte non legato a un array, usa un ciclo for o while. Consulta PHP Loops per una panoramica di tutti i tipi di ciclo.

Sintassi del Ciclo Foreach

La sintassi del ciclo foreach è semplice e diretta. È composta dalla parola chiave foreach, seguita da un insieme di parentesi che definiscono l'array o l'object su cui eseguire il ciclo. All'interno delle parentesi si definisce una variabile per contenere il valore di ogni elemento durante l'iterazione del ciclo.

Ecco un esempio della sintassi del ciclo foreach:

Sintassi PHP del Ciclo Foreach

foreach ($array as $value) {
    // code to be executed for each element
}

In questo esempio, $array è l'array o l'object su cui vuoi eseguire il ciclo, e $value è la variabile che contiene il valore di ogni elemento durante l'iterazione.

Per gli array associativi o gli object in cui hai bisogno sia della chiave che del valore, puoi usare l'operatore =>:

foreach ($array as $key => $value) {
    // code to be executed for each element
}

Iterare con chiavi e valori

Quando un array mappa chiavi su valori, la forma $key => $value ti fornisce entrambi contemporaneamente:

<?php

$capitals = array(
    "France"  => "Paris",
    "Japan"   => "Tokyo",
    "Egypt"   => "Cairo"
);

foreach ($capitals as $country => $city) {
    echo "The capital of $country is $city.\n";
}

Questo stampa:

The capital of France is Paris.
The capital of Japan is Tokyo.
The capital of Egypt is Cairo.

Modificare gli elementi dell'array per riferimento

Per impostazione predefinita foreach copia ogni valore, quindi assegnare alla variabile del ciclo non cambia l'array originale. Aggiungi & come prefisso al valore per iterare per riferimento e modificare gli elementi in-place:

<?php

$prices = array(10, 20, 30);

foreach ($prices as &$price) {
    $price *= 2;          // changes the real array element
}
unset($price);             // important: break the reference

print_r($prices);

Questo stampa:

Array
(
    [0] => 20
    [1] => 40
    [2] => 60
)

Attenzione: esegui sempre unset($price) dopo un ciclo per riferimento. La variabile continua a puntare all'ultimo elemento, e riutilizzarla in un ciclo successivo corrompe silenziosamente i tuoi dati — uno dei bug PHP più comuni.

Utilizzo del Ciclo Foreach

Il ciclo foreach viene usato per attraversare array e object. Ti consente di accedere a ogni elemento dell'array o dell'object uno alla volta, ed eseguire un'azione specifica per ogni elemento. Per esempio, potresti usare il ciclo foreach per stampare tutti gli elementi di un array, o per eseguire un calcolo per ogni elemento in un object.

Ecco un esempio di come usare il ciclo foreach in PHP:

Utilizzo PHP del Ciclo Foreach

php— editable, runs on the server

In questo esempio, abbiamo creato un array di colori, e poi usato il ciclo foreach per stampare ogni colore nell'array. Il ciclo itera sugli elementi dell'array $colors, e per ogni iterazione, il valore dell'elemento corrente viene assegnato alla variabile $color.

Esempi del Ciclo Foreach

Il ciclo foreach è uno strumento flessibile che può essere usato in molti modi. Ecco alcuni esempi di come puoi usare il ciclo foreach nel tuo codice PHP:

  • Stampare gli elementi di un array:

PHP - Stampare gli elementi di un array usando il ciclo foreach

php— editable, runs on the server
  • Calcolare la somma di un array:

PHP - Calcolare la somma di un array usando il ciclo foreach

php— editable, runs on the server
  • Accedere alle proprietà di un object:

PHP - Accedere alle proprietà di un object nel ciclo foreach

<?php

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$people = array(
    new Person("John", 25),
    new Person("Jane", 30),
    new Person("Jim", 35)
);

foreach ($people as $person) {
    echo "Name: " . $person->name . ", Age: " . $person->age . "<br>";
}

?>

In questo esempio, abbiamo creato una classe Person con due proprietà, name e age. Abbiamo poi creato un array di object Person, e usato il ciclo foreach per accedere alle proprietà di ogni object Person. Il ciclo itera sugli elementi dell'array $people, e per ogni iterazione, il valore dell'object Person corrente viene assegnato alla variabile $person. Usiamo poi l'operatore -> per accedere alle proprietà dell'object Person.

Cicli Foreach Annidati

Per lavorare con un array multidimensionale, annida un foreach all'interno di un altro. Il ciclo esterno scorre le righe, e il ciclo interno scorre le colonne di ogni riga:

<?php

$matrix = array(
    array(1, 2, 3),
    array(4, 5, 6)
);

foreach ($matrix as $row) {
    foreach ($row as $cell) {
        echo $cell . " ";
    }
    echo "\n";   // new line after each row
}

Questo stampa:

1 2 3
4 5 6

Controllare il Ciclo con break e continue

All'interno di un foreach puoi usare break per interrompere il ciclo anticipatamente e continue per passare all'elemento successivo:

<?php

$numbers = array(1, 2, 3, 4, 5, 6);

foreach ($numbers as $number) {
    if ($number % 2 !== 0) {
        continue;        // skip odd numbers
    }
    if ($number > 4) {
        break;           // stop once we pass 4
    }
    echo $number . " ";
}

Questo stampa:

2 4

I numeri dispari 1, 3 e 5 vengono saltati da continue; 2 e 4 vengono stampati; e quando il ciclo raggiunge il numero pari 6 (maggiore di 4), break lo interrompe completamente.

Conclusione

Il ciclo foreach è uno strumento essenziale per gli sviluppatori PHP. Offre un modo comodo e facile da usare per iterare su array e object, consentendoti di accedere ed eseguire azioni su ogni elemento. Che tu stia stampando gli elementi di un array, calcolando somme o accedendo alle proprietà di un object, il ciclo foreach è uno strumento versatile che può essere usato in molteplici modi.

Perché non provare a usare il ciclo foreach nel tuo codice PHP oggi stesso, e scoprire come può semplificare e ottimizzare il tuo processo di sviluppo?

Esercitazione

Pratica
Cosa fa il ciclo 'foreach' in PHP?
Cosa fa il ciclo 'foreach' in PHP?
Was this page helpful?