webew
Войти » Регистрация
 
PHP

Затруднения при использовании символических ссылок

28 февраля 2010, 5:33
Автор: 1234ru
Затруднения при использовании символических ссылок

Стоит задача получить значение элемента некоего массива из строки, где перечислены его ключи.
Пусть массив - $array. Тогда строке $string = 'key1.key2.key3' соответствует элемент $array[key1][key2][key3].

Для реализации этой задачи можно использовать такой код (упрощенно):

$var = $array;
$keys = explode('.', $string);
foreach ($keys as $k) {
    $var = $var[$k];
}


Есть один недостаток: содержимое $array копируется в $var, что приводит к дополнительным затратам памяти (а массивы могут быть довольно большие, в т.ч. $_GLOBALS).

Хотелось сделать через символические ссылки:

$var = &$array;
$keys = explode('.', $string);
foreach ($keys as $k) {
    $var = &$var[$k];
}

Но так не разрешает. При выполнении выдает ошибку:
Цитата:
Cannot create references to/from string offsets nor overloaded objects


Нельзя тут никак без полного копирования переменных?
Добавить комментарий
NO USERPIC

rgbeast

А у меня рвботает. Вот мой скрипт полностью (PHP версии 5.2.6)

<?php
$var = &$_SERVER;
$string="SCRIPT_FILENAME";
$keys = explode('.', $string);
foreach ($keys as $k) {
  $var = &$var[$k];
}
print_r($var);
?>
28.02.2010, 22:57
Ответить

1234ru

Действительно работает.
И то, что в первом сообщении - тоже работает.
Не знаю, в чем было дело...
То, что не убивает нас, делает нас инвалидами.
02.03.2010, 22:33
Ответить
© 2008—2017 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100

Реклама: