Domande sulla function unset di php

Sto avendo domande su unset

  1. Come disinserire tutte le variables. unset($var1,$var2,$var3,...) usare unset($var1,$var2,$var3,...) o esiste un altro metodo facile?
  2. disinserire le variables alla fine delle funzioni è una buona pratica? Qualsiasi differenza!
  3. l'interruzione della variabile reduce o less il execution time programmazione?

Grazie

  1. Vuoi dire unset($var1,$var2,$var3,...) non è abbastanza facile per te?

  2. Non ha senso farlo esplicitamente in quanto le variables locali spariranno sempre alla fine dell'ambito di una function. Questo vale anche per le variables di riferimento, solo i riferimenti locali alla function scompariranno, ma qualunque cosa facciano riferimento, se al di fuori dell'ambito della function, sarà comunque presente.

  3. Nessuna idea.

Come disinserire tutte le variables. Dovrei usare unset ($ var1, $ var2, $ var3, …) o esiste un altro metodo facile?

Sì, questo è il modo normale per disinserire più variables. È ansible iterare le variables in-scope e annullarle, ma ciò sarebbe eccessivo.

disinserire le variables alla fine delle funzioni è una buona pratica? Qualsiasi differenza!

Mentre le variables saranno raccolte dalla garbage collection alla fine dell'ambito (function, class, script), potrebbe essere utile farlo in uno script a singolo file (procedurale) – specialmente negli script in cui altri script sono inclusi nello scope arbitrariamente.

Detto questo, con un'organizzazione pulita, questo non è necessario; tuttavia, non necessariamente una cosa negativa.

l'interruzione della variabile ridurrà o less il tempo di esecuzione della programmazione?

Nella maggior parte dei casi, ci sarà poca o nessuna differenza; tuttavia, come ho detto prima, non può nuocere e potrebbe potenzialmente rappresentare una certa chiarezza su ciò che è / non è in ambito. In effetti, faccio comunemente questo dopo un for / foreach poiché for / foreach non ha un ambito di block, quindi le variables definite all'interno di quei blocchi sono disponibili dopo il ciclo.

Esempio:

 foreach ($doctors as $key => $val) { // do something } unset($key, $val); 

A proposito, nel caso in cui vogliate sapere come farlo effettivamente alla rinfusa (sì, è ansible, ma non è carino):

 <?php $_SCRIPT_one = 1; $_SCRIPT_two = 2; $_SCRIPT_three = 3; // list of all variables defined $all = arrays_keys(get_defined_vars()); // list only the local variables we are interested in $local = arrays_filter($all, function($name) { return preg_match('/^_SCRIPT_/i', $name); }); // dump currently scoped local variables var_dump($local); // unset local variables foreach ($local as $var) { unset($$var); } // list of all variables defined $all = arrays_keys(get_defined_vars()); // list only the local variables we are interested in $local = arrays_filter($all, function($name) { return preg_match('/^_SCRIPT_/i', $name); }); // dump currently scoped local variables var_dump($local); 

Innanzitutto, unset è un costrutto linguistico, non una function.

Come disinserire tutte le variables. Dovrei usare unset ($ var1, $ var2, $ var3, …) o esiste un altro metodo facile?

Puoi disinserire tutte le variables globali, tuttavia, non vedo perché faresti una cosa del genere:

 foreach (arrays_keys($GLOBALS) as $var) { if ($var != 'GLOBALS') unset($GLOBALS[$var]); } 

disinserire le variables alla fine delle funzioni è una buona pratica? Qualsiasi differenza!

No, la variabile viene automaticamente distriggersta quando esce dall'ambito. Non ha senso farlo manualmente.

l'interruzione della variabile ridurrà o less il tempo di esecuzione della programmazione?

In realtà, potrebbe ridurre l'utilizzo della memory.