Foros del Web » Programando para Internet » PHP »

PHP OO acceder a un array multidimencinal conociendo su ruta

Estas en el tema de acceder a un array multidimencinal conociendo su ruta en el foro de PHP en Foros del Web. Hola, existe alguna forma de guardar en un string o algo la posicion/ruta de un array? $xx = "[0][xxx][2]"; Y despues acceder $array$xx Necesito a ...
  #1 (permalink)  
Antiguo 30/07/2014, 13:29
 
Fecha de Ingreso: junio-2008
Mensajes: 98
Antigüedad: 15 años, 10 meses
Puntos: 2
acceder a un array multidimencinal conociendo su ruta

Hola, existe alguna forma de guardar en un string o algo la posicion/ruta de un array?

$xx = "[0][xxx][2]";
Y despues acceder
$array$xx

Necesito a travez de una funcion que reconoce las posiciones eliminar la misma, el array puede tener indefinidas posiciones
  #2 (permalink)  
Antiguo 30/07/2014, 13:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: acceder a un array multidimencinal conociendo su ruta

No existe una forma nativa de hacer eso, lo más que puedes hacer es almacenar la representación de la ruta tipo "a.b.c" y entonces hacer un explode() de dicha ruta y con una función recursiva iterar el array clave por clave.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/07/2014, 14:02
 
Fecha de Ingreso: junio-2008
Mensajes: 98
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: acceder a un array multidimencinal conociendo su ruta

Actualmente tengo eso, puedo acceder pero no tengo como eliminarla, manipularla o hacer referencia....

El caso puntual es:

Código PHP:
Ver original
  1. $Questions = = array(
  2.         array(
  3.                 'datos'=>'datos...',
  4.                 'offspring' => array(
  5.                     array(
  6.                         'datos'=>'datos...'
  7.                     ),
  8.                     array(
  9.                         'datos'=>'datos...'
  10.                     )
  11.                 )
  12.             ),
  13.         array('datos'=>'datos...'),
  14.         array('datos'=>'datos...')
  15.     )
  16.  
  17.     // indico la posicion
  18.     $index = array(0,0);
  19.  
  20.     if(isset( $Questions[ $index[0] ] )) {
  21.         $_this_question = $Questions[ $index[0] ];
  22.  
  23.     }
  24.     for ($i=1; $i < count($index); $i++) {
  25.         if(isset( $_this_question["offspring"] )) {
  26.             $_this_question = array_values($_this_question["offspring"]);
  27.             $_this_question = $_this_question[$index[$i]];
  28.  
  29.             // NECESITO ELIMINAR ESTO ULTIMO
  30.            }
  31.     }

Última edición por lumiz; 30/07/2014 a las 14:08
  #4 (permalink)  
Antiguo 30/07/2014, 14:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: acceder a un array multidimencinal conociendo su ruta

Para eliminar un elemento de un array debes usar unset(), consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/07/2014, 14:29
 
Fecha de Ingreso: junio-2008
Mensajes: 98
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: acceder a un array multidimencinal conociendo su ruta

Eso esta claro, pero como accedo a el en este caso? si utilizo unset sobre $_this_question eliminamos $_this_question y no la posicion del array
  #6 (permalink)  
Antiguo 30/07/2014, 14:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: acceder a un array multidimencinal conociendo su ruta

¿Ya leíste el manual?

Parece que no lo has hecho, observa:
Código PHP:
Ver original
  1. // MAL
  2. $_this_question = $_this_question[$index[$i]];
  3. unset($_this_question);
  4.  
  5. // BIEN
  6. // esta linea es innecesaria, si $index[$i] contiene la posición a eliminar
  7. // $_this_question = $_this_question[$index[$i]];
  8.  
  9. unset($_this_question[$index[$i]]);
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 30/07/2014, 15:07
 
Fecha de Ingreso: junio-2008
Mensajes: 98
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: acceder a un array multidimencinal conociendo su ruta

pateketrueke gracias por los consejos pero no sirve en este caso...

El indice es dinamico..

$index puede valer array(0,0,0,1,0,2);

Tenieno en cuenta que el array de $quetions esta completo de esas questions para ser recorrido...

Es por eso que hago un foreach y voy sumando los indices para tener un resultado:

$_this_question[$index[$i]] [$index[$i]] [$index[$i]] [$index[$i]] [$index[$i]] [$index[$i]]

Y es el unico metodo que encuentro para sumar los indices...

Gracias !
  #8 (permalink)  
Antiguo 30/07/2014, 15:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: acceder a un array multidimencinal conociendo su ruta

De igual forma debes tener una función recursiva que vaya eliminando índice por índice.

La técnica es simple, si ya has podido acceder al valor entonces debes ser capaz de eliminarlo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: ruta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:50.