it-source

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

criticalcode 2022. 12. 9. 21:50
반응형

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

이게 뭐야?

이것은 PHP의 구문에 관한 질문의 모음입니다.또한 커뮤니티 위키이므로 모든 사용자가 이 목록 관리에 참여하도록 초대됩니다.

왜 이러한가?

연산자 및 기타 구문 토큰에 대한 질문은 찾기 어려웠습니다.¹
Stack Overflow의 기존 질문에 대한 링크가 있어야 하기 때문에 PHP 매뉴얼에서 콘텐츠를 복사하는 것이 아니라 참조하기가 더 쉽습니다.

주의: 2013년 1월부터 Stack Overflow는 특수 문자를 지원합니다.검색어를 따옴표로 둘러싸기만 하면 됩니다.

여기서 뭘 해야 하죠?

만약 당신이 그런 질문을 해서 누군가에게 여기를 지적받았다면, 아래의 특정 구문을 찾아보세요.PHP 매뉴얼에 링크된 페이지와 링크된 질문이 당신의 질문에 대답할 것입니다.그렇다면 답변을 상향 투표하는 것이 좋습니다.이 목록은 다른 사용자가 제공한 도움말을 대체하는 것이 아닙니다.

리스트

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


& 비트 연산자 또는 참조


=& 레퍼런스


&= 비트 연산자


&& 논리 연산자


% 산술 연산자


!! 논리 연산자


@ 오류 제어 연산자


?: 삼진 연산자


?? Null 병합 연산자(PHP 7 이후)


?string ?int ?array ?bool ?float PHP 7.1 이후 null 반환 형식 선언


: 제어 구조, 3진 연산자, 반환 유형 선언에 대한 대체 구문


:: 스코프 분해능 연산자


\ 네임스페이스


-> 클래스와 오브젝트


=> 어레이


^ 비트 연산자


>> 비트 연산자


<< 비트 연산자


<<< Eledoc 또는 Nowdoc


= 할당 연산자


== 비교 연산자


=== 비교 연산자


!== 비교 연산자


!= 비교 연산자


<> 비교 연산자


<=> 비교 연산자(PHP 7.0 이후)


| 비트 연산자


|| 논리 연산자


~ 비트 연산자


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


+= ★★★★★★★★★★★★★★★★★」-= (할당 연산자)


++ ★★★★★★★★★★★★★★★★★」-- (증가/감소 연산자)


.= 할당 연산자


. 문자열 연산자


, 함수 인수

, 변수 선언


$$ 변수


` 실행 연산자


<?= 쇼트 오픈 태그


[] 어레이(PHP 5.4 이후 짧은 구문)


<? 태그 열기 및 닫기


.. 문자


... 인수 언팩(PHP 5.6 이후)


** 지수화(PHP 5.6 이후)


# 한 줄 셸 스타일의 코멘트


?-> NullSafe 오퍼레이터 호출(PHP 8.0 이후)


연산자 증가/감소

++ 연산자

--

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++;
}

(Once)zaa음음음등등등다

문자 변수는 증분할 수 있지만 감소시킬 수 없습니다.그 경우에도 지원되는 것은 플레인 ASCII 문자(a~z 및 A~Z)뿐입니다.


스택 오버플로우 투고:

비트 연산자

뭐가 조금인데?비트는 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

2개의 공유 비트는 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이다.

<=> 오퍼레이터

PHP 7에 추가됨

우주선 운영자 <=>는 PHP 7에 추가된 최신 비교 연산자입니다.이것은 동등 연산자와 동일한 우선순위를 가진 비관련 이진 연산자입니다(==,!=,===,!==이 피연산자와 를 쉽게 할 수 .) 이 연산자를 사용하면 왼쪽 피연산자와 오른쪽 피연산자를 3방향으로 간단하게 비교할 수 있습니다.

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

  • 0
  • 0 보다 작을 때
  • 크다0 보다 클

예.

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

이 연산자를 사용하는 좋은 실용적인 방법은 비교 타입의 콜백입니다.이 콜백은 2개의 값 간의 3방향 비교를 바탕으로 제로, 마이너스 또는 양의 정수를 반환할 것으로 예상됩니다.전달된 비교 함수는 이러한 예 중 하나입니다.

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;
    // return $b <=> $a; // for reversing order
});

_ gettext()의 에일리어스

'는 '_'와 '_'는 친 글자입니다._()는 함수의 에일리어스입니다.

구문 이름. 묘사
x == y 평등 true 와 y 의 키 쌍이 x 의 y 의 / 값 쌍은 입니다.
x != y 불평등 true가 yx와 않은 y는 yx와 동일하지 않습니다.
x === y 신원 true 와 y 의 키 쌍이 x 의 y 의 / 값 쌍은 입니다.
x !== y 비동일성 true가 yx와하지 않은 y는 동일하지 않습니다.
x <=> y 우주선 x가 y와 같으면 0, x > y이면 0, x < y이면 0 미만
++x 프리 인크리먼트 x를 1씩 증가시킨 후 x를 반환합니다.
x++ 증가 후 x를 반환하고 x를 1씩 증분합니다.
--x 감소 전 x를 하나씩 줄인 다음 x를 반환합니다.
x-- 감퇴 후의 x를 반환한 다음 x를 하나씩 감소시킵니다.
x and y 그리고. true가 둘 다 xxx y 둘 다 both 다 다 both both true=6, y=3 인 경우
(x < 10 and y > 1)true
x && y 그리고. true가 둘 다 xxx y 둘 다 both 다 다 both both true=6, y=3 인 경우
(x < 10 && y > 1)true
x or y 또는 true y 중가 x인 true=6, y=3 인 경우
(x < 10 or y > 10)true
x || y 또는 true y 중가 x인 true=6, y=3 인 경우
(x < 3 || y > 1)true
a . b 연결 두 문자열을 연결합니다. "Hi" . "Ha"

마법 상수:비록 이것들은 단순한 상징이 아니라 이 토큰 패밀리의 중요한 부분이지만.8개의 마법 상수가 사용 장소에 따라 변합니다.

__LINE__ 행 : ★★★★★★★★★★★★★★★★★★★★★★★★★★

__FILE__ 풀 및 파일의 풀 경로 및 파일 이름.include됩니다.include는 인크루드 파일 입니다..0 PHP 4.0.2 。__FILE__에는 항상 심볼링크가 해결된 절대 경로가 포함되어 있지만 이전 버전에서는 상황에 따라 상대 경로가 포함되어 있습니다.

__DIR__ : 파일의 디렉토리.include가 반환됩니다.include는 include 파일의 디렉토리입니다.은 this은은 this this this this this this this this this에 해당합니다.dirname(__FILE__). 이디렉토리가 한 5.됨). 이 디렉토리 이름에는 루트 디렉토리가 아닌 한 후행 슬래시가 없습니다.(PHP 5.3.0에 추가됨)

__FUNCTION__: 함수 이름. (PHP 4.3.0에 추가됨) PHP 5에서 이 상수는 선언된 함수 이름을 반환합니다(대문자와 소문자가 구분됨).PHP 4는 PHP 4를 사용합니다.

__CLASS__: 클래스 이름. (PHP 4.3.0에 추가됨) PHP 5에서 이 상수는 선언된 대로 클래스 이름을 반환합니다(대문자와 소문자가 구분됨).PHP 4는 PHP 4를 사용합니다.클래스 이름에는 선언된 네임스페이스가 포함됩니다(예:Foo\Bar 5.4). PHP 5.에 주의해 __CLASS__이치노,__CLASS__이치노

__TRAIT__: 특성 이름. (PHP 5.4.0에 추가됨) PHP 5.4에서 이 상수는 선언된 대로 특성을 반환합니다(대문자와 소문자가 구분됨). "네임스페이스").Foo\Bar를 참조해 주세요.

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

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

원천

유형 연산자

instanceofPHP 변수가 특정 클래스의 인스턴스화된 개체인지 여부를 결정하기 위해 사용됩니다.

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

위의 예는 다음과 같습니다.

bool(true)
bool(false)

이유: 위의 예$a is is is is is is is is is is of 의 대상입니다.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 연산자 개요:


논리 연산자:

  • $a & $b : $a와 $b가 모두 TRUE인 경우 TRUE입니다.
  • $a | $b : $a 또는 $b가 TRUE인 경우 TRUE.
  • $a xor $b : $a 또는 $b가 TRUE일 경우 TRUE이지만 둘 다 TRUE가 아닙니다.
  • ! $a : $a가 TRUE가 아닌 경우 TRUE입니다.
  • $a 및 $b : $a와 $b가 모두 TRUE이면 TRUE입니다.
  • $a 또는 $b : $a 또는 $b가 TRUE이면 TRUE입니다.

비교 연산자:

  • $a == $b : 유형 저글링 후 $a가 $b와 같으면 TRUE입니다.
  • $a === $b : $a가 $b이고 같은 유형이면 TRUE입니다.
  • $a!= $b : 유형 저글링 후 $a가 $b와 같지 않으면 TRUE입니다.
  • $a <> $b : 유형 저글링 후 $a가 $b와 같지 않으면 TRUE입니다.
  • $a !== $b : $a가 $b와 동일하지 않거나 같은 유형이 아닌 경우 TRUE입니다.
  • $a < $b : $a가 $b 미만일 경우 TRUE입니다.
  • $a > $b : $a가 $b보다 엄밀하게 클 경우 TRUE입니다.
  • $a <= $b : $a가 $b 이하일 경우 TRUE입니다.
  • $a >= $b : $a가 $b 이상이면 TRUE입니다.
  • $a <=> $b : $a가 각각 $b보다 작거나 같거나 큰 경우 0보다 작거나 같거나 큰 정수입니다.PHP 7부터 이용 가능.
  • $a? $b : $c : $a가 $b를 반환하는 경우 $c를 반환하는 경우 (3진 연산자)
  • $a ? ? $c : $a ? $a : $c와 동일 (통합 연산자 - PHP > = 7 필요)

산술 연산자:

  • - $a : $a와는 반대입니다.
  • $a + $b : $a와 $b의 합계.
  • $a - $b : $a와 $b의 차이.
  • $a * $b : $a와 $b의 제품.
  • $a / $b : $a와 $b의 몫.
  • $a % $b : 나머지 $a를 $b로 나눕니다.
  • $a ** $b : $a를 $b의 거듭제곱한 결과(PHP 5.6에서 도입)

증가/감소 연산자:

  • ++$a : $a를 1씩 증가시킨 후 $a를 반환합니다.
  • $a++ : $a를 반환하고 $a를 1씩 증가시킵니다.
  • --$a : $a를 1씩 줄인 후 $a를 반환합니다.
  • $a-- : $a를 반환하고 $a를 하나씩 줄입니다.

비트 연산자:

  • $a & $b : $a 및 $b로 설정된 비트가 설정됩니다.
  • $a | $b : $a 또는 $b로 설정된 비트가 설정됩니다.
  • $a ^ $b : $a 또는 $b로 설정되지만 둘 다 설정되지는 않습니다.
  • ~ $a : $a로 설정된 비트는 설정되지 않으며 그 반대도 마찬가지입니다.
  • $a < $b : $a $b 스텝의 비트를 왼쪽으로 이동합니다(각 스텝은 "2배"를 의미합니다).
  • $a >> $b : $a $b 스텝의 비트를 오른쪽으로 이동합니다(각 스텝은 "2로 나누기"를 의미합니다).

문자열 연산자:

  • $a. $b : $a와 $b의 결합.

어레이 연산자:

  • $a + $b : $a와 $b의 합.
  • $a == $b : $a와 $b의 키/값 쌍이 같으면 TRUE입니다.
  • $a === $b : $a와 $b의 키/값 쌍이 동일한 순서 및 유형일 경우 TRUE입니다.
  • $a != $b : $a가 $b와 같지 않으면 TRUE입니다.
  • $a <> $b : $a가 $b와 같지 않으면 TRUE입니다.
  • $a !== $b : $a가 $b와 동일하지 않으면 TRUE입니다.

할당 연산자:

  • $a = $b : $b 값은 $a에 할당됩니다.
  • $a + = $b : $a = $a + $b와 동일
  • $a - = $b : $a = $a - $b와 동일
  • *$a = $b : $a = $a * $b와 동일
  • $a / = $b : $a = $a / $b와 동일
  • $a % = $b : $a = $a % $b와 동일
  • **$a = $b : $a = $a ** $b와 동일
  • $a . = $b : $a = $a . $b와 동일
  • $a &= $b : $a = $a & $b와 동일
  • $a |= $b : $a = $a | $b와 동일
  • $a ^ = $b : $a = $a ^ $b와 동일
  • $a < < = $b : $a = $a <$b와 동일
  • $a >>= $b : $a = $a >> $b와 동일
  • $a?= $b : $a가 null이거나 정의되지 않은 경우 $b 값이 $a에 할당됩니다(: 병합 할당 연산자 - PHP > = 7.4 필요).

메모

and 및 """or가 연산자보다 우선 .=.

, ,,$a = true and false; ($a = true) and false.

대부분의 경우 C, Java, JavaScript 등의 언어로 동작하는및 을 사용하는 것이 좋습니다.

우주선 운영자(PHP 7에 추가)

의 예<=>PHP 7, PHP:

정수, 플로트, 스트링, 어레이 및 오브젝트를 사용하여 변수를 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
// Comparison is case-sensitive
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

{} ★★★★★

그리고 마지막 게시물에 대한 몇 마디

$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

Null 병합 연산자(--)

7.0 3과 함께 해야 하는 인 경우에 7.되었습니다.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';
?>

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) 유전:

$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

질문:.

무인 does does 가 뭐죠?=>


답변:

=> 이 분리하기 인가?"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 배열은 시퀀셜 배열과 몇 가지 차이점이 있습니다(앞의 경우는 값이 이어질 때마다 1씩 증가하여 미리 정해진 시퀀스에서 사용되는 인덱스를 증가시키기 때문입니다).

(시퀀셜 배열과 연관 배열의 차이):

  • 선언 '어소시에이티브 어레이만 .value 인덱스 값 ' 값')도 입력합니다.key하여 코드의 를 사용하여 코드의 후반부에서 어레이를 호출합니다.때 은 다음과 ."key" => "value".

  • Array를 , 「」는 「」를 해 주세요.key다음으로 어레이 인덱스 내에 값을 배치하여 원하는 값을 가져옵니다.value.

예:

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

까지와 같은 하려면 , 「」를 참조해 .key값은 어레이 인덱스에 사용됩니다.

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

최종 포인트:

위의 예에서 , '어느 정도'가 '어느 정도'라는 것을 알 수 .=>은 각 됩니다.key ★★★★★★★★★★★★★★★★★」value어레이 내의 값을 시작하는 동안 어레이 내의 을 구성합니다.

질문:

여기 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

==변수 데이터 유형을 고려하지 않고 체크 동등성을 위해 사용됩니다.

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

$a = 5

  1. if ($a == 5) - 참 - 참 - 참으로

  2. if ($a == '5')- 이두 PHP는 이하고 두 true로

  3. if ($a === 5) - 참 - 참 - 참으로

  4. if ($a === '5')false로 이값 「 5 」 、 「 5 」 、 「 false 」

Null 병합 연산자 "?"(PHP 7에 추가됨)

오퍼레이터의 이름 중 가장 알기 쉬운 것은 아니지만, PHP 7은 비교적 편리한 NULL 머지를 도입하고 있기 때문에 예를 들어 설명하겠습니다.

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

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

첫 번째 요소와 동일한 경우 두 번째 요소를 건너뛸 수 있는 줄임말도 있습니다.echo $count ? : 10 ; // 또한 출력 10

PHP 7에서는 추가로 ?을 얻을 수 있습니다.이 연산자는 극단적인 혼란을 나타내지 않고, 제가 보통 두 개의 물음표를 함께 사용하는 대신 일련의 값을 연결할 수 있도록 합니다.왼쪽에서 오른쪽으로 읽으면 null이 아닌 첫 번째 값이 반환되는 값입니다.

// $a is not set
$b = 16;

echo $a ?? 2; // outputs 2
echo $a ?? $b ?? 7; // outputs 16

이 구성은 사용자 입력 또는 기존 설정에서 얻을 수 있는1개 이상의 값에 우선순위를 부여하고 해당 설정이 없을 경우 지정된 기본값으로 안전하게 폴백할 때 유용합니다.작은 기능이지만 어플리케이션이 PHP 7로 업그레이드되면 바로 사용할 수 있을 것입니다.

무효 반환 유형 선언

PHP 7은 반환 유형 선언에 대한 지원을 추가합니다.인수 유형 선언과 마찬가지로 반환 유형 선언은 함수에서 반환되는 값의 유형을 지정합니다.반환 유형 선언에는 인수 유형 선언과 동일한 유형을 사용할 수 있습니다.

엄밀한 입력은 반환 유형 선언에도 영향을 미칩니다.기본 weak 모드에서는 반환된 값이 아직 해당 유형이 아닌 경우 올바른 유형으로 강제됩니다.strong 모드에서는 반환되는 값이 올바른 유형이어야 합니다.그렇지 않으면 TypeError가 느려집니다.

PHP 7.1.0에서는 유형 이름 앞에 물음표(?)를 붙이면 반환 값을 null로 표시할 수 있습니다.이는 함수가 지정된 유형 또는 NULL 중 하나를 반환함을 나타냅니다.

<?php
function get_item(): ?string {
    if (isset($_GET['item'])) {
        return $_GET['item'];
    } else {
        return null;
    }
}
?>

원천

?-> Null Safe 오퍼레이터

PHP 8.0에 추가됨

바로 이며, 반환됩니다.nullnull할 수 . nullsafe 연산자는 연결 가능하며 메서드와 속성 모두에서 사용할 수 있습니다.

$objDrive = null;
$drive = $objDrive?->func?->getDriver()?->value; //return null
$drive = $objDrive->func->getDriver()->value; // Error: Trying to get property 'func' of non-object

Nullsafe 연산자는 어레이 키와 함께 작동하지 않습니다.

$drive['admin']?->getDriver()?->value //Warning: Trying to access array offset on value of type null

$drive = [];
$drive['admin']?->getAddress()?->value //Warning: Undefined array key "admin"

스플랫 연산자(...)로서의 DOT 3개(PHP 5.6 이후)

PHP에는 "..."(세 개의 점) 연산자가 있으며, 이를 스플래트 연산자라고 합니다.함수에서 임의의 수의 매개 변수를 전달하기 위해 사용되며 이러한 유형의 함수를 Variadic Functions라고 합니다.「...」의 예를 들어 보자.

예 1:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}
 
echo calculateNumbers(10, 20, 30, 40, 50);
 
//Output 150
?>

calculateNumbers() 함수의 각 인수는 "…"를 사용할 때 배열로서 $params를 통과합니다.

"…" 연산자를 사용하는 방법은 여러 가지가 있습니다.다음은 몇 가지 예입니다.

예 2:

<?php
function calculateNumbers($no1, $no2, $no3, $no4, $no5){
    $total = $no1 + $no2 + $no3 + $no4 + $no5;
    return $total;
}
 
$numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers(...$numbers);
 
//Output 150
?>

예 3:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}
$no1 = 70;
$numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers($no1, ...$numbers);
 
//Output 220
?>

예 4:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}
 
$numbers1 = array(10, 20, 30, 40, 50);
$numbers2 = array(100, 200, 300, 400, 500);
echo calculateNumbers(...$numbers1, ...$numbers2);
 
//Output 1650
 
?>

Variadic Parameters는 명명된 인수에 의해 대상이 될 수 없습니다.

예 5:

<?php
function sumIntegers(int ...$params): int {
    $sum = 0;
    foreach($params as $value){
        $sum += $value;
    }
    return $sum;
}


echo sumIntegers(params: [1, 2, 3, 4]);     
// $params will be equal to ['params' => [1, 2, 3, 4]] in sumIntegers
// throws TypeError sumIntegers(): Argument #1 must be of type int, array given 

echo sumIntegers(arbitrary_name: 1, another_name: 2);
// $params will be equal to ['arbitrary_name' => 1, 'another_name' => 2] in sumIntegers
// Outputs: 3 
?>

함수 호출의 파라미터로서 언팩된 관련 배열을 사용하는 것은 각 키와 값의 쌍을 명명된 인수로 사용하여 함수를 호출하는 것과 같습니다.

예 6:

<?php
function fullName(string $first_name, ?string $middle_name = null, ?string $last_name = null): string {
    return trim("$first_name|$middle_name|$last_name");
}

$params = ['first_name' => 'John', 'last_name' => 'Doe'];
echo fullName(...$params);
// same as fullName(first_name: 'John', last_name: 'Doe')

// outputs 'John||Doe'
?>

이름 있는 인수를 네스트된 함수 호출이나 클래스 등에 전달하기 위해 사용할 수 있습니다.

예 7:

<?php
function throw_exception(string $exception, ...$parameters) {
    throw new $exception(...$parameters);
}

throw_exception(exception: 'Exception', code: 123);
// executes throw new Exception(...['code' => 123])
// which is the same as throw new Exception(code: 123);
?>

php8 이후 NullSafe 연산자 "?>"

PHP8에서는 이 새로운 연산자가 승인되었습니다.여기서 문서를 찾을 수 있습니다. ?->바로 그NullSafe Operator됩니다.nullnull

예:

<?php
$obj = null;
$obj = $obj?->attr; //return null
$obj = ?->funct(); // return null
$obj = $objDrive->attr; // Error: Trying to get property 'attr' of non-object
?>

PHP 어레이:

array한 유형의 또는 개 구조입니다.예를 들어, 1개의값입니다.

  • 배열 - 자자 an numeric - Anarray숫자 인덱스를 사용합니다.값은 선형 방식으로 저장 및 액세스됩니다.

  • 어레이 - 시 、 An 。array이치노요소 값은 엄밀한 선형 인덱스 순서가 아니라 키 값과 관련지어 저장됩니다.

  • 배열 - 안 되다 - 안array하나 이상의 배열을 포함하며 여러 인덱스를 사용하여 값에 액세스합니다.

숫자 배열

이러한 배열은 숫자, 문자열 및 모든 개체를 저장할 수 있지만 인덱스는 숫자로 표시됩니다.기본적으로 배열 색인은 0부터 시작합니다.

예:
<?php

// First way of creating an array
$numbers = array(1, 2, 3, 4, 5);

foreach ($numbers as $value) {
    echo "Value is $value";
}

// Second way of creating an array
$numbers = ['a1', 'b2', 'c3', 'd4', 'e5'];

foreach ($numbers as $value) {
    echo "Value is $value";
}

// Third way of creating an array
$numbers[0] = "one";
$numbers[1] = "two";
$numbers[2] = "three";
$numbers[3] = "four";
$numbers[4] = "five";

foreach ($numbers as $value) {
    echo "Value is $value";
}

// Fourth way of creating an array
$numbers[] = "a";
$numbers[] = "b";
$numbers[] = "c";
$numbers[] = "d";
$numbers[] = "e";

foreach ($numbers as $value) {
    echo "Value is $value";
}
출력:
Value is 1
Value is 2
Value is 3
Value is 4
Value is 5
Value is a1
Value is b2
Value is c3
Value is d4
Value is e5
Value is one
Value is two
Value is three
Value is four
Value is five
Value is a
Value is b
Value is c
Value is d
Value is e

어소시에이션 어레이

연관 배열은 기능 면에서는 숫자 배열과 동일하지만 색인 면에서는 다릅니다..string이를 통해 키와 값 간의 정의된 연관성을 확립할 수 있습니다.

예:
<?php

// First way of creating an associative array
$salaries = array("mohammad" => 2000, "qadir" => 1000, "zara" => 500);

echo "Salary of mohammad is " . $salaries['mohammad'];
echo "Salary of qadir is " .  $salaries['qadir'];
echo "Salary of zara is " .  $salaries['zara'];

// Second way of creating an associative array
$salaries = ["mohammad" => '$$$', "qadir" => '$$', "zara" => '$'];

echo "Salary of mohammad is " . $salaries['mohammad'];
echo "Salary of qadir is " .  $salaries['qadir'];
echo "Salary of zara is " .  $salaries['zara'];

// Third way of creating an associative array
$salaries['mohammad'] = "high";
$salaries['qadir'] = "medium";
$salaries['zara'] = "low";

echo "Salary of mohammad is " . $salaries['mohammad'];
echo "Salary of qadir is " .  $salaries['qadir'];
echo "Salary of zara is " .  $salaries['zara'];
출력:
Salary of mohammad is 2000
Salary of qadir is 1000
Salary of zara is 500
Salary of mohammad is $$$
Salary of qadir is $$
Salary of zara is $
Salary of mohammad is high
Salary of qadir is medium
Salary of zara is low

다차원 어레이

다차원 배열의 각 요소는 배열일 수도 있다.서브 어레이의 각 요소는 어레이가 될 수 있습니다.다차원 배열의 값은 여러 인덱스(숫자 또는 문자열)를 사용하여 액세스됩니다.

예:
<?php

$marks = [
    "mohammad" => [
        "physics" => 35,
        "maths" => 30,
        "chemistry" => 39
    ],

    "qadir" => [
        "physics" => 30,
        "maths" => 32,
        "chemistry" => 29
    ],

    "zara" => [
        "physics" => 31,
        "maths" => 22,
        "chemistry" => 39
    ]
];

// Accessing a multidimensional array's values
echo "Marks for mohammad in physics: " . $marks['mohammad']['physics'];

echo "Marks for qadir in maths:" . $marks['qadir']['maths'];

echo "Marks for zara in chemistry: " . $marks['zara']['chemistry'];
출력:
Marks for mohammad in physics: 35
Marks for qadir in maths: 32
Marks for zara in chemistry: 39

PHP 배열 함수

  • array().-> 배열을 만듭니다.
  • array_change_key_case()-> 또는
  • array_chunk()합니다.-> 어레이 청크로 분할합니다.
  • array_column()합니다.-> 입력 배열의 값을 반환하십시오.
  • array_combine()->의 "values" 어레이의 .-> 1개의 "values" 어레이는 1개의 "values" 어레이로 구성됩니다
  • array_count_values()합니다.-> > > > > > > > > > > > > > > > > > > > > > > >
  • array_diff()-> 배열을 비교하여 차이를 반환합니다(비교값만).
  • array_diff_assoc()와 값 을 반환합니다.-> > 어키 ( and를 ) 。
  • array_diff_key()만)을 합니다.-> 배열을 비교하다(비교 키만)
  • array_diff_uassoc()을 비교하여 사용자 키 비교 합니다).-> 키와 값을 비교합니다.
  • array_diff_ukey() 정의 키 기능을 만 비교)을 반환합니다> 사용자 정의 키 비교 기능을 사용합니다.
  • array_fill().-> 배열을 채웁니다.
  • array_fill_keys()-> 지정은 -> 키 지정입니다.
  • array_filter()-> > 콜백 함수를 사용합니다.
  • array_flip()->를 플립하여 배열 합니다.- > > > > 교 / 교교교 in in in in in in - - - - - - - - - - - - - - - - -
  • array_intersect()만)-> 일치하다
  • array_intersect_assoc()하는 키와 합니다.-> 키와 값을 비교합니다.
  • array_intersect_key()를 반환합니다.-> 비교 키만)
  • array_intersect_uassoc() 키 기능을 값을 )-> 일치 을 반환합니다.
  • array_intersect_ukey() 키 기능을 )-> 일치 항목을 반환합니다.
  • array_key_exists()하는지 여부를 합니다.- > 지정 키는 배열에 존재합니다.
  • array_keys()합니다.- > > > > > > > > > > > > > > > > > > > > > > >
  • array_map()->각함수로 함수는 새로운 합니다.-> " > " " " " " " 。 " " 。 " "
  • array_merge()->를 1개의 .-> 1개의 어레이로 Marge 합니다.
  • array_merge_recursive()->.-> 1개의 어레이를 Marge 합니다.
  • array_multisort() 또는 -> 다차원 배열 정렬

PHP 8 이후 속성 수[]

쓸 수 요.#[attribute_name]PHP 8 이후입니다.이것은 PHP(Rust 및 C#)의 속성입니다.다른 언어에서는 주석(Java)이나 데코레이터(Python, Javascript)와 같은 이름을 유사한 기능에 사용할 수 있습니다.PHP 8 이전 버전에서는#[whatever]이다(왜냐하면#PHP php php php php php php php php php php php php ) 。8보다 의 마지막 8보다 이전 (로는 PHP 8보다 이전 버전)에서됩니다. 행의 마지막 항목이 아니라면, PHP 8 이전 버전(그 이후)에 코멘트할 것입니다.]이 종료됩니다).

in php 8

인 전전 the the the the 를 쓰는 !== null.?연산자가 코드를 한 줄만 작성하면 코드가 매우 명확해집니다.

이전:

$firsName =  null;
if ($session !== null) {
    $user = $session->user;
    if ($user !== null) {
        $name = $user->getName();
        if ($name !== null) {
            $firstName = $name->firstName;
        }
    }
}

그 후:

$firsName = $session?->user?->getName()?->firstName;

matchswitch . 。match은 엄밀한한다.===을 클릭합니다을 클릭합니다.strict_types.

이전:

switch ('A') {
    case 'A':
        echo "found A";
        break;
    case 'B':
        echo "found B";
        break;
}
// Result: "found A"

그 후:

echo match ('A') {
  'A' => "found A",
  'B' => "found B",
};
// Result: "found A"

이중 도트 구문

함수에서 되는 경우, PHP 문자열 함수는 다음과 같습니다... 문자의 . a-e abcde.

echo trim('adobe', 'a..e');

인쇄:

o

이중 도트 범위 구문을 허용하는 기본 PHP 함수

언급URL : https://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php

반응형