Menu
Coddy logo textTech

L’operatore ternario

Fa parte della sezione Fondamenti del percorso PHP di Coddy. Lezione 30 di 71.

Quando hai un semplice if-else che assegna solo un valore in base a una condizione, PHP offre un modo più breve per scriverlo: l’operatore ternario.

La sintassi usa ? e : per creare una condizionale compatta su una sola riga:

<?php
$age = 20;

// Usando if-else
if ($age >= 18) {
    $status = "adult";
} else {
    $status = "minor";
}

// La stessa cosa con l'operatore ternario
$status = $age >= 18 ? "adult" : "minor";

echo $status; // adult
?>

La struttura è: condition ? value_if_true : value_if_false.

PHP valuta prima la condizione. Se è vera, l’espressione restituisce il valore dopo ?. Se è falsa, restituisce il valore dopo :.

<?php
$score = 45;
$result = $score >= 50 ? "Pass" : "Fail";
echo $result; // Fail

$isLoggedIn = true;
$greeting = $isLoggedIn ? "Welcome back!" : "Please log in";
echo $greeting; // Welcome back!
?>

L'operatore ternario è perfetto per le semplici assegnazioni alternative. Per una logica più complessa con più condizioni, attieniti alle istruzioni if-elseif-else per una maggiore leggibilità.

challenge icon

Sfida

Facile

Leggi due numeri interi dall'input: un score e un passingScore.

Usa l'operatore ternario per determinare il risultato in base a quanto segue:

  • Se score è maggiore o uguale a passingScore, il risultato dovrebbe essere Passed
  • Altrimenti, il risultato dovrebbe essere Failed

Stampa il risultato sulla prima riga.

Poi, leggi un numero intero quantity dall'input. Usa l'operatore ternario per determinare il messaggio di spedizione:

  • Se quantity è maggiore di 10, il messaggio dovrebbe essere Free shipping
  • Altrimenti, il messaggio dovrebbe essere Standard shipping

Stampa il messaggio di spedizione sulla seconda riga.

Esempio:

Se gli input sono 75, 60 e 15, l'output dovrebbe essere:

Passed
Free shipping

Se gli input sono 45, 50 e 5, l'output dovrebbe essere:

Failed
Standard shipping

Provalo tu

<?php
// Leggi l'input
$score = intval(fgets(STDIN));
$passingScore = intval(fgets(STDIN));
$quantity = intval(fgets(STDIN));

// TODO: Scrivi il tuo codice qui sotto
// Usa l'operatore ternario per determinare se il punteggio è sufficiente o insufficiente


// Usa l'operatore ternario per determinare il messaggio di spedizione


// Mostra i risultati
echo $result . "\n";
echo $shippingMessage;
?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore PHP online