연산자 우선순위
모든 프로그래밍 언어에는 연산자가 있으며 연산자를 유연하게 사용하는 방법을 배워야 합니다.
운영자마다 우선순위와 조합 방향이 다릅니다.
<code><?php var_dump(1 <= 1 == 1); // true var_dump(true ? 0 : true ? 1 : 2); // 2 $a = 1; var_dump(++$a + $a++); // may print 4 or 5</code>
코드의 가독성을 높이려면 필요한 경우 괄호를 사용하세요.
산술 연산자
모듈로 연산자의 결과는 피제수와 동일한 부호를 갖습니다.
할당 연산자는 원래 변수의 값을 새 변수에 복사합니다. 단, 개체가 발견될 때 clone
키워드를 명시적으로 사용하여 복사하지 않는 한 값은 참조로 할당됩니다.
new 연산자는 자동으로 참조를 반환합니다.
비트 연산자
변위에는 다음과 같은 규칙이 있습니다.
이 섹션의 초점은 매뉴얼의 초점인 여러 예제 프로그램을 이해하는 것입니다. 예제에서 문자열의 XOR 연산은 이해하기 어렵습니다. 이에 대해서는 나중에 살펴보겠습니다. 정수변위도 있는데, 잘 알 것 같은 느낌이 듭니다.
비교연산자
일반 등호==
유형 변환 후 두 값이 동일하면 true를 반환합니다.
숫자를 문자열과 비교하거나 숫자 내용이 포함된 문자열을 비교하는 경우 문자열이 숫자 값으로 변환되어 비교가 숫자 값으로 수행됩니다.
<code><?php var_dump(0 == "a"); // true var_dump("1" == "01"); // true var_dump("10" == "1e1"); // true</code>
PHP 5.3부터 삼항 연산자의 중간 부분을 생략할 수 있습니다. expr1 ?: expr3
표현식은 expr1이 true인 경우 expr1을 반환하고, 그렇지 않으면 expr3을 반환합니다. 삼항 연산자는 왼쪽에서 오른쪽으로 평가됩니다.
오류 제어 연산자
PHP는 표현식에만 유효한 오류 제어 연산자 @를 지원합니다. 표현식 앞에 배치하면 표현식에서 생성될 수 있는 모든 오류 메시지가 무시됩니다.
함수나 클래스 정의 앞에 올 수 없으며 if 및 foreach와 같은 조건부 구조에도 사용할 수 없습니다.
실행 연산자
PHP는 실행 연산자인 백틱을 지원합니다. 백틱은 키보드 왼쪽 상단에 있습니다. 효과는 shell_exec()
기능과 동일합니다.
<code><?php $output = `systeminfo`; $outip = shell_exec('ipconfig'); echo "<pre class="brush:php;toolbar:false">$outip"; echo "
$output";
백틱 연산자는 안전 모드가 활성화되거나 shell_exec()
가 꺼진 경우 아무런 효과가 없습니다.
주의! 큰따옴표로 묶인 문자열에는 백틱을 사용할 수 없습니다.
증감 연산자
증가/감소 연산자는 부울 값에 영향을 주지 않습니다.
NULL 값을 줄여도 효과는 없지만, NULL을 증가시키면 결과는 1이 됩니다.
문자 변수에 대한 산술 연산을 처리할 때 PHP는 C 대신 Perl의 습관을 따릅니다. 예를 들어 Perl에서 $a = 'Z'; $a++;
는 $a를 'AA'로 바꿉니다.
주의! 문자 변수는 증가만 할 수 있고 감소할 수 없으며 순수 문자(a-z 및 A-Z)만 지원합니다. 다른 문자형 변수의 증가/감소는 무효가 되며, 원래 문자열은 변경되지 않습니다.
<code><?php $z = 'z'; $Z = 'Z'; var_dump(++$z); // 'aa' var_dump(++$Z); // 'AA'</code>
논리 연산자
||
가 or
보다 우선순위가 높습니다. &&
은 and
보다 우선순위가 높습니다.
문자열 연산자
첫 번째는 연결 연산자.
이고, 두 번째는 연결 할당 연산자.=
입니다.
배열 연산자
맨유: $a + $b
. 오른쪽 배열 요소를 왼쪽 배열에 추가합니다. 두 배열의 키가 모두 있으면 왼쪽 배열의 키만 사용되며 모든 변경 사항은 무시됩니다.
은 $a == $b
과 같습니다. 동일한 키-값 쌍을 가집니다.
은 합동입니다: $a === $b
. 동일한 순서와 유형으로 동일한 키-값 쌍을 갖습니다.
은 $a != $b
또는 $a <> $b
로 다양합니다.
은 합동이 아닙니다: $a !== $b
.
배열의 셀이 동일한 키 이름과 값을 갖는 경우 비교 시 순서와 유형은 상관하지 않습니다.
<code><?php $a = array("apple", "banana"); $b = array(1 => "banana", "0" => "apple"); var_dump($a); var_dump($b); var_dump($a == $b); var_dump($a === $b);</code>
출력 결과는 아래와 같습니다.
<code>array (size=2) 0 => string 'apple' (length=5) 1 => string 'banana' (length=6) array (size=2) 1 => string 'banana' (length=6) 0 => string 'apple' (length=5) boolean true boolean false</code>
유형 연산자
PHP에는 PHP 변수가 특정 클래스의 인스턴스에 속하는지 여부를 결정하는 데 사용되는 유형 연산자 instanceof
가 있습니다.
<code><?php class MyParent {} class MyClass extends MyParent {} class NotMyClass {} interface MyInterface {} class InClass implements MyInterface {} $a = new MyClass; var_dump($a instanceof MyClass); // true var_dump($a instanceof NotMyClass); // false var_dump($a instanceof MyParent); // true $b = new InClass; var_dump($b instanceof MyInterface); // true $c = 'InClass'; var_dump($b instanceof $c); // true var_dump($c instanceof stdClass); // false</code>
instanceof
은 상수 감지에 사용할 수 없습니다.
(전문 종료)
위 내용은 연산자를 소개한 것입니다 - 내용의 측면을 포함한 PHP 매뉴얼 노트, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.