У меня возникают вопросы об unset
unset($var1,$var2,$var3,...)
или любой другой простой метод существует? reduce
execution time
программы или нет? благодаря
Вы имеете в виду unset($var1,$var2,$var3,...)
нелегко?
Нет смысла делать это явно, поскольку локальные переменные всегда будут исчезать в конце области действия. Это также относится к ссылочным переменным, только ссылки, локальные для функции, исчезнут, но все, что они ссылаются, если вне области функции, все равно будет там.
Без понятия.
Как отключить все переменные. Должен ли я использовать 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]); }
Непрозрачность переменных в конце функций – хорошая практика?
Нет, переменная автоматически отключается, когда она выходит за рамки. Нет смысла делать это вручную.
новизна этой переменной приведет к сокращению времени выполнения программы или нет?
На самом деле, это может уменьшить использование памяти.