Ссылки в php != ссылки в Си?

Столкнулся с такой проблемой: В зависимости от некоторых параметров, "путь по массиву" может быть нескольких видов:
$arr['1']['2']['3']['4']['data'], $arr['1']['2']['3']['data'], $arr['1']['2']['3']['4']['5']['data'] (условно)

Чтобы не строить лестницу из логических выражений и не дублировать почти один и тот же код для каждого случая, реализовал все через ссылки

if(){
$path = &$arr['1']['2']['3']['4'];  
}elseif(){
$path = &$arr['1']['2']['3'];  
} 
... etc


Проблема в том, что когда я изменяю значение $path['data'], то у исходного массива ничего не изменяется и в конце приходится присваивать $arr['1']['2']['3']['4'] = $path.

Но мне кажется, что что-то не так должны ссылки работать. Например в си, присваиваешь переменной ссылку другой переменной, и все операции действуют на обе переменные. У php может другая концепция ссылок?
  • Вопрос задан
  • 273 просмотра
Решения вопроса 1
@Narts
Ссылки в PHP - это средство доступа к содержимому одной переменной под разными именами. Они не похожи на указатели C; например, вы не можете делать вычисления над указателями, они не являются реальными адресами в памяти и т.д. Для получения дополнительной информации смотрите Чем ссылки не являются. Вместо этого указатели в PHP - это псевдонимы в таблице имен переменных.

Ссылки в php
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы