Doble anførselstegn i php. Hva er forskjellen mellom enkle og doble anførselstegn i PHP? Php unnslippende sitater

Denne korte artikkelen viser hvordan og hvor du skal bruke sitater i PHP.

Enkeltsitater (apostrof) i PHP

Strenger omsluttet av enkle anførselstegn behandles ikke på noen måte av PHP. Det vil si at enkle anførselstegn representerer teksten mellom dem som den er.

// Riktig ekko "Hvordan er livet?"; echo "Hvordan er livet? $navn"; echo "Hvordan er livet?".$name; // Feil ekko "Hvordan har du det? $navn";

Spesialtegn i enkle og doble anførselstegn

For å sikre at for eksempel tabulatortegnet (\t) tolkes som et tabulatortegn i stedet for som en skråstrek og bokstaven t, må du omslutte tekstlinjen som inneholder tabulatortegnet i doble anførselstegn. Du kan bare bruke \' og \\ i enkle anførselstegn. Alle andre escape-sekvenser (\n, \r, \$, etc.) er ikke tillatt innenfor enkle anførselstegn.

// Feil ekko "Hvordan har du det?\n"; // Korrekt ekko "Hvordan har du det?\n";

For å unnslippe doble anførselstegn i en streng, plasser anførselstegnene før skråstreken \" .

// Feil ekko "

Hva skjer?

"; // Riktig ekko "

Hva skjer?

"; ekko "

Hva skjer?

";

Doble anførselstegn i PHP

Tekst omsluttet av doble anførselstegn behandles svært forskjellig. For eksempel erstattes variabler i doble anførselstegn med verdiene deres. Dette gjør det praktisk å kompilere SQL-spørringer ved hjelp av doble anførselstegn.

$query = "INSERT I tabell (innlegg,forfatter,tekst,dato) VERDIER ("$id","$author","$text","$date"");

Hvilken type anførselstegn bør jeg bruke for å formatere strenger - apostrof eller klassiske doble anførselstegn?

La oss se på forskjellen mellom doble og enkle anførselstegn i PHP, og bruke eksempler for å finne ut når du skal bruke hvilke.

Variabler og rømningssekvenser for spesielle karakterer, som forekommer i strenger omsluttet av enkle anførselstegn, behandles ikke. Strenger omgitt av apostrof behandles mye raskere av PHP-tolken enn tilsvarende strenger omgitt av doble anførselstegn.

Årsaken her er enkel: PHP-tolken sjekker i tillegg strenger i doble anførselstegn for tilstedeværelsen av variabler, og hvis de blir funnet, blir verdien satt inn i strengen i stedet for variabelnavnet. Men en linje innelukket i apostrof oppfattes av tolken som vanlig tekst og PHP utfører ingen transformasjoner i disse linjene. Jeg tror det er klart at behandling av strenger i enkle anførselstegn vil være raskere i alle fall.

La oss først beskrive hvordan du definerer en streng, og deretter sjekke hvor mye raskere det vil være å behandle strenger i enkle anførselstegn.

Den enkleste måten å definere en streng på er å omslutte den i enkle anførselstegn ("). For å bruke enkle anførselstegn innenfor en streng med enkeltanførsel, må de innledes med en omvendt skråstrek (\), det vil si escaped. Hvis skråstreken må komme før et enkelt sitat eller være på slutten av linjen, må du duplisere det. Hvis du prøver å unnslippe et annet tegn, vil omvendt skråstrek også bli skrevet ut.

Her er et eksempel på bruk av enkle anførselstegn:
// Utgang: Enkel streng
ekko "Enkel streng";
// Utskrifter: Jeg er her
ekko "Jeg er her";
// Utdata: Dette vil ikke sette inn: \n ny linje
echo "Dette vil ikke sette inn:\nny linje";
// Utdata: Variabelen $example vil heller ikke bli erstattet
echo "$example-variabelen vil heller ikke bli erstattet"; Hvis strengen er omsluttet av doble anførselstegn ("), gjenkjenner PHP flere escape-sekvenser for spesialtegn og erstatter også verdien av variabelnavnet i strengen. Som med enkle anførselstegn, for å bruke doble anførselstegn i en streng omsluttet av doble anførselstegn. anførselstegn, må de innledes med et skråstrek (\).

Her er et eksempel på bruk av doble anførselstegn:
// Utgang: Enkel streng
ekko "Enkel streng";
// Utganger: Selskapet "Snøklokke"
echo "Selskap \"Snøklokke\"";
// Output: Dette vil føre til en ny linje
echo "Dette vil bryte til en ny linje \n";
// Output: Variabelen vil bli erstattet
$example = "vil bli erstattet";
echo "Variabel $eksempel"; Du bør også huske at sekvensen "\n" (nylinje), "\r" (vognretur) er for ren tekst, ikke HTML. Så du vil ikke se endringer i nettleseren (bare i kildekode sider).

La oss finne ut hvor mye raskere enkle anførselstegn er enn doble anførselstegn. For målinger vil vi skrive et kort testskript, og vi vil umiddelbart legge merke til at hvis du tester det selv, vil resultatene, som avhenger av maskinvaren til PC-en eller serveren, være annerledes.
// Returner tidsstemplet i begynnelsen av loopen
$start = mikrotid(true);
// Lag en løkke for 1 million iterasjoner
for ($i = 0; $i< 1000000; $i++) {
$text = "Her er en tegnstreng";
}
// Beregn tidsbruken
$tid = (mikrotid(true) - $start); Resultat: 0,09 sekunder.

Hvis vi erstatter enkle anførselstegn med doble anførselstegn:
$text = "Her er en tegnstreng"; Resultatet blir 0,10 sekunder.

Som du kan se, når du bruker tekststrenger, er forskjellen i utførelsestid veldig liten, man kan til og med si at den ikke eksisterer i det hele tatt. Moroa begynner når vi prøver å kombinere en streng og en variabel.
$text = "Her er tegnstrengen $i"; eller
$text = $i."Her er en tegnstreng"; Resultat omtrent: 0,27 sekunder.

Forskjellen er ganske merkbar. Sammenkobling og doble anførselstegn påvirker tydelig ytelsen når variabler legges til strengen.

Når serveren behandler koden, sjekker den alt innholdet i doble anførselstegn for variabler, konstanter og mer. Det tar tid. Og serveren behandler det som står mellom enkeltsitater som ferdig tekst og bryr seg ikke om hva som står der. Forskjellen mellom ytelsen til enkle og doble anførselstegn er veldig liten, men hvis du utvikler et svært belastet prosjekt, er noen få millisekunder spart allerede en seier.

En streng i PHP er et sett med tegn av hvilken som helst lengde. I motsetning til C, kan strenger også inneholde null-tegn, som ikke vil påvirke programmet på noen måte. Med andre ord kan strenger brukes til å lagre binære data. Lengden på strengen er bare begrenset av størrelsen på ledig RAM.

I PHP er et tegn det samme som en byte, noe som betyr at det er nøyaktig 256 forskjellige tegn mulig. Dette betyr også at PHP ikke har innebygd Unicode-støtte. Noe Unicode-støtte tilbys av funksjonene utf8_encode() Og utf8_decode() .

Strengen kan enkelt behandles ved hjelp av standardfunksjoner, og du kan også få direkte tilgang til alle tegnene.

Et enkelt eksempel på en strengvariabel:

$a= "Det er bare tekst som er lagret i en strengvariabel";
ekko $a ; //Outputs "Dette er bare tekst skrevet til en strengvariabel"
?>

La oss nå se på datatypesyntaksen i detalj. streng.

Syntaks av strengtypen

En streng kan defineres på tre forskjellige måter.

Den enkleste måten å definere en streng på er å sette den i enkle anførselstegn (symbolet " ).

For å bruke et enkelt anførselstegn i en streng, som på mange andre språk, må det innledes med et omvendt skråstrek ( \ ), dvs. skjerm den. Hvis omvendt skråstrek må komme før et enkelt sitat eller være på slutten av linjen, må du duplisere det. Merk at hvis du prøver å unnslippe et annet tegn, vil skråstreken også skrives ut! Så det er generelt ikke nødvendig å unnslippe selve skråstreken.

I motsetning til de to andre syntaksene, variabler og escape-sekvenser for spesialtegn som forekommer i strenger omsluttet av, Ikke er under behandling.

Her er et eksempel på bruk av enkle anførselstegn:

ekko "dette er en enkel streng";

Ekko "Du kan også sette inn i linjer
nylinjekarakter altså,
fordi det er normalt"
;

// Output: Arnold sa en gang: "I'll be back"
ekko "En dag sa Arnold: 'Jeg kommer tilbake.'';

Ekko "Har du slettet C:\\*.*?";

// Utganger: Slettet du C:\*.*?
echo "Har du slettet C:\*.*?" ;

// Utdata: Dette vil ikke sette inn: \n ny linje
ekko "Dette vil ikke sette inn:\nny linje";

// Utganger: variablene $expand og $either erstattes ikke
ekko "$expand og $either-variablene erstattes ikke";
?>

Hvis strengen er omgitt av doble anførselstegn ( " ), gjenkjenner PHP flere escape-sekvenser for spesialtegn:

Kontrollsekvenstabell:

Etterfølge Betydning
\n ny linje (LF eller 0x0A (10) i ASCII)
\r vognretur (CR eller 0x0D (13) i ASCII)
\t horisontal fane (HT eller 0x09 (9) i ASCII)
\\ skråstrek
\$ dollar tegn
\" dobbelt anførselstegn
\{1,3} en sekvens av tegn som tilsvarer et regulært uttrykk, et tegn i det oktale tallsystemet
\x(1,2) sekvens av tegn som tilsvarer regulært uttrykk, tegn i heksadesimalt tallsystem

La oss huske igjen at hvis du ønsker å mnemonisere en hvilken som helst annen karakter, vil omvendt skråstrek også bli skrevet ut!

En annen måte å definere strenger på er å bruke heredoc syntaks ("<<< "). Etter<<< необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

Den avsluttende identifikatoren må begynne i den første kolonnen i raden. I tillegg må identifikatoren følge de samme navnereglene som alle andre tagger i PHP: inneholder kun alfanumeriske tegn og et understrek, og må begynne med et ikke-siffer eller understrek.

Merk følgende! Det er veldig viktig å merke seg at den avsluttende identifikasjonslinjen ikke inneholder noen andre tegn, bortsett fra kanskje et semikolon ( ; ). Dette betyr at identifikatoren og at det ikke kan være mellomrom eller tabulatorer før eller etter semikolon. Det er også viktig å forstå at det første tegnet før den avsluttende identifikatoren må være et linjeskifttegn som definert av operativsystemet ditt. For eksempel, på Windows® er dette \r.

Hvis denne regelen brytes og den avsluttende identifikatoren ikke er "ren", anses den avsluttende identifikatoren som mangler og PHP vil fortsette å lete etter den videre. Hvis i dette tilfellet den riktige avsluttende identifikatoren aldri blir funnet, vil det forårsake en feil i behandlingen med linjenummeret på slutten av skriptet.

Heredoc-tekst oppfører seg på samme måte som en streng i doble anførselstegn, uten å ha dem. Dette betyr at du ikke trenger å unnslippe sitater i heredoc, men du kan fortsatt bruke escape-sekvensene ovenfor. Variabler behandles, men du må være like forsiktig når du bruker komplekse variabler i heredoc som når du arbeider med strenger.

Eksempel på å definere en heredoc-streng:

$str =<<Eksempellinje,
som dekker flere linjer,
ved hjelp av heredoc-syntaks.
EOD;

/* Mer komplekst eksempel med variabler. */
klasse foo
{
var $foo ;
var $bar ;

Funksjon foo()
{
$this -> foo = "Foo" ;
$this -> bar = array("Bar1" , "Bar2" , "Bar3" );
}
}

$foo = new foo();
$name = "Mitt navn" ;

Ekko<<Mitt navn er "$name". Jeg skriver $foo-> foo.
Nå trekker jeg ut
( $foo -> bar [ 1 ]) .
Dette skal skrive ut en stor bokstav "A":
\x41
EOT;
?>

Jeg er ingen ekspert på PHP-programmering, men jeg er litt forvirret over hvorfor jeg ser noe kode i PHP med en streng omsluttet av enkle og noen ganger doble anførselstegn.

Jeg vet bare at i .NET- eller C-språk, hvis det er i enkle anførselstegn, betyr det at det er et tegn og ikke en streng.

Løsning

Hva du bør vite

$a = "navn"; $b = "min $a"; == "mitt navn" $c = "min $a"; != "navnet mitt"

I PHP bruker folk enkle anførselstegn for å definere en konstant streng som "a", "mitt navn" , "abc xyz" mens de bruker doble anførselstegn for å definere en streng som inneholder en identifikator som "a $b $c $d" .

Og en annen ting er

Ekko "mitt navn";

raskere enn

Ekko "mitt navn";

Ekko "min" . $a;

tregere enn

Ekko "min $a";

Dette gjelder for andre strenger som brukes.

I PHP behandles tekst i enkle anførselstegn som en strengverdi, mens tekst i doble anførselstegn vil analysere variabler ved å erstatte og behandle verdien.

$test = "variabel"; echo "Hei Mr $test"; // utgangen vil være: Hallo Mr variabel ekko "Hello Mr $test"; // utgangen vil være: Hallo Mr $test

Her analyserer det doble anførselstegn verdien og det enkle anførselstegn behandles som en strengverdi (uten å analysere $test-variabelen.)

Begge typer nestede tegn er strenger. Det er praktisk å bruke én type sitat for å avslutte en annen type sitat. """ og """. Den største forskjellen mellom anførselstegn er at nestede identifikatorreferanser erstattes i doble anførselstegn i stedet for i enkle anførselstegn.

En streng er et sett med tegn. I PHP er et tegn det samme som en byte, noe som betyr at det er nøyaktig 256 forskjellige tegn mulig. Dette betyr også at PHP ikke har innebygd Unicode-støtte. Noe Unicode-støtte leveres av funksjonene utf8_encode() og utf8_decode().

Merk: Det er ikke noe problem hvis strengen er veldig stor. Det er praktisk talt ingen begrensninger på størrelsen på strenger pålagt av PHP, så det er absolutt ingen grunn til å bekymre seg for lengden.

Syntaks

    En streng kan defineres på tre forskjellige måter.

Enkelte sitater

Den enkleste måten å definere en streng på er å sette den i enkle anførselstegn (tegnet ").

For å bruke et enkelt anførselstegn inne i en streng, som på mange andre språk, må det innledes med en omvendt skråstrek (\), dvs. escaped. Hvis omvendt skråstrek må komme før et enkelt sitat eller være på slutten av linjen, må du duplisere det. Merk at hvis du prøver å unnslippe et annet tegn, vil skråstreken også skrives ut! Så det er generelt ikke nødvendig å unnslippe selve skråstreken.

Merk: I PHP 3, i dette tilfellet, vil en melding på E_NOTICE-nivå bli utstedt.

Merk: I motsetning til de to andre syntaksene, behandles ikke variabler og escape-sekvenser for spesialtegn som vises i strenger med anførselstegn.

Ekko "dette er en enkel streng"; echo "Du kan også sette inn et linjeskifttegn i strenger på denne måten, da det er normalt"; // Utganger: Arnold sa en gang: "I'll be back" echo "Arnold sa en gang: "I\"ll be back""; // Utganger: Slettet du C:\*.*? echo "Har du slettet C:\\*.*?"; // Utganger: Slettet du C:\*.*? echo "Har du slettet C:\*.*?"; // Utganger: Dette vil ikke sette inn: \n en ny linje ekko "Dette vil ikke sette inn: \n en ny linje"; // Utganger: variablene $expand og $either er ikke substituert echo "$expand og $either variabler er ikke substituert";

Doble anførselstegn

Hvis strengen er omsluttet av doble anførselstegn ("), gjenkjenner PHP flere escape-sekvenser for spesialtegn:

Tabell 11-1. Escape-sekvenser

Vi gjentar, hvis du ønsker å mnemonisere en hvilken som helst annen karakter, vil skråstreken også bli skrevet ut!

Men den viktigste egenskapen til strenger med doble anførselstegn er håndteringen av variabler. Se flere detaljer: strengbehandling.

Heredoc

En annen måte å definere strenger på er å bruke heredoc-syntaks ("

Den avsluttende identifikatoren må begynne i den første kolonnen i raden. I tillegg må identifikatoren følge de samme navnereglene som alle andre tagger i PHP: inneholder kun alfanumeriske tegn og et understrek, og må begynne med et ikke-siffer eller understrek.

Merk følgende

Det er veldig viktig å merke seg at den avsluttende identifikasjonslinjen ikke inneholder noen andre tegn, bortsett fra muligens et semikolon (;). Dette betyr at identifikatoren ikke må rykkes inn og at det ikke kan være mellomrom eller tabulatorer før eller etter semikolon. Det er også viktig å forstå at det første tegnet før den avsluttende identifikatoren må være et linjeskifttegn som definert av operativsystemet ditt. For eksempel, på Macintosh er det \r.

Hvis denne regelen brytes og den avsluttende identifikatoren ikke er "ren", anses den avsluttende identifikatoren som mangler og PHP vil fortsette å lete etter den videre. Hvis i dette tilfellet den riktige avsluttende identifikatoren aldri blir funnet, vil det forårsake en feil i behandlingen med linjenummeret på slutten av skriptet.

Heredoc-tekst oppfører seg på samme måte som en streng i doble anførselstegn, uten å ha dem. Dette betyr at du ikke trenger å unnslippe sitater i heredoc, men du kan fortsatt bruke escape-sekvensene ovenfor. Variabler behandles, men du må være like forsiktig når du bruker komplekse variabler i heredoc som når du arbeider med strenger.

Eksempel 11-2. Heredoc strengdefinisjonseksempel

$str =<<foo = "Foo"; $this->bar = array("Bar1", "Bar2", "Bar3"); ) ) $foo = new foo(); $name = "Mitt navn"; ekko<<foo. Nå sender jeg ut ($foo->bar). Dette skal skrive ut en stor bokstav "A": \x41 EOT;

Merk: Heredoc-støtte ble lagt til i PHP 4.

Håndtering av variabler

Hvis en streng er definert i doble anførselstegn, eller bruker heredoc, blir variablene i den behandlet.

Det er to typer syntaks: enkel og kompleks. Enkel syntaks er enklere og mer praktisk. Den lar deg behandle en variabel, en matriseverdi eller en objektegenskap.

Den komplekse syntaksen ble introdusert i PHP 4 og kan gjenkjennes av de krøllete klammeparentesene rundt uttrykket.

Enkel syntaks

Hvis tolken møter et dollartegn ($), griper den så mange tegn som mulig for å danne et gyldig variabelnavn. Hvis du vil spesifisere slutten av et navn, omslutter variabelnavnet i krøllete klammeparenteser.

$beer = "Heineken"; echo "$beers smak er fantastisk"; // fungerer, """ er et ugyldig tegn for et variabelnavn ekko "Han drakk noen $øl"; // fungerer ikke, "s" er et gyldig variabelnavn ekko "Han drakk noen $(øl)"; // fungerer ekko "Han drakk noen ($øl)s"; // virker

Et matriseelement (array) eller en egenskap til et objekt (objekt) kan behandles på samme måte. I matriseindekser markerer en avsluttende firkantparentes (]) slutten av indeksdefinisjonen. De samme reglene gjelder for objektegenskaper som for enkle variabler, selv om de ikke kan lures som de er med variabler.

// Disse eksemplene handler spesifikt om å bruke arrays i //-strenger. Utenfor strenger, omslutt alltid strengtastene til //-matrisen din i anførselstegn og ikke bruk utenfor strenger (parenteser). // La oss vise alle feil error_reporting(E_ALL); $fruits = array("strawberry" => "rød", "banan" => "gul"); // Fungerer, men merk at det fungerer annerledes utenfor det siterte strengekkoet "A banana is $fruits."; //Works echo "En banan er ($fruits["banan"])."; // Fungerer, men PHP, som beskrevet nedenfor, ser først // etter banankonstanten. echo "En banan er ($frukt)."; // Fungerer ikke, bruk krøllete seler. Dette vil forårsake en behandlingsfeil. echo "En banan er $frukt["banan"]."; // Works ekko "En banan er". $frukt["banan"] . "."; // Works echo "Denne firkanten er $square->bredde meter bred."; // Virker ikke. Se kompleks syntaks for løsning. echo "Denne firkanten er $square->width00 centimeter bred.";

For noe mer komplekst, må du bruke kompleks syntaks.

Kompleks (krøllete) syntaks

Det kalles kompleks ikke fordi det er vanskelig å forstå, men fordi det tillater bruk av komplekse uttrykk.

Faktisk kan du inkludere hvilken som helst verdi som er i navneområdet på linje med denne syntaksen. Du skriver ganske enkelt uttrykket på samme måte som du ville gjort utenfor linjen, og omslutter det deretter i ( og ). Siden du ikke kan unnslippe "(", vil denne syntaksen bare bli gjenkjent når $ umiddelbart følger etter (. (Bruk "(\$" eller "\($" for å escape "($"). Noen illustrerende eksempler:

// La oss vise alle feil error_reporting(E_ALL); $great = "fantastisk"; // Fungerer ikke, vil sende ut: Dette er (fantastisk) ekko "Dette er ($great)"; // Fungerer, vil sende ut: Dette er fantastisk ekko "This is ($great)"; echo "Dette er $(flott)"; // Works echo "Denne firkanten er ($square->width)00 centimeter bred."; // Works echo "Dette fungerer: ($arr)"; // Dette er ugyldig av samme grunn som $foo er ugyldig utenfor //-linjen. Med andre ord, dette vil fortsatt fungere, // men fordi PHP ser etter konstanten foo først, vil den // kaste en E_NOTICE (udefinert konstant) feil. echo "Dette er feil: ($arr)"; // Virker. Når du bruker flerdimensjonale arrays, bruk alltid krøllete klammeparenteser inni // strenger echo "Dette fungerer: ($arr["foo"])"; // Virker. echo "Dette fungerer: " . $arr["foo"]; echo "Du kan til og med skrive ($obj->values->name)"; echo "Dette er verdien av variabelen kalt $name: ($($name))";

Få tilgang til og endre et tegn i en streng

Tegn i strenger kan brukes og endres ved å spesifisere deres forskyvning fra begynnelsen av strengen, med start på null, i krøllete klammeparenteser etter strengen.

Merk: For bakoverkompatibilitet har du fortsatt muligheten til å bruke matriseparenteser til samme formål. Fra og med PHP 4 er imidlertid denne syntaksen utdatert.

Eksempel 11-3. Noen eksempler på strenger

// Få det første tegnet i strengen $str = "Dette er en test."; $først = $str(0); // Få det tredje tegnet i strengen $tredje = $str(2); // Få det siste tegnet i strengen $str = "Dette er fortsatt en test."; $last = $str(strlen($str)-1); // Endre det siste tegnet på linjen $str = "Se på havet"; $str(strlen($str)-1) = "meg";

Nyttige funksjoner og operatører

Strenger kan settes sammen ved å bruke "."-operatoren. (punktum). Vær oppmerksom på at tilleggsoperatoren "+" ikke fungerer her. For mer informasjon, se String Operators.

Det er mange nyttige funksjoner for å endre strenger.

Hovedfunksjonene er beskrevet i avsnittet om strengfunksjoner, regulære uttrykksfunksjoner for avansert søk og erstatning (i to deler: Perl og POSIX avansert).

Det finnes også funksjoner for URL-strenger, og funksjoner for kryptering/dekryptering av strenger (mcrypt og mhash).

Til slutt, hvis du fortsatt ikke har funnet det du leter etter, se også funksjoner for tegntype.

Konverter til streng

Du kan konvertere en verdi til en streng ved å bruke en cast (streng) eller strval()-funksjonen. I uttrykk der det kreves en streng, skjer konverteringen automatisk. Dette skjer når du bruker funksjonene echo() eller print(), eller når du sammenligner verdien av en variabel med en streng. Å lese håndbokens typer og type manipulasjon-seksjoner vil gjøre følgende klarere. Se også settype().

Den boolske verdien TRUE konverteres til strengen "1", og verdien FALSE er representert som "" (den tomme strengen). På denne måten kan du konvertere verdier i begge retninger - fra boolsk til streng og omvendt.

Et heltall eller en flottør konverteres til en streng, representert av et tall som består av sifrene (inkludert eksponenten for flyttall).

Matriser konverteres alltid til strengen "Array", så du kan ikke vise innholdet i en matrise ved å bruke echo() eller print() for å se hva den inneholder. For å se et enkelt element må du gjøre noe som echo $arr["foo"]. Se nedenfor for tips om hvordan du viser/viser alt innhold.

Objekter konverteres alltid til strengen "Objekt". Hvis du vil skrive ut verdien til en objektmedlemsvariabel for feilsøkingsformål, les følgende avsnitt. Hvis du ønsker å få klassenavnet til det nødvendige objektet, bruk get_class() .

Ressurser konverteres alltid til strenger med strukturen "Ressurs-id #1", der 1 er det unike ressursnummeret som er tildelt den av PHP under kjøring. Hvis du vil ha ressurstypen, bruk .

NULL konverteres alltid til den tomme strengen.

Som du kan se ovenfor, gir utmating av matriser, objekter eller ressurser deg ingen nyttig informasjon om verdiene selv. En bedre måte å skrive ut verdier for feilsøking på er å bruke funksjonene print_r() og var_dump().

Du kan også konvertere PHP-verdier til strenger for vedvarende lagring. Denne metoden kalles serialisering og kan gjøres ved å bruke serialize()-funksjonen. I tillegg, hvis PHP-installasjonen din har WDDX-støtte, kan du serialisere PHP-verdier til XML-strukturer.

Konvertering av strenger til tall

Hvis strengen gjenkjennes som en numerisk verdi, bestemmes den resulterende verdien og typen som følger.

En streng vil bli gjenkjent som en flytende hvis den inneholder noen av tegnene ".", "e" eller "E". Ellers vil det bli definert som et heltall.

Verdien bestemmes av begynnelsen av strengen. Hvis linjen starter med en gyldig numerisk verdi, vil denne verdien bli brukt. Ellers vil verdien være 0 (null). En gyldig numerisk verdi er ett eller flere sifre (som kan inneholde et desimaltegn), eventuelt etterfulgt av et tegn, etterfulgt av en valgfri eksponent. Eksponenten er "e" eller "E" etterfulgt av ett eller flere sifre.

$foo = 1 + "10.5"; // $foo er en flyte (11.5) $foo = 1 + "-1.3e3"; // $foo er en flyte (-1299) $foo = 1 + "bob-1.3e3"; // $foo er et heltall (1) $foo = 1 + "bob3"; // $foo er et heltall (1) $foo = 1 + "10 små griser"; // $foo er et heltall (11) $foo = 4 + "10.2 små griser"; // $foo er en flyte (14.2) $foo = "10.0 griser " + 1; // $foo er flyte (11) $foo = "10.0 griser " + 1.0; // $foo er flyte (11)

For mer informasjon om denne konverteringen, se delen om strtod(3) i Unix-dokumentasjonen.

Hvis du vil teste noen av eksemplene i denne delen, kan du kopiere og lime den og følgende linje for å se hva som skjer:

Ekko "\$foo==$foo; type: " . gettype($foo) . "
\n";

Ikke forvent å få koden til et tegn ved å konvertere det til et heltall (som du for eksempel kan gjøre i C). For å konvertere tegn til kodene og tilbake, bruk ord() og




Topp