if
La parola chiave "if" in PHP esegue codice in modo condizionale. In questo articolo esploriamo la sintassi e l'utilizzo dell'istruzione "if" in PHP.
L'istruzione PHP if
L'istruzione if è il modo in cui un programma PHP prende decisioni. Esegue un blocco di codice solo quando una condizione è vera, altrimenti lo salta. Senza di essa, uno script eseguirebbe ogni riga dall'alto verso il basso senza possibilità di diramazione — if è il fondamento di tutta la logica condizionale in PHP.
Questa guida copre la sintassi, come PHP determina se una condizione è "vera", la famiglia else/elseif, la sintassi alternativa con endif per i template, le scorciatoie come gli operatori ternario e null-coalescing, e gli errori che mettono in difficoltà i principianti.
Sintassi di base
if (condition) {
// code that runs only when condition is true
}La condition è qualsiasi espressione che PHP può valutare come vera o falsa. Se è vera, il codice all'interno delle parentesi graffe viene eseguito; se è falsa, PHP salta il blocco e continua dopo di esso.
<?php
$age = 20;
if ($age >= 18) {
echo "You are an adult.";
}
// Output: You are an adult.Le parentesi graffe sono opzionali quando il corpo contiene una sola istruzione, ma usale sempre — omettere le parentesi graffe è una fonte comune di bug, perché solo la prima istruzione viene trattata come corpo:
if ($age >= 18)
echo "Adult"; // runs conditionally
echo " — welcome"; // ⚠️ runs ALWAYS, it is not part of the ifCome PHP valuta le condizioni (truthy e falsy)
Una condizione non deve essere un letterale true/false — PHP converte qualsiasi valore in un boolean. Questi valori sono falsy (trattati come falso):
false0e0.0""(stringa vuota) e"0"null- un array vuoto
[]
Ogni altro valore è truthy. Questo permette di scrivere controlli compatti:
<?php
$name = "";
if ($name) {
echo "Hello, $name";
} else {
echo "No name provided."; // empty string is falsy
}
// Output: No name provided.Per costruire le condizioni si usano tipicamente gli operatori di confronto e logici. Vedi PHP Operators per l'elenco completo.
<?php
$temp = 30;
if ($temp > 25 && $temp < 35) { // logical AND
echo "Warm but comfortable.";
}
// Output: Warm but comfortable.Aggiungere else e elseif
if da solo gestisce un solo percorso. Per fornire un'alternativa, aggiungi un else; per testare più condizioni in ordine, concatena elseif:
<?php
$score = 72;
if ($score >= 90) {
echo "Grade: A";
} elseif ($score >= 70) {
echo "Grade: B";
} elseif ($score >= 50) {
echo "Grade: C";
} else {
echo "Grade: F";
}
// Output: Grade: BPHP controlla ogni condizione dall'alto verso il basso ed esegue il primo blocco la cui condizione è vera, poi si ferma. Poiché $score è 72, il test >= 90 fallisce, >= 70 ha successo e il resto viene saltato.
Per capitoli dedicati su questi argomenti, vedi PHP else, PHP elseif, e la guida combinata if...elseif...else. Quando hai molti valori fissi da confrontare con una singola variabile, uno switch statement è spesso più chiaro.
Nidificare le istruzioni if
Puoi inserire un if all'interno di un altro per testare una seconda condizione solo quando la prima è verificata:
<?php
$loggedIn = true;
$role = "admin";
if ($loggedIn) {
if ($role === "admin") {
echo "Welcome to the admin panel.";
} else {
echo "Welcome back.";
}
}
// Output: Welcome to the admin panel.La nidificazione profonda peggiora la leggibilità — se ti ritrovi a tre livelli di profondità, considera di combinare le condizioni con && o di uscire prima (early return).
Sintassi alternativa (if: / endif)
Quando si mescola PHP con HTML nei template, la forma con i due punti e endif è più facile da leggere rispetto alle parentesi graffe sparse:
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php else: ?>
<p>Please log in.</p>
<?php endif; ?>Questo si comporta esattamente come la versione con le parentesi graffe; è puramente una questione di stile per i file di vista.
Forma abbreviata: ternario e null coalescing
Per semplici assegnazioni "o l'uno o l'altro", l'operatore ternario condensa un if/else in una sola riga:
<?php
$age = 16;
$status = ($age >= 18) ? "adult" : "minor";
echo $status;
// Output: minorQuando ti interessa solo se un valore esiste (e non è null), l'operatore null-coalescing ?? è più pulito di un if (isset(...)):
<?php
$config = [];
$timeout = $config["timeout"] ?? 30; // use 30 if the key is missing
echo $timeout;
// Output: 30Esempi pratici
<?php
// Example 1
$num = 10;
if ($num > 5) {
echo "The number is greater than 5." . PHP_EOL;
}
// Output: The number is greater than 5.
// Example 2
$color = "red";
if ($color == "blue") {
echo "The color is blue.";
} else {
echo "The color is not blue.";
}
// Output: The color is not blue.Errori comuni
=invece di==.if ($x = 5)assegna 5 a$xed è sempre truthy. Usa==(loose) o===(strict, senza conversione di tipo) per il confronto.==vs===. Con==,0 == "hello"e"1" == 1possono sorprenderti perché PHP converte i tipi. Preferisci===quando i tipi devono corrispondere.- Mancanza di parentesi graffe attorno a un corpo multi-riga — solo la prima istruzione è condizionale.
- Confusione con i valori truthy.
if ($value)è falso per0,""e[]; usaisset()o=== nullquando intendi specificamente "questo valore esiste."
Conclusione
L'istruzione if permette a un programma PHP di scegliere cosa fare a runtime. Padroneggia le regole truthy/falsy, usa elseif/else per gestire più percorsi, adotta la sintassi alternativa con endif nei template, e sfrutta gli operatori ternario e ?? per assegnazioni concise. Da qui, esplora i PHP loops per ripetere azioni e lo switch statement per le diramazioni basate su valori.