2012-06-22 14 views
8

Nel mantenimento del codice, sto incontrando dei loop, dove alla fine del ciclo sono impostate diverse variabili su NULL in questo modo: $var = NULL;. Da quanto ho capito nel manuale, NULL è inteso principalmente come qualcosa da confrontare nel codice PHP. Poiché NULL non ha un tipo e non è una stringa o un numero, l'output non ha senso.Assegnazione di NULL a una variabile in PHP: che cosa fa?

Purtroppo non posso fornire un esempio, ma penso che i valori NULL vengano scritti su un file nel nostro codice. La mia domanda è: $var ha un valore dopo l'assegnazione, e l'eco/scrittura produrrà l'output?

EDIT:Ho letto l'inserimento manuale PHP suNULL. Non è necessario postare questo: http://php.net/manual/en/language.types.null.php in un commento o una risposta, oppure in alto a valle per non avere RTM. Grazie!

+1

Ho menzionato nel mio post, prima di modificarlo, che il manuale non risponde alla mia domanda. In qualche modo volevo dire che avrei davvero letto. Presumo che tu sia uno dei downvoters? Grazie mille amico. – toon81

+0

Si potrebbe voler aggiungere un codice (rilevante) reale che mostra come viene usato 'NULL'. Altrimenti riceverai solo risposte di tipo RTM, poiché le tue domande sembrano indicare che non comprendi l'uso di 'NULL' (in PHP) – Veger

+2

Ho votato la tua domanda, perché è vaga, contiene dettagli non necessari sul tuo lavoro e manca di dettagli rilevanti sul caso d'uso. Ciò si traduce nella varietà di (presumibilmente) risposte non aiutanti. Il mio down-vote non è perché ha fatto o non ha letto il manuale (anche se non era molto chiaro prima della modifica) – Veger

risposta

1

null è praticamente come qualsiasi altro valore in PHP (in realtà, è anche un tipo di dati diverso da stringa, int, ecc.).

Tuttavia, c'è una differenza importante: isset($var) verifica che la var esista e abbia un valore non nullo.

Se avete intenzione di leggere la variabile mai più prima di assegnare un nuovo valore, unset() è il modo sbagliato di fare, ma l'assegnazione null è perfettamente bene:

php > $a = null; 
php > if($a) echo 'x'; 
php > unset($a); 
php > if($a) echo 'x'; 
Notice: Undefined variable: a in php shell code on line 1 
php > 

Come si può vedere, unset() cancella in realtà la variabile , proprio come non è mai esistito, mentre assegnando null lo imposta su un valore specifico (e crea la variabile se necessario).

Un utile caso d'uso di null è in argomenti di default quando si vuole sapere se è stato fornito o no e stringhe vuote, zero, ecc, sono validi anche:

function foo($bar = null) { 
    if($bar === null) { ... } 
} 
0

Null nei mezzi di PHP una variabile in cui non è stato assegnato alcun valore.

http://php.net/manual/en/language.types.null.php

+0

Ho paura che non fosse la mia domanda. Mi sono assicurato di RTFM prima di postare ... :) – toon81

+0

Di solito è una buona idea collegare alla versione inglese di un manuale invece della sua versione $ other_language. – ThiefMaster

+0

@ toon81 beh, il manuale sembra rispondere alle tue domande in quanto afferma l'uso di null e mostra anche che '$ var = NULL' è perfettamente legale – Veger

0

Sembra che lo scopo dell'applicazione nullo in base al largo delle informazioni fornire è di eliminare la variabile.

È possibile disinserire una variabile in PHP impostandola su NULL o utilizzando la funzione unset().

unset() distrugge le variabili specificate.

Il comportamento di unset() all'interno di una funzione può variare a seconda di quale tipo di variabile si sta tentando di distruggere.

Se una variabile globalizzata è disinserita() all'interno di una funzione, solo la variabile locale viene distrutta. La variabile nell'ambiente chiamante manterrà lo stesso valore di prima che unset() fosse stato chiamato.

3
[[email protected] ~]$ php -r '$i="foo"; print "ONE\n"; var_dump($i); unset($i); print "TWO\n"; var_dump($i); $i=NULL; print "THREE\n"; var_dump($i); print "\n"; if (isset($i)) print "Set.\n"; if (is_null($i)) print "is_null\n";' 
ONE 
string(3) "foo" 
TWO 
NULL 
THREE 
NULL 
is_null 
[[email protected] ~]$ 

Il risultato di isset() sarà booleano falso, ma la variabile è ancora definito. La funzione isset() sarebbe meglio denominata isnotnull(). :-P

Nota che is_null() restituirà true per un valore che non è mai stato impostato.

Yay PHP.

1

Una variabile può essere impostata su NULL per indicare che non contiene un valore. Ha senso se in un punto successivo del codice la variabile viene controllata per essere NULL.

Una variabile potrebbe essere impostata esplicitamente su NULL per rilasciare memoria utilizzata da esso. Questo ha senso se la variabile consuma molta memoria (vedi this question).

Eseguire a secco il codice e si potrebbe essere in grado di capire il motivo esatto.

-1

Null è un tipo di dati speciale che può avere solo un valore, che è esso stesso. Vale a dire null non è solo un tipo di dati, ma anche una parola chiave letterale una variabile di tipo di dati null è una variabile che non ha alcun valore assegnato quando una variabile viene creata senza un valore viene automaticamente assegnato un valore di null questo è in modo tale che qualsiasi traccia si trovasse in quella posizione di memoria prima di essere cancellata, altrimenti il ​​programma potrebbe tentare di elaborarlo.