simples - heredoc php
¿Cuál es la diferencia entre cadenas entre comillas simples y comillas dobles en PHP? (11)
Cita única
La forma más sencilla de especificar una cadena es encerrarla entre comillas simples. La comilla simple es generalmente más rápida, y todo lo que se cita dentro 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 citado
Use comillas dobles en PHP para evitar tener que usar el 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''s apostrophe";
echo "String with a php variable {$name}";
¿Existe una comilla simple de beneficio en el rendimiento frente a la comilla doble en PHP?
Sí. Es un poco más rápido utilizar comillas simples.
PHP no utilizará el procesamiento adicional para interpretar lo que está dentro de la comilla simple. Cuando usa comillas dobles, PHP tiene que analizar para verificar si hay variables allí.
No soy un experto en programación PHP, pero estoy un poco confundido porque veo un código en PHP con una cadena colocada entre comillas simples y, a veces, entre comillas dobles.
Solo sé en .NET, o en el lenguaje C, si está entre comillas simples, eso significa que es un carácter, no una cadena.
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;
?>
Ambos tipos de caracteres encerrados son cadenas. Un tipo de cita se usa convenientemente para incluir el otro tipo de cita. "''"
y ''"''
. La mayor diferencia entre los tipos de comillas es que las referencias de identificador adjuntas se sustituyen por comillas dobles, pero no entre comillas simples.
En PHP, el texto de comillas simples se considera un valor de cadena y el texto de comillas dobles analizará las variables al reemplazar y procesar 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 analizan el valor y las comillas simples se consideran como un valor de cadena (sin analizar la variable $ test).
En PHP, tanto ''my name''
como "my name"
son cadenas. Puedes leer más sobre esto en el manual de PHP .
Cosa que debes saber son
$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''
, mientras que usan comillas dobles para definir una cadena que contiene un 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 otras cadenas usadas.
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.
Tal vez llego un poco tarde y un poco fuera de tema, pero aquí está de todos modos ...
No tienes que elegir debido al contenido de tu cadena entre:
alert("It''s /"game/" time.");
o alert(''It/'s "game" time.'');
En su lugar, puede escribir así, y luego usar comillas dobles o simples, porque no importará:
alert("It''s “game” time.");
y alert(''It''s “game” time.'');
Una cadena entre comillas simples no tiene variables dentro de ella interpretadas. Una cadena entre comillas dobles lo hace.
Además, una cadena de comillas dobles puede contener apóstrofes sin barras invertidas, mientras que una cadena de comillas simples puede contener comillas sin escaparse.
Las cadenas de comillas simples son más rápidas en tiempo de ejecución porque no necesitan ser analizadas.
Las cadenas de PHP se pueden especificar no solo de dos maneras, sino de cuatro maneras.
- Las cadenas entre comillas simples mostrarán las cosas casi completamente "tal como están". 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 diagonal inversa, y para mostrar una barra diagonal inversa, puede escapar con otra barra
//
invertida ( así que sí, incluso se analizan cadenas entre comillas simples ). - Las cadenas de comillas dobles mostrarán 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 desea evaluar . Por ejemplo, supongamos que tiene la variable
$type
y quéecho "The $types are"
que buscarán la variable$types
. Para evitar este usoecho "The {$type}s are"
Puedes poner la llave izquierda antes o después del signo de dólar. Eche un vistazo al análisis de cadenas para ver cómo usar variables de matriz y demás. - Heredoc sintaxis de cadena Heredoc funciona como cadenas entre comillas dobles. Comienza con
<<<
. Después de este operador, se proporciona un identificador, luego una nueva línea. La propia cadena sigue, y luego el mismo identificador de nuevo para cerrar la cita. No necesita escapar de las comillas en esta sintaxis. - Nowdoc sintaxis de cadenas de Nowdoc (desde PHP 5.3.0) funciona esencialmente como cadenas entre comillas simples. La diferencia es que ni siquiera las comillas simples o las barras invertidas tienen que escaparse. Un nowdoc se identifica con la misma secuencia
<<<
utilizada para heredocs, pero el identificador que sigue se incluye entre comillas simples, por ejemplo,<<<''EOT''
. No se realiza ningún análisis en nowdoc.
Velocidad:
No pondría demasiado peso en las comillas simples, siendo más rápido que las comillas dobles. Probablemente sean más rápidos en ciertas situaciones. Aquí hay un artículo que explica 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
). Además, esta página de puntos de referencia tiene una comparación de comillas simples vs 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.
Una cosa:
Es muy importante tener en cuenta que la línea con el identificador de cierre de Heredoc no debe contener otros caracteres, excepto un punto y coma (;) . Eso significa especialmente que el identificador puede no estar sangrado , y puede que no haya espacios o tabulaciones antes o después del punto y coma.
Ejemplo:
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
$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