Сброс переменной переменной - PullRequest
1 голос
/ 07 декабря 2010

Как отменить переменную переменной, представляющую элемент массива?

function remove($var) {
    unset($$var);
}

$x=array('a'=>1,'b'=>2);
remove('$x["a"]');
var_dump(isset($x['a']));

Приведенный выше код не отменяет элемент массива x['a']. Мне нужна та же функция remove () для работы с $_GET['ijk'].

Ответы [ 5 ]

1 голос
/ 07 декабря 2010

Можно попробовать,

function remove(&$var,$key) {
    unset($var[$key]);
}

$x=array('a'=>1,'b'=>2);
remove($x,'a');
var_dump(isset($x['a']));
1 голос
/ 07 декабря 2010

Просто используйте unset() или (unset) приведение.

Если вы хотите использовать функцию для сброса, что-то вроде этого будет лучше.

function removeMemberByKey(&$array, $key) {
    unset($array[$key]);
}

Это работает!

0 голосов
/ 21 мая 2011
Try This:

<?php 
    /* Unset All Declair PHP variable*/
    $PHP_Define_Vars = array_keys(get_defined_vars());  
    foreach($PHP_Define_Vars as $Blast) {
      // or may be reset them to empty string# ${"$var"} = "";
      unset(${"$Blast"}); 
    }
?>
0 голосов
/ 07 декабря 2010

Переменные нельзя использовать с суперглобалами, поэтому, если вам нужно, чтобы они работали и для $_GET, вам нужно взглянуть на это с помощью другого метода.

Источник: http://php.net/manual/en/language.variables.variable.php

0 голосов
/ 07 декабря 2010

unset легче набрать, чем remove

При использовании его с элементом массива массив все равно будет существовать

Вы можете переписать свою функцию, чтобы рассматривать параметр какссылка;

РЕДАКТИРОВАТЬ: обновлено, чтобы использовать код Алекса function remove(&$array, $key){ unset($array[$key]); } remove($x,'a');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...