Foros del Web » Programando para Internet » PHP »

Dudas con switch

Estas en el tema de Dudas con switch en el foro de PHP en Foros del Web. Ante todo gracias por el tiempo dedicado, paso a detallar mi duda: Mi objetivo es lograr lo siguiente: A es verdadero = SI B es ...
  #1 (permalink)  
Antiguo 19/04/2012, 11:01
Avatar de Panicav  
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario, Santa Fe - Argentina.
Mensajes: 135
Antigüedad: 16 años, 3 meses
Puntos: 8
Dudas con switch

Ante todo gracias por el tiempo dedicado, paso a detallar mi duda:

Mi objetivo es lograr lo siguiente:

A es verdadero = SI
B es verdadero = NO "doy valor a una variable"
C es verdadero = SI
D es verdadero = NO "doy valor a una variable"
Proceso esta info = NO (porque existe un no)

Para ello aplico lo siguiente:
Código PHP:
switch(true) {
            case ( empty( 
$_POST[p1])):  $f_1='DATO FALTANTE"';
            case ( empty( 
$_POST[p2])):  $f_2='DATO FALTANTE"';
            case ( empty( 
$_POST[p3])):  $f_3='DATO FALTANTE"';
            case ( empty( 
$_POST[p4)):  $f_4='DATO FALTANTE"';
            default: 
$carga='ok';     break; } 
Pero el resultado no es el esperado, dado que si por ejemplo "$_POST[p2]" contiene un valor al no contener "$_POST[p1]" ningún valor me lo valida como que estuviese vacío, funciona correctamente utilizando "break" pero al utilizarlo de ese modo si "$_POST[p4]" no contiene valor al llegar a "$_POST[p1]" sin valor no me lo ejecutaría, espero ser claro y desde ya muchas gracias.
Cabe aclarar que si todos los valores son verdaderos "defautl" da la orden de procesar dicha info.
  #2 (permalink)  
Antiguo 19/04/2012, 11:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Dudas con switch

El punto es, ¿por qué estás usando un switch en lugar de if/elseif?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/04/2012, 11:23
Avatar de Panicav  
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario, Santa Fe - Argentina.
Mensajes: 135
Antigüedad: 16 años, 3 meses
Puntos: 8
Respuesta: Dudas con switch

Tienes toda la razón!!! a veces me pasa que me enfrasco de tal manera que no veo el bosque detras del arbol, muchas gracias!
  #4 (permalink)  
Antiguo 19/04/2012, 13:45
Avatar de Panicav  
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario, Santa Fe - Argentina.
Mensajes: 135
Antigüedad: 16 años, 3 meses
Puntos: 8
De acuerdo Respuesta: Dudas con switch

Bueno pude resolver el tema me puse a realizar lo mismo con if/elseif pero claro... era lo mismo que switch utilizando break
Código PHP:
if (empty( $_POST[p1])) { $f_titulo_esp='DATO FALTANTE"'; }
            elseif ( empty( 
$_POST[p2])) { $f_titulo_eng='DATO FALTANTE"'; }
            elseif ( empty( 
$_POST[p3])) { $f_titulo_rus='DATO FALTANTE"'; }
            elseif ( empty( 
$_POST[p4])) { $f_img='style="DATO FALTANTE"'; }
            else { 
$carga='ok'; } 
Así que realice lo mimos que antes pero agregue solo una parte quedando así:
Código PHP:

switch(true) { case ( empty( $_POST[p1])):  $f_1='DATO FALTANTE"'; break; }
switch(
true) { case ( empty( $_POST[p2])):  $f_2='DATO FALTANTE"'; break; }
switch(
true) { case ( empty( $_POST[p3])):  $f_3='DATO FALTANTE"'; break; }
switch(
true) { case ( empty( $_POST[p4)):  $f_4='DATO FALTANTE"'; break; } 
switch(
true) { case ( empty( $_POST[p1])); 
                        case ( empty( 
$_POST[p2]));
                        case ( empty( 
$_POST[p3])); 
                        case ( empty( 
$_POST[p4)); break;
                        default: 
$carga='ok';     break; } 
Lo propongo por si a alguien le sirve, y desde ya gracias por tu tiempo "pateketrueke", saludos.
  #5 (permalink)  
Antiguo 19/04/2012, 14:18
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Dudas con switch

Cita:
Iniciado por pateketrueke Ver Mensaje
El punto es, ¿por qué estás usando un switch en lugar de if/elseif?
Yo no entiendo tu punto de usar un condicional u otro. Es como si preguntase pq no usa esta sintaxis:

echo (empty( $_POST[p2])) ? 'DATO FALTANTE' : '';
echo (empty( $_POST[p3])) ? 'DATO FALTANTE' : '';

Lo importante es que viene mejor para tu código ¿No? Por limpieza, eficacia, etc.
Además sólo le faltaban los break y yo personalmente estoy en contra en determinadas ocasiones de los elseif infinitos...
El switch encuentra coincidencia y sale... El if encuentra coincidencia y sigue revisando cada elseif. ZzzZ
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #6 (permalink)  
Antiguo 19/04/2012, 22:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Dudas con switch

Cita:
Iniciado por IEKK Ver Mensaje
[...] El if encuentra coincidencia y sigue revisando cada elseif. ZzzZ
Eso es mentira.

Al evaluar verdadero inmediatamente deja de revisar los demás bloques, a lo mejor te entendí mal pero los switch están diseñados para evaluar casos con valores específicos y no evaluaciones booleanas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 20/04/2012, 07:17
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Dudas con switch

y yo cuando dije algo de valores específicos o booleanos ¿?
Dije que no entendía que se recomendara un condicional u otro cuando sólo le faltaban los BREAKS;
Podrías haberme iluminado o decir que no estás de acuerdo y si no me entendiste algo preguntar... pero prefieres quitarme karma... bueno, me has divertido la tarde :)

Resta, resta un poco más, si yo sólo entro por echar una mano o aprender :)
Tú... bueno ya te he leído otras veces. Sabes, pero te encanta tirar tierra
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #8 (permalink)  
Antiguo 20/04/2012, 07:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Dudas con switch

Según a lo que dijiste, que cité, está mal.

¿Echar la mano diciendo cosas que no son ciertas?

Lo demás no dije que hayas mencionado algo así, simplemente si no entiendes como funcionan las cosas no recomiendes, sólo confundes.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 21/04/2012, 14:12
Avatar de Panicav  
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario, Santa Fe - Argentina.
Mensajes: 135
Antigüedad: 16 años, 3 meses
Puntos: 8
Respuesta: Dudas con switch

En realidad no faltaban los break, aclaraba que no los utilizaba porque necesitaba que siga chequeando y no que chequee y salga (como cuando utiliza break) desde ya gracias por su ayuda y tiempo.
Si bien no aplique lo que menciono "pateketrueke" eso motivo que que realice me código de otra forma para que funciones desde ya agradecido por tu tiempo.

Etiquetas: dudas, switch, variables
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:51.