Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Alguien sabe porque?

Estas en el tema de ¿Alguien sabe porque? en el foro de PHP en Foros del Web. Hola Amigos, Esta vez traigo una pregunta que supongo que es fácil de responder para expertos pero para novatos como yo es complicada. El código ...
  #1 (permalink)  
Antiguo 19/06/2015, 11:48
 
Fecha de Ingreso: noviembre-2010
Mensajes: 63
Antigüedad: 14 años
Puntos: 3
¿Alguien sabe porque?

Hola Amigos,
Esta vez traigo una pregunta que supongo que es fácil de responder para expertos pero para novatos como yo es complicada.

El código que pongo a continuación me imprime "verdadero, a=1" cosa que comprendo y comparto.
Código PHP:
if($a=1){
echo 
"verdadero, a=".$a;
}else{
echo 
"falso";

Lo que no entiendo es el porque el siguiente ejemplo me imprime "falso" cuando yo esperaría que el resultado sea "verdadero, a=0" mas aún teniendo en cuenta lo que pasa en el ejemplo anterior.
Código PHP:
if($a=0){
echo 
"verdadero, a=".$a;
}else{
echo 
"falso";

  #2 (permalink)  
Antiguo 19/06/2015, 11:53
Avatar de Apolo_13  
Fecha de Ingreso: mayo-2015
Mensajes: 40
Antigüedad: 9 años, 6 meses
Puntos: 4
Respuesta: ¿Alguien sabe porque?

porque si! jajaja

no, ese fallo lo hemos tenido todos en nuestros inicios. estaria bien si cambiaras un poco la sintaxis porque el operador booleneno en vb.net y pl/sql es con un solo =. Pero como estas en php, el operador de comparación es con 2 iguales "juntos"; ejemp: "hola" == "hola"

p.d: tienes que practicar mucho mas ;)

saludos!
__________________
¿Buscas respuestas? eemmmmm.....¡Abstrae tu mente!
  #3 (permalink)  
Antiguo 19/06/2015, 11:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿Alguien sabe porque?

Las comparaciones se hace con == y === dependiendo de que tan estricta quieres que sea.

Desde luego es algo bien básico: de manual.

Cita:
p.d: tienes que practicar mucho mas ;)
Además de leer el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 19/06/2015, 12:06
 
Fecha de Ingreso: noviembre-2010
Mensajes: 63
Antigüedad: 14 años
Puntos: 3
Respuesta: ¿Alguien sabe porque?

Cita:
Iniciado por pateketrueke Ver Mensaje
Las comparaciones se hace con == y === dependiendo de que tan estricta quieres que sea.

Desde luego es algo bien básico: de manual.



Además de leer el manual.
Desde ya jejej.. esa lección la tengo aprendida...
La pregunta va un poco mas allá de eso, yo no estoy comparando nada dentro del IF, estoy verificando que la expresión que esta allí dentro devuelva true o false.

¿Porque asignar el valor 1 a una variable devuelve true y asignar el valor 0 devuelve false?
  #5 (permalink)  
Antiguo 19/06/2015, 12:09
 
Fecha de Ingreso: noviembre-2010
Mensajes: 63
Antigüedad: 14 años
Puntos: 3
Respuesta: ¿Alguien sabe porque?

Cita:
Iniciado por Apolo_13 Ver Mensaje
porque si! jajaja

no, ese fallo lo hemos tenido todos en nuestros inicios. estaria bien si cambiaras un poco la sintaxis porque el operador booleneno en vb.net y pl/sql es con un solo =. Pero como estas en php, el operador de comparación es con 2 iguales "juntos"; ejemp: "hola" == "hola"

p.d: tienes que practicar mucho mas ;)

saludos!
Gracias por tu respuesta!
Pero justamente, dentro del IF, no estoy haciendo una comparación sino una asignación (tengo bien claro que en php = es para asignar y ==, === es para comparar)
El punto es..
Porque asignar el valor 1 devuelve true en un IF y asignar el valor 0 devuelve false??
  #6 (permalink)  
Antiguo 19/06/2015, 12:19
Avatar de Apolo_13  
Fecha de Ingreso: mayo-2015
Mensajes: 40
Antigüedad: 9 años, 6 meses
Puntos: 4
Respuesta: ¿Alguien sabe porque?

en mas de un lenguaje de programación, 0 equivale a false y 1 equivale a true.
son como los bits que solo tienes 2 estados 0(false) y 1(true), algo asi jaja.

si quieres saber el porque de esto, ya te tocaría preguntar a quien sea el creador del php :p

saludos!
__________________
¿Buscas respuestas? eemmmmm.....¡Abstrae tu mente!
  #7 (permalink)  
Antiguo 19/06/2015, 12:21
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: ¿Alguien sabe porque?

Cita:
Iniciado por Monty_7 Ver Mensaje
Gracias por tu respuesta!
Pero justamente, dentro del IF, no estoy haciendo una comparación sino una asignación (tengo bien claro que en php = es para asignar y ==, === es para comparar)
El punto es..
Porque asignar el valor 1 devuelve true en un IF y asignar el valor 0 devuelve false??
Por que es el comportamiento esperado, lo puedes ver mas claro en el manual http://php.net/manual/en/language.ty...oolean.casting
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #8 (permalink)  
Antiguo 19/06/2015, 12:22
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: ¿Alguien sabe porque?

Ese es otro concepto básico de programación y lógica.

Tipo de dato lógico
Lógica binaria

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 19/06/2015, 12:43
 
Fecha de Ingreso: noviembre-2010
Mensajes: 63
Antigüedad: 14 años
Puntos: 3
Respuesta: ¿Alguien sabe porque?

Cita:
Iniciado por hhs Ver Mensaje
Por que es el comportamiento esperado, lo puedes ver mas claro en el manual [url]http://php.net/manual/en/language.types.boolean.php#language.types.boolean. casting[/url]
Perdón pero sigo sin comprender...
Con el mismo criterio, este código que debería devolver??

Código PHP:
if($a=2){ 
echo 
"verdadero, a=".$a
}else{ 
echo 
"falso"

  #10 (permalink)  
Antiguo 19/06/2015, 12:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: ¿Alguien sabe porque?

El manual es extremadamente claro al respecto.

Cita:
Iniciado por Manual oficial de PHP
Cuando se realizan conversiones a boolean, los siguientes valores son considerados FALSE:
  • el boolean FALSE mismo
  • el integer 0 (cero)
  • el float 0.0 (cero)
  • el valor string vacío, y el string "0"
  • un array con cero elementos
  • un object con cero variables miembro (sólo en PHP 4)
  • el tipo especial NULL (incluyendo variables no definidas)
  • objetos SimpleXML creados desde etiquetas vacías

Cualquier otro valor es considerado TRUE (incluyendo cualquier resource).
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 19/06/2015, 12:54
 
Fecha de Ingreso: noviembre-2010
Mensajes: 63
Antigüedad: 14 años
Puntos: 3
Respuesta: ¿Alguien sabe porque?

Cita:
Iniciado por Alexis88 Ver Mensaje
El manual es extremadamente claro al respecto.
Perdón por el descuido, debí leer con mas atención.
Les agradezco mucho su tiempo y buena predisposición para ayudarme a despejar esta duda.
Saludos y gracias!!!

Etiquetas: asignacion, condicional, resultado
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 12:51.