surg30n
Новичок
Разыменование ссылок внутри массива?
Есть массив, содержащий в себе ссылки на неважно-какие-данные.
Нужно получить копию массива с разыменованными ссылками, чтобы при изменении элементов последнего
не изменялись элементы оригинала.
Пример кода.
Вопрос: Как сделать это правильным способом? 
Есть массив, содержащий в себе ссылки на неважно-какие-данные.
Нужно получить копию массива с разыменованными ссылками, чтобы при изменении элементов последнего
не изменялись элементы оригинала.
Пример кода.
PHP:
$a = array();
$a[0]=array('id'=>1, 'ptr'=>null);
$a[1]=array('id'=>2, 'ptr'=>&$a[0]);
$a[2]=array('id'=>3, 'ptr'=>&$a[1]);
$b=$a; // конечно не работает, ссылки внутри остались
var_dump($b);
// бредовое решение
function stupid_unpack($v) {
$eval_sz = '$ret = ' . base64_decode($v) . ';';
@eval( $eval_sz );
return $ret;
}
function stupid_pack($v) {
$ret = var_export($v,TRUE);
$ret = base64_encode($ret);
return $ret;
}
$c = stupid_unpack(stupid_pack($a)); // работает
var_dump($c);
