PHP: можно ли определить имя и ключ родительского массива по ссылке на элемент массива? - PullRequest
5 голосов
/ 22 сентября 2010

давайте предположим, что у нас есть такой массив

$arr=array(array('a'=>1,'b'=>2),array('c'=>3,'d'=>4));

и ссылка на один из его элементов

$element=&$arr[1]['c'];

Мой вопрос: возможно ли вернуться к исходному массиву, используя только ссылку? То есть каким-то образом вернуться к родительскому массиву, не зная его по имени ... Это было бы полезно для меня в более сложном сценарии.

Ответы [ 3 ]

5 голосов
/ 22 сентября 2010

Нет, это, конечно, невозможно.Быть «ссылкой» (как ее называет PHP; на самом деле это ингибитор копирования) в этом вопросе совсем не помогает.Вам придется хранить исходный массив вместе с элементом.

$elArrPair = array(
    "container" => $arr,
    "element"   => &$arr[1]['c'],
);

Таким образом, вы можете изменить элемент с помощью $elArrPair["element"] = $newValue и по-прежнему иметь доступ к контейнеру.

0 голосов
/ 22 сентября 2010

Вы копируете контекст из одной переменной в другую, ничего больше, между этими двумя переменными нет никакой связи.

0 голосов
/ 22 сентября 2010

Нельзя получить от $element до $arr. Конечно, вы можете использовать in_array(), но ничего о $element не содержит ссылки на $arr.

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