Koja je razlika između pojedinačnih navodnika i dvostrukih navodnika u PHP-u?

Nisam PHP programer, ali malo sam zbunjen zašto vidim PHP kod s nizom stavljenim u jednostruke navodnike, a ponekad u dvostruke navodnike.

Jednostavno znam u .NET ili C, ako je u jednom citatu, to znači da je to znak, a ne niz.

708
10 авг. set by rob waminal 10 aug. 2010-08-10 08:12 '10 u 8:12 2010-08-10 08:12
@ 12 odgovora

PHP nizovi mogu se specificirati ne samo na dva načina, nego na četiri načina.

  • Pojedinačni navodnici bit će prikazani gotovo u potpunosti "kao što je". Varijable i većina sekvenci kontrole neće se tumačiti. Iznimka je da bi se prikazao abecedni citat koji ga možete izbjeći s kosom crtom, a da biste prikazali obrnutu crtu, možete je izbjeći s drugom obrnutom kosom crtom. ).
  • Nizovi s dvostrukim citatima prikazuju skup escapes (uključujući neke regularne izraze), a varijable u nizovima bit će vrednovane. Važna točka ovdje je da možete koristiti kovrčave zagrade da izolirate ime varijable koju želite ocijeniti . Na primjer, pretpostavimo da imate $type varijablu i da ste echo "The $types are" koji će tražiti varijablu $types . Da biste zaobišli ovo pomoću echo "The {$type}s are" možete postaviti lijevu sliku prije ili poslije znaka dolara. Pogledajte nizove za analizu kako biste naučili kako koristiti varijable niza, itd.
  • Heredoc sintaksa nizova djeluje kao dvostruki navodnici. Počinje s <<< . Nakon toga operatoru je dodijeljen identifikator, a zatim novi string. Zatim slijedi niz, a zatim isti identifikator koji zatvara citat. U ovoj sintaksi ne morate sakriti navodnike.
  • Nowdoc (od PHP 5.3.0) sintaksa nizova u biti funkcionira kao pojedinačni navodnici. Razlika je u tome što se moraju izbjegavati čak i pojedinačni navodnici ili obrnute crte. Nowdoc se identificira s istom <<< sekvencom koja se koristi za heredocs, ali sljedeći identifikator je zatvoren u jednostruke navodnike, na primjer. <<<'EOT' . Nowdoc ne raščlanjuje.

brzina:
Ne bih dao preveliku težinu pojedinačnim navodnicima brže od dvostrukih navodnika. Vjerojatno su brži u određenim situacijama. Ovdje članak objašnjava jedan način na koji su jednostruki i dvostruki navodnici u suštini isti brz s PHP 4.3 ( Useless Optimizations na dnu, odjeljak C ). Osim toga, ova testna stranica ima jednokratnu usporedbu dvostrukih navodnika. Većina usporedbi je ista. Postoji jedna usporedba u kojoj su dvostruki navodnici sporiji od pojedinačnih navodnika.

975
10 авг. odgovor dao Peter Ajtai 10 aug. 2010-08-10 08:28 '10 u 8:28 2010-08-10 08:28

Stvari se procjenjuju u dvostrukim navodnicima, ali ne u jednom:

border=0
 $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. 
185
10 авг. odgovor je dan Dani 10 aug. 2010-08-10 08:19 '10 u 8:19 2010-08-10 08:19

' Pojedinačni navodnici

Najjednostavniji način da navedete niz je da ga stavite u pojedinačne navodnike. Jedan citat je obično brži, a sve što se nalazi u navodnicima tretira se kao jednostavan niz.

primjer:

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

" Dvostruki navodnici

Koristite dvostruke navodnike u PHP-u kako biste izbjegli potrebu za korištenjem točke za odvajanje koda (Napomena: koristite kovrčave zagrade {} da uključite varijable ako ne želite koristiti operator ulančavanja ( . )) U nizu.

primjer:

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

Ima li PHP izravnu ponudu za izvedbu u odnosu na dvostruku?

Da. Malo je brže koristiti jednostruke navodnike.

PHP neće koristiti dodatnu obradu za interpretaciju onoga što se nalazi unutar jednog citata. Kada koristite dvostruke navodnike, PHP mora analizirati kako bi provjerio postoje li u nizu varijable.

40
12 апр. Odgovor daje Janak Kanani 12. travnja. 2014-04-12 06:54 '14 u 6:54 2014-04-12 06:54

Niz s jednim citatom ne sadrži varijable u njemu. Niz s dvostrukim navodnicima.

Osim toga, niz s dva navodnika može sadržavati apostrofe bez obrnute kose crte, dok niz s jednim skeniranjem može sadržavati ne-ekskluzivne navodnike.

Nizovi s jednim citatom brži su u vrijeme izvođenja, jer ih ne treba analizirati.

35
10 авг. Odgovor je dat Borealid 10 aug. 2010-08-10 08:15 '10 u 8:15 am 2010-08-10 08:15

U PHP-u i 'my name' i "my name" su nizovi. O tome možete pročitati u priručniku za PHP .

Ono što trebate znati

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

U PHP-u, ljudi koriste jedan citat za definiranje konstantnog niza, na primjer, 'a' , 'my name' , 'abc xyz' , kada se koristi dvostruki citat za definiranje niza koji sadrži identifikator tipa "a $b $c $d" .

Drugim riječima,

 echo 'my name'; 

brže nego

 echo "my name"; 

ali

 echo 'my ' . $a; 

sporije nego

 echo "my $a"; 

To vrijedi za druge koji se koriste u nizu.

23
10 авг. Odgovor dao Dao Bang 10. kolovoza 2010-08-10 08:23 '10 u 8:23 am 2010-08-10 08:23

Primjer jednostrukih, dvostrukih, heredoc i nowdoc citata

 <?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
02 марта '17 в 13:34 2017-03-02 13:34 odgovor daje Rabindra Nath 2. ožujka 2006. u 13:34 2017-03-02 13:34

Oba tipa zatvorenih znakova su nizovi. Jedna vrsta ponude pogodna je za uključivanje različite vrste ponude. "'" i '"' . Najveća razlika između vrsta navodnika je da se ugnežđene reference identifikatora zamjenjuju unutar dvostrukih navodnika, ali ne unutar pojedinačnih navodnika.

11
10 авг. odgovor je dat wallyk 10 aug. 2010-08-10 08:15 '10 u 8:15 am 2010-08-10 08:15

U PHP-u, jedan citatni tekst tretira se kao vrijednost niza, a dvostruki navodnik teksta analizira varijable, zamjenjuje i obrađuje njihovu vrijednost.

 $test = "variable"; echo "Hello Mr $test"; // the output would be: Hello Mr variable echo 'Hello Mr $test'; // the output would be: Hello Mr $test 

Ovdje se dvostruki navodnici za parsiranje i pojedinačne navodnike tretiraju kao vrijednost niza (bez raščlanjivanja varijable $ test.)

11
06 февр. Odgovor daje Maulik Bhojani 06. veljače. 2014-02-06 12:19 '14 u 12:19 2014-02-06 12:19

Možda sam malo zakasnio i malo off topic, ali ovdje je sve isto ...

Zbog sadržaja retka ne morate odabrati:
alert("It \"game\" time."); ili alert('It\ "game" time.');

Umjesto toga, možete ga upisati, a zatim upotrijebiti dvostruke ili pojedinačne navodnike jer to nije važno:
alert("Its "game" time."); i alert('Its "game" time.');

0
09 апр. odgovor je dao Takit Isy 09 apr. 2018-04-09 16:09 '18 u 16:09 sati 2018-04-09 16:09

Jedna stvar:

Vrlo je važno napomenuti da niz s identifikatorom zatvaranja Heredoc ne smije sadržavati druge znakove osim točka-zarez (;) . To znači da identifikator možda nije uvučen , a prije ili poslije točke-zareza ne može biti razmaka ili kartica .

primjer:

  $str = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD; 
-1
03 янв. odgovor je dan srmilon 03 jan. 2017-01-03 09:28 '17 u 9:28 2017-01-03 09:28
 $name = 'test'; $singleQuote = 'This is example for single quote $name'; // here $name variable not evaluating echo $singleQuote; // Output: This is example for single quote $name $singleQuote = "This is example for single quote $name"; // here $name variable will evaluate and replace variable value echo $singleQuote; // Output: This is example for single quote test Also inside single quote expression evaluate faster campare to double quotes 
-1
09 апр. Odgovor dao Mahadeva Prasad 9. travnja 2018-04-09 16:18 '18 u 16:18 2018-04-09 16:18

Ako koristimo dvostruke navodnike u izrazu odjeka, provjerit ćemo i varijable i niz.

Ako u izrazu odjeka koristimo jednostruke navodnike, on će sve podatke tretirati samo kao niz.

za više informacija pogledajte http://phptutorial.co.in/php-echo-print/ p>

-3
31 янв. odgovor dao user3255636 31. sij 2014-01-31 04:36 '14 u 4:36 2014-01-31 04:36

Ostala pitanja o ili Ask a question