-
isset() oppure empty()?
ciao a tutti.
mi stavo ponendo una domanda, sul metodo per valutare se un campo, valorizzato da una chiamata con query, sia più opportuno usare isst() oppure empty().
per esempio:
dopo aver caricato una variabile con il contenuto di un campo proveniente da una query, (dovrebbe contenere ad esempio il nome di una immagine) che potrebbe essere sia pieno che vuoto, dato che non è detto che il campo contenga qualcosa, voglio testare se contiene o meno informazioni. Se il campo non contiene informazioni visualizzo una immagine neutra al posto della classica icona di "mancanza immagine".
E' meglio
$valore = isset(<nomecampo>)
if {$campoimg ="null.jpg")}
oppure
$valore = empty(<nomecampo>)
if {$campoimg ="null.jpg")}
grazie!
-
isset controlla se una variabile esiste o meno. empty se è vuota.
Quindi per il tuo scopo empty() è la funzione giusta.
-
Confermo ciò che ha detto miki92, ma vorrei sottolineare una cosa:
Codice PHP:
(isset($_GET['g']) && !empty($_GET['g']))
...se il link è "?g=", allora risulterà true, nonostante a prima vista potrebbero sembrare l'opposto, e quindi false in ogni caso.
Invece no! Bisogna stare sempre attenti quando si ricevono dati dall'esterno, perciò aggiungere un aggiungitvo
Codice PHP:
&& $_GET['g']!==''
non guasta.
Basics
-
Basics, verifica sempre che quello che suggerisci agli altri sia corretto prima di postare. Basta scrivere due righe :wink:
In questo caso, era errato. Aggiungere $_GET['g'] != "" e' inutile, il controllo e' gia' coperto da empty. Vedi l'esempio sotto:
Codice PHP:
<?php
$isset = isset($_GET['g']) ? 'vero' : 'falso';
$empty = empty($_GET['g']) ? 'vero' : 'falso';
$issemp = isset($_GET['g']) && !empty($_GET['g']) ? 'vero' : 'falso';
?>
<p>$_GET = <?= var_export($_GET, true) ?>
<ul>
<li>isset = <?= $isset ?>
<li>empty = <?= $empty ?>
<li>isset && !empty = <?= $issemp ?>
</ul>
<p>Riprova con:
<ul>
<li><a href="?">?</a>
<li><a href="?g=">?g=</a>
<li><a href="?g=qualcosa">?g=qualcosa</a>
<li><a href="?g=%20">?g=%20</a>
</ul>
.
-
grazie a tutti dell'aiuto...
Quindi ricapitolando posso usare empty() e fare una cosa del genere..
$vero = empty($elem[x]; // X numero da 0 a...
if($vero = true)
{
echo "<img src="<?$elem[x]?>"
}
else
{
echo "non esiste foto"
}
// scusate il codice scritto malissimo, ma sto ancora imparando e allora non mi ricordo a memoria la sintassi corretta.
-
Al posto di un solo uguale ne vanno messi due.
Codice PHP:
$vero = empty($elem[x]);
if($vero == true){
echo "<img src=\"".$elem[x]"".\">";
}else{
echo "non esiste foto";
}
In questo caso visto che la funzione restituisce true o false puoi anche non utilizzare l'operatore di paragone e fare direttamente così:
Codice PHP:
$vero = empty($elem[x]);
if($vero){
echo "<img src=\"".$elem[x]"".\">";
}else{
echo "non esiste foto";
}
-
Citazione:
Originalmente inviato da
dreadnaut
[...]
Scusa, ho sbagliato, era:
Codice PHP:
isset($_GET['g']) && empty($_GET['g'])
Ho quindi corretto il tuo snippet:
Codice PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?
if(isset($_GET['g'])){echo'isset';}else{echo"n'isset";}
?></title>
</head>
<body>
<?
$isset = isset($_GET['g']) ? 'vero' : 'falso';
$issemp = isset($_GET['g']) && empty($_GET['g']) ? 'vero' : 'falso';
?>
<br>
<ul>
<li>isset = <?=$isset?></li>
<li>isset && empty = <?=$issemp?></li>
</ul>
<br><br>
Cambia query string:
<ul>
<li><a href="<?=$_SERVER['PHP_SELF']?>">reset</a></li>
<li><a href="?g=">?g=</a></li>
</ul>
</body>
</html>