Es que estás trabajando dentro de una función y declarar dentro de una función por referencia, se va a limitar dentro de ella por lo que se conoce como
Ámbito de las variables (Variable scope). Una forma de manejar lo que haya dentro de las funciones es declarando uno de los parámetros por referencia (si es que quieres, porque hasta lo veo innecesario) y luego usando la función eval para ejecutar el contenido. Algo así
Código PHP:
Ver original<?php
$p = '';
function prueba($arr,$var){
/**
* Manejas lo que quieras con la variable $arr tipo array
* luego apuntas la ruta exacta de lo que quieres manejar
* para que lo coloques en la variable
*/
$value = '';
foreach($arr as $key => $val){
foreach($val as $k => $v){
$value = "[$key][$k]";
}
}
}
}
return $var = '$p =& $g' . $value . ';';
}
$p = prueba($g, $p);
eval($p); // Ejecutamos la referencia echo '<pre>'; print_r($p); echo '</pre>'; // Muestra que contine el valor de lo que contiene la variable $g[2][3] echo '<pre>'; print_r($g); echo '</pre>'; // Array original $p[0] = 2000; // modificamos el valor deseado
echo '<pre>'; print_r($g); echo '</pre>'; // Se hace el cambio a causa de que se hizo la referencia