Foros del Web » Programando para Internet » PHP »

duda con bucle

Estas en el tema de duda con bucle en el foro de PHP en Foros del Web. Hola a todos. Tengo la siguiente duda en como implementar un bucle para mostrar valores de un array. tengo por ejemplo el siguiente array: $dato[0]="pepe"; ...
  #1 (permalink)  
Antiguo 11/06/2010, 10:54
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 9 meses
Puntos: 7
duda con bucle

Hola a todos.

Tengo la siguiente duda en como implementar un bucle para mostrar valores de un array.

tengo por ejemplo el siguiente array:

$dato[0]="pepe";
$dato[1]="juan";
$dato[2]="luis";
$dato[3]="miguel";
$dato[4]="jose";
...
$dato[n]="texto n";

quiero mostrar solo 3 valores partiendo desde el 1, no del 0.
ademas si uno de esos 3 valores a mostrar coincide con un valor que tengo en otra variable entonces no mostrar ese valor y saltarme al siguiente.

basandome en el array anterior expongo dos casos:

Caso 1
$variable="algo";
imprimo 3 valores desde $dato[1] hasta $dato[3] ya que ninguno de sus valores coincide con con el valor de $variable.

Caso 2
$variable="luis";
imprimo 3 valores desde $dato[1] hasta $dato[4] saltandome $dato[2] ya que su valor coincide con el valor de $variable

He probado con foreach, for, while pero ninguno me funciona como quisiera, he agregado un if para comprobar la coincidencia de $variable con los valores de mi array y logro evitar imprimirlo cuando coinciden pero ya no imprimo 3 valores sino que 2 y lo que dese es siempre imprimir 3.

Cualquier ayuda será bienvenida :)

Gracias
  #2 (permalink)  
Antiguo 11/06/2010, 11:08
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 5 meses
Puntos: 334
Respuesta: duda con bucle

en realidad los 3 bucles sirven.. lo que pasa es que obviamente no lo van a hacer como tu quieres si no les dices :P

te dejo un ejemplo con FOR


Código PHP:
Ver original
  1. $variable = "luis";
  2.  
  3. $dato[0]="pepe";
  4. $dato[1]="juan";
  5. $dato[2]="luis";
  6. $dato[3]="miguel";
  7. $dato[4]="jose";
  8. for($i = 1,$o = 1; $i < count($dato); ++$i){
  9.   if($o >= 3) break;
  10.   if($dato[$i] != $variable){
  11.     echo $dato[$i];
  12.     $o++;
  13.   }
  14. }
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 11/06/2010, 11:33
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 9 meses
Puntos: 7
Respuesta: duda con bucle

Hola Hidek1, gracias por tu respuesta.

De hecho se que cualquiera me sirve pero no se implementarlo para que se comporte de la manera especificada en mi mensaje, por lo cual recurri al foro :)

había probado el siguiente código pero siempre partía desde el primer elemento, osea del 0 cuando yo queria que fuese desde el 1, el resto se comportaba bien.

Código PHP:
$variable="luis";
$i=1;
foreach (
$dato as $value) {
    if(
$value!="luis"){
        echo 
$value;
        
$i++;
    }
        if(
$i==4){break;}

con ese codigo siempre me mostraba 3 elementos como yo queria, eliminaba la coincidencia con el valor de $variable pero comenzaba desde el elemento 0 y no del 1.

Tu codigo aun que me costó enenderlo de un principio me funcionó correctamente.

Muchas gracias.
  #4 (permalink)  
Antiguo 11/06/2010, 14:14
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 9 meses
Puntos: 7
Respuesta: duda con bucle

ahora se me presentó otro problema, por ejemplo si ahora quiero filtrar mas d eun nombre, en el ejemplo anterior solo filtraba "luis", pero si quiero tener mas nombres lo lógico sería que creara un array.

en el if intento hacer algo que estoy seguro que no corresponde ya que no me funciona, lo que hago es comparar ahora $dato[$i] con el array $variable

Código PHP:
// $variable="luis";
$variable=array('luis','jose');
 
$dato[0]="pepe";
$dato[1]="juan";
$dato[2]="luis";
$dato[3]="miguel";
$dato[4]="jose";
//...
$dato[n]="...";

for(
$i 1,$o 1$i count($dato); ++$i){
  if(
$o >= 3) break;
  if(
$dato[$i] != $variable[$i]){
    echo 
$dato[$i];
    
$o++;
  }

intente colocar un foreach para recorrer el array y actuar en base a cada uno pero el resultado que obtengo por pantalla es todos los registros duplicados.

Alguna idea de como podría ser??
  #5 (permalink)  
Antiguo 11/06/2010, 14:21
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 5 meses
Puntos: 334
Respuesta: duda con bucle

bueno para eso tienes la funcion in_array()
Código PHP:
Ver original
  1. $variable=array('luis','jose');
  2.  
  3. $dato[0]="pepe";
  4. $dato[1]="juan";
  5. $dato[2]="luis";
  6. $dato[3]="miguel";
  7. $dato[4]="jose";
  8. //...
  9. $dato[n]="...";
  10.  
  11. for($i = 1,$o = 1; $i < count($dato); ++$i){
  12.   if($o >= 3) break;
  13.   if(!in_array($dato[$i], $variable)){
  14.     echo $dato[$i];
  15.     $o++;
  16.   }
  17. }
__________________
More about me...
~ @rhyudek1
~ Github
  #6 (permalink)  
Antiguo 11/06/2010, 14:32
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 9 meses
Puntos: 7
Respuesta: duda con bucle

nuevamente infinitas gracias Hidek1, no conocía la función in_array(), me funciona a la perfección.

Aun me falta mucho por aprender :)

Gracias

Etiquetas: bucle
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 19:23.