Предположим, я объявляю массив:
$data = array( 'foo' => 'bar' );
Теперь я добавлю ссылку на себя как новый элемент:
$data['baz'] = &$data;
Сброс содержимого $data
приведет к:
Array
(
[foo] => bar
[baz] => Array
(
[foo] => bar
[baz] => Array
*RECURSION*
)
)
Теперь я могу сбросить содержимое $data['baz']['baz']['baz']['baz']['baz']['baz']['baz']['baz']['baz']
, и результат будет таким же, как и выше, потому что массив имеет указатель на себя как элемент.
То, что я хотел бы знать, это то, что php обрабатывает массив как один набор данных с указателем, который является точно таким же указателем, который я бы назвал при использовании $data
, или если он делает что-то совершенно другое.
Кроме того, может ли PHP исправить из памяти попытку, возвращая содержимое $data{['baz']*n}
?