endif - Usando AND/OR en if else sentencia PHP
if php en html (10)
"Y" no funciona en mi código PHP.
¿La versión del servidor tal vez?
"&&" funciona bien.
¿Cómo se usa ''AND / OR'' en una sentencia PHP if else? Podría ser:
1) Y
if ($status = ''clear'' AND $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = ''$id'',
status = ''clear'',
colour = ''#3C0''
WHERE rent.id = $id");
}
2) O
if ($status = ''clear'' OR $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = ''$id'',
status = ''clear'',
colour = ''#3C0''
WHERE rent.id = $id");
}
Creo que estoy teniendo un poco de confusión aquí. :) Pero parece que nadie más lo ha hecho ..
¿Estás preguntando cuál usar en este escenario? Si es así, entonces, y es la respuesta correcta .
Si está preguntando cómo están trabajando los operadores, entonces
En php, tanto AND, && como OR, || funcionará de la misma manera. Si eres nuevo en programación y php es uno de tus primeros idiomas, te sugiero usar AND y OR, ya que aumenta la legibilidad y reduce la confusión cuando vuelves atrás. Pero si ya estás familiarizado con otros idiomas, es posible que ya hayas familiarizado con el && y || operadores.
Hay algunas bromas y comentarios engañosos, incluso información parcialmente incorrecta en las respuestas aquí. Me gustaría tratar de mejorarlos:
Primero , como algunos han señalado, usted tiene un error en su código que se relaciona con la pregunta:
if ($status = ''clear'' AND $pRent == 0)
debería ser (tenga en cuenta el ==
lugar de =
en la primera parte):
if ($status == ''clear'' AND $pRent == 0)
que en este caso es funcionalmente equivalente a
if ($status == ''clear'' && $pRent == 0)
En segundo lugar , tenga en cuenta que estos operadores ( and or && ||
) son operadores de cortocircuito. Eso significa que si la respuesta se puede determinar con certeza desde la primera expresión, la segunda nunca se evalúa. De nuevo, esto no importa para su línea depurada anterior, pero es extremadamente importante cuando se combinan estos operadores con asignaciones, porque
En tercer lugar , la diferencia real entre and or
y && ||
es su operador prioridad . Específicamente, la importancia es que && ||
tienen mayor precedencia que los operadores de asignación ( = += -= *= **= /= .= %= &= |= ^= <<= >>=
) mientras and or
tienen una precedencia más baja que los operadores de asignación. Por lo tanto, en una declaración que combina el uso de la asignación y la evaluación lógica, importa cuál elegir.
Ejemplos modificados de la página de PHP en operadores lógicos :
$e = false || true;
evaluará a true
y asignará ese valor a $e
, porque ||
tiene una precedencia de operador mayor que =
, y por lo tanto esencialmente se evalúa así:
$e = (false || true);
sin embargo
$e = false or true;
asignará false
a $e
(y luego realizará la operación or
y evaluará true
) porque =
tiene mayor precedencia de operador que or
, esencialmente evaluando así:
($e = false) or true;
El hecho de que esta ambigüedad exista incluso hace que muchos programadores usen siempre && ||
y luego todo funciona claramente como uno esperaría en un lenguaje como C, es decir. operaciones lógicas primero, luego asignación.
Algunos lenguajes como Perl usan este tipo de construcción frecuentemente en un formato similar a este:
$connection = database_connect($parameters) or die("Unable to connect to DB.");
Esto teóricamente asignaría la conexión de la base de datos a $connection
, o si eso falla (y suponemos que la función devolvería algo que evalúa a false
en ese caso), terminará la secuencia de comandos con un mensaje de error. Debido a un cortocircuito, si la conexión de la base de datos tiene éxito, el die()
nunca se evalúa.
Algunos lenguajes que permiten que este constructo prohíba directamente las asignaciones en sentencias condicional / lógicas (como Python) para eliminar la amiguidad al revés.
PHP permitió ambos, así que solo tienes que aprender sobre tus dos opciones una vez y luego codificar cómo te gustaría, pero ojalá serás consistente de una manera u otra.
Siempre que tenga dudas, simplemente agregue un conjunto adicional de paréntesis, que elimina toda ambigüedad. Estos siempre serán los mismos:
$e = (false || true);
$e = (false or true);
Armado con todo ese conocimiento, prefiero usar and or
porque siento que hace que el código sea más legible. Solo tengo una regla para no combinar asignaciones con evaluaciones lógicas. Pero en ese momento es solo una preferencia, y la consistencia importa mucho más aquí que el lado que elijas.
Sí. La respuesta es sí.
http://www.php.net/manual/en/language.operators.logical.php
Dos cosas sin embargo:
- Muchos programadores prefieren
&&
y||
en lugar deand
y, pero funcionan igual (seguro para la precedencia). -
$status = ''clear''
debería ser$status == ''clear''
.=
es asignación,==
es comparación.
Tienes 2 problemas aquí.
use
==
para comparar. Has usado=
que es para asignación.usa
&&
para "y" y||
para "o".and
or
funcionarán pero no son convencionales.
Un poco tarde, pero no importa ...
la pregunta es "¿Cómo se usa ...?" respuesta corta es que lo estás haciendo bien
Yo uso
&&
vez de AND
y ||
en lugar de OR
. $a = 1
$b = 3
Ahora,
if ($a == 1 && $b == 1) { TRUE } else { FALSE }
en este caso, el resultado es "FALSO" porque B no es 1, ¿qué ocurre si
if ($a == 1 || $b == 1) { TRUE } else { FALSE }
Esto devolverá "VERDADERO" incluso si B todavía no es el valor que pedimos, hay otra manera de devolver VERDADERO sin el uso de O / || y eso sería XOR
if ($a == 1 xor $b == 1) { TRUE } else { FALSE }
en este caso, solo necesitamos que una de nuestras variables sea verdadera PERO NO AMBAS si ambas son VERDADERAS, el resultado sería FALSO.
Espero que esto ayude...
más en:
http://www.php.net/manual/en/language.operators.logical.php
Y es &&
y OR es ||
como en C.
para AND usted usa
if ($status = ''clear'' && $pRent == 0) {
mysql_query("UPDATE rent SET dNo = ''$id'', status = ''clear'', colour = ''#3C0'' WHERE rent.id = $id");
}
para O lo usa
if ($status = ''clear'' || $pRent == 0) {
mysql_query("UPDATE rent SET dNo = ''$id'', status = ''clear'', colour = ''#3C0'' WHERE rent.id = $id");
}
AND
y OR
son solo azúcar sintáctica para &&
y ||
, como en JavaScript u otros lenguajes de sintaxis con estilo C.
Parece que AND
y OR
tienen una prioridad menor que sus equivalentes de estilo C.
<?php
$val1 = rand(1,4);
$val2=rand(1,4);
if ($pars[$last0] == "reviews" && $pars[$last] > 0) {
echo widget("Bootstrap Theme - Member Profile - Read Review",'''',$w[website_id],$w);
} else { ?>
<div class="w100">
<div style="background:transparent!important;" class="w100 well" id="postreview">
<?php
$_GET[user_id] = $user[user_id];
$_GET[member_id] = $_COOKIE[userid];
$_GET[subaction] = "savereview";
$_GET[ip] = $_SERVER[REMOTE_ADDR];
$_GET[httpr] = $_ENV[requesturl];
echo form("member_review","",$w[website_id],$w);?>
</div></div>
he reemplazado el ''else'' por ''&&'', así que ambos se colocan ... argh