Foros del Web » Programando para Internet » PHP »

Agrupar resultados de un foreach en una sola variable

Estas en el tema de Agrupar resultados de un foreach en una sola variable en el foro de PHP en Foros del Web. Hola que tal. bueno tengo este problema, deseo agrupar los resultados que me devuelve un foreach en una solo variable, para mostrar todos los resultados ...
  #1 (permalink)  
Antiguo 18/04/2008, 17:41
Avatar de oscarva  
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 425
Antigüedad: 20 años, 3 meses
Puntos: 2
Agrupar resultados de un foreach en una sola variable

Hola que tal.

bueno tengo este problema, deseo agrupar los resultados que me devuelve un foreach en una solo variable, para mostrar todos los resultados mas adelante, me explico. Tengo este codigo:

Código PHP:
foreach ($rss->items as $item ) {
    
$links $item[link];
    echo 
"$links<br>";

lo que me imprimira una lista mas o menos asi:

Código:
http://www.pagina1.com
http://www.pagina2.com
http://www.pagina3.com .... ETC
pero logicamente si imprimo $links por fuera de foreach solamente me mostrar el ultimo resultado. lo que quisiera es agrupar todos los resultados de esta consulta en una variable, para que al llamarla mas adelante en el documento me muestre la lista de todos los links.

un abrazo y gracias
  #2 (permalink)  
Antiguo 18/04/2008, 17:48
 
Fecha de Ingreso: febrero-2005
Mensajes: 59
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: Agrupar resultados de un foreach en una sola variable

Yo utilizaría un array. Puedes hacer algo así:

$links = array();

foreach ($rss->items as $item ) {
$links[] = $item[link];
}


y desde fuera del bucle puedes acceder a cualquier posición, por ejemplo al elemento que está en la posición 2 del array:

echo $links[2] ;


Espero que esto te sirva de algo. Un saludo.
  #3 (permalink)  
Antiguo 18/04/2008, 17:49
 
Fecha de Ingreso: mayo-2006
Ubicación: Madrid
Mensajes: 153
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: Agrupar resultados de un foreach en una sola variable

Hola:
Tiene varías opciones:
Una de ellas es:

Código PHP:
foreach ($rss->items as $item ) {
    
$links .= '<br />'.$item[link];  // sustituyo el = po .=
}  
    echo 
"$links"
que lo que hace es que almacena los resultados en $links ya formateados.

O bien:
Código PHP:
$links=new array();
foreach (
$rss->items as $item ) {
    
$links[] = $item[link];
}
$p=implode('<br />',$links); 
que almacena todos los resultados en el array $links, para luego unirlos todos en una cadena ($p) usando <br /> como separador.

Te recomiendo la segunda opción. Así tienes disponibles todos los resultados por separado.

Saludos!
  #4 (permalink)  
Antiguo 19/04/2008, 04:16
Avatar de oscarva  
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 425
Antigüedad: 20 años, 3 meses
Puntos: 2
Re: Agrupar resultados de un foreach en una sola variable

Hola gracias a todos, finalmente me he decidido por utilizar

Código PHP:
foreach ($rss->items as $item ) {
    
$links .= '<br />'.$item[link];  // sustituyo el = po .=
}  
    echo 
"$links"
pero ahora tengo otro problema. todo este llamado se genera luego de realizar un llamado a la base de datos y mostrar x resultados. por lo que este forach se repite x veces a lo largo del script.

el problema es que muestra el primer resultado perfecto, imprime $links etc, pero al mostrar el segundo resultado al imprimir $links lo imprime junto con el anterior, y asi sucesivamente.


no se si me di a explicar muy bien, hay forma de cerrar ese array despues de utilizarlo para que no se acumule la variable en el siguiente resultado?

Saludos
  #5 (permalink)  
Antiguo 19/04/2008, 04:31
Avatar de oscarva  
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 425
Antigüedad: 20 años, 3 meses
Puntos: 2
Re: Agrupar resultados de un foreach en una sola variable

Solucionado:

es cuestion de utilizar

Código PHP:
unset ($variable); 
Saludos
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 13:05.