Visualizzazione risultati 1 fino 7 di 7

Discussione: isset() oppure empty()?

  1. #1
    testareasiti non è connesso Neofita
    Data registrazione
    13-08-2014
    Messaggi
    13

    Predefinito 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!

  2. #2
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    isset controlla se una variabile esiste o meno. empty se è vuota.

    Quindi per il tuo scopo empty() è la funzione giusta.
    Apprezzi l'aiuto? Offrimi un caffè!

  3. #3
    Guest

    Predefinito

    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

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Basics, verifica sempre che quello che suggerisci agli altri sia corretto prima di postare. Basta scrivere due righe

    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>


    .

  5. #5
    testareasiti non è connesso Neofita
    Data registrazione
    13-08-2014
    Messaggi
    13

    Predefinito

    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.

  6. #6
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    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";
    }
    Apprezzi l'aiuto? Offrimi un caffè!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    [...]
    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 &amp;&amp; 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>
    Ultima modifica di basics : 30-01-2015 alle ore 17.12.49

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •