Отменить все переменные в PHP скрипт

Попытка автоматически отключить все переменные в script.

Пробовали этот путь:

  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 seems somewhat that it does not really create the variables, but a string that looks like variables...

Ответ 1

Здесь ya go →

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

Ответ 2

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

Ответ 3

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

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

$vars = array_keys(get_defined_vars());
foreach($vars as $var) {
    unset(${"$var"});
}