Foros del Web » Programando para Internet » PHP »

problemas con foreach y arrays

Estas en el tema de problemas con foreach y arrays en el foro de PHP en Foros del Web. hola a todos. estoy intentando extraer de una array la informacion y asociar el nombre a la clave del array. con un una array me ...
  #1 (permalink)  
Antiguo 20/09/2012, 10:35
Avatar de ahaugas  
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 249
Antigüedad: 12 años, 8 meses
Puntos: 21
problemas con foreach y arrays

hola a todos.

estoy intentando extraer de una array la informacion y asociar el nombre a la clave del array.

con un una array me funciona correctamente pero al pasarlo por un bucle foreach me sigue mostrando un resultado cuando hay 2.

el script es el siguiente:
Código PHP:
            $myArray explode(','$uploadServer);
            
$status = array(0  => "Unprocessed",
                     
1  => "Processing",
                     
2  => "Download aborted because the file became too big.",
                     
3  => "Download aborted because the file downloaded too long.",
                     
4  => "Download finished. Uploading to RapidShare.",
                     
5  => "Upload to RapidShare finished. Job finished.",
                     
7  => "Upload failed 3 times for unknown reasons. Job aborted.",
                     
8  => "Upload failed because the file is black listed.",
                     
9  => "Download failed for unknown reasons.",
                     
11 => "Enqueued for later processing because this account already downloads 5 files at the same time.");

            

            foreach (
$myArray as $valor) {
                  if(
array_key_exists($myArray[3],$status)) {

                        return array(
$status[$myArray[3]]);

                  } else {

                        return 
FALSE;

                  }
            } 
alguna idea?

gracias de antemano
__________________
www.ahaugas.com mi pagina de desarrollo
  #2 (permalink)  
Antiguo 20/09/2012, 12:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con foreach y arrays

Pues tiene todo el sentido, si haces return se sale del bucle y sólo te regresa lo que le indicas.

Si sólo devuelves un valor entonces eso explicaría porque no recibes los dos.

Lo correcto sería almacenar en un arreglo las coincidencias dentro del bucle cuando sean correctas, y al finalizar el bucle devolver la colección de las mismas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 20/09/2012, 12:57
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años
Puntos: 58
Respuesta: problemas con foreach y arrays

Yo creo que se van sobreescribiendo pero haría falta ver el contenido de $myArray
  #4 (permalink)  
Antiguo 20/09/2012, 12:58
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: problemas con foreach y arrays

haber si entendi bien, tienes dos array $myArray $status y quieres obtener el valor de $status para cada uno de $myarray donde el valor de $myarray es igual al indice se $status?
(si no es eso explicate mejor porque la verdad no entendi)
mmmm no entiendo bien el objetivo pero probemos

Código PHP:
Ver original
  1. //caso uno, los indices tienen que coincidir
  2. foreach ($status as $C1 => $V1) {
  3.         foreach ($myArray as $C2 => $V2) {
  4.             if ($C2 == $C1) {
  5.                 Echo($C2.' Esta=> '.$V1.' Con el valor=>'.$V2);
  6.             }      
  7.         }
  8.     }
  9. //caso dos, $myArray tiene en el indice el nombre y como valor la clave del $status
  10.     foreach ($myArray as $C2 => $V2) {
  11.         Echo($C2.' Esta=> '.$status[$V2]);     
  12.     }

nose si alguno de los casos anteriores es el tuyo


EDITO: no tengan en cuenta mi respuesta por lo visto no entendi el problema si algun admin la borra agradecido (cuando comence a responder no habia ningun comentario).
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 20/09/2012 a las 13:01 Razón: fail
  #5 (permalink)  
Antiguo 20/09/2012, 13:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problemas con foreach y arrays

Yo me pregunto qué caso tiene recorrer $myArray as $valor y comparar sólo $myArray[3] en cada iteración.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 20/09/2012, 16:30
Avatar de ahaugas  
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 249
Antigüedad: 12 años, 8 meses
Puntos: 21
Respuesta: problemas con foreach y arrays

gracias, una parte ya lo solucione.... lo unico que me queda es retocarlo... hay un array al final con la clave 0 y esta vacio... y me gustaria quitarlo.


el codigo final es:
Código PHP:
Ver original
  1. //Definimos los estados de los archivos
  2.             $status = array(0  => "Unprocessed",
  3.                              1  => "Processing",
  4.                              2  => "Download aborted because the file became too big.",
  5.                              3  => "Download aborted because the file downloaded too long.",
  6.                              4  => "Download finished. Uploading to RapidShare.",
  7.                              5  => "Upload to RapidShare finished. Job finished.",
  8.                              7  => "Upload failed 3 times for unknown reasons. Job aborted.",
  9.                              8  => "Upload failed because the file is black listed.",
  10.                              9  => "Download failed for unknown reasons.",
  11.                              11 => "Enqueued for later processing because this account already downloads 5 files at the same time.");
  12.  
  13.             $passer = array();
  14.             foreach($myArray as $valor)
  15.             {
  16.                $tmp = explode(',', $valor);
  17.                if(array_key_exists($tmp[3], $status))
  18.                {  
  19.                   $tmp[3] = $status[$tmp[3]];
  20.                }  
  21.                $passer[] = $tmp ;  
  22.             }
  23.             //return....
  24.             return($passer);
  25.  
  26.       }
__________________
www.ahaugas.com mi pagina de desarrollo
  #7 (permalink)  
Antiguo 20/09/2012, 16:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problemas con foreach y arrays

No lo quites... es mejor no agregarlo si no lo necesitas:

if(variable != 0 && otra_condicion) { // Sí lo agregas }
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: arrays, foreach
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 15:10.