Foros del Web » Programando para Internet » PHP »

Modificar la key con foreach

Estas en el tema de Modificar la key con foreach en el foro de PHP en Foros del Web. Hola tengo una duda de sintaxis que no acabo de pillar, Si tengo un $projects[$id], y quiero modificar con foreach el valor $id, cómo debo ...
  #1 (permalink)  
Antiguo 08/05/2012, 07:20
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 12 años, 5 meses
Puntos: 0
Modificar la key con foreach

Hola tengo una duda de sintaxis que no acabo de pillar,
Si tengo un $projects[$id], y quiero modificar con foreach el valor $id, cómo debo hacerlo?

Código:
   foreach ($xmlprojects->project as $proj => $id) {
   $projects[$id] = $proj -> id;
}
Algo así???????

La idea es crear un array con los proyectos del xml, y luego comparar las $id, con los atributos de otro xml, y por cada coincidencia hacer un $projects[$id] ++

No acabo de entender la modificqción y el uso de claves con foreach.
Gracias.
  #2 (permalink)  
Antiguo 08/05/2012, 07:26
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Modificar la key con foreach

Lo que estas haciendo en ese codigo es crear un vector llamado $projects donde cada posicion del mismo es el valor que contiene la variable $id, entonces cada posicion de tu vector va a ser igual a el valor de cada iteracion que tenga $id, no se si te sirve o no, eso depende de lo que tengas en $id.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 08/05/2012, 07:38
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Modificar la key con foreach

Sí eso es lo que buscaba, entonces, este código haría lo mismo no?
Crearía un valor del array $projects en los campos definidos con $id?

Al pasar a otro campo del xml, no sé si funcionaría igual.

Código:
foreach ($xmlprojects->project->id as $proj => $id) {
   $projects[$id] = $proj -> id;
   }
  #4 (permalink)  
Antiguo 08/05/2012, 07:42
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Modificar la key con foreach

El codigo va a hacer lo que escribi antes, pero igual no entiendo cuando decis:

Al pasar a otro campo del xml, no sé si funcionaría igual.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #5 (permalink)  
Antiguo 08/05/2012, 07:42
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Modificar la key con foreach

No sé si te he entendido ahora que lo pienso, lo que yo busco es modificar el $id de $projects[$id] con el $id del campo del xml, modificar la clave
  #6 (permalink)  
Antiguo 08/05/2012, 07:45
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Modificar la key con foreach

Si, vas a hacer exactamente eso, lo que tenes el $projects[$id] donde dice $id, vas a tener lo que tenga $id que esta en la parte $proj => $id

Es decir que va a generar un vector donde cada posicicion es el valor del $id que especificas en el foreach
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #7 (permalink)  
Antiguo 08/05/2012, 08:07
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Modificar la key con foreach

El caso es que cuando le hago un var_dump a $projects, no me carga nada (array(0) { } )

Y no es un problema previo, porque si me funciona hacer esto:
Código:
foreach ($xmlprojects->project as $proj  ) {
  /$projects[] = $proj -> id  ;}
Ahí si me crea un array con cada posición el valor de cada project id, pero posiciones [0][1][2]...

Lo que yo quiero es que se me cree un array con los índices siendo los project -> id, y estas posiciones aplicarlas a modo de contador, cuando a continuación, al leer un xml de errores cada ocurrencia del campo project-id sea igual a la del índice de mi array projects.

Gracias infinitas por tu atención, pero no consigo sacarlo.
  #8 (permalink)  
Antiguo 08/05/2012, 08:08
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Modificar la key con foreach

postea el xml asi nos fijamos que tendria $id
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #9 (permalink)  
Antiguo 08/05/2012, 08:11
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Modificar la key con foreach

Código:
  $errorsfile =file_get_contents("http://kunstmaan.airbrake.io/errors.xml?auth_token=5047b6b5e6910cafa77422f04d06ae2097bd05ff");
  $xmlerrors = new SimpleXMLElement($errorsfile);

  
   $projectsfile =file_get_contents("http://kunstmaan.airbrake.io/data_api/v1/projects.xml?auth_token=5047b6b5e6910cafa77422f04d06ae2097bd05ff");
   $xmlprojects = new SimpleXMLElement($projectsfile);
Este es el código de los dos xml que estoy tratando y que tengo que comparar
  #10 (permalink)  
Antiguo 08/05/2012, 08:35
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Modificar la key con foreach

Fijate si algo asi te sirve..

Código PHP:
Ver original
  1. $url = "http://kunstmaan.airbrake.io/data_api/v1/projects.xml?auth_token=5047b6b5e6910cafa77422f04d06ae2097bd05ff";
  2. //$xmlprojects = new SimpleXMLElement($projectsfile);
  3.  
  4. $xml = simplexml_load_file($url);
  5.  
  6. foreach ($xml as $project) {
  7.     $projects[(int)$project->id] = (string)$project->name;
  8. }

Hice un par de cambios, primero utilice el simplexml_load_file() para ahorrarme el file_get_contents() y despues castee el tipo de dato para que no lo guarde en el vector como si fuera del tipo simplexml y listo
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #11 (permalink)  
Antiguo 08/05/2012, 09:28
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Modificar la key con foreach

Sí muchísimas gracias, lo que necesitaba era pasarlo dentro de los [ ] y usar el casting, ahora pienso que puedo seguir adelante, muchas gracias otra vez!
  #12 (permalink)  
Antiguo 08/05/2012, 09:50
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Modificar la key con foreach

Cita:
Iniciado por alehuelva Ver Mensaje
Sí muchísimas gracias, lo que necesitaba era pasarlo dentro de los [ ] y usar el casting, ahora pienso que puedo seguir adelante, muchas gracias otra vez!
De nada mostro
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: foreach, key, modificar
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 21:05.