Попытка автоматически отключить все переменные в скрипте.
Пробовали вот так:
echo '<br /> Variables in Script before unset(): <br />'; print_r(array_keys(get_defined_vars())); echo '<br /><br />'; var_dump(get_defined_vars()); // Creates string of comma-separated variables(*) for unset. $all_vars = implode(', $', array_keys(get_defined_vars())); echo '<br /><br />'; echo '<br />List Variables in Script: <br />'; echo $all_vars; unset($all_vars); echo '<br /><br />'; echo '<br />Variables in Script after unset(): <br />'; print_r(array_keys(get_defined_vars())); echo '<br />'; var_dump(get_defined_vars());
Почему это не работает?
Есть лучший способ сделать это?
Спасибо за помощь!
(*) It's seems somewhat that it does not really create the variables, but a string that looks like variables...
Здесь ya go ->
$vars = array_keys(get_defined_vars()); for ($i = 0; $i < sizeOf($vars); $i++) { unset($$vars[$i]); } unset($vars,$i);
не$vars = array_keys(get_defined_vars()); for ($i = 0; $i < sizeOf($vars); $i++) { unset($$vars[$i]); } unset($vars,$i);
И чтобы уточнить, implode возвращает «строковое представление всех элементов массива в том же порядке». http://php.net/manual/en/function.implode.php
Unset требует фактической переменной как параметра, а не только строкового представления. Что похоже на то, что возвращает get_defined_vars () (а не фактическая ссылка на переменные). Таким образом, код проходит через массив строк и возвращает каждый в качестве ссылки, используя дополнительные $ спереди, которые могут использоваться unset.
foreach (array_keys($GLOBALS) as $k) unset($$k); unset($k);
не знаю о вас, ребята, но $$ vars не работает для меня.
вот как я это сделал.
$vars = array_keys(get_defined_vars()); foreach($vars as $var) { unset(${"$var"}); }
с$vars = array_keys(get_defined_vars()); foreach($vars as $var) { unset(${"$var"}); }