utilizan para operadores operador not lógicos los logicos logico ejemplos cuáles comparacion caracteres asignacion and php conditional if-statement

php - para - la condición después de && siempre se evalúa



operadores logicos javascript (6)

Tengo esta declaración if que prueba las 2 condiciones siguientes. El segundo es una función goodToGo() así que quiero llamarlo a menos que la primera condición ya sea verdadera

$value = 2239; if ($value < 2000 && goodToGo($value)){ //do stuff } function goodToGo($value){ $ret = //some processing of the value return $ret; }

Mi pregunta es acerca de las 2 condiciones if $value < 2000 && goodToGo($value) . ¿Los dos se evalúan o el segundo solo se evalúa cuando el primero es verdadero?

En otras palabras, ¿son los 2 bloques siguientes lo mismo?

if($value < 2000 && goodToGo($value)) { //stuff to do } if($value < 2000) { if (goodToGo($value)){ //stuff to do } }


Los dos bloques SON iguales.

Los operadores lógicos de PHP son "flojos", se evalúan solo si son necesarios. El siguiente código imprime "¡Hola, mundo!":

<?php $a = 10; isset($a) || die ("variable /$a does not exist."); print "Hello, world!" ?>

Otros operadores lógicos incluyen &&, y, o.

<?php perform_action() or die (''failed to perform the action''); ?>

es un modismo popular.


No, la segunda condición no siempre se ejecutará (lo que hace que sus ejemplos sean equivalentes).

PHP''s && , || , and , y or operadores se implementan como operadores de "cortocircuito". Tan pronto como se encuentra una condición que fuerza el resultado para el condicional general, se detiene la evaluación de las condiciones posteriores.

Desde http://www.php.net/manual/en/language.operators.logical.php

// -------------------- // foo() will never get called as those operators are short-circuit $a = (false && foo()); $b = (true || foo()); $c = (false and foo()); $d = (true or foo());


Sí, los 2 bloques de código que diste son equivalentes. PHP tiene un cortocircuito, entonces cuando usas || y &&, cualquier declaración después de la primera solo se evalúa cuando sea necesario.


Sí. Los dos bloques son iguales. PHP, como la mayoría de los lenguajes (pero no todos), usa la evaluación de cortocircuito para && y || .


Siempre relacione su lenguaje técnico con su propio idioma. De la misma manera, si le digo en una conversación verbal, es como: usted pregunta = "si tengo hambre" && "estoy comiendo pizza" es similar a "si tengo hambre" entonces solo estoy comiendo Pizza "? Así que aquí puedes ver que la frase posterior dice que hasta que no tenga hambre no estoy comiendo pizza, y la primera dice que soy humilde y que estoy comiendo pizza. :-)


la segunda condición solo se comprobará si y solo si la primera es verdadera, por lo tanto, ambas declaraciones son equivalentes.