память — сбросить все переменные в скрипте PHP

Попытка автоматического сброса всех переменных в скрипте.

Попробовал так:

  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...

12

Решение

Вот и ты ->

$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.

14

Другие решения

foreach (array_keys($GLOBALS) as $k) unset($$k);
unset($k);

3

не знаю как вы, ребята, но $$ vars не работает для меня.

Вот как я это сделал.

$vars = array_keys(get_defined_vars());
foreach($vars as $var) {
unset(${"$var"});
}
3
По вопросам рекламы [email protected]