PHP에서 두 개의 연속 된 조건이있는 경우 두 조건 모두 평가되거나 첫 번째 조건이 이미 실패한 경우 취소 된 평가가 취소됩니다 (따라서 두 번째 조건의 결과는 중요하지 않음).)?PHP의 연속 If- 조건
if (condition1 && condition2) { }
PHP에서 두 개의 연속 된 조건이있는 경우 두 조건 모두 평가되거나 첫 번째 조건이 이미 실패한 경우 취소 된 평가가 취소됩니다 (따라서 두 번째 조건의 결과는 중요하지 않음).)?PHP의 연속 If- 조건
if (condition1 && condition2) { }
첫 번째 조건의 결과로 두 번째 조건을 평가하지 않으면 PHP는 두 번째 조건을 평가하지 않습니다 (두 번째 조건). 이를 Short-circuit evaluation라고하며, 용어는 PHP's documentation on logical operators을 의미합니다. 여기
증명할 수 작은 예이다<?php
function foo() {
echo 'Bar';
return true;
}
if (false && foo()) { }
PHP가 단락 평가를 사용하므로
가foo()
이 실행되지 않을 것이며, 따라서
Bar
이 화면에 출력되지 않는다.
'Test'는 결코 echo
이 아니기 때문에 첫 번째 조건이 false
인 경우 두 번째 조건은 평가되지 않습니다.
||
(OR) 사업자와 동일하게 작동하지만, 다른 방법으로 주위 :
<?php
function foo() {
echo 'Bar';
return true;
}
if (true || foo()) { }
첫 번째 조건이 이미 true
이기 때문에, 두 번째 평가를 할 필요가 없다. 다시 foo()
이 실행되지 않으므로 빈 화면이 표시됩니다.
해당 AND. PHP는 게으르다. 첫 번째 함수가 false를 반환하면 다른 함수를 건드리지 않습니다. OR과 동일합니다. PHP를 사용하면 PHP는 게으르며 필요한만큼만 평가됩니다.
if(condition1() || condition2())
true
반환 condition1()
경우, 조건 2는 그대로 될 것입니다. 당신이 &&
을 사용하고 있기 때문에 왼쪽 조건이 바로 사람이 늘
if (statement1 && statement2)
{
//If the left part is false, the right part is not even checked
}
if (statement1 || statement2)
{
//if the left part is false, the right part is checked
}
을 알고 그것의 좋은 따라서 첫 번째 조건이 거짓 일 경우 두 번째 조건은 평가되지 않습니다.
PHP는 Short Circuit Evaluation를 사용 ^^ 항상이 경우 먼저 빠른 기능을 평가합니다., 성능
이렇게 두 조건이 모두 true 일 필요가 있습니다. 당신이 || 조건이 사실 일 필요가 있습니다. 첫 번째 조건이 거짓이면 참으로 건너 뜁니다. – kpp
'&&'의 경우 첫 번째 조건이 실패하면 전체 'if'섹션을 건너 뜁니다. 첫 번째가 참이면 두 번째로 이동합니다. 두 번째가 true이면 조건을 입력하고 그렇지 않으면 무시합니다. – asprin
@Nic 가능하면 중복되지만 "단락 회로 평가"라는 용어는 이전에 알려지지 않았습니다. 여기에 대한 답변 덕분에 더 이상 없습니다. – Garrin