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




operators symbols (12)

비트 연산자

약간 무엇입니까? 비트는 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 바이트)

더 나은 이해를위한 몇 가지 예

"AND"연산자 : &

$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을 반환합니다.

"Or"연산자 : |

$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.

이게 뭐야?

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

왜 이런거야?

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

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

내가 여기서 뭘해야하지?

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

목록

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

비트 연산자 (Bitwise Operators)

=& References

비트 연산자 (Bitwise Operators)

&& 논리 연산자

% 산술 연산자

!! 논리 연산자

@ 오류 제어 연산자

?: 삼항 연산자

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

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

:: 범위 분석 연산자

\ Namespaces

-> 클래스와 객체

=> Arrays

^ 비트 연산자

>> 비트 연산자

<< 비트 연산자

<<< Heredoc 또는 Nowdoc

= 할당 연산자

== 비교 연산자

=== 비교 연산자

!== 비교 연산자

!= 비교 연산자

<> 비교 연산자

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

  • 우주선 (삼 방향 비교) 연산자

| 비트 연산자

|| 논리 연산자

~ 비트 연산자

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

+=-= 할당 연산자

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

.= 할당 연산자

. 문자열 연산자

, 함수 인수

, 가변 선언

$$ 변수 변수

` 실행 연산자

<?= 짧은 태그 열기

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

<? 태그 열기 및 닫기

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

** Exponentiation (PHP 5.6부터)

# 한 줄짜리 쉘 스타일 주석


유형 연산자

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

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

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

bool(true)
bool(false)

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

상속이있는 예

<?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)

<=> 우주선 운영자

PHP 7에 추가됨

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

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

  • 두 피연산자가 같으면 0
  • 왼쪽 피연산자가 오른쪽 피연산자보다 작은 경우 0 보다 작음
  • 왼쪽 피연산자가 오른쪽 피연산자보다 큰 경우 0 보다 큼

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

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

PHP 7 이전에는 다음을 작성했습니다.

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    if ($a < $b) {
        return -1;
    } elseif ($a > $b) {
        return 1;
    } else {
        return 0;
    }
});

PHP 7부터 작성할 수 있습니다 ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    return $a <=> $b;
});

우주선 교환 원 <=> (PHP 7에 추가됨)

<=> 우주선 연산자에 대한 예 (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

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

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

$a = 5

  1. if ($a == 5) - true로 평가됩니다.

  2. if ($a == '5') -이 값을 비교하는 동안 내부적으로 문자열 값을 정수로 변환 한 다음 두 값을 비교하기 때문에 true로 평가됩니다

  3. if ($a === 5) - true로 평가됩니다.

  4. if ($a === '5') - 값이 5이기 때문에 false로 평가되지만이 값 5는 정수가 아닙니다.



증분 / 감소 연산자

++ 증가 연산자

-- 감소 연산자

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 가 다음 aa 입니다.

문자 변수는 증가 할 수 있지만 감소되지 않으며 일반 ASCII 문자 (az 및 AZ) 만 지원됩니다.

스택 오버플로 게시물 :


Null Coalesce 연산자 PHP는

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

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

PHP 문자열 : PHP 문자열은 두 가지 방법뿐만 아니라 4 가지 방법으로 지정할 수 있습니다.

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

매직 상수 : 이것들은 기호가 아니지만이 토큰 패밀리의 중요한 부분입니다. 마법의 상수는 어디에 사용되는지에 따라 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에서 추가됨).

Source


질문 :

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

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

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"




php-5.3