PHP에서 작은 따옴표와 큰 따옴표 문자열의 차이점은 무엇입니까?
PHP에서 문자열이 작은 따옴표로 묶이고 때로는 큰 따옴표로 묶인 코드를 보는 이유가 약간 혼란 스럽습니다.
.NET 또는 C 언어에서 작은 따옴표로 묶인 경우 문자열이 아니라 문자라는 것을 알고 있습니다.
PHP 문자열 은 두 가지 방법이 아닌 네 가지방법으로 지정할 수 있습니다.
- 작은 따옴표로 묶인 문자열 은 거의 모든 것을 "있는 그대로"표시합니다. 변수와 대부분의 이스케이프 시퀀스는 해석되지 않습니다. 예외는 리터럴 작은 따옴표를 표시하려면 백 슬래시로 이스케이프 할 수 있으며 백 슬래시
\'
를 표시하려면 다른 백 슬래시로 이스케이프 할 수 있습니다\\
( 예, 작은 따옴표로 묶인 문자열도 구문 분석 됨 ). - 큰 따옴표 문자열 은 이스케이프 된 문자 호스트 (일부 정규식 포함)를 표시하고 문자열의 변수가 평가됩니다. 여기서 중요한 점은 평가하려는 변수의 이름을 분리하기 위해 중괄호를 사용할 수 있다는 것 입니다. 예를 들어, 당신이 변수를 가지고
$type
있고 당신이 무엇을 할 것인가echo "The $types are"
그것은 변수를 찾을 것입니다$types
. 이 사용을 피하려면echo "The {$type}s are"
달러 기호 앞이나 뒤에 왼쪽 중괄호를 넣을 수 있습니다. 한 번 봐 가지고 분석 문자열을 배열 변수 등을 사용하는 방법을 참조하십시오. - Heredoc 문자열 구문은 큰 따옴표로 묶인 문자열처럼 작동합니다. 로 시작합니다
<<<
. 이 연산자 뒤에 식별자가 제공된 다음 개행이 제공됩니다. 문자열 자체가 뒤 따르고 따옴표를 닫기 위해 동일한 식별자가 다시 나타납니다. 이 구문에서는 따옴표를 이스케이프 할 필요가 없습니다. - Nowdoc (PHP 5.3.0부터) 문자열 구문은 기본적으로 작은 따옴표로 묶인 문자열처럼 작동합니다. 차이점은 작은 따옴표 나 백 슬래시도 이스케이프 할 필요가 없다는 것입니다. nowdoc은
<<<
heredocs에 사용된 것과 동일한시퀀스로 식별되지만 뒤에 오는 식별자는 작은 따옴표로 묶여 있습니다 (예 :<<<'EOT'
. nowdoc에서는 구문 분석이 수행되지 않습니다.
속도 :
나는 작은 따옴표가 큰 따옴표보다 빠르다는 것에 너무 많은 비중을 두지 않을 것입니다. 특정 상황에서는 아마도 더 빠를 것입니다. 다음 은 작은 따옴표와 큰 따옴표가 PHP 4.3 이후로 본질적으로 똑같이 빠르다는 한 가지 방식을 설명 하는 기사입니다 ( Useless Optimizations
아래쪽 섹션 C
). 또한이 벤치 마크 페이지 에는 작은 따옴표와 큰 따옴표 비교가 있습니다. 대부분의 비교는 동일합니다. 큰 따옴표가 작은 따옴표보다 느린 비교가 하나 있습니다.
물건은 큰 따옴표로 평가되지만 단일로 평가되지는 않습니다.
$s = "dollars";
echo 'This costs a lot of $s.'; // This costs a lot of $s.
echo "This costs a lot of $s."; // This costs a lot of dollars.
'
작은 따옴표
문자열을 지정하는 가장 간단한 방법은 작은 따옴표로 묶는 것입니다. 작은 따옴표는 일반적으로 더 빠르며 내부에 인용 된 모든 것은 일반 문자열로 처리됩니다.
예:
echo 'Start with a simple string';
echo 'String\'s apostrophe';
echo 'String with a php variable'.$name;
"
큰 따옴표
마침표를 사용하여 코드를 구분 {}
하지 않으려면 PHP에서 큰 따옴표를 사용하십시오 (참고 : .
문자열에 연결 ( ) 연산자 를 사용하지 않으려면 변수를 포함 하려면 중괄호 를 사용하십시오 ).
예:
echo "Start with a simple string";
echo "String's apostrophe";
echo "String with a php variable {$name}";
PHP에서 작은 따옴표와 큰 따옴표의 성능 이점이 있습니까?
예. 작은 따옴표를 사용하는 것이 약간 더 빠릅니다.
PHP는 작은 따옴표 안에있는 내용을 해석하기 위해 추가 처리를 사용하지 않습니다. 큰 따옴표를 사용할 때 PHP는 문자열 내에 변수가 있는지 확인하기 위해 구문 분석해야합니다.
작은 따옴표로 묶인 문자열에는 해석되는 변수가 없습니다. 큰 따옴표로 묶인 문자열이 그렇습니다.
또한 큰 따옴표로 묶인 문자열은 백 슬래시없이 아포스트로피를 포함 할 수있는 반면 작은 따옴표로 묶인 문자열은 이스케이프 처리되지 않은 따옴표를 포함 할 수 있습니다.
작은 따옴표로 묶인 문자열은 구문 분석 할 필요가 없기 때문에 런타임에 더 빠릅니다.
In PHP, both 'my name'
and "my name"
are string. You can read more about it at the PHP manual.
Thing you should know are
$a = 'name';
$b = "my $a"; == 'my name'
$c = 'my $a'; != 'my name'
In PHP, people use single quote to define a constant string, like 'a'
, 'my name'
, 'abc xyz'
, while using double quote to define a string contain identifier like "a $b $c $d"
.
And other thing is,
echo 'my name';
is faster than
echo "my name";
but
echo 'my ' . $a;
is slower than
echo "my $a";
This is true for other used of string.
Example of single, double, heredoc, and nowdoc quotes
<?php
$fname = "David";
// Single quotes
echo 'My name is $fname.'; // My name is $fname.
// Double quotes
echo "My name is $fname."; // My name is David.
// Curly braces to isolate the name of the variable
echo "My name is {$fname}."; // My name is David.
// Example of heredoc
echo $foo = <<<abc
My name is {$fname}
abc;
// Example of nowdoc
echo <<< 'abc'
My name is "$name".
Now, I am printing some
abc;
?>
In PHP, single quote text is considered as string value and double quote text will parse the variables by replacing and processing their value.
$test = "variable";
echo "Hello Mr $test"; // the output would be: Hello Mr variable
echo 'Hello Mr $test'; // the output would be: Hello Mr $test
Here, double quote parse the value and single quote is considered as string value (without parsing $test variable.)
Both kinds of enclosed characters are strings. One type of quote is conveniently used to enclose the other type of quote. "'"
and '"'
. The biggest difference between the types of quotes is that enclosed identifier references are substituted for inside double quotes, but not inside single quotes.
Maybe I'm a little late, and a little off-topic, but here it is anyway…
You don't have to choose because of your string's content between:
alert("It's \"game\" time.");
or alert('It\'s "game" time.');
Instead, you can type like this, and then use either double or single quotes, because it won't matter:
alert("It’s “game” time.");
and alert('It’s “game” time.');
One thing:
It is very important to note that the line with the closing identifier of Heredoc must contain no other characters, except a semicolon (;). That means especially that the identifier may not be indented, and there may not be any spaces or tabs before or after the semicolon.
Example:
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
'development' 카테고리의 다른 글
함수형 프로그래밍 대 객체 지향 프로그래밍 (0) | 2020.09.29 |
---|---|
항목이 JavaScript 배열에 있는지 확인하는 가장 좋은 방법은 무엇입니까? (0) | 2020.09.29 |
사용자가 다운로드 할 수 있도록 메모리에 파일을 생성하는 방법은 무엇입니까? (0) | 2020.09.29 |
JavaScript에서 DOM 노드의 모든 자식 요소 제거 (0) | 2020.09.29 |
ls를 사용하여 디렉토리 및 전체 크기 나열 (0) | 2020.09.29 |