Допустим, у меня есть этот код:
$val = 1;
$arr = Array();
$arr['val'] =& $val;
$val = 2;
echo $arr['val'];
Это выведет 2, потому что $ val был передан в $ arr по ссылке.
Мой вопрос: если я передал значение в массив по ссылке, есть ли способ удалить эту ссылку позже, сделав ее простым скопированным значением?
Чтобы было понятнее, хотелось бы что-то вроде этого:
$val = 1;
$arr = Array();
$arr['val'] =& $val;
$arr['val'] = clone $arr['val'];
// Or better yet:
$arr = clone $arr;
$val = 2;
echo $arr['val'];
И это должно вывести 1 (потому что массив был клонирован до того, как указанная переменная изменилась).
Однако клон не работает с массивами, он работает только с объектами.
Есть идеи? Я действительно понятия не имею, как это сделать. Я пытался написать функцию рекурсивного копирования, но это не сработало.