Вопросы о функции отмены php

У меня возникают вопросы об unset

  1. Как отключить все переменные. Должен ли я использовать unset($var1,$var2,$var3,...) или любой другой простой метод существует?
  2. Непрозрачность переменных в конце функций – хорошая практика?
  3. новизна этой переменной приведет к reduce execution time программы или нет?

благодаря

    1. Вы имеете в виду unset($var1,$var2,$var3,...) нелегко?

    2. Нет смысла делать это явно, поскольку локальные переменные всегда будут исчезать в конце области действия. Это также относится к ссылочным переменным, только ссылки, локальные для функции, исчезнут, но все, что они ссылаются, если вне области функции, все равно будет там.

    3. Без понятия.

    Как отключить все переменные. Должен ли я использовать unset ($ var1, $ var2, $ var3, …) или любой другой простой метод существует?

    Да, это обычный способ отключить несколько переменных. Вы могли бы перебирать переменные в области видимости и отменить, но это было бы излишним.

    Непрозрачность переменных в конце функций – хорошая практика?

    Хотя переменные будут мусором, собранным в конце области действия (функция, класс, скрипт), может быть полезно сделать это в однофайловом скрипте (процедуре) – особенно в сценариях, где другие скрипты включены в область произвольно.

    При этом, с чистой организацией, это не нужно; однако, не обязательно и плохо.

    новизна этой переменной приведет к сокращению времени выполнения программы или нет?

    В большинстве случаев разница будет незначительной; однако, как я упоминал ранее, он не может повредить и потенциально может дать некоторую ясность в отношении того, что есть / не находится в сфере охвата. На самом деле, я обычно делаю это сразу после for / foreach, поскольку для / foreach не имеет области блока, поэтому переменные, определенные внутри этих блоков, доступны после цикла.

    Пример:

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

    BTW, если вы хотите знать, как это делать на самом деле (да, это возможно, но это не так):

     <?php $_SCRIPT_one = 1; $_SCRIPT_two = 2; $_SCRIPT_three = 3; // list of all variables defined $all = array_keys(get_defined_vars()); // list only the local variables we are interested in $local = array_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 = array_keys(get_defined_vars()); // list only the local variables we are interested in $local = array_filter($all, function($name) { return preg_match('/^_SCRIPT_/i', $name); }); // dump currently scoped local variables var_dump($local); 

    Во-первых, unset – это языковая конструкция, а не функция.

    Как отключить все переменные. Должен ли я использовать unset ($ var1, $ var2, $ var3, …) или любой другой простой метод существует?

    Вы можете отключить все глобальные переменные, однако я не понимаю, почему вы бы так поступили:

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

    Непрозрачность переменных в конце функций – хорошая практика?

    Нет, переменная автоматически отключается, когда она выходит за рамки. Нет смысла делать это вручную.

    новизна этой переменной приведет к сокращению времени выполнения программы или нет?

    На самом деле, это может уменьшить использование памяти.