Foros del Web » Programando para Internet » PHP »

foreach dentro de for?

Estas en el tema de foreach dentro de for? en el foro de PHP en Foros del Web. Hola, estoy usando un foreach(contiene un array) dentro de for y tengo una pregunta, causa problemas de rendimiento al ejecutar? Gracias....
  #1 (permalink)  
Antiguo 23/03/2009, 16:10
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 4 meses
Puntos: 56
foreach dentro de for?

Hola, estoy usando un foreach(contiene un array) dentro de for y tengo una pregunta, causa problemas de rendimiento al ejecutar? Gracias.
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #2 (permalink)  
Antiguo 23/03/2009, 16:15
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: foreach dentro de for?

Depende de para qué estás haciendo, quizás de algún modo se pueda simplificar. Pero sin más datos, es difícil darte una respuesta acertada.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 23/03/2009, 16:36
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: foreach dentro de for?

podrias mostrar tu codigo?
a ver si entree todos podemos simplificar o cualkiier cosa saludines!
  #4 (permalink)  
Antiguo 23/03/2009, 17:16
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 4 meses
Puntos: 56
Respuesta: foreach dentro de for?

El array tiene 4 valores que son los tipos de mascota y el for con 20 resultados de mssql_fetch_row de este query:
Código PHP:
$query /* (SELECT TOP 5 clase_mascota,duenho FROM PERSONAS WHERE clase_mascota='0'
 UNION ALL SELECT TOP 5 clase_mascota,duenho  FROM PERSONAS WHERE clase_mascota=1 UNION ALL etc etc), 
me va dar 4 grupos de 5 personas: Total 20 */

$mascotas = array(0=>"Perro",1=>"Gato",2=>"Conejo",3=>"Ardilla");

for(
$i=0;$i<20;$i++){
$row mssql_fetch_row($query);
foreach(
$mascotas AS $key_mascotas => $val_mascotas){
if(
$i==(5*$key_mascotas)){
echo 
"<tr><TH>Top 5 ".$mascotas[$row["clase_mascota"]]."'s</TH></tr>";
}
}
echo 
"<tr><td>Persona: $row[0]<td></tr>";

Lo que estoy haciendo es que se separen en grupo, Ejem: Top 5 Gatos, perros, etc.

SIN el foreach es algo parecido a esto
Código PHP:
for($i=0;$i<20;$i++){
$row mssql_fetch_row($query);

if(
$i==0{
echo 
"<tr><TH colspan=\"3\">Top 5 $mascotas[0]</TH></tr>";
}

if(
$i==5){
echo 
"<tr><TH colspan=\"3\">Top 5 $mascotas[1]</TH></tr>";
}
if(
$i==10){
echo 
"<tr><TH colspan=\"3\">Top 5 $mascotas[2]</TH></tr>";
}
if(
$i==15){
echo 
"<tr><td colspan=\"3\">Top 5 $mascotas[3]</TH></tr>";
}

la parte if($i==(5*$key_mascotas)){ multiplica la comparación del if osea retornan 0,5,10,15 asi como lo anterior pero no quiero hacer muchos if ademas en un futuro le quiero aumentar mas mascotas. Saludos y gracias denuevo
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #5 (permalink)  
Antiguo 23/03/2009, 18:45
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: foreach dentro de for?

Es mejor usar un foreach en ese caso, te vas a facilitar el trabajo futuro, evitas código repetitivo, y de paso es más legible.

Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 23/03/2009, 18:57
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: foreach dentro de for?

jaaj seguro q no se te ha enciclado eso jaja me dio hasta dolor de cabeza por q no mejor le haces como dice david deja los foreach
o en tu caso para q necesitabas los for?
  #7 (permalink)  
Antiguo 23/03/2009, 19:16
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 4 meses
Puntos: 56
Respuesta: foreach dentro de for?

Ok muchas gracias...
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #8 (permalink)  
Antiguo 23/03/2009, 20:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 45
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: foreach dentro de for?

Si querés optimizar, en vez de mssql_fetch_row usá mysql_fetch_assoc (solo te genera los índices con nombres, no te hace los índices con números), cuando sea posible usá comillas simples y no dobles y es preferible usar comillas dobles a estar concatenando.

Ej

en vez de
Código PHP:
Ver original
  1. echo "<tr><TH>Top 5 ".$mascotas[$row["clase_mascota"]]."'s</TH></tr>";

hacé
Código PHP:
Ver original
  1. echo "<tr><TH>Top 5 {$mascotas[$row['clase_mascota']]}'s</TH></tr>";

Espero te sirva, 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 10:16.