La scorsa lezione abbiamo discusso come poter utilizzare le variabili all’interno del proprio codice e quali sono i tipi di valore più comuni con i quali ti troverai a lavorare più spesso.
Prima di proseguire ci tengo a farti capire che questo non significa che non esistono altri tipi di valori che puoi usare, oppure che hai appena conosciuto tutto quello che ti serviva per diventare uno sviluppatore PHP a tutti gli effetti.
Ti dovrebbe essere bastato vedere la lunghezza di questo corso per capire che saper sviluppare in PHP significa molto di più che essere in grado di giocare con qualche variabile, anche se stai imparando questo linguaggio per utilizzarlo all’interno di WordPress.
Man mano che proseguiremo con questo corso ti presenterò molti altri aspetti che rendono unico e interessante questo linguaggio, a partire dai contenuti presenti in questa stessa lezione.
Infatti quello che ho intenzione di fare è aiutarti a capire come rendere il tuo codice più intelligente e insegnare al tuo computer come prendere delle decisioni o più semplicemente ripetere delle operazioni noiose e ripetitive.
Hai già incontrato il mantra di ogni bravo sviluppatore, il DRY, con il quale veniamo spinti a non ripetere lo stesso codice all’interno del nostro programma; se siamo portati a fare una cosa del genere c’è qualcosa di sbagliato e quello che è consigliato di fare è prendere una boccata d’aria e tornare con la mente fresca ad analizzare il codice che abbiamo prodotto.
Anche se nelle prossime sezioni scoprirai come rendere il tuo codice più intelligente, quello che faremo nella prossima sezione è scoprire come fare in modo che il tuo computer sia in grado di prendere una decisione.
Il tuo computer è in grado di prendere una decisione
Verso la fine della lezione precedente ti ho presentato gli operatori di confronto, grazie a questi adesso sei in grado di impostare un’espressione che confronta due valori distinti.
$var = "Ciao"; $bool = $var != "Ciao";
Quello che ti dovresti aspettare all’interno della variabile $bool
è trovare il valore booleano false
perché la condizione che abbiamo impostato chiede se il valore contenuto in var
è diverso dalla stringa “Ciao” cosa che non è considerata vera perché il suo valore è uguale alla stringa “Ciao”.
Comprendo la semplicità di questo esempio ma mi è servito principalmente per farti ricordare uno degli operatori di confronto che abbiamo visto nella scorsa lezione e, soprattutto, spero di averti fatto sorgere in te la domanda: “Ma che me ne faccio dei valori booleani?”.
Considerando che in questa lezione andremo a scoprire proprio come sia possibile far prendere delle decisioni al computer; non posso fare a meno di dirti che sono operazioni incredibilmente utili, la cosa importante è imparare a utilizzarli.
Eccoci quindi di fronte al primo costrutto PHP che ci permetterà di fare delle operazioni in base al valore booleano generato da un confronto.
Capisco che detta così può forse far nascere qualche dubbio, ma ti posso assicurare che se sei in grado di formulare la frase se 3 è maggiore di 2 allora mostra “È vero” sei già a cavallo; tutto quello che ti resta da fare è scoprire come dirlo al PHP 🙂
Fai prendere decisioni grazie a un if
Quando si parla in inglese la parola se viene tradotta in if
e dato che tutti i linguaggi di programmazione presentano una sintassi descritta in questa, anche nel PHP viene utilizzato if
per informare l’interprete che si sta per trovare di fronte alla necessità di valutare una condizione. La forma più semplice per questo costrutto è la seguente:
if( condizione ){ //azioni da eseguire }
Con questo semplice blocco di codice voglio mostrarti nel dettaglio come viene dichiarato il costrutto if
.
Come ti dicevo poco fa, il nostro interprete PHP deve essere a conoscenza delle nostre intenzioni e per questo motivo dobbiamo per prima cosa utilizzare la parola chiave if
seguita dall’apertura di una parentesi tonda che sarà incaricata di contenere la valutazione creata grazie agli operatori di confronto, quelli che abbiamo conosciuto la scorsa lezione.
Una volta dichiarata la condizione hai la possibilità di inserire una o più azioni da eseguire se la condizione valutata risulta essere vera. Riprendendo l’esempio fatto poco fa dove ci chiedevamo se 3 è maggiore di 2, ecco come viene tradotto in codice:
if ( 3 > 2 ){ echo "È vero!"; }
Con questo semplice esempio spero di averti fatto capire meglio la situazione.
Praticamente una volta che l’interprete incontra la parola chiave if
valuta la condizione fra parentesi e soltanto se trova questa vera esegue il codice contenuto all’interno delle parentesi graffe.
Per dovere di cronaca devo avvisarti che non sempre è necessario usare le parentesi graffe, ma facendo riferimento agli standard PHP (e WordPress) introdotti nella lezione precedente la loro presenza è sempre richiesta perché migliora la leggibilità del codice.
Potrai omettere le parentesi graffe quando l’azione che vogliamo svolgere è una sola, ovvero potremmo riscrivere il costrutto precedente in questo modo:
if ( 3 > 2 ) echo "È vero!";
Volendo avremmo potuto anche scriverlo senza andare a capo, in fin dei conti l’interprete PHP è abbastanza sveglio da capire che se la condizione risulta vera il nostro unico intento è quello di lanciare una singola operazione, in questo caso rappresentata dal costrutto echo
.
if ( 3 > 2 ) echo "È vero!";
Per quanto possano sembrare delle sintassi più veloci e semplici da utilizzare mi dispiace contraddirti ma durante il corso non andremo a utilizzarle ulteriormente questo perché il mio scopo è quello di insegnarti la sintassi e le strutture logiche del PHP in modo che tu possa lavorare all’interno di WordPress e collaborare con altri sviluppatori.
Come detto precedentemente, rispettare gli standard ti aiuta in entrambe le situazioni ed è per questo che continueremo a farlo per tutto il corso.
Sorvolando quindi gli aspetti di sintassi e collaborazione adesso vorrei affrontare con te un altro argomento molto importante: come posso dire al PHP di fare una determinata azione se la condizione valutata non fosse vera?
Con gli esempi mostrati precedentemente siamo stati in grado di istruire l’interprete PHP su cosa fare se la condizione risulta vera, ma che fare quando questa non lo è?
Vediamo se con questo esempio riesco a chiarire la situazione.
$one = 1; $two = 2; if( $one == $two ){ echo "Le variabili hanno lo stesso valore"; } else { echo "Le variabili non hanno lo stesso valore"; }
Eccoci di fronte a una nuova parola chiave che ci permette di dire all’interprete PHP quale sia l’azione (o le azioni) che deve svolgere nel caso in cui la condizione valutata restituisca un valore booleano pari a false
.
Quello che in italiano viene pronunciato come altrimenti in inglese si scrive else
e, dal mio punto di vista, non fa assolutamente una piega.
Con l’esempio qua sopra ho voluto mostrarti che le condizioni possono essere impostate anche sfruttando i nomi delle variabili (tanto ad essere confrontati sono i valori contenuti) e cercando di tradurre in lingua italiana cosa dice la nostra sintassi if-else
diciamo che dovrebbe suonare simile alla seguente frase: se il valore di $one
è uguale al valore di $two
mostra “Le variabili hanno lo stesso valore” ALTRIMENTI mostra “Le variabili non hanno lo stesso valore”.
Un esempio semplice lo riconosco, ma spero che ti abbia aiutato a capire meglio la nostra situazione.
Se pensavi di aver terminato qua la conoscenza di if
mi dispiace deluderti perché c’è ancora una aspetto che non abbiamo preso in considerazione; come dobbiamo comportarci se vogliamo eseguire più confronti?
$one = 1; if( $one <= 0 ){ echo 'La variabile $one è uguale o minore di 0'; } elseif ( $one == 1 ){ echo 'La variabile $one è uguale a 1'; } else { echo 'La variabile $one è maggiore di 1'; }
Ecco che, ancora una volta, conoscere la lingua inglese può tornarci utile.
Se prima abbiamo fatto affidamento alla parola else
(allora) per dire all’interprete PHP che doveva eseguire un’azione diversa nel caso in cui la condizione risultasse falsa ora hai scoperto che basta dire elseif
(allora se) per passare una seconda condizione da valutare nel caso in cui la prima risulti falsa.
Per la sintassi PHP sarebbe stato corretto anche scrivere else if
, aggiungendo uno spazio tra le due parole, ma ancora una volta la sintassi che ti presento in questo corso rispetta gli standard proposti all’interno del Codex WordPress e la versione senza spazio è preferita e consigliata.
Dato che non ci sono limiti al numero di elseif
che possiamo introdurre all’interno del nostro codice, nella prossima sezione ti presenterò un costrutto che permette di semplificare questa sintassi e anche se non molto usato ritengo comunque utile che tu la conosca.
Prima di fare questo però voglio presentarti un’altra caratteristica della sintassi PHP e del costrutto if
, ovvero la possibilità di inserire più condizioni all’interno delle parentesi tonde sfruttando gli operatori logici.
Gli peratori logici sono diversi da quelli già analizzati e si possono trovare all’interno del PHP sotto forma di and
o &&
per indicare che entrambe le condizioni presentate devono risultare vere oppure sotto forma di or
o ||
per indicare che è necessaria soltanto che una delle condizioni presentate risulti vera per eseguire l’azione proposta.
Riconosco che spiegate in italiano questi operatori logici possono sembrare ben più difficili di quanto sono, ecco perché ti ho preparato i seguenti esempi per chiarire meglio la situazione:
//Sintassi && if( condizione1 && condizione2 ){ //Questo blocco viene eseguito soltanto se entrambe le condizioni risultano vere } //Esempio && if( 1 == 1 && 2 == 2 ){ echo "Entrambe le condizioni sono vere"; } //Sintassi || if( condizione1 || condizione2 ){ //Questo blocco viene eseguito anche se soltanto una condizione è vera } //Esempio || 1 if( 1 == 2 || 2 == 2 ){ echo "Viene mostrata grazie alla seconda condizione"; } //Esempio || 2 if( 1 == 1 || 3 == 2 ){ echo "Viene mostrata grazie alla prima condizione"; } //Esempio || 3 if( 1 == 2 || 2 == 3 ){ //Questa azione non viene mai eseguita perché nessuna condizione è vera }
All’interno di questo corso non troveremo spesso gli operatori logici appena descritti, ma spero che questa breve introduzione ti aiuti nel futuro quando ti troverai a studiare il codice di altri sviluppatori.
Come semplificare una struttura if-elseif
con uno switch
Precedentemente ti avevo parlato di una sintassi in grado di semplificare la costruzione di una struttura if-elseif-else
, eccoci quindi giunti all’interno della sezione in cui ti presento il costrutto switch
.
Anche se ritenuta una sintassi poco chiara, è bene conoscerla perché il mio intento è quello di prepararti alla collaborazione sul codice PHP, sia che tu voglia creare i tuoi temi e plugin il codice che potrai generare dovrà essere sempre rilasciato sotto licenza GPL.
Allo stesso modo, se il tuo scopo è quello di prendere il codice che altri sviluppatori hanno creato per WordPress, GPL anch’esso, per quanto gli standard di questa piattaforma possano aiutare a definire delle linee guida non posso sapere il tipo di codice che ti troverai di fronte; per questo motivo ho deciso di presentarti, seppur velocemente, anche questo costrutto.
Come detto precedentemente, con switch
sarai in grado di risparmiare del tempo e caratteri per la creazione di costrutti if-elseif
, ma come? Ebbene, ecco la sua sintassi con un esempio dal vivo:
switch( $var ){ case 1: echo '$var uguale a 1'; break; case 2: echo '$var uguale a 2'; break; case 3: echo '$var uguale a 3'; break; default: echo '$var non risulta uguale a 1, 2 o 3.'; }
Con questa soluzione siamo in grado di passare a switch
la variabile che vogliamo controllare all’interno delle parentesi tonde, questa verrà poi confrontata con i valori presenti alla destra dei vari case
(nel nostro esempio gli interi).
Nel momento in cui il valore contenuto nella variabile corrisponde a uno di quelli presentati nei vari case
allora verrà eseguita l’azione specificata, nel nostro caso il semplice echo
.
Ci sono due cose che vorrei mettere bene in chiaro prima di passare a presentarti i vari cicli, ovvero la presenza di due parole chiave molto importanti per questo tipo di struttura.
La prima è default
che può essere paragonata al già conosciuto else
presa in considerazione soltanto se tutti i precedenti case
hanno restituito un valore di falsità.
L’altra parola interessante è invece break
grazie alla quale possiamo interrompere l’esecuzione di un determinato case
e uscire dallo switch
. Se la parola break
dovesse mancare, nel momento in cui un determinato case
viene considerato valido verranno eseguite tutte le azioni sottostanti fintanto che non viene incontrato un brake
.
È giunto il momento di passare oltre, se ritieni che l’introduzione a switch
debba essere migliorata o se ti ho lasciato con qualche dubbio non esitare a presentarti all’interno del nostro forum e fare la tua richiesta, questo mi aiuterà a capire se l’argomento necessita degli approfondimenti e di darti supporto immediato.
Facciamo ripetere un determinato numero di passi grazie al for
Iniziamo adesso con una nuova sezione di questa lezione all’interno della quale scoprirai come sfruttare la potenza di calcolo del tuo server per eseguire tutti quei compiti ripetitivi che tu, giustamente, preferisci evitare.
Grazie ai cicli potrai proprio fare questo e quella che vedi qua sotto è la sintassi base del ciclo for
.
for( variabile di controllo; condizione; incremento ){ //azioni da ripetere }
Rispetto alle sintassi che abbiamo studiato fin ora, quella del ciclo for
sembra forse una delle più complesse ma ti invito a non farti ingannare dalle apparenze perché una volta compreso che cosa è in grado di fare questo ciclo sono sicuro che anche la sua sintassi ti tornerà molto più semplice da comprendere.
Facciamo quindi subito un esempio; diciamo che a scuola di programmazione ti è stato chiesto di mostrare con il PHP i numeri da uno a dieci. Con le conoscenze che possiedi fino a ora molto probabilmente scriveresti qualcosa del genere:
echo "1<br>"; echo "2<br>"; echo "3<br>"; echo "4<br>"; echo "5<br>"; echo "6<br>"; echo "7<br>"; echo "8<br>"; echo "9<br>"; echo "10";
In questo esempio ho inserito l’elemento <br>
per evitare che sul tuo browser si formasse una stringa continua di numeri.
Abbiamo raggiunto il risultato desiderato, in fin dei conti sulla tua pagina adesso sono presenti tutti i numeri da 1 a 10; però con questo esempio abbiamo completamente ignorato il consiglio dato dal DRY, infatti abbiamo ripetuto ben 10 volte la stessa sintassi.
Avrai già intuito che il ciclo for
è la soluzione ideale per questo tipo di operazioni, ma come possiamo istruire il nostro interprete PHP per fargli contare fino a 10?
Pensiamo un attimo come facciamo noi esseri umani quando pensiamo a mente.
Per prima cosa abbiamo bisogno di ricordarci fin dove siamo arrivati a contare, dobbiamo essere in grado di calcolare la cifra successiva e dobbiamo sapere quando fermarci.
Anche se in ordine diverso, queste sono le stesse cose che ci ha chiesto il ciclo for
all’interno delle parentesi tonde:
- abbiamo una variabile di controllo che ci permette di comunicare al computer il punto di partenza del nostro conteggio;
- impostiamo una condizione in modo tale che quando questa non sarà più vera il nostro ciclo potrà terminare;
- e grazie all’incremento possiamo dire al PHP di quanto incrementare la nostra variabile di controllo a ogni ciclo.
Adesso che queste cose sono state chiarite, credo proprio che sarai in grado di comprendere meglio il prossimo esempio:
for( $i = 1; $i <= 10; $i++ ){ echo "$i"; }
Con solo tre righe di codice siamo stati in grado di risolvere lo stesso problema, se provi a eseguire questo codice all’interno del tuo browser noterai che il tuo computer è stato in grado di contare fino a 10 senza alcun problema.
Torneremo sicuramente a utilizzare il ciclo for
nelle prossime lezioni, ma se devo essere onesto con te esiste un tipo di ciclo ancor più interessante, si comporta come questo ma è interamente dedicato agli array.
Conosciamo gli elementi di un array con foreach
Essere in grado di usare tutti i valori contenuti all’interno di un array è sicuramente un fattore interessante ma prima di poter fare questo ho bisogno di presentarti come si accede a un singolo valore.
Ti ricordi che nella lezione precedente ti ho presentato le funzioni var_dump()
e print_r()
?
Grazie a queste ti ho mostrato come sia possibile studiare tutto il contenuto presente all’interno di un array ma anche se ho fatto riferimento al suo indice (i numeri inseriti all’interno delle parentesi quadre), non ti ho mostrato come poter accedere ai valori contenuti e utilizzarli nel tuo codice.
Ebbene, diciamo che l’indice è la mappa che permette all’interprete PHP di accedere ai valori contenuti all’interno di un array.
Tendenzialmente questo è un indice numerico che parte da zero e incrementa assieme al numero di valori contenuti dall’array stesso. Cerchiamo di fare un piccolo esempio per chiarire la situazione:
$colors = array( "rosso", //indice 0 "giallo", //indice 1 "verde", //indice 2 "blue", //indice 3 "viola", //indice 4 "bianco", //indice 5 "nero" //indice 6 );
In questo esempio ti ho mostrato, attraverso i commenti, l’indice dei singoli valori in esso contenuti, ma come possiamo utilizzarli all’interno di una frase? Come faccio a mostrare uno dei valori presenti nell’array?
echo "Mi piace molto il $colors[2]";
Se hai pensato che questo codice mostrerà la frase “Mi piace molto il colore verde” hai pensato giusto 🙂
Dato che l’indice è numerico possiamo utilizzare il suo stesso valore all’interno delle parentesi quadre alla destra della variabile contenente l’array e il gioco è fatto.
Però mi piace fare sempre le cose più difficili, diciamo che abbiamo la necessità di mostrare tutti i valori contenuti al suo interno. Potrebbe sembrare che il ciclo for
sia il ciclo adatto a questo tipo di operazioni… Vediamo un po’ come potremmo fare:
for( $i = 0; $i < count( $colors ); $i++ ){ echo "In posizione $i trovo $colors[$i]"; }
Questo codice non sembra troppo difficile e allo stesso tempo permette di utillizzare un tipo di ciclo che già conosci, ma siamo sicuri che sia il migliore?
Dato il titolo di questa sezione, probabilmente no.
Infatti potresti usare un ciclo che non richiede di usare la funzione count()
(una funzione che conta il numero di elementi) come condizione.
Dovresti ormai aver capito, aiutato anche dal titolo di questa stessa sezione, che il ciclo foreach
è molto più indicato per questo scopo. Vediamo subito un esempio:
foreach( $colors as $color ){ echo "Il colore $color si trova nell'array.<br>"; }
Come puoi notare tu stesso la sintassi è molto più semplice e il vantaggio di non avere il bisogno di contare gli elementi presenti nell’array ci permette anche di scrivere meno codice. Però aspetta un attimo…
Che fine ha fatto la posizione nell’indice dei vari colori?
In questo tipo di sintassi non è possibile recuperarla, ma la buona notizia è che questa sintassi è semplificata; ovvero se il nostro unico interesse è quello di mostrare il valore contenuto nel nostro array, e non il suo indice, il blocco di codice appena presentato è più che sufficiente.
Vediamo però come si presenta la sintassi se abbiamo bisogno di conoscere anche la posizione nell’indice del nostro elemnto:
foreach( $colors as $indice => $color ){ echo "Il colore $color si trova nell'array nella posizione $indice."; }
Vorrei farti notare che i nomi $indice
e $color
sono stati usati soltanto a scopo illustrativo, giusto per farti capire il funzionamento di foreach
dato che molto spesso non le troverai all’interno delle parentesi tonde.
Questo perché le due variabili possono essere personalizzate a seconda dell’utilizzo, infatti nel nostro caso è quello che abbiamo fatto; generalmente la sintassi più comune che trovi all’interno dei vari codici è la seguente:
foreach( $array as $key => $value ){ //operazioni }
Spero di non averti confuso troppo le idee presentandoti soltanto adesso la sua sintassi, ma ti posso assicurare che l’ho fatto soltanto per il tuo bene.
Ci tenevo in particolar modo a farti comprendere il funzionamento del ciclo foreach
prima ancora di descriverne la sintassi perché nutrivo la speranza di farti sorgere la seguente domanda: ma se foreach
inserisce gli indici al posto mio, perché mai avrei bisogno di utilizzarli?
Se non ti è passata per la mente una domanda del genere nessun problema, risponderò comunque cercando di insegnarti qualcosa di nuovo.
Il tipo di array che ti ho presentato nella precedente lezione sono degli array a indice numerico, questo vuol dire che il suo indice è rappresentato da un numero intero che parte da 0 e che incrementa man mano che aumentano gli elementi contenuti.
La cosa ancora più interessante è che questo non è l’unico tipo di indice che puoi utilizzare; infatti ti sarà possibile definire tu stesso il valore che vuoi dare all’indice e potrai addirittura assegnare altri array come valori di un array principale.
Come scopriremo nel dettaglio con le prossime lezioni, in WordPress questa è una pratica più che comune dato che si trova a dover consultare molte informazioni all’interno del database e ha la necessità di organizzarle al meglio.
Per fare un esempio diciamo che tutti gli articoli sono identificati da un ID (un numero intero che incrementa di uno al salvataggio di ogni nuovo articolo) e che tutti hanno tre elementi: un titolo, un corpo e una URL.
Adesso che abbiamo definito gli elementi di un articolo vediamo come potrebbe essere la sua struttura all’interno di un array:
$post = array( 'post_title' => "Il titolo del mio articolo", 'post_content' => "Questo è il contenuto del mio articolo", 'guid' => "http://miosito.it/mio-articolo" );
Eccoti di fronte al tuo primo array associativo dove al posto delle chiavi numeriche troviamo delle parole che ci aiutano a identificare il valore presente nel campo.
Riprendendo l’esempio precedente, grazie al ciclo foreach
possiamo creare un ciclo di questo genere:
foreach( $post as $key => $value ){ echo "Il valore in posizione $key risulta $value."; }
Comprendo che al momento questa possibilità non risulta molto utile, in fin dei conti all’interno di un array associativo le chiavi devono essere uniche e in questo caso risulta poco intuitivo, ma nel tentativo di renderti il questo concetto ancora più utile voglio presentarti un altro tipo di array, un array che può contenere al suo interno altri array: un array multidimensionale.
$posts = array( //indice 1 array( 'post_title' => "Titolo1", 'post_content' => "Contenuto1", 'guid' => "Link1" ), //indice 2 array( 'post_title' => "Titolo2", 'post_content' => "Contenuto2", 'guid' => "Link2" ), //indice 3 array( 'post_title' => "Titolo3", 'post_content' => "Contenuto3", 'guid' => "Link3" ), );
Ho provato a usare i commenti per mostrarti la situazione che ci troveremo di fronte utilizzando questi array. Praticamente non è altro che un archivio di articoli dove l’indice numerico dell’array principale permette di accedere all’array associativo in esso contenuto e di conseguenza alle varie informazioni.
Ti do un consiglio, prova a lanciare un print_r()
con l’array $posts
al suo interno.
Probabilmente la situazione al momento ti può sembrare fin troppo complicata, ma sono sicuro che non appena arriveremo a capire come WordPress organizza le informazioni all’interno del suo database tutto ti tornerà più chiaro.
Intanto cerchiamo di capire come sia possibile sfruttare il ciclo foreach
con questo mastodontico array multidimensionale.
Diciamo che abbiamo bisogno di consocere tutti i titoli dei miei articoli, che cosa posso fare? Potrei creare un nuovo array $titoli
dove salvo al suo interno tutte queste informazioni per utilizzarle in un secondo momento. Ecco come:
$titoli = array(); foreach( $posts as $key => $value ){ $titoli[$key] = $value['post_title']; }
Una volta completato il ciclo all’interno della variabile $titoli
troverò salvati tutti i titoli presenti nei singoli array pronti da essere usati all’interno della mia applicazione.
Probabilmente in quest’ultima sezione ho fatto il passo più lungo della gamba ma tu sei il mio studente e sei la persona incaricata a dirmi se sto facendo un buon lavoro o meno.
Per prima cosa voglio rassicurarti anticipandoti che questi argomenti verranno trattati nuovamente nelle prossime lezioni e avremo nuovemente modo, quando avrai fissato nuove conoscenze, di vedere da vicino il funzionamento degli array associativi e di quelli multidimensionali.
La cosa importante che volevo mettere in mostra è che il ciclo foreach
è molto più potente e molto più utile di quello che si può intuire all’interno di un semplice array con indice numerico e che le sue funzionalità possono essere sfruttate anche per la gestione di dati più complessi.
Cerchiamo quindi di concludere questa importante lezione presentando un ciclo molto più semplice.
Fai eseguire un’operazione fintanto che la condizione è vera grazie a while
Ti ho promesso di concludere in leggerezza e infatti il ciclo while
ha una struttura molto più intuitiva rispetto al for
o al foreach
. Se ti è mai capitato di vedere il loop WordPress avrai scoperto questo ciclo con il seguente blocco di codice:
if ( have_posts() ){ while ( have_posts() ) { //azioni ripetute } }
Come puoi vedere, già da questo piccolo blocco di codice si intuisce che i diversi cicli possono collaborare tra loro. Sicuramente non conosci ancora la funzione have_posts()
, visto sopratutto che non abbiamo ancora scoperto le funzioni (anche se porrò rimedio a questa lacuna a breve).
Per farla corta, questa funzione va a interrogare il database del nostro WordPress alla ricerca di articoli, fintanto che trova articoli nel database restituisce true
e il riferimento all’articolo corrente.
Una volta che sono stati trovati gli articoli si passa alla valutazione di while
che prende le informazioni dell’articolo corrente, le mostra all’interno del suo blocco di codice e passa al prossimo articolo continuando a valutarlo tramite la funzione have_posts()
; una volta giunto al termine degli articoli questa funzione restituirà un valore false
che permetterà di far interrompere l’esecuzione del nostro while
.
In termini più semplici e più lontani da una realtà complessa come WordPress, ecco come si potrebbe strutturare un ciclo while
:
$i = 1; while ( $i <= 10 ) { echo "$i."; //incremento $i $i++; }
Se ti sembra di aver già visto questo codice da qualche parte significa che hai prestato attenzione visto che in questo contesto il ciclo while
svolge la stessa funzione del ciclo for
presentato precedentemente; praticamente ci permette di mostrare i numeri da 1 a 10 all’interno della pagina HTML generata.
Ho preferito presentarti questo ciclo con la logica utilizzata da WordPress perché in fin dei conti quello è l’utilizzo più comune, ovvero la possibilità di lanciare dei comandi fintanto che una data condizione risulta vera.
Quest’ultimo esempio è semplicemente un clone del ciclo for
e dal mio punto di vista presenta addirittura una sintassi ancora più complicata.
Man mano che proseguiremo in questo corso ti mostrerò come sia possibile utilizzare gli array multidimensionali e i cicli while
per mostrare tutte le informazioni contenute al loro interno, proprio come fa WordPress per mostrare i suoi articoli.
Conclusioni
Mi devo congratulare con te, se sei riuscito a portare a termine questa lezione hai fatto un ottimo investimento nella tua formazione!
Alcuni dei concetti presentati sono leggermente più avanzati del livello nel quale ti trovi adesso e come detto più volte ti assicuro che torneremo ad analizzarli nelle prossime lezioni; ma intanto la cosa importante che hai fatto è stata quella di imparare le basi di questo potentissimo linguaggio.
Con gli esempi e le spiegazioni che hai appreso durante questa lezione ora sei in grado di far scegliere al computer quali sono le operazioni da svolgere e in quali contesti; soprattutto sei in grado di sfruttare la sua immensa potenza di calcolo per eseguire operazioni ripetitive e stancanti senza dover rubare il tuo tempo ed energie!
In questa lezione ti ho lasciato diverse domande che sono convinto ti aiuteranno a fissare al meglio i concetti appena appresi, se hai qualche problema o c’è una soluzione che non ti torna non esitare a scrivere nella community e a chiedere aiuto.
Abbiamo inserito questo strumento all’interno di skillsAndMore proprio per permetterti a te e agli altri skillati di crescere attraverso il confronto e non c’è cosa che mi dia più piacere se non aiutarti a chiarire i tuoi dubbi.
Lascia un commento