PHP 구문에 AND / OR 사용


Answers

예. 대답은 '예'입니다.
http://www.php.net/manual/en/language.operators.logical.php

두 가지 생각 :

  • 많은 프로그래머는 &&|| 선호합니다. and and or 대신에 동일하게 작동합니다 (우선 순위에 대해 안전함).
  • $status = 'clear' 는 아마도 $status == 'clear' 이어야합니다. = 은 대입이고, == 는 비교입니다.
Question

if else PHP 문에서 'AND / OR'을 어떻게 사용합니까? 일 것이다:

1) AND

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

2) 또는

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



AND는 && 이고 OR은 || 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>

ive는 'else'를 '&&'로 대체하여 둘 다 배치되었습니다.




여기에 2 가지 문제가 있습니다.

  1. 비교를 위해 == 를 사용하십시오. 할당을 위해 = 를 사용했습니다.

  2. "and"와 || && 를 사용하십시오. "또는"에 대한. and / or 작동하지만 그들은 틀에 얽매이지 않습니다.




조금 늦었지만 상관 없어요.
질문은 "어떻게 사용합니까?"입니다. 짧은 대답은 올바른 일을하는 것입니다.

다른 질문은 "언제 사용합니까?"입니다.
AND 대신 && 를 사용하고 || OR 대신에.

$a = 1
$b = 3

지금,

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

이 경우 B가 1이 아니므로 결과가 "거짓"인데 이제는 if what if

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

이것은 B가 여전히 우리가 요구하는 값이 아니더라도 "TRUE"를 반환 할 것이고, OR / ||를 사용하지 않고 TRUE를 반환하는 또 다른 방법이 있습니다. 그건 XOR이 될거야.

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

이 경우에 우리는 하나의 변수만을 필요로하지만 둘 다 TRUE이면 결과는 FALSE가됩니다.

이게 도움이 되길 바란다...

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




농담과 오해의 소지가있는 댓글, 심지어는 부분적으로 잘못된 정보가 여기에 있습니다. 나는 그들을 개선하려고 노력하고 싶다 :

먼저 , 일부 사람들은 지적했듯이, 코드에 질문과 관련된 버그가 있습니다.

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

(첫 번째 부분에서 = 대신 == 를 적어 == ).

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

이 경우이 기능적으로는

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

둘째 , 이러한 연산자 ( and or && || )는 단락 연산자입니다. 즉, 첫 번째 표현에서 확실한 답을 얻을 수 있다면 두 번째 표현은 평가되지 않습니다. 위의 디버깅 된 행에 대해서는이 점이 중요하지 않지만 이러한 연산자를 할당과 결합 할 때 매우 중요합니다.

셋째 , and or and와 && || 사이의 실제 차이 && || 연산자 우선 순위 입니다. 특히 중요성은 && || 할당 연산자보다 높은 우선 순위를 갖는 반면 ( = += -= *= **= /= .= %= &= |= ^= <<= >>= ). 따라서 할당과 논리적 평가의 사용을 결합한 성명서에서 여러분이 선택한 것은 중요합니다.

논리 연산자에 대한 PHP 페이지의 수정 된 예제 :

$e = false || true;

true 평가하고 그 값을 $e 할당합니다. 왜냐하면 || = 보다 연산자 우선 순위가 높으므로 본질적으로 다음과 같이 평가됩니다.

$e = (false || true);

하나

$e = false or true;

= 가 연산자 우선 순위보다 높 or 다음과 같이 본질적으로 평가하기 때문에 $e false 를 할당합니다 (그리고 나서 or 연산을 수행하고 true 평가 true ).

($e = false) or true;

이 모호성이 존재한다는 사실은 많은 프로그래머가 항상 && || 그러면 C와 같은 언어로 기대되는 모든 것이 명확하게 작동합니다. 즉. 논리 연산을 먼저 수행 한 다음 할당합니다.

Perl과 같은 일부 언어는 이와 유사한 형식으로 자주 이런 종류의 구문을 사용합니다.

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

이것은 이론적으로 $connection 데이터베이스 연결을 할당하거나, 실패한 경우 (이 경우 해당 함수가 evalues를 false 로 반환한다고 가정 할 경우) 오류 메시지와 함께 스크립트를 종료합니다. 단락으로 인해 데이터베이스 연결이 성공하면 die() 는 평가되지 않습니다.

이 구조를 허용하는 일부 언어는 조건 / 논리 문 (Python과 같은)에서 할당을 금지하여 다른 방식과의 유사성을 제거합니다.

PHP는 두 가지 옵션을 모두 허용하므로 두 옵션을 한 번 배우고 원하는 방식으로 코드를 작성해야합니다. 그러나 한 가지 또는 다른 방법으로 일관되게 만들 수 있기를 바랍니다.

의심 스러울 때마다 여분의 괄호 세트를 넣으면 모든 모호성이 제거됩니다. 이들은 항상 동일합니다 :

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

그 모든 지식으로 무장 한 나는 코드를 더 읽기 쉽게 만든다고 생각하기 때문에 and or 선호한다. 할당을 논리 평가와 결합하지 않는 규칙이 있습니다. 그러나 그 시점에서 그것은 단지 선호도 일 뿐이며 일관성은 당신이 선택한 쪽보다 훨씬 더 중요합니다.







그리고 당신이 사용하는

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

또는 당신이 사용하는

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



나는 여기에 약간의 혼란을 겪고 있다고 생각한다. :) 그러나 아무도 다른 사람이없는 것 같습니다 ..

이 시나리오에서 어느 것을 사용할 것인지 묻고 있습니까? 그렇다면 And는 정답 입니다.

운영자가 어떻게 작동하는지 묻는다면

PHP에서는 AND, &&OR, || 같은 방식으로 작동합니다. 프로그래밍에 익숙하지 않고 PHP가 첫 번째 언어 중 하나 인 경우 AND 및 OR을 사용하는 것이 좋습니다. 이는 가독성을 높이고 다시 확인할 때 혼동을 줄이기 때문입니다. 하지만 이미 다른 언어에 익숙하다면 && 및 ||에 익숙했을 것입니다. 연산자.




"AND"는 PHP 코드에서 작동하지 않습니다.

서버의 버전이 어쩌면?

"&&"제대로 작동합니다.