web-dev-qa-db-fra.com

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

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

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

719
rob waminal

PHP chaînes peuvent être spécifiées non seulement de deux manières, mais de quatre façons.

  1. Les guillemets simples afficheront les choses presque complètement "telles quelles". Les variables et la plupart des séquences d'échappement ne seront pas interprétées. L'exception est que pour afficher une citation simple littérale, vous pouvez l'échapper avec une barre oblique inversée \' et pour afficher une barre oblique inversée, vous pouvez l'échapper avec une autre barre oblique inversée \\ (Donc oui, même les chaînes entre guillemets sont analysées ).
  2. Les chaînes de guillemets doubles afficheront un hôte de caractères d'échappement (y compris des expressions rationnelles), et les variables des chaînes seront évaluées. Un point important ici est que vous pouvez utiliser des accolades pour isoler le nom de la variable à évaluer. Par exemple, supposons que vous ayez la variable $type et que vous souhaitiez echo "The $types are". Cela cherchera la variable $types. Pour contourner cet usage, utilisez echo "The {$type}s are" Vous pouvez mettre l'accolade de gauche avant ou après le signe dollar. Jetez un coup d'œil à string parsing pour voir comment utiliser des variables de tableau et autres.
  3. Heredoc la syntaxe de chaîne fonctionne comme des chaînes entre guillemets. Cela commence par <<<. 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 à nouveau pour fermer la citation. Vous n'avez pas besoin d'échapper aux 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 barres obliques inverses ne doivent pas être échappés. Nowdoc est identifié avec la même séquence <<< que celle utilisée pour heredocs, mais l'identificateur qui suit est entre guillemets simples, par exemple. <<<'EOT'. Aucune analyse n'est faite dans nowdoc.

La vitesse:
Je ne mettrais pas trop de poids sur les guillemets simples étant plus rapides que les guillemets doubles. Ils sont probablement plus rapides dans certaines situations. Voici un article expliquant comment les guillemets simples et doubles sont essentiellement aussi rapides depuis PHP 4.3 (Useless Optimizations vers le bas, section C). En outre, cette page benchmarks présente une comparaison entre guillemets simples et doubles. La plupart des comparaisons sont les mêmes. Il existe une comparaison où les guillemets doubles sont plus lents que les guillemets simples.

986
Peter Ajtai

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

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

' Simple cité

Le moyen le plus simple de spécifier une chaîne consiste à la placer entre guillemets simples. Les guillemets simples sont généralement plus rapides et tout ce qui est cité à l'intérieur est traité comme une simple chaîne.

Exemple:

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

" double cité

Utilisez des guillemets doubles dans PHP pour éviter de devoir utiliser le point pour séparer le code (Remarque: utilisez des accolades {} pour inclure des variables si vous ne souhaitez pas utiliser l'opérateur de concaténation (.)) dans la chaîne.

Exemple:

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

Existe-t-il un guillemet simple et une double citation en termes de performances 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 le contenu du devis unique. lorsque vous utilisez des guillemets doubles PHP doit analyser pour vérifier s'il y a des variables dans la chaîne.

42
Janak Kanani

Une chaîne entre guillemets simples ne contient aucune variable interprétée. Une chaîne entre guillemets fait.

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

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

35
Borealid

En PHP, 'my name' et "my name" sont des chaînes. Vous pouvez en savoir plus à ce sujet dans le manuel PHP .

Ce que vous devez savoir sont

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

En PHP, les utilisateurs utilisent des guillemets simples pour définir une chaîne constante, telle que 'a', 'my name', 'abc xyz', tandis que les guillemets doubles permettent de définir une chaîne contenant un identificateur comme "a $b $c $d".

Et 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 les autres utilisateurs de chaîne.

24
Bang Dao

Exemple de citations simples, doubles, heredoc 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;

?>
16
Rabindra Nath

En PHP, le texte guillemet simple est considéré comme une valeur de chaîne et le texte guillemet double analysera 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, les guillemets doubles analysent la valeur et les guillemets simples sont considérés comme une valeur de chaîne (sans analyser la variable $ test.)

12
Maulik Bhojani

Les deux types de caractères inclus sont des chaînes. Un type de devis est utilisé commodément pour joindre l’autre type de devis. "'" et '"'. La plus grande différence entre les types de guillemets réside dans le fait que les références aux identificateurs fermés se substituent aux guillemets doubles, mais pas aux guillemets simples.

11
wallyk

Peut-être que je suis un peu en retard et un peu hors sujet, mais le voici quand même…

Vous n'êtes pas obligé de 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 simples ou doubles, car cela n’a aucune importance
alert("It’s “game” time."); et alert('It’s “game” time.');

0
Takit Isy