¿Cuál es la diferencia entre comillas simples y comillas dobles en PHP?

No soy programador de PHP, pero estoy un poco confundido por qué veo el código PHP con una cadena colocada entre comillas simples y, a veces, entre comillas dobles.

Solo sé en .NET o en C, si está en una cita, significa que es un carácter, no una cadena.

708
10 авг. fijado por rob waminal 10 ago. 2010-08-10 08:12 '10 a las 8:12 am 2010-08-10 08:12
@ 12 respuestas

Las cadenas de PHP se pueden especificar no solo de dos maneras, sino de cuatro maneras.

  • Las comillas simples se mostrarán casi completamente "como están". Las variables y la mayoría de las secuencias de control no serán interpretadas. La excepción es que para mostrar una comilla alfabética se puede evitar con una barra diagonal, y para mostrar una barra invertida se puede evitar con otra barra diagonal \\ ( Entonces, sí, incluso se analizan las comillas simples ).
  • Las cadenas de comillas dobles muestran un conjunto de escapes (incluidas algunas expresiones regulares), y se evaluarán las variables en las cadenas. El punto importante aquí es que puede usar llaves para aislar el nombre de la variable que desea evaluar . Por ejemplo, supongamos que tiene una variable de $type y que se hace echo "The $types are" que buscarán la variable de $types . Para evitar esto usando echo "The {$type}s are" puede colocar la figura de la izquierda antes o después del signo de dólar. Eche un vistazo a las cadenas de análisis para aprender a usar variables de matriz, etc.
  • La sintaxis de cadenas Heredoc funciona como comillas dobles. Comienza con <<< . Después de este operador se le asigna un identificador, y luego una nueva cadena de línea. Luego viene la cadena, y luego el mismo identificador para cerrar la cita. No es necesario ocultar las comillas en esta sintaxis.
  • La sintaxis de cadenas de Nowdoc (desde PHP 5.3.0) funciona esencialmente como comillas simples. La diferencia es que incluso las comillas simples o las barras invertidas deben escaparse. Un nowdoc se identifica con la misma secuencia <<< utilizada para heredocs, pero el siguiente identificador se incluye entre comillas simples, por ejemplo. <<<'EOT' . Nowdoc no analiza.

Velocidad
No daría demasiado peso a las comillas simples más rápido que las comillas dobles. Probablemente sean más rápidos en ciertas situaciones. Aquí, el artículo explica una forma en que las comillas simples y dobles son esencialmente lo mismo rápido con PHP 4.3 ( Useless Optimizations en la parte inferior, sección C ). Además, esta página de prueba tiene una comparación única de comillas dobles. La mayoría de las comparaciones son las mismas. Hay una comparación donde las comillas dobles son más lentas que las comillas simples.

975
10 авг. respuesta dada por Peter Ajtai 10 ago. 2010-08-10 08:28 '10 a las 8:28 2010-08-10 08:28

Las cosas se evalúan entre comillas dobles, pero no en una:

border=0
 $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. 
185
10 авг. La respuesta se da Dani 10 ago. 2010-08-10 08:19 '10 a las 8:19 2010-08-10 08:19

' Comillas simples

La forma más fácil de especificar una cadena es encerrarla entre comillas simples. Una comilla simple suele ser más rápida, y todo lo que está entre comillas se trata como una cadena simple.

Ejemplo:

 echo 'Start with a simple string'; echo 'String\ apostrophe'; echo 'String with a php variable'.$name; 

" Comillas dobles

Use comillas dobles en PHP para evitar la necesidad de usar un punto para separar el código (Nota: use llaves {} para incluir variables si no desea usar el operador de concatenación ( . )) En la cadena.

Ejemplo:

 echo "Start with a simple string"; echo "String apostrophe"; echo "String with a php variable {$name}"; 

¿PHP tiene una cotización directa en el rendimiento en comparación con el doble?

Si Es un poco más rápido utilizar comillas simples.

PHP no utilizará el procesamiento adicional para interpretar lo que está dentro de una sola cita. Cuando usa comillas dobles, PHP debe analizar para verificar si hay alguna variable en la cadena.

40
12 апр. La respuesta la da Janak Kanani el 12 de abril. 2014-04-12 06:54 14 a las 6:54 2014-04-12 06:54

Una cadena con una cita no contiene variables en ella. Una cadena con comillas dobles.

Además, una cadena con dos comillas puede contener apóstrofes sin barras invertidas, mientras que una cadena de escaneo único puede contener comillas no exclusivas.

Las cadenas con una comilla son más rápidas en tiempo de ejecución, porque no necesitan ser analizadas.

35
10 авг. La respuesta se da Borealid 10 ago. 2010-08-10 08:15 '10 a las 8:15 am 2010-08-10 08:15

En PHP, tanto 'my name' como "my name" son cadenas. Puedes leer sobre esto en el manual de PHP .

Lo que necesitas saber.

 $a = 'name'; $b = "my $a"; == 'my name' $c = 'my $a'; != 'my name' 

En PHP, la gente usa una comilla simple para definir una cadena constante, por ejemplo, 'a' , 'my name' , 'abc xyz' , cuando usa una comilla doble para definir una cadena que contiene el identificador de tipo "a $b $c $d" .

En otras palabras,

 echo 'my name'; 

mas rapido que

 echo "my name"; 

pero

 echo 'my ' . $a; 

mas lento que

 echo "my $a"; 

Esto es cierto para otros utilizados en la cadena.

23
10 авг. Respuesta dada por Bang Dao el 10 de agosto. 2010-08-10 08:23 '10 a las 8:23 am 2010-08-10 08:23

Ejemplo de comillas simples, dobles, heredoc y nowdoc

 <?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; ?> 
16
02 марта '17 в 13:34 2017-03-02 13:34 la respuesta la ofrece Rabindra Nath el 02 de marzo de 2017 a las 13:34 2017-03-02 13:34

Ambos tipos de caracteres cerrados son cadenas. Es conveniente utilizar un tipo de cotización para incluir un tipo diferente de cotización. "'" y '"' . La mayor diferencia entre los tipos de comillas es que las referencias anidadas de los identificadores se reemplazan entre comillas dobles, pero no entre comillas simples.

11
10 авг. la respuesta se da wallyk 10 ago. 2010-08-10 08:15 '10 a las 8:15 am 2010-08-10 08:15

En PHP, el texto de una sola cita se trata como un valor de cadena, y el texto de una doble cita analizará las variables, reemplazando y procesando su valor.

 $test = "variable"; echo "Hello Mr $test"; // the output would be: Hello Mr variable echo 'Hello Mr $test'; // the output would be: Hello Mr $test 

Aquí, las comillas dobles para los valores de análisis y las comillas simples se tratan como un valor de cadena (sin analizar la variable $ test).

11
06 февр. La respuesta la da Maulik Bhojani el 6 de febrero. 2014-02-06 12:19 '14 a las 12:19 2014-02-06 12:19

Tal vez sea un poco tarde y un poco fuera de tema, pero aquí es lo mismo ...

No es necesario elegir, debido a su contenido de línea, entre:
alert("It \"game\" time."); o alert('It\ "game" time.');

En su lugar, puede escribirlo y luego usar comillas dobles o simples, porque no importa:
alert("Its "game" time."); y alert('Its "game" time.');

0
09 апр. La respuesta es dada por Takit Isy 09 de abril. 2018-04-09 16:09 '18 a las 4:09 pm 2018-04-09 16:09

Una cosa

Es muy importante tener en cuenta que la cadena con el identificador de cierre Heredoc no debe contener otros caracteres además del punto y coma (;) . Esto significa que es posible que el identificador no tenga sangría y que no haya espacios ni tabulaciones antes o después del punto y coma.

Ejemplo:

  $str = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD; 
-1
03 янв. la respuesta se da srmilon 03 jan. 2017-01-03 09:28 '17 a las 9:28 2017-01-03 09:28
 $name = 'test'; $singleQuote = 'This is example for single quote $name'; // here $name variable not evaluating echo $singleQuote; // Output: This is example for single quote $name $singleQuote = "This is example for single quote $name"; // here $name variable will evaluate and replace variable value echo $singleQuote; // Output: This is example for single quote test Also inside single quote expression evaluate faster campare to double quotes 
-1
09 апр. Respuesta dada por Mahadeva Prasad 09 abr. 2018-04-09 16:18 '18 a las 4:18 pm 2018-04-09 16:18

Si usamos comillas dobles en la expresión de eco, comprobará tanto las variables como la cadena.

Si usamos comillas simples en la expresión de eco, solo tratará todos los datos como una cadena.

para más información ver http://phptutorial.co.in/php-echo-print/ p>

-3
31 янв. respuesta dada por el usuario3255636 31 de enero 2014-01-31 04:36 '14 a las 4:36 2014-01-31 04:36

Otras preguntas sobre etiquetas o Haz una pregunta