Foros del Web » Programando para Internet » PHP »

For dentro de if ¿Es posible?

Estas en el tema de For dentro de if ¿Es posible? en el foro de PHP en Foros del Web. Hola. Vereis necesito usar un for dentro de un if pero no se si es posible, pongo un ejemplo del codigo: Código PHP: $algo $otra_cosa ...
  #1 (permalink)  
Antiguo 05/04/2006, 12:34
 
Fecha de Ingreso: junio-2005
Mensajes: 22
Antigüedad: 12 años, 5 meses
Puntos: 1
For dentro de if ¿Es posible?

Hola.

Vereis necesito usar un for dentro de un if pero no se si es posible, pongo un ejemplo del codigo:

Código PHP:

$algo
$otra_cosa
$otra_sin_importancia

for ($se=1;$se<=$NumSe;$se++){
   echo 
"<tr>";
      for (
$dis=1;$dis<=7;$dis++){
         if ( (
condicion==condicion)
               
/* el for problematico        
                  for ($si=$diain;$si<=$diafi;$si++)
                          {
                             || (condicion==$si);
                          } 
             fin for problematico*/
             
)
      } 
Sigue el codigo.........

La idea es que una vez dentro de if, usando el for puedo incrementar el numero de veces que se compara X cosa con la variable dada, ya se, ya se, es una guarrada pero es que no se me ocurria otra manera de hacerlo.

El problema que me encuentro es que no puedo ejecutar el for dentro del if, el codigo tiene bastantes lineas pero lo que me falla es esto,¿ es posible meter un for de esta manera dentro del if?, ¿me estoy equivocando al cerrar algo y por eso no funciona? agradeceria muchisimo algun comentario o ayuda al respecto.

Muchisimas gracias.
  #2 (permalink)  
Antiguo 05/04/2006, 13:21
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Pero te da algun error?
Segun tu codigo:
Código PHP:
<?
         
if ( (condicion==condicion
               
/* el for problematico         
                  for ($si=$diain;$si<=$diafi;$si++) 
                          { 
                             || (condicion==$si); 
                          }  
             fin for problematico*/ 
             

?>
Hay un error de sintaxis, pero no precisamente por el for. En realidad deberia ser algo asi:
Código PHP:
<?
         
if (condicion==condicion) {
               
/* el for problematico         
                  for ($si=$diain;$si<=$diafi;$si++) 
                          { 
                             || (condicion==$si); 
                          }  
             fin for problematico*/ 
          
}

?>
  #3 (permalink)  
Antiguo 06/04/2006, 02:49
 
Fecha de Ingreso: junio-2005
Mensajes: 22
Antigüedad: 12 años, 5 meses
Puntos: 1
Hola y gracias.

Veras el problema lo tengo en este punto, lo que necesito hacer es basicamente esto:

Código PHP:
if (($1==1) || ($1==2) || ($1==3) || ($1==4)){
instruccion

Donde ($1==1) || ............ ($1==n) son variables que obtengo de esta manera, que bueno si esto no es posible, ya buscaria como hacerlo de otra forma.

Código PHP:
$diain $inicio 1;
$diafi $entrega 1;

for (
$dura=$diain;$dura<=$diafi;$dura++)
{
   ($
1==$dura);

Creo que asi se ve mejor lo que necesito hacer, se me ocurre otra manera, usar un while y almacenar los valores para despues mostrarlos con foreach, algo asi:

Código PHP:

while (loquesea){

$datos[$i++]="$variable_que_incrementa";

}


foreach (
$datos as $dato) {

        ($
1==$dato);    

        } 
Pero ¿no estamos en las mismas?, la cuestion es que hay una variable que cambia, se obtiene de un rango de numeros definidos, por ejemplo 1 y 4, esa variable seria 2 y 3, y ese 2 y ese 3 deben ir dentro de la condicion del if, mmm ¿me explique?.

Muchas gracias de nuevo.
  #4 (permalink)  
Antiguo 06/04/2006, 03:56
 
Fecha de Ingreso: diciembre-2004
Ubicación: Pamplona
Mensajes: 71
Antigüedad: 13 años
Puntos: 0
Qué preguntas

Buenos día, exactamente ¿qué quieres hacer?¿Esto?
Código PHP:
<?php 
if (($1==1) || ($1==2) || ($1==3) || ($1==4) ||....||($1==n))
?>
Pero no te sirve;
Código PHP:
<?php 
if ( $<= )
?>
Estaría encantado de ayudarte si logro entenderte;

Un saludo;

Speilberg
__________________
"Durante toda mi vida, mi padre habló de abandonar el pequeño pueblo en el que había nacido por una gran ciudad, porque, como él decía, no quería ser "un gran pez en una pequeña pecera".

Big Fish
  #5 (permalink)  
Antiguo 06/04/2006, 04:39
 
Fecha de Ingreso: junio-2005
Mensajes: 22
Antigüedad: 12 años, 5 meses
Puntos: 1
Buenos dias.

La verdad es que a veces me complico muchisimo la vida, pero es lo que hay cuando no se tiene idea de las cosas.

Lo que necesito hacer es exactamente esto:

Primero obtengo unas variables ($diainicio y $diaentrega) que son numeros, extraigo los numeros que quedan entre estos, si fuesen $diainicio = 7; y $diaentrega =11; extraeria el 8, el 9 y 10.

Se me ocurre para hacerlo un usar for tal que asi:

Código PHP:
$diain $diainicio 1;
$diafi $diaentrega 1;

for (
$dia=$diain;$dia<=$diafi;$dia++)
{
  
$dia;

La variable $dia es la que tiene que ir a continuacion, dentro del if, es decir, para el numero 8 del final de la condicion hasta el el numero 10 de la condicion tendria que ser $dia.

Código PHP:
if   ( 
     (
$an*10000+$mes*100+$di==$an*10000+$mes*100+8
||   (
$an*10000+$mes*100+$di==$an*10000+$mes*100+9)
||   (
$an*10000+$mes*100+$di==$an*10000+$mes*100+10)
     ) 
Se deberia quedar asi:

($an*10000+$mes*100+$di==$an*10000+$mes*100+$dia)

Pero se debe cumplir la condicion AND dentro del if, asi que opte por la via rapida (y sucia).

Hacer un for como este:

Código PHP:
for ($dia=$diain;$dia<=$diafi;$dia++)
{
 || (
$an*10000+$mes*100+$di==$an*10000+$mes*100+$dia)

Claro esto me resuelve una parte del problema, pero no puedo meterlo dentro del if de esta manera:

Código PHP:
if (
      for (
$dia=$diain;$dia<=$diafi;$dia++)
        {
            || (
$an*10000+$mes*100+$di==$an*10000+$mes*100+$dia)
        } 
 ) 
La cuestion es como puedo hacerlo, si es que esto se puede hacer.

Imagino que ensucie al maximo el codigo y que esto es una "cochinada" de las mas grandes, pero no tengo mucha idea y no se como hacerlo la verdad.

Muchas gracias.

P.D: La idea es hacer un calendario de tareas para usuarios, de manera que cuando el usuario ve su pagina, pueda ver que dia es el que se acepta el trabajo (color A) y que dia finaliza(color B). El problema con el que me encuentro: que vea tambien los dias que quedan entre el dia que se acepta el trabajo y el que se finaliza (color C), y solo me falta esto para tenerlo :)
  #6 (permalink)  
Antiguo 06/04/2006, 07:29
 
Fecha de Ingreso: diciembre-2004
Ubicación: Pamplona
Mensajes: 71
Antigüedad: 13 años
Puntos: 0
De acuerdo

Vale más o menos lo he entendido, aunque me parece que el código queda muy sucio. Vamos por partes, dudo que puedas meter un for dentro de una condición, has probado ha hacerlo fuera?me explico;
Código PHP:
<?
$condicion 
"";//Creamos una string donde iremos concatenando cosas
for ( $dia $diain$dia <= $diafi$dia++){
    if (
$dia == $diain)//Si es el primero
        
$condicion .= "(($an*10000)+($mes*100)+$di==($an*10000)+($mes*100)+$dia) ";
    else
//Si no es el primero
        
$condicion .= "|| (($an*10000)+($mes*100)+$di==($an*10000)+($mes*100)+$dia) ";
        }
if ( 
$condicion )
?>
Es lo primero que se me ocurre aunque creo que queda muuuu sucio y no sé ni si funcionará. Pruebalo y me dices.
__________________
"Durante toda mi vida, mi padre habló de abandonar el pequeño pueblo en el que había nacido por una gran ciudad, porque, como él decía, no quería ser "un gran pez en una pequeña pecera".

Big Fish
  #7 (permalink)  
Antiguo 06/04/2006, 11:15
 
Fecha de Ingreso: junio-2005
Mensajes: 22
Antigüedad: 12 años, 5 meses
Puntos: 1
Muchisimas gracias, eso es exactamente lo que queria guarrear XD

Si muestra las cosas como yo queria, al final estoy simplificando todo el codigo bastante; se queda en ($variable==$la_otra_variable), y por lo menos no queda visualmente tan escandaloso, pero esta claro que es un cochinada y de las grandes, pero es que esta dentro de varios while y estos a su vez en for, pillando variables de muchos sitios de unas 7 u 8 querys distintas, ademas de que esto ya lo han tocado mas de 4 personas distintas y ... en fin un lio de codigo asi que por ensuciar un poco mas....

Lo dicho anteriormente, muchisimas gracias por tu tiempo y paciencia.

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 20:49.