ProgramingTip

그렇지 않으면 PHP 문에서 AND / 또는 사용

bestdevel 2020. 11. 13. 23:49
반응형

그렇지 않으면 PHP 문에서 AND / 또는 사용


그렇지 않으면 PHP 문에서 'AND / OR'를 사용합니까? 일 것이다 :

1) 그리고

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");
} 

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


하지만 두 가지 :

  • 많은 프로그래머 선호 &&하고 ||대신 and하고 or같은 (우선 순위에 대한 안전)을 작동합니다.
  • $status = 'clear'아마 있어야 $status == 'clear'합니다. =할당, ==비교입니다.

조금 늦었지만 중요하지 않습니다
. 질문은 "어떻게 사용합니까 ...?"입니다. 대답은 당신이 대답하고 대답합니다.


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

$a = 1
$b = 3

지금,

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

이 경우 결과는 B가 1이 아니기 때문에 "FALSE"입니다.

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

B가 여전히 우리가 요구하는 값이 아니고 "TRUE"를 반환합니다. OR / ||를 사용하지 않고 TRUE를 반환하는 또 다른 방법이 있습니다. 그리고 그것은 XOR입니다

if ($a == 1 xor $b == 1) { TRUE } else { 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 or가 낮다는 것입니다. 중요한 할당과 라우팅 평가의 사용을 결합한 문장에서 어떤 것을 선택하는 것이 중요합니다.

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

$e = false || true;

연산자 우선 순위가보다 높기 때문에 true해당 값을 평가 하고에 할당 기본적으로 다음과 같이 평가됩니다.$e||=

$e = (false || true);

하나

$e = false or true;

할당 할 false$e(및 그 수행 or작업 및 평가 true) 때문에 =보다 운영자 우선 순위가 or필수적 같이 평가 :

($e = false) or true;

이 모호함이 존재한다는 사실은 많은 프로그래머가 항상 사용 && ||하고 C와 같은 언어에서 기대하는 것처럼 모든 것이 명확하게 작동합니다. 논리 연산을 먼저 한 다음 할당.

Perl과 같은 일부 언어는 다음과 유사한 형식으로 이러한 종류의 구조를 자주 사용합니다.

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

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

이 구조를 허용하는 일부 언어는 다른 방식으로 유사성을 제거하기 위해 조건부 / 논리 문 (예 : Python)에서 할당을 금지합니다.

PHP는 두 가지를 모두 허용했기 때문에 두 가지 옵션에 대해 한 번 배우고 원하는 방식으로 코딩하면되지만 어떤 식 으로든 일관성이 있기를 바랍니다.

의심 스러울 때마다 모든 모호함을 제거하는 추가 괄호 세트를 넣으십시오. 이들은 항상 동일합니다.

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

그 모든 지식으로 무장 and or했기 때문에 코드를 더 읽기 쉽게 만들어서 사용하는 것을 선호합니다 . 할당과 논리적 평가를 결합하지 않는 규칙이 있습니다. 그러나 그 시점에서 그것은 단지 선호 사항이며 일관성은 당신이 선택하는 편보다 훨씬 더 중요합니다.


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

  1. ==비교를 위해 사용 합니다. =할당을 위해 사용했습니다 .

  2. 사용 &&"과"및 위해 ||에 대한 "또는". andor작동하지만 그들은 틀에 얽매이지입니다 것입니다.


AND입니다 &&및 OR입니다 ||C.처럼


AND그리고 JavaScript 또는 기타 C 스타일 구문 언어에서 같이 OR대한 구문 설탕입니다 .&&||

그것은 표시 ANDOR낮은 우선 순위가 자신의 C 스타일의 제품보다 있습니다.


그리고 당신을 위해

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");
} 

여기에 약간의 혼란이 있다고 생각합니다. :)하지만 아무도없는 것 같습니다 ..

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

운영자가 어떻게 일하고 있는지 묻는다면

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


<?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'를 '&&'로 대체 했으므로 둘 다 배치됩니다 ... argh


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

서버 버전일까요?

"&&"가 잘 작동합니다.

참고 URL : https://stackoverflow.com/questions/4405795/using-and-or-in-if-else-php-statement

반응형