$var4 = 123;
function fn1($p1)
{
return array('p1' => 1, 'p2' => 2);
}
if ($var1 = fn1(1) AND $var4 == 123)
{
print_r($var1);
}
if ($var2 = fn1(1) && $var4 == 123)
{
print_r($var2);
}
if (($var3 = fn1(1)) && $var4 == 123)
{
print_r($var3);
}
- 에 영향을 미치는 당신이 나를 위해 적어도 에서이 출력 이상한 결과를 것이 간단한 스크립트를 실행하는 경우! 첫 번째 표현식에서 첫 번째 출력이 의 배열에서 반환됩니다. &이 $ var1 변수에 할당되었습니다. 이것이 내가 예상 한 것입니다.
- 두 번째 출력에서 두 번째 출력은 $ var2 변수에 할당 된 '1'이라는 정수가됩니다. 이는 전혀 예상되지 않습니다! 유일한 변경 사항은 논리 연산자입니다. 'AND'가 아닌 '& &'을 사용했습니다. 그게 전부입니다 !! 표현이됩니다 경우 세 번째에서
- 세 번째 출력은 다시 예상 배열은 정확히 표현하면 처음과 같이 $ VAR3 변수에 할당 된 기능 &에서 를 반환하지만, 대기 : 난 그냥에 할당 문을 전적으로 수용 대괄호 내의 표현식 인 경우 두 번째 if 표현식 코드를 계속 사용합니다!
누구나 기술적으로 설명 할 수 있습니까? 왜 이상한 행동입니까? php.net 참조 링크를 주시면 감사하겠습니다.PHP 논리 연산자의 우선 순위는 변수 할당 결과 이상하게
나는 '& &는'보다 더 높은 우선 순위를 가지고 'AND'하지만 나에게 그것을 설명하지 않는 것을 알고있다!