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


No soy un experto en programación de PHP, pero estoy un poco confundido por qué veo un código en PHP con cadenas colocadas entre comillas simples y, a veces entre comillas dobles.

Solo sé en .NET, o el lenguaje C, si está en comillas simples, eso significa que es un carácter, no una cadena.


664
2017-08-10 05:12


origen


Respuestas:


Cadenas de PHP se puede especificar no solo en dos maneras, pero en cuatro formas.

  1. Cuerdas sueltas mostrará las cosas casi completamente "como está". Las variables y la mayoría de las secuencias de escape no serán interpretadas. La excepción es que para mostrar una comilla simple literal, puede escapar con una barra invertida \', y para mostrar una barra invertida, puede escapar con otra barra invertida \\ (Así que sí, incluso las cadenas citadas se analizan)
  2. Comillas dobles mostrará una gran cantidad de caracteres escapados (incluidas algunas expresiones regulares), y se evaluarán las variables en las cadenas. Un punto importante aquí es que puede usar llaves para aislar el nombre de la variable que quiere evaluar. Por ejemplo, digamos que tiene la variable $type y tu qué echo "The $types are" Eso buscará la variable $types. Para evitar este uso echo "The {$type}s are" Puede colocar el corsé izquierdo antes o después del signo de dólar. Echa un vistazo a análisis de cadenas para ver cómo usar variables de matriz y tal.
  3. Heredoc la sintaxis de cadena funciona como cadenas de comillas dobles. Empieza con <<<. Después de este operador, se proporciona un identificador, luego una nueva línea. La cadena en sí sigue, y luego el mismo identificador nuevamente para cerrar la cita. No necesita escapar las comillas en esta sintaxis.
  4. Nowdoc (desde PHP 5.3.0) la sintaxis de cadena funciona esencialmente como cadenas de comillas simples. La diferencia es que ni siquiera se deben escapar las comillas simples o las barras diagonales inversas. Un nowdoc se identifica con el mismo <<< secuencia utilizada para heredocs, pero el identificador que sigue está encerrado entre comillas simples, p. <<<'EOT'. No se realiza ningún análisis sintáctico en nowdoc.

Velocidad:
No pondría demasiado peso en las comillas simples que son más rápidas que las comillas dobles. Probablemente sean más rápidos en ciertas situaciones. Aquí hay un artículo explicando una manera en que las comillas simples y dobles son esencialmente igual de rápidas desde PHP 4.3 (Useless Optimizations hacia la parte inferior, sección C) También esto página de puntos de referencia tiene una comparación de cotizaciones simple versus doble. La mayoría de las comparaciones son iguales. Hay una comparación donde las comillas dobles son más lentas que las comillas simples.


933
2017-08-10 05:28



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

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

173
2017-08-10 05:19



Único cotizado

La forma más sencilla de especificar una cadena es encerrarla en comillas simples. La comilla simple generalmente es más rápida y todo lo que se cotiza en ella se trata como una cadena simple.

Ejemplo:

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

Doble cotización

Use comillas dobles en PHP para evitar tener que usar el punto para separar el código (Nota: utilice llaves {}para incluir variables si no desea utilizar la concatenación (.) operador) en cadena.

Ejemplo:

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

¿Existe una cotización única de beneficio de rendimiento frente a una comilla doble en PHP?

Sí. Es un poco más rápido usar comillas simples.

PHP no usará procesamiento adicional para interpretar lo que está dentro de la comilla simple. cuando usa comillas dobles, PHP tiene que analizar para verificar si hay alguna variable allí.


36
2018-04-12 03:54



Una cadena de una sola cita no tiene variables dentro de ella interpretadas. Una cadena de comillas dobles sí lo hace.

Además, una cadena de comillas dobles puede contener apóstrofes sin barras diagonales inversas, mientras que una cadena de una sola cita puede contener comillas no guardadas.

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


34
2017-08-10 05:15



En PHP, ambos 'my name' y "my name" son cuerdas. Puedes leer más al respecto en el manual de PHP.

Lo que debes saber es

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

En PHP, las personas usan comillas simples para definir una cadena constante, como 'a', 'my name', 'abc xyz', al usar comillas dobles para definir una cadena que contenga identificador como "a $b $c $d".

Y otra cosa es,

echo 'my name';

es más rápido que

echo "my name";

pero

echo 'my ' . $a;

es más lento que

echo "my $a";

Esto es cierto para otros usados ​​de cuerda.


23
2017-08-10 05:23



Ejemplo de citas 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;

?>

14
2018-03-02 10:34



Ambos tipos de caracteres incluidos son cadenas. Un tipo de cita se usa convenientemente para incluir el otro tipo de cita. "'"  y '"'. La mayor diferencia entre los tipos de citas es que las referencias de identificador adjunto se sustituyen por comillas dobles internas, pero no dentro de comillas simples.


11
2017-08-10 05:15



En PHP, el texto de comillas simples se considera como valor de cadena y el texto de comillas dobles 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í, comillas dobles analiza el valor y la comilla simple se considera como valor de cadena (sin analizar la variable $ test).


11
2018-02-06 09:19



Tal vez estoy un poco tarde, y un poco fuera de tema, pero aquí está de todos modos ...

No tiene que elegir debido al contenido de su cadena entre:
alert("It's \"game\" time."); o alert('It\'s "game" time.');

En su lugar, puede escribir de esta manera y luego usar comillas dobles o simples, porque no importará:
alert("It’s “game” time."); y alert('It’s “game” time.');


0
2018-04-09 13:09



$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

0
2018-04-09 13:18