Question Quelle est la différence entre les chaînes entre guillemets simples et entre guillemets doubles en PHP?


Je ne suis pas un expert en programmation PHP, mais je suis un peu confus pourquoi je vois du code en PHP avec une chaîne placée entre guillemets simples et parfois entre guillemets.

Je sais juste dans .NET, ou le langage C, si c'est en guillemets simples, cela signifie que c'est un caractère, pas une chaîne.


664
2017-08-10 05:12


origine


Réponses:


Chaînes PHP peut être spécifié non seulement dans deux façons, mais dans quatre façons.

  1. Chaînes à guillemets simples affichera les choses presque complètement "tel quel". Les variables et la plupart des séquences d'échappement ne seront pas interprétées. L'exception est que pour afficher un guillemet simple littéral, vous pouvez y échapper avec une barre oblique inverse \'et pour afficher une barre oblique inverse, vous pouvez y échapper avec un autre antislash \\ (Donc oui, même les guillemets simples sont analysés).
  2. Chaînes de double guillemet affichera un hôte de caractères échappés (y compris quelques regex), et les variables dans les chaînes seront évaluées. Un point important ici est que vous pouvez utiliser des accolades pour isoler le nom de la variable que vous voulez évaluer. Par exemple, disons que vous avez la variable $type et vous quoi echo "The $types are" Cela va chercher la variable $types. Pour contourner cette utilisation echo "The {$type}s are" Vous pouvez mettre l'accolade gauche avant ou après le signe dollar. Jeter un coup d'œil à analyse de chaîne pour voir comment utiliser les variables de tableau et autres.
  3. Heredoc La syntaxe de chaîne fonctionne comme des chaînes entre guillemets doubles. Ça commence avec <<<. Après cet opérateur, un identifiant est fourni, puis une nouvelle ligne. La chaîne elle-même suit, puis le même identifiant pour fermer la citation. Vous n'avez pas besoin d'échapper les guillemets dans cette syntaxe.
  4. Nowdoc (depuis PHP 5.3.0) la syntaxe de chaîne fonctionne essentiellement comme des chaînes entre guillemets simples. La différence est que même les guillemets simples ou les antislashs ne doivent pas être échappés. Un nowdoc est identifié avec le même <<< séquence utilisée pour heredocs, mais l'identifiant qui suit est entouré de guillemets simples, par ex. <<<'EOT'. Aucune analyse n'est effectuée dans nowdoc.

La vitesse:
Je ne mettrais pas trop de poids sur les guillemets simples étant plus rapide que les guillemets doubles. Ils sont probablement plus rapides dans certaines situations. Voici un article expliquer une manière dont les guillemets simples et doubles sont essentiellement aussi rapides depuis PHP 4.3 (Useless Optimizations vers le bas, section C). Aussi, ceci page de benchmarks a une comparaison simple vs double devis. La plupart des comparaisons sont les mêmes. Il existe une comparaison où les guillemets doubles sont plus lents que les guillemets simples.


933
2017-08-10 05:28



Les choses sont évaluées entre guillemets mais pas en un seul:

$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



Simple cité

Le moyen le plus simple de spécifier une chaîne est de l'entourer de guillemets simples. Le guillemet simple est généralement plus rapide, et tout ce qui est cité à l'intérieur est traité en tant que guillemets simples.

Exemple:

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

Double cité

Utilisez des guillemets doubles en PHP pour éviter d'avoir à utiliser la période pour séparer le code (Note: Utiliser des accolades {}pour inclure des variables si vous ne voulez pas utiliser la concaténation (.opérateur) en chaîne.

Exemple:

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

Existe-t-il un devis de performance unique quote vs double quote en PHP?

Oui. Il est légèrement plus rapide d'utiliser des guillemets simples.

PHP n'utilisera pas de traitement supplémentaire pour interpréter ce qui est à l'intérieur de la citation unique. Lorsque vous utilisez des guillemets, PHP doit analyser pour voir s'il y a des variables.


36
2018-04-12 03:54



Une chaîne à guillemets simples ne contient pas de variables interprétées. Une chaîne entre guillemets doubles.

En outre, une chaîne entre guillemets peut contenir des apostrophes sans barres obliques inverses, tandis qu'une chaîne entre guillemets simples peut contenir des guillemets non échappés.

Les chaînes à guillemets simples sont plus rapides au moment de l'exécution car elles n'ont pas besoin d'être analysées.


34
2017-08-10 05:15



En PHP, les deux 'my name' et "my name" sont une chaîne. Vous pouvez en lire plus à ce sujet au manuel PHP.

Chose que vous devriez savoir sont

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

En PHP, les gens utilisent des guillemets simples pour définir une chaîne constante, comme 'a', 'my name', 'abc xyz', tout en utilisant une double citation pour définir une chaîne contient un identifiant "a $b $c $d".

Et une autre chose est,

echo 'my name';

est plus rapide que

echo "my name";

mais

echo 'my ' . $a;

est plus lent que

echo "my $a";

Ceci est vrai pour d'autres utilisés de chaîne.


23
2017-08-10 05:23



Exemple de guillemets simples, doubles, hérédoc et 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



Les deux types de caractères inclus sont des chaînes. Un type de citation est commodément utilisé pour joindre l'autre type de citation. "'"  et '"'. La plus grande différence entre les types de guillemets est que les références d'identificateur enfermées sont substituées aux guillemets doubles intérieurs, mais pas à l'intérieur des guillemets simples.


11
2017-08-10 05:15



En PHP, le texte de guillemets simples est considéré comme une valeur de chaîne et le texte de double guillemet analyse les variables en remplaçant et en traitant leur valeur.

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

Ici, le double guillemet analyse la valeur et le guillemet simple est considéré comme valeur de chaîne (sans analyser $ variable de test.)


11
2018-02-06 09:19



Peut-être que je suis un peu en retard, et un peu hors-sujet, mais voilà quand même ...

Vous n'avez pas à choisir en raison du contenu de votre chaîne entre:
alert("It's \"game\" time."); ou alert('It\'s "game" time.');

Au lieu de cela, vous pouvez taper comme ceci, puis utiliser des guillemets doubles ou simples, car cela n'aura aucune importance:
alert("It’s “game” time."); et 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



Une chose: 

Il est très important de noter que la ligne avec l'identifiant de fermeture de Heredoc ne doit contenir aucun autre caractère, sauf un point-virgule (;). Cela signifie surtout que l'identifiant peut ne pas être dentelé, et il peut ne pas y avoir les espaces ou onglets avant ou après le point-virgule.

Exemple:

   $str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

-1
2018-01-03 06:28