development

PHP에서 작은 따옴표와 큰 따옴표 문자열의 차이점은 무엇입니까?

big-blog 2020. 9. 29. 08:07
반응형

PHP에서 작은 따옴표와 큰 따옴표 문자열의 차이점은 무엇입니까?


PHP에서 문자열이 작은 따옴표로 묶이고 때로는 큰 따옴표로 묶인 코드를 보는 이유가 약간 혼란 스럽습니다.

.NET 또는 C 언어에서 작은 따옴표로 묶인 경우 문자열이 아니라 문자라는 것을 알고 있습니다.


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

  1. 작은 따옴표로 묶인 문자열 은 거의 모든 것을 "있는 그대로"표시합니다. 변수와 대부분의 이스케이프 시퀀스는 해석되지 않습니다. 예외는 리터럴 작은 따옴표를 표시하려면 백 슬래시로 이스케이프 할 수 있으며 백 슬래시\'를 표시하려면 다른 백 슬래시로 이스케이프 할 수 있습니다\\( 예, 작은 따옴표로 묶인 문자열도 구문 분석 됨 ).
  2. 큰 따옴표 문자열 은 이스케이프 된 문자 호스트 (일부 정규식 포함)를 표시하고 문자열의 변수가 평가됩니다. 여기서 중요한 점은 평가하려는 변수의 이름을 분리하기 위해 중괄호를 사용할 수 있다는 입니다. 예를 들어, 당신이 변수를 가지고$type있고 당신이 무엇을 할 것인가echo "The $types are"그것은 변수를 찾을 것입니다$types. 이 사용을 피하려면echo "The {$type}s are"달러 기호 앞이나 뒤에 왼쪽 중괄호를 넣을 수 있습니다. 한 번 봐 가지고 분석 문자열을 배열 변수 등을 사용하는 방법을 참조하십시오.
  3. Heredoc 문자열 구문은 큰 따옴표로 묶인 문자열처럼 작동합니다. 로 시작합니다<<<. 이 연산자 뒤에 식별자가 제공된 다음 개행이 제공됩니다. 문자열 자체가 뒤 따르고 따옴표를 닫기 위해 동일한 식별자가 다시 나타납니다. 이 구문에서는 따옴표를 이스케이프 할 필요가 없습니다.
  4. 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;

참고URL : https://stackoverflow.com/questions/3446216/what-is-the-difference-between-single-quoted-and-double-quoted-strings-in-php

반응형