복붙노트

참고 -이 기호는 PHP에서 무엇을 의미합니까?

PHP

참고 -이 기호는 PHP에서 무엇을 의미합니까?

이것은 PHP의 문법에 대한 질문을 모아 놓은 것입니다. 이것은 커뮤니티 위키이기 때문에 모든 사람들이이 목록을 유지 관리에 참여하도록 초대받습니다.

이전에는 연산자 및 기타 구문 토큰에 대한 질문을 찾기가 어려웠습니다 .¹ 주요 개념은 Stack Overflow에 관한 기존 질문에 대한 링크를 제공하는 것입니다. 따라서 PHP Manual에서 내용을 복사하는 것이 아니라 PHP를 참조하는 것이 더 쉽습니다.

¹ 참고 : 2013 년 1 월 이후로 Stack Overflow는 특수 문자를 지원합니다. 검색어를 따옴표로 묶으십시오 (예 : [php] "=="vs "==="

그러한 질문을했기 때문에 누군가가 여기를 가리키고 있다면 아래의 특정 구문을 찾으십시오. 링크 된 질문과 함께 PHP 매뉴얼에 링크 된 페이지는 아마도 당신의 질문에 대답 할 것입니다. 그렇다면 답을 upvote하는 것이 좋습니다. 이 목록은 다른 사람들이 제공 한 도움의 대체품이 아닙니다.

특정 토큰이 아래에 나열되어 있지 않으면 파서 토큰 목록에서 찾을 수 있습니다.

비트 연산자 (Bitwise Operators)

= & References

비트 연산자 (Bitwise Operators)

&& 논리 연산자

% 산술 연산자

!! !! 논리 연산자

@ 오류 제어 연산자

? : 삼항 연산자

?? Null Coalesce 연산자 (PHP 7부터)

: 제어 구조에 대한 대체 구문, 삼항 연산자

:: 범위 분석 연산자

\ 네임 스페이스

-> 클래스와 객체

=> 배열

^ 비트 연산자

>> 비트 연산자

<< 비트 연산자

<<< Heredoc 또는 Nowdoc

= 할당 연산자

== 비교 연산자

=== 비교 연산자

! == 비교 연산자

! = 비교 연산자

<> 비교 연산자

<=> 비교 연산자 (PHP 7.0부터)

| 비트 연산자

|| 논리 연산자

~ 비트 연산자

+ 산술 연산자, 배열 연산자

+ = 및 - = 할당 연산자

++ 및 - 증가 / 감소 연산자

. = 할당 연산자

. 문자열 연산자

, 함수 인수

, 가변 선언

$$ 변수 변수

`실행 연산자

[] 배열 (PHP 5.4부터 간단한 구문)

... 인수 풀기 (PHP 5.6부터)

** 지수화 (PHP 5.6부터)

# 한 줄짜리 쉘 스타일 주석

해결법

  1. ==============================

    1.

    증분 / 감소 연산자

    + 증가 연산자

    - 감소 연산자

    Example    Name              Effect
    ---------------------------------------------------------------------
    ++$a       Pre-increment     Increments $a by one, then returns $a.
    $a++       Post-increment    Returns $a, then increments $a by one.
    --$a       Pre-decrement     Decrements $a by one, then returns $a.
    $a--       Post-decrement    Returns $a, then decrements $a by one.
    

    변수 앞이나 뒤에 올 수 있습니다.

    변수 앞에 넣으면 증분 / 감소 작업이 변수에 먼저 수행 된 후 결과가 반환됩니다. 변수 뒤에 넣으면 변수가 먼저 리턴 된 다음 증가 / 감소 조작이 수행됩니다.

    예 :

    $apples = 10;
    for ($i = 0; $i < 10; ++$i) {
        echo 'I have ' . $apples-- . " apples. I just ate one.\n";
    }
    

    실제 예

    위의 경우 ++ $ i는 더 빠르기 때문에 사용됩니다. $ i ++는 동일한 결과를 나타냅니다.

    사전 증가는 실제로 변수를 증가시키고 결과를 '반환'하기 때문에 조금 더 빠릅니다. 후행 증가는 특수 변수를 만들고 첫 번째 변수의 값을 복사 한 후 첫 번째 변수를 사용한 후에 만 ​​값을 두 번째 변수로 바꿉니다.

    그러나 먼저 사과의 수를 표시하고 싶으므로 $ apples--를 사용해야합니다. 그런 다음 사과의 수를 뺍니다.

    PHP에서 문자를 증가시킬 수도 있습니다 :

    $i = "a";
    while ($i < "c") {
        echo $i++;
    }
    

    z에 도달하면 aa가 다음 차례입니다.

    스택 오버플로 게시물 :

  2. ==============================

    2.

    약간 무엇입니까? 비트는 1 또는 0의 표현입니다. 기본적으로 OFF (0) 및 ON (1)

    바이트 란 무엇입니까? 바이트는 8 비트로 구성되며 바이트의 가장 높은 값은 255이므로 모든 비트가 설정됨을 의미합니다. 바이트의 최대 값이 255 인 이유를 살펴 보겠습니다.

    -------------------------------------------
    |      1 Byte ( 8 bits )                  |
    -------------------------------------------
    |Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
    -------------------------------------------
    

    이 1 바이트의 표현

    1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 바이트)

    $a =  9;
    $b = 10;
    echo $a & $b;
    

    그러면 숫자 8이 출력됩니다. 왜? 자, 우리의 테이블 예제를 사용하여 보겠습니다.

    -------------------------------------------
    |      1 Byte ( 8 bits )                  |
    -------------------------------------------
    |Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
    -------------------------------------------
    |      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
    -------------------------------------------
    |      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
    ------------------------------------------- 
    |      &     |   0|  0|  0|  0| 1| 0| 0| 0|
    ------------------------------------------- 
    

    따라서 테이블에서 볼 때 그들이 함께 공유하는 유일한 비트는 8 비트입니다.

    두 번째 예

    $a =  36;
    $b = 103;
    echo $a & $b; // This would output the number 36.
    $a = 00100100
    $b = 01100111
    

    두 개의 공유 비트는 32와 4이며, 함께 더하면 36을 반환합니다.

    $a =  9;
    $b = 10;
    echo $a | $b;
    

    이것은 숫자 11을 출력합니다. 왜?

    -------------------------------------------
    |      1 Byte ( 8 bits )                  |
    -------------------------------------------
    |Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
    -------------------------------------------
    |      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
    -------------------------------------------
    |      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
    ------------------------------------------- 
    |      |     |   0|  0|  0|  0| 1| 0| 1| 1|
    -------------------------------------------
    

    8, 2 및 1 열에 3 비트가 설정되었음을 알 수 있습니다. 그 (것)들을 추가하십시오 : 8 + 2 + 1 = 11.

  3. ==============================

    3.

    _ gettext ()의 별칭

    _ ()에서와 같이 밑줄 문자 '_'은 gettext () 함수의 별칭입니다.

  4. ==============================

    4.

    Syntax    Name             Description
    
    x == y    Equality         True if x and y have the same key/value pairs
    x != y    Inequality       True if x is not equal to y
    x === y   Identity         True if x and y have the same key/value pairs
                                in the same order and of the same types
    x !== y   Non-identity     True if x is not identical to y
    ++ x      Pre-increment    Increments x by one, then returns x
    x ++      Post-increment   Returns x, then increments x by one
    -- x      Pre-decrement    Decrements x by one, then returns x
    x --      Post-decrement   Returns x, then decrements x by one
    x and y   And              True if both x and y are true x=6 y=3
                               (x < 10 and y > 1) returns true 
    x && y    And              True if both x and y are true x=6 y=3
                               (x < 10 && y > 1) returns true
    a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"
    
  5. ==============================

    5.

    매직 상수 : 이것들은 기호가 아니지만이 토큰 패밀리의 중요한 부분입니다. 마법의 상수는 어디에 사용되는지에 따라 8 가지가 있습니다.

    __LINE__ : 파일의 현재 행 번호.

    __FILE__ : 파일의 전체 경로와 파일 이름입니다. 포함 안에 사용하면 포함 된 파일의 이름이 반환됩니다. PHP 4.0.2 이후, __FILE__은 항상 symlink가있는 절대 경로를 포함하고 있습니다. 반면에 구 버전에서는 어떤 경우에 상대 경로가 포함되어 있습니다.

    __DIR__ : 파일의 디렉토리입니다. Include 안에 사용될 경우, 포함 된 파일의 디렉토리가 리턴됩니다. 이것은 dirname (__ FILE__)과 동일합니다. 루트 디렉토리가 아니면이 디렉토리 이름에는 슬래시가 없습니다. (PHP 5.3.0에 추가됨.)

    __FUNCTION__ : 함수 이름입니다. (PHP 4.3.0에 추가됨) PHP 5부터는이 상수는 함수 이름이 선언 된대로 반환합니다 (대소 문자를 구별합니다). PHP 4에서는 그 값이 항상 소문자입니다.

    __CLASS__ : 클래스 이름입니다. (PHP 4.3.0에 추가됨) PHP 5부터이 상수는 클래스 이름이 선언 된 그대로 (대소 문자를 구별 함) 반환합니다. PHP 4에서는 그 값이 항상 소문자입니다. 클래스 이름에는 선언 된 네임 스페이스가 포함됩니다 (예 : Foo \ Bar). PHP 5.4에서 __CLASS__는 특성으로도 작동합니다. 특성 메서드에서 사용되면 __CLASS__은 특성이 사용되는 클래스의 이름입니다.

    __TRAIT__ : 특성 이름입니다. (PHP 5.4.0에 추가됨) PHP 5.4부터이 상수는 그것이 선언 된대로 특성을 반환합니다 (대소 문자 구별). 특성 이름은 선언 된 네임 스페이스를 포함합니다 (예 : Foo \ Bar).

    __METHOD__ : 클래스 메소드 이름. (PHP 5.0.0에 추가됨) 메소드 이름은 선언 된대로 반환됩니다 (대소 문자를 구별합니다).

    __NAMESPACE__ : 현재 네임 스페이스의 이름 (대소 문자 구별). 이 상수는 컴파일 타임에 정의됩니다 (PHP 5.3.0에서 추가됨).

    출처

  6. ==============================

    6.

    우주선 연산자 <=>는 PHP 7에 추가 된 최신 비교 연산자입니다. 항등 연산자 (==,! =, ===,! ==)와 같은 우선 순위를 갖는 비 결합 이진 연산자입니다. 이 연산자를 사용하면 왼쪽 및 오른쪽 피연산자를보다 쉽게 ​​3 방향으로 비교할 수 있습니다.

    연산자는 다음과 같은 정수 표현식을 생성합니다.

    e.

    1 <=> 1; // 0
    1 <=> 2; // -1
    2 <=> 1; // 1
    

    이 연산자를 사용하는 실제적인 좋은 적용 방법은 두 값 사이의 3 방향 비교를 기반으로 0, 음수 또는 양의 정수를 반환 할 것으로 예상되는 비교 형식 콜백이 될 것입니다. usort에 전달 된 비교 함수는 그러한 예 중 하나입니다.

    $arr = [4,2,1,3];
    
    usort($arr, function ($a, $b) {
        if ($a < $b) {
            return -1;
        } elseif ($a > $b) {
            return 1;
        } else {
            return 0;
        }
    });
    
    $arr = [4,2,1,3];
    
    usort($arr, function ($a, $b) {
        return $a <=> $b;
    });
    
  7. ==============================

    7.

    instanceof는 PHP 변수가 특정 클래스의 인스턴스화 된 객체인지 여부를 확인하는 데 사용됩니다.

    <?php
    class mclass { }
    class sclass { }
    $a = new mclass;
    var_dump($a instanceof mclass);
    var_dump($a instanceof sclass);
    

    위의 예는 다음과 같이 출력됩니다.

    bool(true)
    bool(false)
    

    이유 : 위의 예제 $ a는 mclass의 객체이므로 sclass를 사용하지 않고 mclass 데이터 만 사용하십시오.

    <?php 
    class pclass { } 
    class childclass extends pclass { } 
    $a = new childclass; 
    var_dump($a instanceof childclass); 
    var_dump($a instanceof pclass);
    

    위의 예는 다음과 같이 출력됩니다.

    bool(true)
    bool(true)
    
    <?php 
    class cloneable { } 
    $a = new cloneable;
    $b = clone $a; 
    var_dump($a instanceof cloneable); 
    var_dump($b instanceof cloneable);
    

    위의 예는 다음과 같이 출력됩니다.

    bool(true)
    bool(true)
    
  8. ==============================

    8.

    연산자 및 또는 연산자는 할당 연산자 =보다 우선 순위가 낮습니다.

    이것은 $ a = true와 false; ($ a = true) 및 false와 같습니다.

    대부분의 경우 C, Java 또는 JavaScript와 같은 언어에서 작동하는 && 및 ||를 사용하려고합니다.

  9. ==============================

    9.

    <=> 우주선 연산자에 대한 예 (PHP 7, 출처 : PHP Manual) :

    변수의 3 방향 비교를위한 정수, 수레, 문자열, 배열 및 객체.

    // Integers
    echo 10 <=> 10; // 0
    echo 10 <=> 20; // -1
    echo 20 <=> 10; // 1
    
    // Floats
    echo 1.5 <=> 1.5; // 0
    echo 1.5 <=> 2.5; // -1
    echo 2.5 <=> 1.5; // 1
    
    // Strings
    echo "a" <=> "a"; // 0
    echo "a" <=> "b"; // -1
    echo "b" <=> "a"; // 1
    
    echo "a" <=> "aa"; // -1
    echo "zz" <=> "aa"; // 1
    
    // Arrays
    echo [] <=> []; // 0
    echo [1, 2, 3] <=> [1, 2, 3]; // 0
    echo [1, 2, 3] <=> []; // 1
    echo [1, 2, 3] <=> [1, 2, 1]; // 1
    echo [1, 2, 3] <=> [1, 2, 4]; // -1
    
    // Objects
    $a = (object) ["a" => "b"]; 
    $b = (object) ["a" => "b"]; 
    echo $a <=> $b; // 0
    
    $a = (object) ["a" => "b"]; 
    $b = (object) ["a" => "c"]; 
    echo $a <=> $b; // -1
    
    $a = (object) ["a" => "c"]; 
    $b = (object) ["a" => "b"]; 
    echo $a <=> $b; // 1
    
    // only values are compared
    $a = (object) ["a" => "b"]; 
    $b = (object) ["b" => "b"]; 
    echo $a <=> $b; // 1
    
  10. ==============================

    10.

    {} 중괄호

    마지막 게시물에 대한 몇 마디

    $x[4] = 'd'; // it works
    $x{4} = 'd'; // it works
    
    $echo $x[4]; // it works
    $echo $x{4}; // it works
    
    $x[] = 'e'; // it works
    $x{} = 'e'; // does not work
    
    $x = [1, 2]; // it works
    $x = {1, 2}; // does not work
    
    echo "${x[4]}"; // it works
    echo "${x{4}}"; // does not work
    
    echo "{$x[4]}"; // it works
    echo "{$x{4}}"; // it works
    
  11. ==============================

    11.

    PHP 문자열 : PHP 문자열은 두 가지 방법이 아닌 네 가지 방법으로 지정할 수 있습니다.

    1) 작은 따옴표 문자열 :

    $string = 'This is my string'; // print This is my string
    

    2) 큰 따옴표 문자열 :

    $str = 'string';
    
    $string = "This is my $str"; // print This is my string
    

    3) Heredoc :

    $string = <<<EOD
    This is my string
    EOD; // print This is my string
    

    4) Nowdoc (PHP 5.3.0부터) :

    $string = <<<'END_OF_STRING'
        This is my string 
    END_OF_STRING; // print This is my string
    
  12. ==============================

    12.

    Null 통합 연산자 (??)

    이 연산자는 PHP 7.0에서 isset ()과 함께 삼항 연산자를 사용해야하는 일반적인 경우에 추가되었습니다. 첫 번째 피연산자가 존재하고 NULL이 아닌 경우 첫 번째 피연산자를 반환합니다. 그렇지 않으면 두 번째 피연산자를 반환합니다.

    <?php
    // Fetches the value of $_GET['user'] and returns 'nobody'
    // if it does not exist.
    $username = $_GET['user'] ?? 'nobody';
    // This is equivalent to:
    $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
    
    // Coalescing can be chained: this will return the first
    // defined value out of $_GET['user'], $_POST['user'], and
    // 'nobody'.
    $username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
    ?>
    
  13. ==============================

    13.

    문제:

    => 의미는 무엇입니까?

    대답:

    => 인간 기호가 연관 배열에서 "Key"=> "Value"쌍을 구분하기 위해 사용하기로 결정 했습니까?

    연구 :

    이를 이해하기 위해서는 연관 배열이 무엇인지 알아야합니다. 기존의 프로그래머가 (PHP에서) 배열을 생각할 때 가장 먼저 나오는 것은 다음과 비슷한 것이다 :

    $myArray1 = array(2016, "hello", 33);//option 1
    
    $myArray2 = [2016, "hello", 33];//option 2
    
    $myArray3 = [];//option 3
    $myArray3[] = 2016; 
    $myArray3[] = "hello"; 
    $myArray3[] = 33;
    

    코드의 뒷 부분에서 배열을 호출하려는 경우 다음과 같이 할 수 있습니다.

    echo $myArray1[1];// output: hello
    echo $myArray2[1];// output: hello
    echo $myArray3[1];// output: hello
    

    여태까지는 그런대로 잘됐다. 그러나 인간으로서 배열의 인덱스 [0]은 2016 년의 값이고 배열의 인덱스 [1]은 인사말이고 배열의 인덱스 [2]는 단순하다는 것을 기억하기 어려울 수도 있습니다 정수 값. 우리가 가질 수있는 대안은 연관 배열 (Associative Array)을 사용하는 것입니다. 연관 배열은 순차 배열과 몇 가지 차이점이 있습니다. (이전의 경우는 다음의 각 값에 대해 1 씩 증가시킴으로써 사전 결정된 순서로 사용 된 색인을 증가시키기 때문입니다).

    차이점 (순차 배열과 연관 배열 사이) :

    예를 들면 :

        $myArray1 = array( 
            "Year" => 2016, 
            "Greetings" => "hello", 
            "Integer_value" => 33);//option 1
    
        $myArray2 = [ 
            "Year" =>  2016, 
            "Greetings" => "hello", 
            "Integer_value" => 33];//option 2
    
        $myArray3 = [];//option 3
        $myArray3["Year"] = 2016; 
        $myArray3["Greetings"] = "hello"; 
        $myArray3["Integer_value"] = 33;
    

    그리고 이전과 같은 출력을 받으려면 키 값이 배열 인덱스에 사용됩니다.

    echo $myArray1["Greetings"];// output: hello
    echo $myArray2["Greetings"];// output: hello
    echo $myArray3["Greetings"];// output: hello
    

    최종 점수 :

    위의 예에서, => 기호는 배열 내의 값의 초기화 도중 배열의 각 키와 값 쌍 사이의 연관 배열 관계를 표현하는 데 사용됩니다.

  14. ==============================

    14.

    문제:

    PHP에서 "&"는 무엇을 의미합니까?

    일단 익숙해지면 삶을 더 편하게 만듭니다. (아래 예제를주의 깊게 확인하십시오)

    일반적으로 $ a와 $ b에 설정된 비트가 설정되어 있는지 확인합니다.

       error_reporting(E_ERROR | E_WARNING | E_PARSE);
        error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
        error_reporting(E_ALL & ~E_NOTICE);
        error_reporting(E_ALL);
    

    그래서 위의 모든 것들은 비트 연산자와 비트 게임입니다.

    이 중 하나의 유용한 경우는 아래와 같이 쉬운 구성이므로 하나의 정수 필드에 수천 개의 콤보를 저장할 수 있습니다.

    대부분의 사람들은 이미 문서를 읽었지 만이 비트 연산자의 실제 사용 사례를 알지 못했습니다.

    <?php
    
    class Config {
    
        // our constants must be 1,2,4,8,16,32,64 ....so on
        const TYPE_CAT=1;
        const TYPE_DOG=2;
        const TYPE_LION=4;
        const TYPE_RAT=8;
        const TYPE_BIRD=16;
        const TYPE_ALL=31;
    
        private $config;
    
        public function __construct($config){
            $this->config=$config;
    
            if($this->is(Config::TYPE_CAT)){
                echo 'cat ';
            }
            if($this->is(Config::TYPE_DOG)){
                echo 'dog ';
            }
            if($this->is(Config::TYPE_RAT)){
                echo 'rat ';
            }
            if($this->is(Config::TYPE_LION)){
                echo 'lion ';
            }
            if($this->is(Config::TYPE_BIRD)){
                echo 'bird ';
            }
            echo "\n";
        }
    
        private function is($value){
            return $this->config & $value;
        }
    }
    
    new Config(Config::TYPE_ALL);
    // cat dog rat lion bird
    new Config(Config::TYPE_BIRD);
    //bird
    new Config(Config::TYPE_BIRD | Config::TYPE_DOG);
    //dog bird
    new Config(Config::TYPE_ALL & ~Config::TYPE_DOG & ~Config::TYPE_CAT);
    //rat lion bird
    
  15. ==============================

    15.

    Null Coalesce 연산자 PHP는

    PHP7에는 isset ()과 함께 3 진을 사용할 필요가있는 일반적인 경우를 위해 null 유착 연산자 (??)가 추가되었습니다. 존재하지 않으면 첫 번째 피연산자를 반환하고 그렇지 않으면 두 번째 피연산자를 반환합니다 (예 :

    $username = $_GET['user'] ?? 'nobody';
    // This is equivalent to:
    $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; 
    
  16. ==============================

    16.

    연산자에 대한 가장 인기있는 이름은 아니지만 PHP 7은 다소 합치기 쉬운 null 통합을 제공하므로 예제를 공유 할 것입니다.

    PHP 5에서는 값을 테스트하고 세 번째 연산자가 true를 반환하면 두 번째 요소를 반환하고 그렇지 않으면 세 번째 연산자를 반환합니다.

    echo $count ? $count : 10; // outputs 10
    

    두 번째 요소가 첫 번째 요소와 동일하면 건너 뛸 수있는 약식도 있습니다. echo $ count? : 10; // 또한 10을 출력합니다.

    PHP 7에서 우리는 추가적으로 ?? 연산자 대신에 두 개의 물음표를 함께 사용하는 방법 인 극단적 인 혼란을 나타내는 대신 값의 문자열을 연결하는 것을 허용합니다. 왼쪽에서 오른쪽으로 읽어 들여, 존재하지 않는 최초의 값은 돌려 주어지는 값입니다.

    // $a is not set
    $b = 16;
    
    echo $a ?? 2; // outputs 2
    echo $a ?? $b ?? 7; // outputs 16
    

    이 구조는 아마도 사용자 입력 또는 기존 구성에서 오는 하나 이상의 값에 우선 순위를 부여하고 해당 구성이 누락 된 경우 안전하게 주어진 기본값으로 되돌아가는 데 유용합니다. 그것은 아주 작은 기능이지만 응용 프로그램이 PHP 7로 업그레이드 되 자마자 사용하게 될 것입니다.

  17. ==============================

    17.

    == 가변 데이터 형식을 고려하지 않고 검사가 같은지 확인하는 데 사용됩니다.

    === 변수 값 * 및 ** 데이터 유형 모두에 대한 검사 동일성에 사용됩니다.

    $ a = 5

  18. ==============================

    18.

    다음은 모든 PHP 운영자 (TOKEN)의 이름입니다.

    참조 http://php.net/manual/en/tokens.php

  19. from https://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php by cc-by-sa and MIT lisence