Per offrirti un'esperienza di navigazione sempre migliore, questo sito utilizza cookie propri e di terze parti, partner selezionati. I cookie di terze parti potranno anche essere di profilazione.
Le tue preferenze si applicheranno solo a questo sito web. Puoi modificare le tue preferenze in qualsiasi momento ritornando su questo sito o consultando la nostra informativa sulla riservatezza.
E' possibile rivedere la nostra privacy policy cliccando qui e la nostra cookie policy cliccando qui.
Per modificare le impostazioni dei cookies clicca qui
  • seguici su feed rss
  • seguici su twitter
  • seguici su linkedin
  • seguici su facebook
  • cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



ricordami per 365 giorni

HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO ? CLICCA QUI E REGISTRATI !

L'operatore ternario in PHP, l'alternativa al costrutto if .. else.

di :: 05 novembre 2020
L'operatore ternario in PHP, l'alternativa al costrutto if .. else.

L'operatore ternario di PHP è una valida alternativa ai costrutti condizionali, cioè quelli che generalmente sono basati sull'utilizzo combinato delle clausole "if" ed "else".

Iniziamo la spiegazione con una rapida introduzione agli operatori in PHP

Gli operatori in PHP

Gli operatori vengono utilizzati per manipolare o elaborare dati contenuti nelle variabili: possono ad esempio eseguire operazioni matematiche (come la somma o la moltiplicazione), o operare su dati di tipo stringa, o eseguire altre funzioni.

In PHP abbiamo tre tipologie di operatori: unari, binari e ternari.

Gli operatori unari

Sono utilizzati per operazioni di incremento/decremento, e necessitano di un solo operando, e da questo nasce il loro nome.
Ad esempio, per aumentare di una unità una variabile $x, scriviamo

$x++

Gli operatori binari

Necessitano di due operandi. Vediamoli molto rapidamente con esempi.

  • Operatore di stringa: serve a concatenare le stringhe.
    Ad esempio:
    <?php
    $x = "Hello";
    $y = " World!";
    echo $x . $y; // Hello World!
    ?>​
  • Operatori aritmetici: sono utilizzati per eseguire comuni operazioni aritmetiche come addizione, sottrazione, moltiplicazione, divisione e modulo.
    Ad esempio:
    <?php
    $x = "Hello";
    $y = " World!";
    echo $x . $y; // Hello World!
    ?>​​
  • Operatori di assegnazione: sono utilizzati per assegnare valori alle variabili durante l'esecuzione dello script.
    Ad esempio:
    <?php
    $x = 'Ciao';
    $y = ' Mario';
    $x .= $y;
    echo $x // Ciao Mario
    ?>​
  • Operatori di confronto: confrontano i valori delle variabili restituendo un valore booleano.
    Ad esempio:
    <?php
    $x = 6;
    $y = 8;
    if($x==$y){echo "x e y hanno lo stesso valore";}
    else{echo "x e y hanno valore diverso";}
    ?>​
  • Operatori logici: vengono utilizzati per concatenare due o più istruzioni condizionali.
    Ad esempio
    <?php
    $score = 210;
    if ($score >= 100 && $score < 200) {
        echo "Con $score punti hai vinto un cellulare";
    } else if ($score >= 200 && $score < 300) {
        echo "Con $score punti hai vinto una macchina";
    else {
        echo "Ritenta, sarai più fortunato";
    }
    ?>​
  • Operatori bitwise: eseguono operazioni sui bit dei numeri. Mentre noi "umani" manipoliamo i numeri in base 10, cioè abbiamo 10 numeri che vanno da 0 a 9 e tutte le cifre esistenti su questa scala si basano sulla combinazione di questi, il linguaggio macchina è in base 2 e comprende solo 2 valori 0 (false) e 1 (true).
    Ad esempio:
    <?php
    $a = 1432; // in base 2: 0000 0101 1001 1000
    $b = 131;  // in base 2: 0000 0000 1000 0011
    
    // or
    echo $a | $b,"\n"; // 1435.  in base 2: 0000 0101 1001 1011
    // and
    echo $a & $b,"\n"; // 128.   in base 2: 0000 0000 1000 0000
    // not
    echo ~$a,"\n";     // -1433. in base 2: 1111 1010 0110 0111
    // xor
    echo $a ^ $b,"\n"; // 1307.  in base 2: 0000 0101 0001 1011
    // shift left di 2
    echo $a << 2,"\n"; // 5728.  in base 2: 0001 0110 0110 0000
    ?>​

Lascio a voi, nel caso, approfondire gli operatori binari, non oggetto di questa spiegazione

Operatore ternario

Il nome loro già ci fornisce una informazione di base: necessitano di tre operandi.

Questo operatore offre un modo semplice per effettuare operazioni di confronto (le cd. istruzioni condizionali), senza utilizzare i classici "if else".

E' in pratica una forma contratta di "if else", ed è rappresentata dal simbolo del punto interrogativo "?" e dai duepunti ":", e necessita di tre operandi:

  • la condizione da verificare
  • il simbolo "?" seguito dal valore restituito nel caso in cui la condizione sia verificata (true)
  • il simbolo ":" seguito dal valore restituito nel caso in cui la condizione non sia verificata (false)

Facciamo un semplice esempio senza operatore ternario

<?php
$x = "12";
$y = "35";
if($x == $y){echo "x e y hanno lo stesso valore";}
else{echo "x e y hanno valore diverso";}
?>

Possiamo riscrivere la condizione if ... else, utilizzando l'operatore ternario in questo modo:

<?php
$x = "12";
$y = "35";
($x == $y) ? echo "x e y hanno lo stesso valore" : echo "x e y hanno valore diverso";
?>

Invece di utilizzare una istruzione condizionale basata su "if ... else" abbiamo indicato:

  • la condizione da verificare
  • il punto interrogativo "?" per rappresentare la condizione soddisfatta ("true"), e, in questo esempio, visualizziamo la frase "x e y hanno lo stesso valore"
  • il duepunti ":", per rappresentare la condizione non soddisfatta ("false"), e, in questo esempio, visualizziamo la frase "x e y hanno valore diverso"

La sintassi da utilizzare, quindi, è la seguente:

CONDIZIONE ? VERO : FALSO

Vediamo un esempio leggermente più complesso, utilizzando l'istruzione condizionale "if ... else if ... else":

<?php
if ($punti == 1) {$reply = "hai vinto un cellulare";}
else if ($punti == 2) {$reply = "hai vinto una macchina";}
else {$reply = "ritenta, sarai più fortunato;}
?>

Con l'operatore ternario l'abbiamo convertito in questo codice

$reply = ($punti == 1 ? "hai vinto un cellulare" : ($punti == 2 ? "hai vinto un macchina" : "ritenta, sarai più fortunato"))

Cosa abbiamo fatto

  • Se $punti ha come valore "1" allora il valore da restituire è "hai vinto un cellulare"
  • Altrimenti: se $punti ha come valore "2", allora il valore da restituire è "hai vinto una macchina", altrimenti è "ritenta, sarai più fortunato"

Potete potete vedere, ho utilizzato due volte l'operatore ternario all'interno della stessa istruzione.

Un esempio, ancora più complesso, in cui utilizziamo tre volte l'operatore ternario:

<?php
if ($punti == 1) {$reply = "hai vinto un cellulare";}
else if ($punti == 2) {$reply = "hai vinto una macchina";}
else if ($punti == 3) {$reply = "hai vinto un aereo";}
else {$reply = "ritenta, sarai più fortunato;}
?>

Con l'operatore ternario diventa:

$reply = ($punti == 1 ? "hai vinto un cellulare" : ($punti == 2 ? "hai vinto un macchina" : ($punti == 3 ? "hai vinto un aereo" : "ritenta, sarai più fortuntato")))

Ci lasciamo con questo ultimo esempio:

<?php
$x = 9;
$y = 12;

if($x > $y){echo "Il numero maggiore è $x";}
else {echo "Il numero maggiore è $y";}
?>

Con l'operatore ternario questo codice diventa

<?php
$x = 9;
$y = 12;

echo "Il numero maggiore è: " . ($x > $y ? $x : $y);
?>

Lascio a voi convertire le vostre istruzioni condizionali con l'operatore ternario. Buon lavoro!

 
 
 
 
pay per script

Hai bisogno di uno script PHP personalizzato, di una particolare configurazione su Linux, di una gestione dei tuoi server Linux, o di una consulenza per il tuo progetto?

x

ATTENZIONE