Я трохи розгублений, чому я бачу якийсь код у PHP із рядком, розміщеним в одиничних лапках, а іноді і в подвійних лапках.
Я просто знаю в .NET або мові C, якщо вона є в одній цитаті, це означає, що це символ, а не рядок.
Я трохи розгублений, чому я бачу якийсь код у PHP із рядком, розміщеним в одиничних лапках, а іноді і в подвійних лапках.
Я просто знаю в .NET або мові C, якщо вона є в одній цитаті, це означає, що це символ, а не рядок.
Відповіді:
Рядки PHP можна задавати не просто двома способами, а чотирма способами.
\'
, а для відображення зворотної косою рисою можна уникнути її з іншою косою косою рисою\\
( Так, так, навіть окремі рядки, що цитуються, розбираються ).$type
і ви хочетеecho "The $types are"
. Це буде шукати змінну$types
. Щоб обійти це використанняecho "The {$type}s are"
Ви можете поставити ліву дужку до або після знака долара. Погляньте на розбір рядків, щоб побачити, як використовувати змінні масиву тощо.<<<
. Після цього оператора надається ідентифікатор, потім новий рядок. Слідує сам рядок, а потім той самий ідентифікатор знову, щоб закрити пропозицію. Вам не потрібно уникати лапок у цьому синтаксисі.<<<
послідовністю, що використовується для гередоків, але наступний ідентифікатор вкладається в одинарні лапки, наприклад<<<'EOT'
. Ніякий аналіз не робиться в nowdoc.Примітки: Одиночні цитати в межах одиничних і подвійних лапок всередині подвійних лапок необхідно уникати:
$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";
Швидкість:
Я б не надавав занадто великої ваги, коли одиничні лапки швидше, ніж подвійні. Вони, ймовірно, швидші в певних ситуаціях. Ось стаття, що пояснює один із способів, коли одиночні та подвійні лапки по суті є однаково швидкими, оскільки PHP 4.3 ( Useless Optimizations
внизу, розділ C
). Крім того, ця сторінка орієнтирів має порівняльне порівняння з подвійним котируванням. Більшість порівнянь однакові. Є одне порівняння, коли подвійні лапки повільніші, ніж одиничні.
\n
, все інше в моєму PHP
коді є в одиничних лапках.
"
подвійних лапок - це все, але не минуле. Оновлення збільшили обробку подвійних лапок, щоб вони були настільки ж швидкими у всіх, крім крайніх випадків, в ці дні.
Речі оцінюються в подвійних лапках, але не в одній:
$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.';
це підтримувати \n
життя. При цьому: $mailbody = "I want a line break:\nDone.";
розберемо розрив рядка.
$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}!';
послідовності символів у $testWithAsciiAndUtf8Characters
перетворені на рядок із справжніми літерами.
'
Цитується одноміснийНайпростіший спосіб вказати рядок - це укласти його в окремі лапки. Одиночна цитата, як правило, швидша, і все, що цитується всередині, трактується як звичайний рядок.
Приклад:
echo 'Start with a simple string';
echo 'String\'s apostrophe';
echo 'String with a php variable'.$name;
"
Подвійне цитуванняВикористовуйте подвійні лапки в PHP, щоб уникнути необхідності використання періоду для розділення коду (Примітка. Використовуйте фігурні дужки {}
для включення змінних, якщо ви не хочете використовувати .
оператор конкатенації ( )).
Приклад:
echo "Start with a simple string";
echo "String's apostrophe";
echo "String with a php variable {$name}";
Так. Трохи швидше використовувати одинарні лапки.
PHP не використовуватиме додаткову обробку для інтерпретації того, що знаходиться в одній цитаті. при використанні подвійних лапок PHP повинен проаналізувати, щоб перевірити, чи є в рядку якісь змінні.
\'
щоб уникнути одного апострофа для використання в рядку (або \\'
для відображення зворотної косої межі). Зауважте, що традиційні послідовності евакуації, такі як \n
НЕ буде розбиратися на символ нового рядка. Документи PHP на струнах
Рядок з одним котируванням не має інтерпретованих змінних. Рядок з подвійним цитуванням робить.
Також рядок з подвійним котируванням може містити апострофи без зворотних косих рядків, тоді як рядок з одним котируванням може містити незмінені лапки.
Рядки з одним цитуванням швидші під час виконання, оскільки їх не потрібно розбирати.
У PHP обидва 'my name'
і "my name"
є рядковими. Детальніше про це ви можете прочитати в керівництві PHP .
Те, що ви повинні знати, є
$a = 'name';
$b = "my $a"; == 'my name'
$c = 'my $a'; != 'my name'
У PHP, люди використовують одинарні лапки , щоб визначити постійну рядок, як 'a'
, 'my name'
, 'abc xyz'
, при цьому використовуючи подвійні лапки , щоб визначити рядок містить ідентифікатор , як "a $b $c $d"
.
І інша річ,
echo 'my name';
швидше, ніж
echo "my name";
але
echo 'my ' . $a;
повільніше, ніж
echo "my $a";
Це справедливо для інших використовуваних рядків.
<?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 текст одного цитата вважається значенням рядка, а текст подвійної цитати буде аналізувати змінні, замінюючи та обробляючи їх значення.
$test = "variable";
echo "Hello Mr $test"; // the output would be: Hello Mr variable
echo 'Hello Mr $test'; // the output would be: Hello Mr $test
Тут подвійний розбір цитата розбирає значення, а одинарна цитата вважається значенням рядка (без аналізу $test
змінної.)
Ось деякі можливості одинарних та подвійних лапок зі змінною
$world = "world";
"Hello '.$world.' ";
'hello ".$world."';
Одна річ:
Дуже важливо зазначити, що рядок із закриваючим ідентифікатором Heredoc не повинен містити інших символів, крім крапки з комою (;) . Це особливо означає, що ідентифікатор може бути не відступним , і не може бути пробілів чи вкладок до або після крапки з комою.
Приклад:
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
Можливо, я трохи запізнююся, і трохи поза темою, але ось це все одно:
Не обов’язково вибирати через вміст рядка між:
alert("It's \"game\" time.");
абоalert('It\'s "game" time.');
Якщо ви знайомі з використанням англійських лапок і правильним символом апострофа, ви можете використовувати або подвійні, або одинарні лапки, тому що це вже не матиме значення:
alert("It’s “game” time.");
іalert('It’s “game” time.');
${variablename}
.