A két és egy idézőjelek közötti különbség a PHP-ben. PHP idézetek, idézi az egyedülálló, kettős, árnyékolást, mi változók az egyetlen PHP idézetekben

A PHP-ben lévő sorokat egyetlen vagy kettős idézőjel határozza meg. A fő különbség az, hogy kettős idézetekben helyettesíthető egy változóval:

Most egy másik megoldást találunk a php-ben lévő lecke változók feladata:

$ cím"; Visszhang"

$ Tartalom
"; ?>

Hogyan találja meg a PHP egy változót a karakterláncban?

Minden egyszerű. Ne feledje, milyen karaktereket lehet használni a változó nevében? Ezek számok, betűk és hangsúlyozva _.

Itt van PHP és elfogadja a nevet, hogy minden a $ szimbólum és az első tiltott szimbólum között van.

A következő PHP-kódban helytelenül határozza meg a változó nevét, és hibát ad:

A böngésző eredménye:

FIGYELMEZTETÉS: MEGHATÁROZOTT VÁLLALKOZÓ: PROVURB IN D: \\ OPENSERVER \\ DOMAINS \\ SITE \\ INDEX.PHP a 3. sorban

Ahhoz, hogy a PHP helyesen meghatározta a karakterlánc változó nevét, akkor a göndör zárójelbe kell helyezni ():

A böngésző eredménye:

1499rub

Nincs egyértelmű vélemény, milyen idézeteket kell használni a rendes vonalakhoz, amelyekben semmit sem kell helyettesíteni. Azonban sok programozó inkább egyedülálló idézeteket használ.

Az a tény az, hogy a kettős idézetek sok okból a szövetségnek "erre a vonalra kell helyettesíteniük valamit." Ezért azt javasoljuk egyetlen idézetek a rendes szöveget, és a kettős - csak akkor, ha szükség van, hogy helyettesítse a változó a szövegben. Példa:

Áttekintő idézetek

Ha idézőjeleket kell tennie a karakterláncba, akkor 2 módja van:

A második példában a fordított réteg megsemmisíti az idézeteket a következő után, hogy a PHP egy karakterláncként érzékelje.

Mit gondolsz, mit kell tennie, hogy csak a fordított slash-t jelenítse meg? Végtére is, meg fogja vetni egy záró idézetet. Ez vicces, de meg kell írnod \u200b\u200begy második slash-t az első árnyékolására:

A sztring táblázata és átadása kettős idézetekben

A kettős idézetekben lévő fordított réteg lehetővé teszi, hogy ne csak idézeteket és magukat, hanem más karaktert is megvédje. A legnépszerűbb közülük egy fül (hosszú teret kap, ha megnyomja Tab) és az átutalás a húr. Úgy néznek ki, mint ez:

Írjon egy szkriptet, hogy:
1. $ típusú változót hoz létre egy játékértékkel.
2. A "World of Warcraft" értéket (idézőjelekkel) változó $ nevet hoz létre.
3. Megjeleníti mindkét változót a címkén belül

. A változók között helynek kell lennie.

Nem vagyok szakértő a PHP programozásban, de egy kicsit zavaros vagyok, hogy miért látok egy kódot PHP-ben egy idézőjelben elhelyezett karakterláncban, néha kettős idézőjelben.

Csak ismerem az állatorvos vagy a C nyelvet, ha egy idézetben van, ez azt jelenti, hogy ez egy szimbólum, nem egy karakterlánc.

11 válasz

amit tudnod kell

$ A \u003d "NAME"; $ B \u003d "My $ A"; \u003d\u003d "Saját név" $ C \u003d "My $ A"; ! \u003d "A nevem"

a PHP, az emberek egyetlen idézetek meghatározó állandó karaktersorozat, például az „a”, „My name”, „ABC XYZ”, dupla idézőjeleket, hogy meghatározza a vonal, mely tartalmaz egy azonosítót, például: „A $ B $ C $ d ".

Echo "nevem";

gyorsabb, mint

Echo "nevem";

Echo "az én". $ a;

lassabban mint

Echo "én $ a";

ez igaz az egyéb sorokhoz.

példa egy, kettős, heredoc és noowdoc idézetekre

mindkét típusú beágyazott karakter sorok. Az egyik típusú idézeteket kényelmesen alkalmazzák egy másik típusú idézet megkötésére. "" "és" ". Az idézetek típusai közötti legnagyobb különbség az, hogy a beágyazott azonosítókra való hivatkozásokat kettős idézőjelekbe helyezzük, de nem egyetlen idézetben.

a PHP-ben ugyanazokat az idézeteket sztring értéknek tekintik, és a kettős idéző \u200b\u200bszöveg elemzi a változókat, cserélve és feldolgozásukat.

$ teszt \u003d "változó"; Echo "hello mr $ teszt"; // A kimenet: Hello Mr változó visszhang "Hello Mr $ teszt"; // A kimenet: Hello MR $ teszt

itt a kettős idézet elemzi az értéket, és az egyes idézet sztring értéknek tekinthető (anélkül, hogy egy $ tesztváltozót elemezne.)

talán egy kicsit későn vagyok, és egy kis téma, de még mindig ...

nem kell választania a sor tartalma miatt:
Riasztás ("ez" játék \\ "játék \\" Idő "); vagy riasztás (" IT \\ "játék" Idő ".);

ehelyett beírhatod, majd használd a kettős vagy egyetlen idézetet, mert nem számít:
Riasztás ("ez" játék "Idő"); és riasztás ("ez" játék "idő");

$ NAME \u003d "TEST"; $ Singlequote \u003d "Ez például az egyetlen idézet $ nevére"; // itt $ névváltozó, amely nem értékeli az ECHO $ \u200b\u200bSINGREQUOTE-t; // kimenet: Ez az egyetlen idézet Példa $ SingleQuote \u003d "Ez példa az egyetlen idézetre $ névre"; // itt $ névváltozó értékeli és cseréli változó értékű echo $ singlequote értéket; // kimenet: Ez példa az egyetlen idézet tesztre is, amely az egyetlen idézeten belül az Everuat Overuat gyorsabb kazetta dupla idézetekkel

egy:

nagyon fontos megjegyezni, hogy a karakterlánc a záró azonosítóval segítsen itt. tartalmaznia kell más karaktert, kivéve pontosvessző (;). Ez azt jelenti, hogy az azonosító nem lehet visszavonulásés nem lehet helyiségek vagy lapok a vessző előtt vagy után.

példa:

$ Str \u003d.<<

Milyen idézetek használhatók a húrok tervezéséhez - apostrófok vagy klasszikus kettős idézetek?

Elemezzük meg a különbséget a két és egy idézőjelek között a PHP-ben, és példákon, megtudjuk, mikor kell használni.

A változók és árnyékolási szekvenciák az egyes idézetekben bekapcsolt vonalakban tapasztalt speciális karakterekhez nem kerülnek feldolgozásra. Az apostrófák által keretezett vonalakat a PHP-tolmács sokkal gyorsabban dolgozza fel, mint a kettős idézőjel körülvevő hasonló vonalak.

Az oka az oka egyszerű: a kettős idézetben lévő vonalak tolmács PHP továbbá ellenőrzi a változókat, és ha ezek megfelelnek, akkor a karakterlánc változó neve helyett az értéket illessze be. De az apostrófából kötött karakterláncot a tolmács a szokásos szövegként érzékeli, és ezeknek a PHP-vonalakban nem végzett transzformációk nem folytatódnak. Úgy gondolom, hogy nyilvánvaló, hogy a vonalak feldolgozása egyetlen idézetben minden esetben gyorsabban fordul elő.

Kezdjük, leírjuk, hogyan kell meghatározni a karakterláncot, majd ellenőrizze, hogy a sorok gyorsabban fordulnak elő az egyes idézetek soraiban.

A karakterlánc meghatározásának legegyszerűbb módja az, hogy egy idézőjelekre (") lezárja. Annak érdekében, hogy egyetlen idézőjelben lévő karakterláncon belüli idézeteket alkalmazzuk, a hátrameneti deficent (\\) szimbólum előtt kell lennie, amely árnyékolt. Ha a hátrameneti mosogatónak egyetlen idézet előtt kell mennie, vagy a vonal végén kell lennie, akkor meg kell ismételnie. Ha megpróbálsz védeni a többi karaktert, akkor a fordított süllyedő funkció is kinyomtatható.

Példát adunk az egyes idézetek használatára:
// eltávolítás: egyszerű karakterlánc
echo "egyszerű sor";
// eltávolítja: Itt vagyok
echo "i \\" Itt ";
// Will Out: Nem fog beilleszteni: \\ n Új karakterlánc
echo "Nem fog beilleszteni: \\ n új stringet";
// Will Out: A $ minta változó nem helyettesíti
echo "$ Példa változó nem helyettesíti"; Ha a karakterlánc kettős idézőjelben van ("), a PHP felismeri a speciális karaktereknél nagyobb kontroll szekvenciákat, és helyettesíti a helyettesítő nevét az érték karakterláncában. Ugyanúgy, mint az egyetlen idézetekkel, hogy kettős idézeteket használjon egy karakterlánc belsejében befejeződött. A kettős idézetben előre kell haladnia a fordított fonat szimbólumát (\\).

Adunk példát a kettős idézetek használatára:
// eltávolítás: egyszerű karakterlánc
echo "egyszerű sor";
// Will Out: "Hóvirág" "
echo "cég \\" hófúvás \\ "";
// Will Out: Ez egy új karakterláncra lesz fordítva
echo "Ez az új vonalra fogja fordítani \\ n";
// Will Out: A változó helyettesíti
$ PÉMLET \u003d "LETERTUT";
echo "Változó $ Példa"; Emlékeztetni kell arra is, hogy a "\\ n" (új vonal), "r" (visszatérő kocsi) szekvencia, és nem a HTML. Tehát a böngészőben nem fog változtatni (csak az oldal forráslapján).

Tudjuk meg, milyen gyorsabb, mint egy kettős idézőjelek. A mérésekhez írjon egy rövid teszt parancsfájlt, és azonnal vegye figyelembe, hogy ha megvizsgálja, akkor a számítógép vagy szerver hardverétől függő eredmények eltérőek lesznek.
// Visszaadja az időbélyegzőt a ciklus elején
$ Start \u003d mikrotime (igaz);
// Hozzon létre egy ciklusciklust 1 millió iterációra
mert ($ i \u003d 0; $ i< 1000000; $i++) {
$ Text \u003d "Itt van egy szimbólumszöveg";
}
// kiszámítja az eltöltött időt
$ TIME \u003d (Microtime (True) - $ Start); Eredmény: 0,09 másodperc.

Ha kettős idézeteket cserélünk a kettős:
$ Text \u003d "Itt van egy szimbólumszöveg"; Az eredmény 0,10 másodperc.

Ahogy látjuk, ha szöveges vonalakat használunk, a végrehajtás időbeli különbsége nagyon kicsi, akkor is elmondható, és egyáltalán nem létezik. A legérdekesebb lesz, amikor megpróbáljuk kombinálni a karakterláncot és a változót.
$ Text \u003d "Itt van az $ i szimbólumvonal; vagy
$ text \u003d $ i. "Itt van egy szimbolikus karakterlánc"; Az eredmény körülbelül: 0,27 másodperc.

A különbség nagyon érzékeny. A Concatenation és a kettős idézetek egyértelműen befolyásolják a sebességet, ha a karakterláncok hozzáadódnak a karakterlánchoz.

Amikor a kiszolgáló feldolgozza a kódot, ellenőrzi a kettős idézetek tartalmát a változók, állandók és egyéb. Időbe telik. És az a tény, hogy az egyetlen idézőjelek között van a kiszolgáló folyamata, mint a kész szöveg, és nem érdekli, mi található ott. Az egyszeri és kettős idézetek sebessége közötti különbség nagyon jelentéktelen, de ha erősen betöltött projektet fejleszt, kissé mentett milliszekundum már győzelem.

A karakterláncok szövegszúrások (rövid sor). A karakterlánc nulla vagy több karakter szekvenciája. A szimbólumok közé tartoznak a betűk, számok, írásjelek, speciális karakterek és terek.

A karakterlánc négy különböző módon határozható meg:

  • kettős idézetek
  • egyedülálló idézetek
  • heredoc-szintaxis
  • nowDoc Syntax

Sorban kettős idézetekben

Vonal kettős idézőjelben:

A vezérlő szekvenciák a kettős idézetben használhatók. Vezérlőszekvencia - Ezek speciális karakterek, amelyeket a szöveges kimenet formázására terveztek. A következő vezérlési szekvenciák állnak rendelkezésre a PHP-ben:

A kettős idézőjelben lévő vonalak fő tulajdonsága a sorokban lévő változók feldolgozásának képessége.


Dollár jel: \\ $ ";

A kettős idézőjelben kötött sorok egyetlen idézeteket tartalmazhatnak:

Echo "egyedülálló idézetek:" ";

Sort egyetlen idézetben (aposztróf)

Sztring egyetlen idézetben:

$ str \u003d "string"; Echo "Az egyik nagy vonal több kis vonalra bontható, hogy kényelmesebb legyen olvasni.";

A kettős idézetek és a heredoc szintaxis, a változók és a kontroll szekvenciák (egy kivétel), az egyes idézetekbe zárva vannak. Ez azt jelenti, hogy hagyományos karakterláncokként fogják értelmezni:

$ szám \u003d 10; Echo "szám: $ Num
Dollár jel: \\ $ ";

Az egy idézőjelben bekapcsolt vonalhoz egy idézőjeleket használhat, meg kell árnyékolni egy fordított slash használatával (\\ "). Ha meg kell írnia a fordított ferde vonalat, meg kell ismételnie (\\\\):

Echo "belsejében használják \\" egyetlen \\ "idézeteket"; Echo "fordított slash: \\\\";

Az egyes idézetekben kötött sorok kettős idézeteket tartalmazhatnak:

Echo "kettős idézetek:" ";

Heredoc-szintaxis

A Syntax egy alternatív módja a sorok rögzítésére.

A heredoc szintaxis működésével meghatározott karakterlánc, valamint a kettős idézőjelben található karakterlánc. A különbség heredoc és egy sor idézőjelek hogy heredoc nincs szükség, hogy megvédje idézőjelek között.

Heredoc-Syntax három karakterrel kezdődik<<< , после которых должен быть указан произвольный идентификатор (назовём его открывающим). Идентификатор может быть указан как в двойных кавычках, так и без них. Azonnal Az azonosító után a fordítást át kell adni egy új karakterláncba, nincs más karakter a fordításon kívül egy új karakterláncra, miután az azonosító nem lehet, egyébként hiba lép fel. Ezután közvetlenül string tartalmat tartalmaz. A string tartalma után külön sorban kell megadni a záró azonosítót (ugyanaz, mint az utána)<<<). Перед ним и после него не должно быть никаких пробелов или других символов, за исключением точки с запятой. Если это правило нарушено, то считается, что закрывающий идентификатор отсутствует и будет вызвана ошибка:

<<

NowDoc-Syntax

A NowDoc-Syntax, valamint a heredoc egy alternatív módja a sorok rögzítésére.

A NowDoc SynTax Works használatával meghatározott karakterlánc, valamint egy idézőjelben található karakterlánc. A NowDoc és az egyetlen idézőjelben lévő karakterlánc közötti különbség az, hogy a NowDoc használatával nincs szükség egyetlen idézetekre.

A NowDoc szintaxis hasonló a HEREDOC-hez, azzal a különbséggel, hogy a nyitó azonosítót feltétlenül egyetlen idézetbe kell foglalni:

$ szám \u003d 10; Visszhang.<<<"some_id" Число: $num some_id;

Változók feldolgozása vonalakban

A vonalakban kétféle változó feldolgozási szintaxis van: egyszerű és bonyolult.

Egyszerű szintaxis - Ez az, amikor a változó neve a karakterláncban van megadva.

Amikor a tolmács megfelel a dollár jelnek, akkor úgy kezdődik, hogy egymás után ellenőrzi, hogy az összes későbbi karakter érvényes karakterei a változó nevében. Így a helyes változó nevének kialakítása, a lehető legtöbb karaktert rögzít:

$ Str \u003d "világ!"; Echo "hello $ str";

Komplex szintaxis - Ez az, amikor a változó neve göndör zárójelben van.

Mivel a karakterláncban változó változó feldolgozásához a tolmács a lehető legtöbb karaktert rögzít, ha a tolmács nem tudja függetlenül meghatározni, ha a változó neve véget ér:

$ Sport1 \u003d "Will"; $ Sport2 \u003d "láb"; Echo "Szeretem $ Sport1ball és $ Sport2ball" -ot.

Ebben az esetben a kívánt eredmény nem érhető el, mivel a tolmács $ SPORT1-t számít a $ Sport1ball változó neve részeként, amely nem létezik.

Ha kifejezetten megadhat egy tolmácsot, ahol a változó neve véget ér, akkor meg kell adni a változó nevét a göndör zárójelben:

$ Sport1 \u003d "Will"; $ Sport2 \u003d "láb"; Echo "Szeretem ($ Sport1) Bol és ($ Sport2) bol.";

A dollár jele mind a zárójel előtt, mind utána:

$ Sport1 \u003d "Will"; $ Sport2 \u003d "láb"; Echo "Szeretem a $ (sport1) bol és ($ Sport2) bol.";

Összefoglalás

A Concatenáció két vagy több sor kombinációja egy nagyban. A kombináció egy összekapcsolt üzemeltetővel történik -. (pont). Amikor összekapcsolódnak, minden további karakterláncot adunk az előző végéhez:

A karakterláncmal kombinált bármely típus értékét implicit módon átalakítják a karakterláncra, majd az összekapcsoltat kell tenni:

"; Echo" szám: ". 1;?\u003e

Nem vagyok szakértő a PHP programozásában, de egy kicsit megzavarom nekem, miért látok egy kódot PHP-ben egy olyan karakterláncban, amely egy, és néha kettős idézőjelben lezárult.

Tudom, hogy a v.net vagy a C nyelv, ha egy idézőjelben van, akkor ez azt jelenti, hogy ez egy szimbólum, nem egy karakterlánc.

Döntés

Amit tudnod kell

$ A \u003d "NAME"; $ B \u003d "My $ A"; \u003d\u003d "Saját név" $ C \u003d "My $ A"; ! \u003d "A nevem"

A PHP, az emberek használni az aposztróf jelet, hogy meghatározza egy konstans szöveget, például „a”, „My name”, „ABC XYZ” dupla idézőjeleket, hogy meghatározzuk tartalmazó karakterlánc egy azonosítót, például az „A $ B $ C $ D ",

És egy másik dolog,

Echo "nevem";

gyorsabb, mint

Echo "nevem";

Echo "az én". $ a;

lassabban mint

Echo "én $ a";

Ez igaz az egyéb sorokhoz.

A PHP-ben az egyes idézetek szövegét sztring értéknek tekintik, és a kettős idézőjelben lévő szöveg elemzi a változókat az értékük cseréjével és feldolgozásával.

$ teszt \u003d "változó"; Echo "hello mr $ teszt"; // A kimenet: Hello Mr változó visszhang "Hello Mr $ teszt"; // A kimenet: Hello MR $ teszt

Itt a kettős idézet elemzi az értéket, és az egyes idézet sztring értéknek tekinthető (anélkül, hogy egy $ tesztváltozót elemezne.)

Mindkét típusú beágyazott karakter sorok. Az egyik típusú idézetek kényelmesek a másik típusú idézet megkötéséhez. "" "" "És" "", a legnagyobb különbség az idézetek típusai között, hogy a beágyazott azonosítókra való hivatkozások cseréje a kettős idézetekben, és nem egyetlen idézetben.