Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
При помощи RaZEr нашли два решения поставленной задачи:
первая заключается в использовании eval, что не так изящно но работает на ура.
PHP:
eval("unset(\$GLOBALS['$varname']['" . implode("']['", $keys) . "']);");
И вторая заключается в создании вспомогающей функии которая рекурсивно проходится по массиву переданному по ссылке.
PHP:
function unset_ex(&$arr, $path)
{
$key = array_shift($path);
if (!empty($path))
{
unset_ex($arr[$key], $path);
}
else
{
unset($arr[$key]);
}
}
// и вышеуказанная функция
unset_array_element('array', array(2, 3));
function unset_array_element($varname, $keys)
{
$work_array = &$GLOBALS[$varname];
if (!is_array($keys)
{
unset($work_array[$keys]); // нет проблем
}
else // вызов рекурсии
{
// eval("unset(\$GLOBALS['$varname']['" . implode("']['", $keys) . "']);");
// или
unset_ex($GLOBALS[$varname], $keys);
}
}
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|