Затруднения при использовании символических ссылок
28 февраля 2010, 5:33
Автор: 1234ru
Затруднения при использовании символических ссылок
Стоит задача получить значение элемента некоего массива из строки, где перечислены его ключи.
Пусть массив - $array. Тогда строке $string = 'key1.key2.key3' соответствует элемент $array[key1][key2][key3].
Для реализации этой задачи можно использовать такой код (упрощенно):
Есть один недостаток: содержимое $array копируется в $var, что приводит к дополнительным затратам памяти (а массивы могут быть довольно большие, в т.ч. $_GLOBALS).
Хотелось сделать через символические ссылки:
Но так не разрешает. При выполнении выдает ошибку:
Нельзя тут никак без полного копирования переменных?
Стоит задача получить значение элемента некоего массива из строки, где перечислены его ключи.
Пусть массив - $array. Тогда строке $string = 'key1.key2.key3' соответствует элемент $array[key1][key2][key3].
Для реализации этой задачи можно использовать такой код (упрощенно):
$var = $array;
$keys = explode('.', $string);
foreach ($keys as $k) {
$var = $var[$k];
}
$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];
}
$keys = explode('.', $string);
foreach ($keys as $k) {
$var = &$var[$k];
}
Но так не разрешает. При выполнении выдает ошибку:
Цитата:
Cannot create references to/from string offsets nor overloaded objects
Нельзя тут никак без полного копирования переменных?