Yanıtlar:
PHP dizeleri sadece iki şekilde değil, dört şekilde belirtilebilir.
\'
görüntülemek için, bir ters eğik çizgi ile kaçabileceğiniz ve bir ters eğik çizgi görüntülemek için başka bir ters eğik çizgi ile kaçabilmenizdir\\
( Evet, tek tırnaklı dizeler ayrıştırılır ).$type
ve bunu istiyorsunuzecho "The $types are"
. Bu değişkeni arayacaktır$types
. Bu kullanımdan kurtulmakecho "The {$type}s are"
için Dolar işaretini doların önüne veya arkasına koyabilirsiniz. Dizi değişkenlerini ve benzerlerini nasıl kullanacağınızı görmekiçin dize ayrıştırmaya bakın.<<<
. Bu operatörden sonra bir tanımlayıcı, ardından bir satırsonu sağlanır. Dizenin kendisi ve daha sonra aynı tanımlayıcıyı kapatmak için aynı tanımlayıcıyı izler. Bu sözdiziminde alıntılardan kaçmanıza gerek yoktur.<<<
kullanılanlaaynısekansla tanımlanır, ancak aşağıdaki tanımlayıcı tek tırnak içine alınır, örn<<<'EOT'
. Nowdoc'da ayrıştırma yapılmaz.Notlar: Tek tırnak içine tek tırnak ve çift tırnak içine çift tırnak:
$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";
Hız:
Tek tırnaklara çift tırnaklardan daha hızlı olma konusunda çok fazla ağırlık koymam. Muhtemelen belirli durumlarda daha hızlıdırlar. İşte PHP 4.3'ten beri ( Useless Optimizations
en alta, bölüme C
) tek ve çift tırnakların eşit derecede hızlı olduğu bir yöntemi açıklayan bir makale . Ayrıca, bu kıyaslamalar sayfasında tek bir çift teklif karşılaştırması var. Karşılaştırmaların çoğu aynıdır. Çift tırnakların tek tırnaklardan daha yavaş olduğu bir karşılaştırma vardır.
\n
başka bir şey PHP
tek tırnak içinde , ben sadece çift tırnak kullanın .
"
çift tırnak yavaşlığı geçmişte kaldı. Güncellemeler, çift tırnakların işlenmesini bu gün aşırı durumlar hariç tüm hızlarda olduğu kadar artırdı.
İşler tek tırnak içinde değil, çift tırnak içinde değerlendirilir:
$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.
$mailbody = 'I want a line break:\nDone.';
tutuyor \n
. Halbuki: $mailbody = "I want a line break:\nDone.";
satır sonunu ayrıştıracaktır.
$testWithAsciiAndUtf8Characters = "\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!";
$simpleTest = '\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!';
karakter dizileri $testWithAsciiAndUtf8Characters
gerçek harflerle dizeye dönüştürüldü.
'
Tek alıntıBir dizeyi belirtmenin en basit yolu, onu tek tırnak içine almaktır. Tek tırnak genellikle daha hızlıdır ve içinde alıntılanan her şey düz dize olarak ele alınır.
Misal:
echo 'Start with a simple string';
echo 'String\'s apostrophe';
echo 'String with a php variable'.$name;
"
Çift tırnakKodu ayırmak için nokta kullanmak zorunda kalmamak için PHP'de çift tırnak kullanın (Not: string'de {}
concatenation ( .
) operatörü kullanmak istemiyorsanız değişkenleri dahil etmek için süslü parantez kullanın ).
Misal:
echo "Start with a simple string";
echo "String's apostrophe";
echo "String with a php variable {$name}";
Evet. Tek tırnak kullanmak biraz daha hızlı.
PHP tek tırnak içinde ne olduğunu yorumlamak için ek işlem kullanmayacaktır. çift tırnak kullandığınızda PHP dizede herhangi bir değişken olup olmadığını kontrol etmek için ayrıştırmak zorundadır.
\'
dize içinde kullanılmak üzere tek bir kesme işareti kaçmak için (veya \\'
ters eğik çizgi görüntülemek için). Geleneksel kaçış dizilerinin, \n
yeni satır karakterine ayrıştırılmayacağını unutmayın. Dizelerde PHP belgeleri
Tek tırnaklı bir dize, içinde yorumlanmış değişkenlere sahip değildir. Çift tırnaklı bir dize yapar.
Ayrıca, çift tırnaklı bir dize ters eğik çizgi içermeyen kesme işaretleri içerebilirken, tek tırnaklı bir dize çıkışsız tırnak işaretleri içerebilir.
Tek tırnaklı dizeler ayrıştırılmaları gerekmediği için çalışma zamanında daha hızlıdır.
PHP, her iki 'my name'
ve "my name"
dize vardır. Bununla ilgili daha fazla bilgiyi PHP el kitabında bulabilirsiniz .
Bilmeniz gereken şey
$a = 'name';
$b = "my $a"; == 'my name'
$c = 'my $a'; != 'my name'
PHP, insanlar sürekli bir dize tanımlamak için tek tırnak kullanmak gibi 'a'
, 'my name'
, 'abc xyz'
bir dizeyi tanımlamak için çift tırnak kullanırken, gibi tanıtıcı içerir "a $b $c $d"
.
Ve başka bir şey,
echo 'my name';
daha hızlı
echo "my name";
fakat
echo 'my ' . $a;
daha yavaş
echo "my $a";
Bu, kullanılan diğer dize için geçerlidir.
<?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;
?>
PHP'de tek tırnaklı metin, dize değeri olarak kabul edilir ve çift tırnaklı metin, değerlerini değiştirip işleyerek değişkenleri ayrıştırır.
$test = "variable";
echo "Hello Mr $test"; // the output would be: Hello Mr variable
echo 'Hello Mr $test'; // the output would be: Hello Mr $test
Burada, çift tırnak değeri ayrıştırır ve tek tırnak dize değeri olarak kabul edilir ( $test
değişkeni ayrıştırmadan ).
Burada değişken ile tek ve çift tırnak bazı olasılıklar
$world = "world";
"Hello '.$world.' ";
'hello ".$world."';
Bir şey:
Heredoc'un kapanış tanımlayıcısına sahip satırın noktalı virgül (;) dışında başka karakter içermemesi gerektiğine dikkat etmek çok önemlidir . Bu, özellikle tanımlayıcının girintili olmayabileceği ve noktalı virgülden önce veya sonra boşluk veya sekme bulunmayabileceği anlamına gelir .
Misal:
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
Belki biraz geç kaldım ve biraz konu dışıyım, ama işte yine de:
Dizenizin içeriği arasında aşağıdakileri seçmeniz gerekmez:
alert("It's \"game\" time.");
veyaalert('It\'s "game" time.');
İngilizce tırnak işaretlerinin kullanımına ve kesme işareti için doğru karaktere aşina iseniz, çift veya tek tırnak kullanabilirsiniz, çünkü artık önemli olmayacaktır:
alert("It’s “game” time.");
vealert('It’s “game” time.');
${variablename}
.