Newsgroup: it.comp.www.php
Titolo: Come stabilire se una variabile esiste?

Problema: data la variabile $x stabilire se:
1) non esiste
2) esiste e vale NULL
3) esiste e non e' NULL
Svolgimento:
isset($x) non va bene perche' isset() da' TRUE se $x esiste e non e' NULL.
is_null($x) non va bene perche' da' errore se $x non esiste.
$x===NULL non va bene perche' da' errore se $x non esiste.
Ripiego basandomi su is_null(0 ed intercettando la condizione di errore:
# Richiesto track_errors = On in php.ini
unset($php_errormsg);
if( @is_null($x) and isset($php_errormsg) )
    echo "not set";
else if( $x === NULL )
    echo "is NULL";
else
    echo "not NULL";
C'e' un metodo piu' snello per fare la stessa cosa?
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 
if ((array_key_exists('x', $GLOBALS))) {
    if (is_null($x)) {
        echo 'x esiste e vale null';
    } else {
        echo 'x esiste e non vale null';
    }
} else {
    echo 'x non esiste';
}
P.S.
  non vedo quale utilita' abbia una cosa del genere
PS2 (Sony tm)
  Test completo:
---------cut------------
<p>Problema: data la variabile $x stabilire se:</p>
<p><a href="?t=1">1) non esiste</a><p>
<p><a href="?t=2">2) esiste e vale NULL</a><p>
<p><a href="?t=3">3) esiste e non e' NULL</a><p>
<p>
<?php
$testType = (isset($_GET['t']) ? $_GET['t'] : '' );
switch ($testType) {
    case '1':
        echo 'Caso 1: x non esiste';
    break;
    case '2':
     $x = null;
         echo 'Caso 2: x esiste e vale null';
    break;
    case '3':
     $x = '';
        echo 'Caso 3: x esiste e non vale null';
     break;
    default:
      echo 'Selezionare un\'opzione';
    break;
}
?>
</p><p>
<?php
if ((array_key_exists('x', $GLOBALS))) {
    if (is_null($x)) {
        echo 'x esiste e vale null';
    } else {
        echo 'x esiste e non vale null';
    }
} else {
    echo 'x non esiste';
}
?>
</p>
---------cut------------
-- 
"Il Linguaggio di Programmazione C -- Un linguaggio che combina la
flessibilita' del linguaggio assembly con le potenzialita' del
linguaggio assembly."

 3) esiste e non e' NULL
Quae e' la tua reale necessita'?
 
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.

 Quae e' la tua reale necessita'?
Sto cercando di andare un po' al di la' delle solite questioni della
mail in formato HTML e dei register globals. Questa e' una discussione
aperta sulla natura del linguaggio PHP.
Una volta chiarito quali sono le possibilita' del linguaggio, poi si
vanno ad applicare alle reali necessita'.


 if ((array_key_exists('x', $GLOBALS))) {
Sarebbe una soluzione quasi perfetta se fosse applicabile anche alle
variabili locali di una funzione.


"Umberto Salsi" <sa...@icosaedro.italia> ha scritto nel messaggio 
news:dm4mkp$b6h$1...@nnrp.ngi.it...

Sei sicuro di conoscere ciò di cui parli ?
se devi affermare qualcosa cerca di essere più preciso
si individuano così i casi "che ti creano problemi" e si discute in riguardo 
.
ciao

 si individuano così i casi "che ti creano problemi" e si discute in riguardo
di' la verita', sei un igegnere?

 if ((array_key_exists('x', $GLOBALS))) {
array_key_exists e' una delle funzioni probabilmente piu' esose di php.
eseguita sull'array $GLOBALS poi... non oso immaginare

 e' istanziata.
Convinto tu ...
array_key_exists('my_var', get_defined_vars() + $GLOBALS);
