참고 -이 기호는 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.
증분 / 감소 연산자
+ 증가 연산자
- 감소 연산자
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.
약간 무엇입니까? 비트는 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.
_ gettext ()의 별칭
_ ()에서와 같이 밑줄 문자 '_'은 gettext () 함수의 별칭입니다.
-
==============================
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.
매직 상수 : 이것들은 기호가 아니지만이 토큰 패밀리의 중요한 부분입니다. 마법의 상수는 어디에 사용되는지에 따라 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.
우주선 연산자 <=>는 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.
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.
연산자 및 또는 연산자는 할당 연산자 =보다 우선 순위가 낮습니다.
이것은 $ a = true와 false; ($ a = true) 및 false와 같습니다.
대부분의 경우 C, Java 또는 JavaScript와 같은 언어에서 작동하는 && 및 ||를 사용하려고합니다.
-
==============================
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.
{} 중괄호
마지막 게시물에 대한 몇 마디
$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.
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.
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.
문제:
=> 의미는 무엇입니까?
대답:
=> 인간 기호가 연관 배열에서 "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.
문제:
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.
Null Coalesce 연산자 PHP는
PHP7에는 isset ()과 함께 3 진을 사용할 필요가있는 일반적인 경우를 위해 null 유착 연산자 (??)가 추가되었습니다. 존재하지 않으면 첫 번째 피연산자를 반환하고 그렇지 않으면 두 번째 피연산자를 반환합니다 (예 :
$username = $_GET['user'] ?? 'nobody'; // This is equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
-
==============================
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.
== 가변 데이터 형식을 고려하지 않고 검사가 같은지 확인하는 데 사용됩니다.
=== 변수 값 * 및 ** 데이터 유형 모두에 대한 검사 동일성에 사용됩니다.
$ a = 5
-
==============================
18.
다음은 모든 PHP 운영자 (TOKEN)의 이름입니다.
참조 http://php.net/manual/en/tokens.php
from https://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php by cc-by-sa and MIT lisence
'PHP' 카테고리의 다른 글
PHP를 사용하여 "주의 : 정의되지 않은 변수", "주의 : 정의되지 않은 색인"및 "통지 : 정의되지 않은 오프셋" (0) | 2018.09.01 |
---|---|
PHP에서 한 날짜 형식을 다른 날짜 형식으로 변환 (0) | 2018.09.01 |
MySQL API를 PHP로 혼합 할 수 있습니까? (0) | 2018.08.31 |
클라이언트 측 프로그래밍과 서버 측 프로그래밍의 차이점은 무엇입니까? (0) | 2018.08.31 |
mysql_real_escape_string ()을 둘러싼 SQL 주입 (0) | 2018.08.31 |