Foros del Web » Programando para Internet » PHP »

Lo quiero hacer con WHILE y lo tengo con FOREACH

Estas en el tema de Lo quiero hacer con WHILE y lo tengo con FOREACH en el foro de PHP en Foros del Web. Gente: hice una funcion con foreach pero este año en la universidad me martillaron la cabeza con el tema de no procesar de mas...... asi ...
  #1 (permalink)  
Antiguo 01/01/2009, 14:26
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Pregunta Lo quiero hacer con WHILE y lo tengo con FOREACH

Gente: hice una funcion con foreach pero este año en la universidad me martillaron la cabeza con el tema de no procesar de mas...... asi que quiero hacer lo mismo con while pero se me complica con el tema de los arrays asociativos.

Me ayudan ?

Código PHP:
<?php
Function is_art ($string){
  
$palabras = array ('arte','decoracion','modernismo');
  
$lo_es false;

  foreach(
$palabras as $palabra){            
   
$lo_es = (($lo_es) OR (stristr($string,$palabra)));
  } 
  return (
$lo_es);
}  

if (
is_art("esta revista es de arte moderno")) echo 'ok';

?>
El problema como decia lo tengo en que no se como avanzar al siguiente elemento en un array asociativo
__________________
Salu2!

Última edición por Italico76; 01/01/2009 a las 14:43
  #2 (permalink)  
Antiguo 01/01/2009, 14:33
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Lo quiero hacer con WHILE y lo tengo con FOREACH

Se puede recorrer un array usando las funciones next() y prev(). Otra forma habitual de recorrer un array
es usando la función each().
  #3 (permalink)  
Antiguo 01/01/2009, 15:34
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Lo quiero hacer con WHILE y lo tengo con FOREACH

TiempoMuerto: muchas gracias! ya esta........

Código PHP:
<?php
Function is_art ($string){
  
$palabras = array ('arte','decoracion','modernismo');

  
$palabra=current($palabras);
  
$found false;
    
  while ((
$palabra!=NULL) AND (!$found)){   
    
$found   stristr($string,$palabra);
    
$palabra next($palabras);    
  }   
  return (
$found);
}
__________________
Salu2!

Última edición por Italico76; 01/01/2009 a las 18:01
  #4 (permalink)  
Antiguo 01/01/2009, 18:01
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Lo quiero hacer con WHILE y lo tengo con FOREACH

Puedes usar el retorno de next($palabras) para controlar el ciclo (next() devuelvefalse si ya ha llegado al último elemento), y un break; dentro del bucle while para salir de él cuando $found sea true. Una forma muy simple sería:

Código PHP:
Function is_art ($string){
  
$palabras = array ('arte','decoracion','modernismo');

  while (
$palabra next($palabras)){                   
    if(
stristr($string,$palabra) == true) return true;
  } 

  return 
false;

  #5 (permalink)  
Antiguo 01/01/2009, 18:07
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
De acuerdo Respuesta: Lo quiero hacer con WHILE y lo tengo con FOREACH

okram: muchas gracias ..... de hecho cosas como while ($palabra = next($palabras)) son las que tengo que aprende

Sin embargo, como le decia a GatorV en otro hilo me pase un año en la universidad tratando de des-aprender el tema de usar break dentro las estructuras de control.

Con tu ayuda ahora me quedo asi:

Código PHP:
<?php
Function is_art ($string){
  
$palabras = array ('arte','decoracion','modernismo');
  
$found false;
    
while ((
$palabra next($palabras)) AND (!$found)){  // ($palabra = next($palabras))  comprueba que no sea NULL como ($palabra!=NULL) 
    
$found   stristr($string,$palabra);     
  }   
  return (
$found);

}
__________________
Salu2!

Última edición por Italico76; 01/01/2009 a las 18:13
  #6 (permalink)  
Antiguo 01/01/2009, 18:26
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Lo quiero hacer con WHILE y lo tengo con FOREACH

italico76:
Aqui te pongo otra alternativa a tu script.
Mas o menos parecido!!!.

Cita:
<?php
Function is_art ($string){
$palabras = array ('arte','decoracion','modernismo');
$cantidad = count($palabra);
for($w = 0; $w < $cantidad; $w++) {
if($palabra[$w] == "$string") {
return $palabra[$w];
}
}
if (is_art("esta revista es de arte moderno")) echo 'ok';
?>
Saludos
Y espero te sirva
Franco
  #7 (permalink)  
Antiguo 01/01/2009, 19:03
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Lo quiero hacer con WHILE y lo tengo con FOREACH

Cita:
Aqui te pongo otra alternativa a tu script.
franco190453: me gusto, gracias
__________________
Salu2!
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 09:54.