868 votes

Quelle est la différence entre la cité et entre guillemets chaînes de caractères en PHP?

Je ne suis pas un expert en programmation PHP, mais je suis un peu confus pourquoi je vois un peu de code en PHP avec chaîne de caractères placée entre guillemets simples et parfois dans des guillemets doubles.

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

1167voto

Peter Ajtai Points 26377

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

  1. Seul chaînes entre guillemets affiche choses presque complètement "comme est". Les Variables et la plupart des séquences d'échappement ne sera pas interprété. L'exception est que pour afficher un littéral apostrophe, vous pouvez échapper avec une barre oblique inverse \', et l'affichage d'une barre oblique inversée, vous pouvez échapper avec une autre barre oblique inverse \\ (Donc, oui, même de simples chaînes entre guillemets sont analysés).
  2. Devis Double chaînes d'afficher une multitude de caractères d'échappement (y compris certains regexes), et des variables dans les chaînes seront évalués. Un point important ici est que vous pouvez utiliser des accolades pour isoler le nom de la variable que vous souhaitez évalué. Par exemple, disons que vous avez la variable $type et de quoi echo "The $types are" Qui 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. Jetez un oeil à la chaîne de l'analyse pour voir comment utiliser la matrice de variables.
  3. Heredoc syntaxe de la chaîne fonctionne comme les chaînes entre guillemets doubles. Il commence par <<<. Après cet opérateur, un identifiant est fourni, puis un retour à la ligne. La chaîne elle-même suit, puis le même identifiant de nouveau pour fermer la citation. Vous n'avez pas besoin d'échapper les guillemets dans cette syntaxe.
  4. Nowdoc (depuis PHP 5.3.0) syntaxe de la chaîne fonctionne essentiellement comme unique chaînes entre guillemets. La différence est même pas des apostrophes ou des barres obliques inverses ont échappé. Un nowdoc est identifié avec le même <<< séquence utilisée pour heredocs, mais l'identifiant qui suit est entre guillemets simples, par exemple <<<'EOT'. Pas d'analyse syntaxique est réalisée dans nowdoc.

Vitesse:
Je ne voudrais pas mettre trop de poids sur les guillemets simples étant plus rapide que les guillemets doubles. Ils sont sans doute plus rapide dans certaines situations. Voici un article expliquant d'une manière qui les guillemets simples et doubles sont essentiellement aussi rapide depuis PHP 4.3 (Useless Optimizations vers le bas, la section C). Aussi, la présente page des benchmarks a un simple vs double citation de comparaison. La plupart des comparaisons sont les mêmes. Il y a une comparaison où les guillemets sont plus lents que les guillemets simples.

235voto

Dani Points 13077

Les choses sont évaluées avec des guillemets, mais pas en simple:

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

68voto

Janak Kanani Points 91

Seul cité

La façon la plus simple de spécifier une chaîne de caractères est de l'encadrer par des guillemets simples. L'apostrophe est généralement plus rapide, et tout le cités à l'intérieur traitée comme un simple chaîne de caractères.

Example:

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

Entre guillemets doubles

L'utilisation des guillemets en PHP pour éviter d'avoir à utiliser la période de séparer le code (Note: Utiliser des accolades {} pour y inclure des variables si vous ne souhaitez pas utiliser la concaténation (.) de l'opérateur) en chaîne de caractères.

Example:

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

Est-il un avantage de performance guillemet simple vs double devis en php?

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

  • PHP de ne pas utiliser un traitement supplémentaire pour interpréter ce qui est à l'intérieur de la apostrophe. lorsque vous utilisez des guillemets PHP doit analyser pour vérifier si il y a toutes les variables y


42voto

Borealid Points 35075

Une seule chaîne de caractères entre guillemets n'ont pas de variables à l'intérieur de son interprétation. Une chaîne de caractères entre guillemets.

Aussi, une chaîne de caractères entre guillemets peut contenir des apostrophes sans barres obliques inverses, bien qu'une seule chaîne de caractères entre guillemets peut contenir sans échappement guillemets.

La seule cité, les chaînes sont plus rapide à l'exécution, car ils n'ont pas besoin d'être analysé.

32voto

Bang Dao Points 3356

En PHP, les deux 'my name' et "my name" sont de la chaîne. Vous pouvez en lire plus à ce sujet à http://www.php.net/manual/en/book.strings.php
Chose que vous devez savoir sont
$a = 'nom';
$b = "my $a"; == 'mon nom'
$c = 'my$'; ! = 'mon nom'
En php, les gens utilisent l'apostrophe à définir une constante chaîne de caractères, comme 'a', 'my name', 'abc xyz', tout en utilisant des guillemets doubles pour définir une chaîne de caractères contiennent identifiant 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";

Cela est vrai pour l'autre de la chaîne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X