¿Cómo usar ‘Y/O’ en un if else PHP declaración? Sería:

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");
} 
  • Cómo esto va a funcionar?? $items_list = array(2,177); $rules_list = array( '[(13 OR 3 OR 2 )]', '[(54 OR 77 ) AND 17 AND 59 AND 36 ] OR [(2 AND 36 )]', '[(2 OR 3 OR 13 ) AND 30 ]', '[(2 )] OR [(13 OR 4 ) AND (17 )]', '[(2 )] OR [(13 OR 3 ) AND 17 ]', '[(2 AND 30 ) OR (3 AND 30 )]', ); //Calcular el bool resultado de cada regla de uso de los elementos de la matriz`
InformationsquelleAutor methuselah | 2010-12-10

10 Comentarios

  1. 117

    Sí. La respuesta es sí.

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


    Dos cosas: la

    • Muchos programadores prefieren && y || en lugar de and y or, pero funcionan de la misma (seguro para la prioridad).
    • $status = 'clear' probablemente debería ser $status == 'clear'. = de la cesión, == es la comparación.
    • Y sólo para las terminaciones de amor, === es de tipo+valor de comparación. En el futuro, PHP también incluirá ==== para comprobar que las clases fueron escritos por el mismo programador, ===== para asegurarse de que fueron escritas en el mismo día, y ====== para asegurarse de que el programador llevaba los pantalones en el tiempo.
    • Me gustaría añadir ============= para asegurarse de que el proyecto de especificaciones no ha cambiado desde que el código fue escrito.
    • Bueno, pero sólo si se devuelve siempre FALSE
    • Voy a ser capaz de utilizar !===== si me desea asegurarse de que el programador se no usar pantalones?
    • die(); // puede usted confiar en un pantsless chico para escribir esta crítica trozo de código?
    • No usar pantalones es central para el modelo de negocio de algunos de los sitios más populares en internet. 😉

  2. 13

    Un poco tarde pero no importa…

    la pregunta es «¿Cómo se utiliza…?» respuesta corta es que usted está haciendo es correcto


    La otra pregunta sería «¿Cuándo utilizarlo?»

    Yo uso && en lugar 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, ahora lo que si

    if ($a == 1 || $b == 1) { TRUE } else { FALSE }

    Este devolverá «TRUE» incluso si B todavía no se el valor que pedir, hay otra manera de devolver TRUE sin el uso de O /|| y que sería XOR

    if ($a == 1 xor $b == 1) { TRUE } else { FALSE }

    en este caso sólo tenemos una de nuestras variables para ser cierto, PERO NO TANTO 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

  3. 11

    Hay algunas bromas y comentarios engañosos, ni siquiera parcialmente incorrecta de la información en las respuestas aquí. Me gustaría tratar de mejorar en ellos:

    Primera, como algunos han señalado, tiene un error en el código que se relaciona con la pregunta:

    if ($status = 'clear' AND $pRent == 0)

    debe ser (nota de la == en 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)

    Segundo, tenga en cuenta que estos operadores (and or && ||) son de corto circuito de los operadores. Esto significa que si la respuesta puede ser determinado con certeza a partir de la primera expresión, la segunda nunca se evalúa. De nuevo, esto no importa para su depurado de la línea anterior, pero es extremadamente importante cuando se trata de la combinación de estos operadores con sus tareas, porque

    Tercer, la diferencia real entre and or y && || es su precedencia de operadores. Específicamente la importancia es que && || tienen mayor precedencia que los operadores de asignación ( = += -= *= **= /= .= %= &= |= ^= <<= >>= ), mientras que and or tienen menor precendence de los operadores de asignación. Así, en una declaración en la que se combina el uso de la asignación y evaluación lógica importa que uno elija.

    Modificado ejemplos de PHP de la página en los operadores lógicos:

    $e = false || true;

    evaluará a true y asignar ese valor a $e, porque || tiene mayor precedencia de operadores que =, y por lo tanto es esencialmente evalúa como este:

    $e = (false || true);

    sin embargo

    $e = false or true;

    asignará false a $e (y, a continuación, realizar la or operación y evaluar true) porque = tiene mayor precedencia de operadores que or, esencialmente la evaluación como este:

    ($e = false) or true;

    El hecho de que esta ambigüedad incluso existe hace un montón de programadores siempre uso && || y, a continuación, todo funciona claramente como sería de esperar en un lenguaje como C, es decir,. operaciones lógicas en primer lugar, luego de la asignación.

    Algunos lenguajes como Perl, el uso de este tipo de construcción con frecuencia en un formato similar a este:

    $connection = database_connect($parameters) or die("Unable to connect to DB.");

    Este sería teóricamente asignar la conexión de base de datos para $connection, o en caso de que no (y estamos asumiendo aquí la función devolvería algo que evalues a false en su caso), se pondrá fin a la secuencia de comandos con un mensaje de error. Porque de cortocircuito, si la base de datos de la conexión se realiza correctamente, el die() nunca se evalúa.

    Algunos lenguajes que permiten este tipo de construcción de línea recta prohibir las asignaciones condicionales/instrucciones lógicas (como Python) para quitar el amiguity al revés.

    PHP fue con lo que permite a ambos, así que sólo tienes que aprender acerca de sus dos opciones una vez y, a continuación, el código de cómo le gustaría, pero ojala que sea consistente de una manera o de otra.

    Siempre en la duda, acaba de lanzar en un juego extra de paréntesis, que elimina toda ambigüedad. Estos siempre será el mismo:

    $e = (false || true);
    $e = (false or true);

    Armado con todo el conocimiento, yo prefiero usar and or, porque siento que le hace el código más legible. Sólo tengo una regla de no combinar tareas con evaluaciones lógicas. Pero en ese punto es simplemente una preferencia, y la consistencia importa mucho más aquí que en el lado que usted elija.

    • la respuesta perfecta!
  4. 9

    Tiene 2 problemas aquí.

    1. uso == para la comparación. Usted ha utilizado = que es para la asignación.

    2. uso && para «y» y || por «o». and y or va a trabajar pero son poco convencionales.

    • Es raro, pero tal vez querían ceder en esa condición 😛 Aunque estoy segura de que no.
    • Ciertamente, en el caso de if ($status = 'clear' OR $pRent == 0) {. En ese caso, la segunda condición es inalcanzable. Tiene que ser un error.
    • Sí, definitivamente no con el OR.
  5. 2

    Y utilizar

    if ($status = 'clear' && $pRent == 0) {
        mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id");
    } 

    para uso

    if ($status = 'clear' || $pRent == 0) {
        mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id");
    } 
    • Su código es equivalente al código
  6. 0

    creo que estoy teniendo un poco de confusión aquí. 🙂 Pero parece que nadie más tiene ..

    Estás preguntando cuál utilizar en este escenario? Si Sí, entonces Y es la respuesta correcta.

    Si usted se está preguntando acerca de cómo los operadores están trabajando,

    En php Y, && y O, || funcionará de la misma manera. Si eres nuevo en la programación y php es uno de los primeros lenguajes de ellos me sugieren el uso de la Y y O, porque aumenta la legibilidad y reduce la confusión cuando usted regrese. Pero si usted está familiarizado con otros idiomas, ya entonces es posible que ya hemos visto el && y | u operadores.

    • Esto es simplemente incorrecto. Y/O tienen menor precedencia que la asignación de tiempo &&/|| tengan mayor prioridad. El ejemplo clásico: $e = false || true; vs $e = false or true;. El primero evalúa a verdadero, el segundo a false.
  7. 0
    <?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 sustituido el ‘otro’ con ‘&&’ por lo tanto se colocan … argh

Dejar respuesta

Please enter your comment!
Please enter your name here