오늘 그룹에서 누군가가 PHP 운영자의 우선 순위에 대해 질문을 했습니다. 저는 이전에 비슷한 문제에 직면한 적이 있습니다. 모두가 이해하고 문제가 발생하지 않도록 여기서 정리하겠습니다.)
다음과 같은 간단한 질문으로 시작해 보겠습니다.
$a = 3;
if ($a = 5) {
$a++;
}
var_dump($a);/ / (int)6
그래서 숫자에 대한 좋은 코딩 습관은 앞에 두고 5 == $a로 쓰는 것입니다. 이런 식으로 5 = $a라고 써도 오류가 보고됩니다. 이번에는 암묵적인 할당이 아닐 것입니다
자, 그럼 다음 피트를 살펴보겠습니다.
$x = 2;
echo $x == 2 ? 1 ? 'You' : 'it'; //You
$x가 실제로 2이기 때문에 여기 학생들은 결과가 나라고 생각할 수도 있습니다. 첫 번째는 true입니다.
여기서 알아야 할 점은 연산자 우선순위와 삼항 연산자의 왼쪽 연관입니다. 1 ? 'You' : 'It' //Because = = 삼항 연산자보다 우선순위가 높으므로 다음 코드로 변환됩니다
#echo true ? 'I' : false ? 'You' : 'it';
//왼쪽 결합 특성으로 인해 삼항 연산자 중 위 코드는
#echo (true ? 'I' : false) ? 'You' : 'it';
//먼저 왼쪽 괄호 안의
을 계산합니다. # echo '나' ? '너' : '그것'; //지금쯤이면 모두들 이해하실 겁니다
자, 계속해서 피트를 시청하세요
$a = 3;
$b = 5;
if ($a = 3 || $b = 7) {
$a++;
$b++;
}
var_dump($a );//(bool)true
var_dump($ b);//(int)6
많은 학생들이 면접 질문을 할 때 이런 질문을 접했을 것이라고 생각합니다. 저도 가끔 속았습니다.
속은 학생들은 아마도 여러 가지 답이 있을 것이라고 믿습니다 (4,6), (2,6)
$b는 기본적으로 논란의 여지가 없습니다. 핵심은 $a가 마법 같은 상황이라는 것입니다. 설명해 보겠습니다. 이 구덩이.
#과제에 대해서는 할말이 없습니다
$a = 3;
$b = 5;
if ($a = 3 || $b = 7) {
$a++ ;
$b++;
}
//지식 포인트 1: ||의 우선순위 비율 = 높음
//그래서 $a = 3 || $b = 7은 $a = (3 | | $b = 7)
//3 || $b = 7이므로 전체 표현식이 true이므로 true를 반환하고 $a에 할당합니다. 대괄호가 실행됩니다
//지식 포인트 2: 증가/감소 연산자는 부울 값에 영향을 주지 않습니다. NULL 값을 줄이는 것은 효과가 없지만 NULL을 증가시킨 결과는 1
//즉, $a는 여전히 true이고 1++ 이후 2가 아님을 의미합니다. $b는 여전히++
//그래서 결과는 예 $a입니다. true, $b는 자동 증가 후 6
입니다.
여기서 함정에 빠지는 학생들은 3이라고 생각할 것입니다. = 기호는 할당 == 비교 연산자라는 점에 유의하세요
위 내용은 PHP 연산자 우선 순위에 대한 간단한 테스트 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!