Ciągi PHP można określić nie tylko na dwa sposoby, ale na cztery sposoby.
- Ciągi z pojedynczymi cudzysłowami będą wyświetlać rzeczy prawie całkowicie „takie, jakie są”. Zmienne i większość sekwencji specjalnych nie będą interpretowane. Wyjątkiem jest to, że aby wyświetlić dosłowny pojedynczy cudzysłów, możesz uciec z ukośnikiem
\'
odwrotnym, a aby wyświetlić ukośnik odwrotny, możesz uciec z innym ukośnikiem odwrotnym\\
( więc tak, nawet ciągi pojedynczego cudzysłowu są analizowane ).
- Ciągi z podwójnym cudzysłowem wyświetlą wiele znaków ucieczki (w tym niektóre wyrażenia regularne), a zmienne w ciągach zostaną ocenione. Ważną kwestią jest to, że możesz użyć nawiasów klamrowych, aby wyizolować nazwę zmiennej, którą chcesz ocenić . Powiedzmy na przykład, że masz zmienną
$type
i chceszecho "The $types are"
. To będzie szukać zmiennej$types
. Aby obejść ten problem,echo "The {$type}s are"
możesz umieścić lewą klamrę przed lub po znaku dolara. Spójrz na parsowanie ciągów, aby zobaczyć, jak używać zmiennych tablicowych i tym podobnych.
- Składnia Heredoc działa jak ciągi podwójnie cytowane. Zaczyna się od
<<<
. Po tym operatorze podawany jest identyfikator, a następnie nowy wiersz. Następuje ciąg znaków, a następnie ten sam identyfikator, aby zamknąć ofertę. W tej składni nie trzeba wstawiać cudzysłowów.
- Składnia napisów Nowdoc (od PHP 5.3.0) działa zasadniczo jak ciągi pojedynczego cudzysłowu. Różnica polega na tym, że nawet pojedyncze cytaty i ukośniki odwrotne nie muszą być unikane. Nowdoc jest identyfikowany za pomocą tej samej
<<<
sekwencji, co heredoki, ale następujący identyfikator jest ujęty w pojedyncze cudzysłowy, np<<<'EOT'
. W nowdoc nie jest przetwarzane.
Uwagi:
Pojedyncze cudzysłowy wewnątrz pojedynczych cudzysłowów i podwójne cudzysłowy wewnątrz podwójnych cudzysłowów muszą być poprzedzone znakami ucieczki:
$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";
Szybkość:
Nie przykładałbym zbytniej wagi do tego, aby pojedyncze cytaty były szybsze niż podwójne. Prawdopodobnie są szybsze w niektórych sytuacjach. Oto artykuł wyjaśniający jeden ze sposobów, w jaki pojedyncze i podwójne cudzysłowy są zasadniczo równie szybkie od PHP 4.3 ( Useless Optimizations
w dół, sekcja C
). Również ta strona testów porównawczych pojedynczych i podwójnych cytatów. Większość porównań jest taka sama. Istnieje jedno porównanie, w którym podwójne cudzysłowy są wolniejsze niż pojedyncze cudzysłowy.
${variablename}
.\n
, wszystko inne w moimPHP
kodzie jest w pojedynczych cudzysłowach."
podwójnych cudzysłowów należy już do przeszłości. Aktualizacje zwiększyły przetwarzanie podwójnych ofert tak szybko, jak obecnie, we wszystkich przypadkach poza ekstremalnymi.Rzeczy są oceniane w podwójnych cudzysłowach, ale nie w jednym:
źródło
$mailbody = 'I want a line break:\nDone.';
utrzymuje\n
życie. Podczas gdy:$mailbody = "I want a line break:\nDone.";
parsuje podział linii.$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}!';
Sekwencje znaków w$testWithAsciiAndUtf8Characters
zostały przekształcone na ciąg z prawdziwymi literami.'
Jedno cytatNajprostszym sposobem na określenie ciągu jest umieszczenie go w pojedynczym cudzysłowie. Pojedynczy cytat jest generalnie szybszy, a wszystko w nim traktowane jako zwykły ciąg.
Przykład:
"
Podwójnie cytowanyUżywaj podwójnych cudzysłowów w PHP, aby uniknąć konieczności używania kropki do oddzielania kodu (Uwaga: Użyj nawiasów klamrowych,
{}
aby dołączyć zmienne, jeśli nie chcesz używać.
operatora konkatenacji ( )) w ciągu.Przykład:
Czy w PHP występuje korzyść w postaci pojedynczego cytatu w porównaniu z podwójnym cytatem?
Tak. Używanie pojedynczych cudzysłowów jest nieco szybsze.
PHP nie użyje dodatkowego przetwarzania do interpretacji tego, co znajduje się w pojedynczym cudzysłowie. kiedy używasz podwójnych cudzysłowów, PHP musi przeanalizować, czy w łańcuchu nie ma żadnych zmiennych.
źródło
\'
do ucieczki pojedynczy apostrof do użytku wewnątrz łańcucha (lub\\'
do wyświetlenia backslash). Zauważ, że tradycyjne sekwencje specjalne, takie jak\n
NIE zostaną przeanalizowane do znaku nowej linii.Łańcuch pojedynczego cudzysłowu nie ma interpretowanych zmiennych. Tak działa łańcuch podwójny.
Również ciąg cudzysłowu może zawierać apostrofy bez odwrotnych ukośników, podczas gdy ciąg cudzysłowu może zawierać nieoznaczone cudzysłowy.
Ciągi pojedynczych cudzysłowów są szybsze w czasie wykonywania, ponieważ nie trzeba ich analizować.
źródło
W PHP, jak
'my name'
i"my name"
są ciągiem. Możesz przeczytać więcej na ten temat w instrukcji PHP .Rzeczy, które powinieneś wiedzieć są
W PHP, ludzie używają apostrof zdefiniować ciąg stały, jak
'a'
,'my name'
,'abc xyz'
, podczas gdy za pomocą podwójny cudzysłów zdefiniować ciąg zawierać identyfikator podobny"a $b $c $d"
.A inną rzeczą jest
jest szybszy niż
ale
jest wolniejszy niż
Dotyczy to innych używanych ciągów.
źródło
Przykład pojedynczych, podwójnych, heredoc i nowdoc cytatów
źródło
W PHP tekst pojedynczego cudzysłowu jest traktowany jako wartość ciągu, a tekst podwójnego cudzysłowu analizuje zmienne, zastępując i przetwarzając ich wartość.
Tutaj podwójny cytat parsuje wartość, a pojedynczy cudzysłów jest traktowany jako wartość ciągu (bez parsowania
$test
zmiennej).źródło
Oba rodzaje zamkniętych znaków są ciągami. Jeden rodzaj cytatu jest dogodnie wykorzystywany w celu dołączenia drugiego rodzaju cytatu.
"'"
a'"'
. Największą różnicą między typami cytatów jest to, że zawarte odwołania do identyfikatorów zastępują wewnętrzne cudzysłowy, ale nie wewnątrz pojedynczych cudzysłowów.źródło
Różnica między używaniem pojedynczych cudzysłowów i podwójnych cudzysłowów w php polega na tym, że jeśli użyjemy pojedynczych cudzysłowów w instrukcji echo, to jest to traktowane jako ciąg znaków. ... ale jeśli wprowadzimy nazwę zmiennej w podwójnym cudzysłowie, wyświetli ona wartość tej zmiennej wraz z łańcuchem.
źródło
Oto niektóre możliwości pojedynczych i podwójnych cudzysłowów ze zmienną
źródło
Jedna sprawa:
Bardzo ważne jest, aby pamiętać, że wiersz z zamykającym identyfikatorem Heredoc nie może zawierać żadnych innych znaków oprócz średnika (;) . Oznacza to w szczególności, że identyfikator nie może być wcięty , a przed lub po średniku nie mogą być spacje ani tabulatory .
Przykład:
źródło
Może jestem trochę spóźniony i trochę nie na temat, ale i tak jest:
Nie musisz wybierać z powodu zawartości łańcucha między:
alert("It's \"game\" time.");
lubalert('It\'s "game" time.');
Jeśli znasz użycie angielskich znaków cudzysłowu i prawidłowego znaku dla apostrofu, możesz użyć podwójnego lub pojedynczego cudzysłowu, ponieważ nie będzie to już miało znaczenia:
alert("It’s “game” time.");
ialert('It’s “game” time.');
źródło