연산자 - PHP 매뉴얼 노트

WBOY
풀어 주다: 2016-08-08 09:29:20
원래의
816명이 탐색했습니다.

연산자 우선순위

모든 프로그래밍 언어에는 연산자가 있으며 연산자를 유연하게 사용하는 방법을 배워야 합니다.

운영자마다 우선순위와 조합 방향이 다릅니다.

<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 연산자는 자동으로 참조를 반환합니다.

비트 연산자

변위에는 다음과 같은 규칙이 있습니다.

  • 어떤 방향으로든 이동된 비트는 폐기됩니다.
  • 왼쪽으로 이동할 때 0으로 채워지며 부호는 유지되지 않습니다.
  • 오른쪽으로 이동하면 부호 비트가 채워집니다. 이는 양수 및 음수 부호가 유지된다는 의미입니다.

이 섹션의 초점은 매뉴얼의 초점인 여러 예제 프로그램을 이해하는 것입니다. 예제에서 문자열의 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(&#39;ipconfig&#39;);
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 = &#39;z&#39;;
$Z = &#39;Z&#39;;
var_dump(++$z);  // &#39;aa&#39;
var_dump(++$Z);  // &#39;AA&#39;</code>
로그인 후 복사

논리 연산자

||or보다 우선순위가 높습니다. &&and보다 우선순위가 높습니다.

문자열 연산자

첫 번째는 연결 연산자.이고, 두 번째는 연결 할당 연산자.=입니다.

배열 연산자

  1. 맨유: $a + $b. 오른쪽 배열 요소를 왼쪽 배열에 추가합니다. 두 배열의 키가 모두 있으면 왼쪽 배열의 키만 사용되며 모든 변경 사항은 무시됩니다.

  2. $a == $b과 같습니다. 동일한 키-값 쌍을 가집니다.

  3. 은 합동입니다: $a === $b. 동일한 순서와 유형으로 동일한 키-값 쌍을 갖습니다.

  4. $a != $b 또는 $a <> $b로 다양합니다.

  5. 은 합동이 아닙니다: $a !== $b.

  6. 배열의 셀이 동일한 키 이름과 값을 갖는 경우 비교 시 순서와 유형은 상관하지 않습니다.

    <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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿