Ver Mensaje Individual
  #12 (permalink)  
Antiguo 04/10/2010, 05:51
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: pasar array por referencia

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
  1. <?php
  2. $g = array(1, 2, array(1, 2, 3, array(0, 1000)), 4);
  3. $p = '';
  4.  
  5. function prueba($arr,$var){
  6.     /**
  7.      * Manejas lo que quieras con la variable $arr tipo array
  8.      * luego apuntas la ruta exacta de lo que quieres manejar
  9.      * para que lo coloques en la variable
  10.      */
  11.     $value = '';
  12.     foreach($arr as $key => $val){
  13.         if(is_array($val)){
  14.             foreach($val as $k => $v){
  15.                 if(is_array($v)){
  16.                     $value = "[$key][$k]";
  17.                 }
  18.             }
  19.         }
  20.     }
  21.     return $var = '$p =& $g' . $value . ';';
  22. }
  23. $p = prueba($g, $p);
  24. eval($p); // Ejecutamos la referencia
  25. echo '<pre>'; print_r($p); echo '</pre>'; // Muestra que contine el valor de lo que contiene la variable $g[2][3]
  26. echo '<pre>'; print_r($g); echo '</pre>'; // Array original
  27. $p[0] = 2000; // modificamos el valor deseado
  28. echo '<pre>'; print_r($g); echo '</pre>'; // Se hace el cambio a causa de que se hizo la referencia
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 04/10/2010 a las 06:03 Razón: Modificación en el código