Dubbla citattecken i php. Vad är skillnaden mellan enkla och dubbla citattecken i PHP? Php undflyende citat

Den här korta artikeln visar hur och var du ska använda citat i PHP.

Enstaka citat (apostrof) i PHP

Strängar omslutna av enstaka citattecken bearbetas inte på något sätt av PHP. Det vill säga, enstaka citattecken representerar texten som är innesluten mellan dem som den är.

// Rätt eko "Hur är livet?"; echo "Hur är livet? $namn"; echo "Hur är livet?".$name; // Felaktigt eko "Hur mår du? $name";

Specialtecken i enkla och dubbla citattecken

För att till exempel säkerställa att tabbtecknet (\t) tolkas som ett tabbtecken snarare än som ett snedstreck och bokstaven t, måste du omge textraden som innehåller tabbtecknet med dubbla citattecken. Du kan bara använda \' och \\ inom enstaka citattecken. Alla andra escape-sekvenser (\n , \r , \$ , etc.) är inte tillåtna inom enstaka citattecken.

// Felaktigt eko "Hur mår du?\n"; // Rätt eko "Hur är livet?\n";

För att undvika dubbla citattecken inom en sträng, placera citattecken före omvänt snedstreck \" .

// Felaktigt eko "

Vad händer?

"; // Rätt eko "

Vad händer?

"; eka"

Vad händer?

";

Dubbla citattecken i PHP

Text inom dubbla citattecken behandlas väldigt olika. Till exempel ersätts variabler omslutna av dubbla citattecken med deras värden. Detta gör det bekvämt att kompilera SQL-frågor med dubbla citattecken.

$query = "INSERT I tabell (post,författare,text,datum) VÄRDEN ("$id","$author","$text","$date"");

Vilken typ av citattecken ska jag använda för att formatera strängar - apostrof eller klassiska citattecken?

Låt oss titta på skillnaden mellan dubbla och enkla citattecken i PHP, och använd exempel för att ta reda på när du ska använda vilken.

Variabler och flyktsekvenser för speciella karaktärer, som förekommer i strängar omslutna av enstaka citattecken behandlas inte. Strängar omgivna av apostrof bearbetas mycket snabbare av PHP-tolken än liknande strängar omgivna av dubbla citattecken.

Anledningen här är enkel: PHP-tolken kontrollerar dessutom strängar i dubbla citattecken för närvaron av variabler, och om de hittas infogas dess värde i strängen istället för variabelnamnet. Men en rad innesluten i apostrof uppfattas av tolken som vanlig text och PHP genomför inga transformationer på dessa rader. Jag tror att det är klart att bearbetning av strängar i enstaka citattecken kommer att gå snabbare i alla fall.

Låt oss först beskriva hur man definierar en sträng och sedan kontrollera hur mycket snabbare bearbetningen av strängar i enstaka citattecken kommer att vara.

Det enklaste sättet att definiera en sträng är att omsluta den i enkla citattecken ("). För att använda enstaka citattecken inom en sträng med enkla citattecken måste de föregås av ett omvänt snedstreck (\), det vill säga escaped. Om det omvända snedstrecket måste komma före ett enstaka citat eller vara i slutet av raden, måste du duplicera det.

Här är ett exempel på hur du använder enstaka citattecken:
// Output: Enkel sträng
echo "Enkel sträng";
// Utskrifter: Jag är här
echo "Jag är här";
// Utdata: Detta kommer inte att infoga: \n ny rad
echo "Detta kommer inte att infoga:\nny linje";
// Utdata: Variabeln $example kommer inte att ersättas heller
echo "Variabeln $example kommer inte heller att ersättas"; Om strängen är omgiven av dubbla citattecken ("), känner PHP igen fler escape-sekvenser för specialtecken och ersätter även värdet på variabelnamnet i strängen. Som med enkla citattecken, för att använda dubbla citattecken inom en sträng omsluten av dubbla citattecken. citattecken måste de föregås av ett snedstreck (\).

Här är ett exempel på hur du använder dubbla citattecken:
// Output: Enkel sträng
echo "Enkel sträng";
// Outputs: Company "Snowdrop"
echo "Företag \"Snödroppe\"";
// Utdata: Detta kommer att leda till en ny rad
echo "Detta kommer att bryta till en ny rad \n";
// Output: Variabeln kommer att ersättas
$example = "kommer att ersättas";
echo "Variabel $exempel"; Du bör också komma ihåg att sekvensen "\n" (nyrad), "\r" (vagnretur) är för vanlig text, inte HTML. Så du kommer inte att se ändringar i webbläsaren (endast i källkod sidor).

Låt oss ta reda på hur mycket snabbare enkla citattecken är än dubbla citattecken. För mätningar kommer vi att skriva ett kort testskript, och vi kommer omedelbart att notera att om du testar det själv kommer resultaten, som beror på hårdvaran på din PC eller server, att bli annorlunda.
// Returnera tidsstämpeln i början av loopen
$start = mikrotid(true);
// Skapa en loop för 1 miljon iterationer
för ($i = 0; $i< 1000000; $i++) {
$text = "Här är en teckensträng";
}
// Beräkna tidsåtgången
$tid = (microtime(true) - $start); Resultat: 0,09 sekunder.

Om vi ​​ersätter enkla citattecken med dubbla citattecken:
$text = "Här är en teckensträng"; Resultatet blir 0,10 sekunder.

Som du kan se, när du använder textsträngar, är skillnaden i exekveringstid mycket liten, man kan till och med säga att den inte existerar alls. Det roliga börjar när vi försöker kombinera en sträng och en variabel.
$text = "Här är teckensträngen $i"; eller
$text = $i."Här är en teckensträng"; Resultat ungefär: 0,27 sekunder.

Skillnaden är ganska märkbar. Sammankoppling och dubbla citattecken påverkar tydligt prestandan när variabler läggs till strängen.

När servern bearbetar koden kontrollerar den allt innehåll i dubbla citattecken för variabler, konstanter och mer. Det tar tid. Och servern bearbetar det som står mellan enstaka citattecken som färdig text och bryr sig inte om vad som finns där. Skillnaden mellan prestanda för enkla och dubbla citattecken är mycket liten, men om du utvecklar ett högt belastat projekt, är några sparade millisekunder redan en seger.

En sträng i PHP är en uppsättning tecken av valfri längd. Till skillnad från C kan strängar också innehålla nolltecken, vilket inte kommer att påverka programmet på något sätt. Med andra ord kan strängar användas för att lagra binär data. Längden på strängen begränsas endast av storleken på det fria RAM-minnet.

I PHP är ett tecken detsamma som en byte, vilket innebär att det finns exakt 256 olika tecken möjliga. Detta betyder också att PHP inte har inbyggt Unicode-stöd. Visst Unicode-stöd tillhandahålls av funktionerna utf8_encode() Och utf8_decode() .

Strängen kan enkelt bearbetas med standardfunktioner, och du kan också direkt komma åt alla dess tecken.

Ett enkelt exempel på en strängvariabel:

$a= "Det är bara text lagrad i en strängvariabel";
echo $a ; //Outputs "Detta är bara text skriven till en strängvariabel"
?>

Låt oss nu titta på datatypens syntax i detalj. sträng.

Syntax av strängtypen

En sträng kan definieras på tre olika sätt.

Det enklaste sättet att definiera en sträng är att omsluta den i enkla citattecken (tecknet " ).

För att använda ett enda citattecken inom en sträng, som på många andra språk, måste det föregås av ett omvänt snedstreck ( \ ), dvs skärma av den. Om snedstrecket måste komma före ett enda citat eller vara i slutet av raden, måste du duplicera det. Observera att om du försöker undkomma något annat tecken, skrivs omvänt snedstreck också ut! Så det finns i allmänhet inget behov av att undkomma själva snedstrecket.

Till skillnad från de andra två syntaxerna, variabler och escape-sekvenser för specialtecken som förekommer i strängar inneslutna i, Inte håller på att bearbetas.

Här är ett exempel på hur du använder enstaka citattecken:

eko "det här är en enkel sträng";

Eko "Du kan också infoga i rader
nyradstecken alltså,
för det är normalt"
;

// Output: Arnold sa en gång: "I'll be back"
eko "En dag sa Arnold "Jag kommer tillbaka.";

Eko "Har du tagit bort C:\\*.*?";

// Utgångar: Tog du bort C:\*.*?
echo "Har du tagit bort C:\*.*?" ;

// Utdata: Detta kommer inte att infoga: \n ny rad
eko "Detta kommer inte att infoga:\nny rad";

// Utdata: variablerna $expand och $either ersätts inte
eko "$expand och $either-variablerna ersätts inte";
?>

Om strängen är omgiven av dubbla citattecken ( " ), känner PHP igen fler escape-sekvenser för specialtecken:

Kontrollsekvenstabell:

Efterföljd Menande
\n nylinje (LF eller 0x0A (10) i ASCII)
\r vagnretur (CR eller 0x0D (13) i ASCII)
\t horisontell flik (HT eller 0x09 (9) i ASCII)
\\ snedstreck
\$ dollartecken
\" dubbelt citat
\{1,3} en sekvens av tecken som motsvarar ett reguljärt uttryck, ett tecken i det oktala talsystemet
\x(1,2) sekvens av tecken som motsvarar reguljärt uttryck, tecken i hexadecimalt talsystem

Låt oss återigen komma ihåg att om du vill göra en minnesbild av någon annan karaktär, kommer även snedstrecket att skrivas ut!

Ett annat sätt att definiera strängar är att använda heredoc syntax ("<<< "). Efter<<< необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

Den avslutande identifieraren måste börja i den första kolumnen på raden. Dessutom måste identifieraren följa samma namnregler som alla andra taggar i PHP: endast innehålla alfanumeriska tecken och ett understreck, och måste börja med ett icke-siffrigt eller understreck.

Uppmärksamhet! Det är mycket viktigt att notera att den avslutande identifierarraden inte innehåller några andra tecken, förutom kanske ett semikolon ( ; ). Det betyder att identifieraren och att det inte kan finnas några mellanslag eller tabbar före eller efter semikolon. Det är också viktigt att förstå att det första tecknet före den avslutande identifieraren måste vara ett nyradstecken enligt definitionen av ditt operativsystem. Till exempel på Windows® är detta \r.

Om denna regel bryts och den avslutande identifieraren inte är "ren", anses den avslutande identifieraren saknas och PHP kommer att fortsätta leta efter den ytterligare. Om i detta fall den korrekta stängningsidentifieraren aldrig hittas, kommer det att orsaka ett fel i bearbetningen med radnumret i slutet av skriptet.

Heredoc-text beter sig på samma sätt som en sträng inom dubbla citattecken, utan att ha dem. Det betyder att du inte behöver undvika citattecken i heredoc, men du kan fortfarande använda escape-sekvenserna ovan. Variabler bearbetas, men du måste vara lika försiktig när du använder komplexa variabler i heredoc som när du arbetar med strängar.

Exempel på att definiera en heredoc-sträng:

$str =<<Exempel rad,
som täcker flera linjer,
använder heredoc-syntax.
EOD;

/* Mer komplext exempel med variabler. */
klass foo
{
var $foo ;
var $bar ;

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

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

Eko<<Mitt namn är "$name". Jag skriver $foo-> foo.
Nu drar jag slutsatsen
( $foo -> bar [ 1 ]) .
Detta bör mata ut en stor bokstav "A":
\x41
EOT;
?>

Jag är ingen expert på PHP-programmering, men jag är lite förvirrad varför jag ser någon kod i PHP med en sträng omsluten av enkla och ibland dubbla citattecken.

Jag vet bara att i .NET- eller C-språk, om det står i enstaka citattecken, betyder det att det är ett tecken och inte en sträng.

Lösning

Vad du borde veta

$a = "namn"; $b = "min $a"; == "mitt namn" $c = "min $a"; != "mitt namn"

I PHP använder människor enkla citattecken för att definiera en konstant sträng som "a", "mitt namn", "abc xyz" medan de använder dubbla citattecken för att definiera en sträng som innehåller en identifierare som "a $b $c $d" .

Och en annan sak är

Echo "mitt namn";

snabbare än

Echo "mitt namn";

Echo "min". $a;

långsammare än

Echo "min $a";

Detta gäller för andra använda strängar.

I PHP behandlas text i enkla citattecken som ett strängvärde, medan text i dubbla citattecken kommer att analysera variabler genom att ersätta och bearbeta deras värde.

$test = "variabel"; echo "Hej Mr $test"; // utgången skulle vara: Hello Mr variabel echo "Hello Mr $test"; // utdata skulle vara: Hej Mr $test

Här analyserar det dubbla citattecken värdet och det enda citattecken behandlas som ett strängvärde (utan att analysera $testvariabeln.)

Båda typerna av kapslade tecken är strängar. Det är bekvämt att använda en typ av offert för att avsluta en annan typ av offert. """ och """ . Den största skillnaden mellan citattecken är att kapslade identifierarreferenser ersätts inuti dubbla citattecken snarare än inuti enkla citattecken.

En sträng är en uppsättning tecken. I PHP är ett tecken detsamma som en byte, vilket innebär att det finns exakt 256 olika tecken möjliga. Detta betyder också att PHP inte har inbyggt Unicode-stöd En del Unicode-stöd tillhandahålls av funktionerna utf8_encode() och utf8_decode().

Obs: Det är inga problem om strängen är mycket stor. Det finns praktiskt taget inga begränsningar för storleken på strängar som införs av PHP, så det finns absolut ingen anledning att oroa sig för deras längd.

Syntax

    En sträng kan definieras på tre olika sätt.

Enstaka citat

Det enklaste sättet att definiera en sträng är att omsluta den i enkla citattecken (tecknet ").

För att använda ett enstaka citattecken i en sträng, som på många andra språk, måste det föregås av ett omvänt snedstreck (\), d.v.s. escaped. Om snedstrecket måste komma före ett enda citat eller vara i slutet av raden, måste du duplicera det. Observera att om du försöker undkomma något annat tecken, skrivs omvänt snedstreck också ut! Så det finns i allmänhet inget behov av att undkomma själva snedstrecket.

Obs: I PHP 3 kommer i detta fall ett meddelande på E_NOTICE-nivå att utfärdas.

Obs: Till skillnad från de andra två syntaxerna, bearbetas inte variabler och escape-sekvenser för specialtecken som visas i enkla citattecken.

Echo "det här är en enkel sträng"; echo "Du kan också infoga ett nyradstecken i strängar på detta sätt, eftersom det är normalt"; // Utgångar: Arnold sa en gång: "Jag kommer tillbaka" echo "Arnold sa en gång: "Jag kommer tillbaka""; // Utgångar: Tog du bort C:\*.*? echo "Har du tagit bort C:\\*.*?"; // Utgångar: Tog du bort C:\*.*? echo "Har du tagit bort C:\*.*?"; // Utgångar: Detta kommer inte att infoga: \n en ny rad eko "Detta kommer inte att infoga: \n en ny rad"; // Utdata: variablerna $expand och $either ersätts inte echo "$expand och $either variabler är inte substituerade";

Dubbla citattecken

Om strängen är omgiven av dubbla citattecken ("), känner PHP igen fler escape-sekvenser för specialtecken:

Tabell 11-1. Escape Sequences

Vi upprepar, om du vill göra minnesmärken på någon annan karaktär, kommer bakstrecket att skrivas ut också!

Men den viktigaste egenskapen hos strängar med dubbla citat är hanteringen av variabler. Se mer information: strängbearbetning.

Heredoc

Ett annat sätt att definiera strängar är att använda heredoc-syntax ("

Den avslutande identifieraren måste börja i den första kolumnen på raden. Dessutom måste identifieraren följa samma namnregler som alla andra taggar i PHP: endast innehålla alfanumeriska tecken och ett understreck, och måste börja med ett icke-siffrigt eller understreck.

Uppmärksamhet

Det är mycket viktigt att notera att den avslutande identifierarraden inte innehåller några andra tecken, förutom möjligen ett semikolon (;). Det betyder att identifieraren inte får dras in och att det inte får finnas några mellanslag eller tabbar före eller efter semikolon. Det är också viktigt att förstå att det första tecknet före den avslutande identifieraren måste vara ett nyradstecken enligt definitionen av ditt operativsystem. Till exempel på Macintosh är det \r.

Om denna regel bryts och den avslutande identifieraren inte är "ren", anses den avslutande identifieraren saknas och PHP kommer att fortsätta leta efter den ytterligare. Om i detta fall den korrekta stängningsidentifieraren aldrig hittas, kommer det att orsaka ett fel i bearbetningen med radnumret i slutet av skriptet.

Heredoc-text beter sig på samma sätt som en sträng i dubbla citattecken, utan att ha dem. Det betyder att du inte behöver undvika citattecken i heredoc, men du kan fortfarande använda escape-sekvenserna ovan. Variabler bearbetas, men du måste vara lika försiktig när du använder komplexa variabler i heredoc som när du arbetar med strängar.

Exempel 11-2. Heredoc strängdefinitionsexempel

$str =<<foo = "Foo"; $this->bar = array("Bar1", "Bar2", "Bar3"); ) ) $foo = new foo(); $name = "Mitt Namn"; eko<<foo. Nu matar jag ut ($foo->bar). Detta bör mata ut en stor bokstav "A": \x41 EOT;

Obs: Heredoc-stöd lades till i PHP 4.

Hantera variabler

Om en sträng definieras i dubbla citattecken, eller använder heredoc, bearbetas variablerna inuti den.

Det finns två typer av syntax: enkel och komplex. Enkel syntax är enklare och bekvämare. Det låter dig bearbeta en variabel, ett matrisvärde eller en objektegenskap.

Den komplexa syntaxen introducerades i PHP 4 och kan kännas igen på de lockiga hängslen som omger uttrycket.

Enkel syntax

Om tolken stöter på ett dollartecken ($), tar den tag i så många tecken som möjligt för att bilda ett giltigt variabelnamn. Om du vill ange slutet på ett namn, omslut variabelnamnet med klammerparenteser.

$beer = "Heineken"; echo "$beers smak är fantastisk"; // fungerar, """ är ett ogiltigt tecken för ett variabelnamn echo "Han drack några $öl"; // fungerar inte, "s" är ett giltigt variabelnamn eko "Han drack några $(öl)s"; // fungerar eko "Han drack några ($öl)s"; // Arbetar

Ett arrayelement (array) eller en egenskap hos ett objekt (objekt) kan bearbetas på samma sätt. I matrisindex markerar en avslutande hakparentes (]) slutet på indexdefinitionen. Samma regler gäller för objektegenskaper som för enkla variabler, även om de inte kan luras som de är med variabler.

// Dessa exempel handlar specifikt om att använda arrayer inuti //-strängar. Utanför strängar, omge alltid strängnycklarna för din //-array inom citattecken och använd inte utanför strängar (parenteser). // Låt oss visa alla fel error_reporting(E_ALL); $fruits = array("strawberry" => "röd", "banan" => "gul"); // Fungerar, men observera att det fungerar annorlunda utanför det citerade strängekot "A banana is $fruits."; //Works echo "En banan är ($fruits["banan"])."; // Fungerar, men PHP, som beskrivs nedan, letar först efter // efter banankonstanten. echo "En banan är ($frukter)."; // Fungerar inte, använd lockiga hängslen. Detta kommer att orsaka ett bearbetningsfel. echo "En banan är $frukter["banan"]."; // Works eko "En banan är". $frukter["banan"] . "."; // Works echo "Denna kvadrat är $square->bredd meter bred."; // Fungerar inte. Se komplex syntax för lösning. echo "Denna fyrkant är $square->width00 centimeter bred.";

För allt mer komplext måste du använda komplex syntax.

Komplex (lockig) syntax

Det kallas komplex inte för att det är svårt att förstå, utan för att det tillåter användning av komplexa uttryck.

Faktum är att du kan inkludera vilket värde som helst som finns i namnutrymmet på en rad med denna syntax. Du skriver helt enkelt uttrycket på samma sätt som du skulle göra utanför raden och omsluter det sedan i ( och ). Eftersom du inte kan escape "(", kommer denna syntax bara att kännas igen när $ direkt följer efter (. (Använd "(\$" eller "\($" för att escape "($"). Några illustrativa exempel:

// Låt oss visa alla fel error_reporting(E_ALL); $great = "fantastiskt"; // Fungerar inte, kommer att mata ut: Detta är (fantastiskt) eko "Detta är ($bra)"; // Fungerar, kommer att mata ut: Detta är fantastiskt eko "Detta är ($bra)"; echo "Detta är $(bra)"; // Works echo "Denna fyrkant är ($square->width)00 centimeter bred."; // Works echo "Detta fungerar: ($arr)"; // Detta är ogiltigt av samma anledning som $foo är ogiltigt utanför //-raden. Med andra ord kommer detta fortfarande att fungera, // men eftersom PHP letar efter konstanten foo först kommer det // att kasta ett E_NOTICE (odefinierad konstant) fel. echo "Detta är fel: ($arr)"; // Arbetar. När du använder flerdimensionella arrayer, använd alltid krulliga hängslen inuti // strängar echo "Detta fungerar: ($arr["foo"])"; // Arbetar. echo "Detta fungerar: " . $arr["foo"]; echo "Du kan till och med skriva ($obj->values->name)"; echo "Detta är värdet på variabeln som heter $name: ($($name))";

Öppna och ändra ett tecken i en sträng

Tecken i strängar kan användas och modifieras genom att ange deras förskjutning från början av strängen, med början på noll, med klammerparenteser efter strängen.

Obs: För bakåtkompatibilitet har du fortfarande möjlighet att använda arrayparenteser för samma ändamål. Men från och med PHP 4 är denna syntax utfasad.

Exempel 11-3. Några exempelsträngar

// Hämta det första tecknet i strängen $str = "Detta är ett test."; $först = $str(0); // Hämta det tredje tecknet i strängen $third = $str(2); // Hämta det sista tecknet i strängen $str = "Detta är fortfarande ett test."; $last = $str(strlen($str)-1); // Ändra det sista tecknet på raden $str = "Titta på havet"; $str(strlen($str)-1) = "Jag";

Användbara funktioner och operatörer

Strängar kan sammanfogas med operatorn "." (punkt). Observera att tilläggsoperatorn "+" inte fungerar här. Mer information finns i Strängoperatorer.

Det finns många användbara funktioner för att modifiera strängar.

Huvudfunktionerna beskrivs i avsnittet om strängfunktioner, reguljära uttrycksfunktioner för avancerad sökning och ersätt (i två delar: Perl och POSIX avancerad).

Det finns även funktioner för URL-strängar och funktioner för att kryptera/dekryptera strängar (mcrypt och mhash).

Slutligen, om du fortfarande inte har hittat det du letar efter, se även teckentypsfunktioner.

Konvertera till sträng

Du kan konvertera ett värde till en sträng med hjälp av en cast (sträng) eller strval()-funktionen. I uttryck där en sträng krävs sker konverteringen automatiskt. Detta händer när du använder funktionerna echo() eller print() eller när du jämför värdet på en variabel med en sträng. Genom att läsa manualens avsnitt Typer och Typmanipulation blir följande tydligare. Se även settype().

Det booleska värdet TRUE konverteras till strängen "1", och värdet FALSE representeras som "" (den tomma strängen). På detta sätt kan du konvertera värden i båda riktningarna - från boolesk till sträng och vice versa.

Ett heltal eller float konverteras till en sträng, representerad av ett tal som består av dess siffror (inklusive exponenten för flyttal).

Arrayer konverteras alltid till strängen "Array", så du kan inte visa innehållet i en array med echo() eller print() för att se vad den innehåller. För att se ett enskilt element måste du göra något som echo $arr["foo"]. Se nedan för tips om hur du visar/visar allt innehåll.

Objekt konverteras alltid till strängen "Objekt". Om du vill skriva ut värdet på en objektmedlemsvariabel för felsökningsändamål, läs följande stycken. Om du vill få klassnamnet för det obligatoriska objektet, använd get_class() .

Resurser konverteras alltid till strängar med strukturen "Resource id #1", där 1 är det unika resursnumret som tilldelats den av PHP vid körning. Om du vill få resurstypen, använd .

NULL konverteras alltid till den tomma strängen.

Som du kan se ovan ger utmatning av matriser, objekt eller resurser dig ingen användbar information om själva värdena. Ett bättre sätt att skriva ut värden för felsökning är att använda funktionerna print_r() och var_dump().

Du kan också konvertera PHP-värden till strängar för beständig lagring. Denna metod kallas serialisering och kan göras med funktionen serialize() . Dessutom, om din PHP-installation har WDDX-stöd, kan du serialisera PHP-värden till XML-strukturer.

Konvertera strängar till tal

Om strängen känns igen som ett numeriskt värde, bestäms det resulterande värdet och typen enligt följande.

En sträng kommer att kännas igen som en flytande om den innehåller något av tecknen ".", "e" eller "E". Annars kommer det att definieras som ett heltal.

Värdet bestäms av början av strängen. Om raden börjar med ett giltigt numeriskt värde kommer det värdet att användas. Annars blir värdet 0 (noll). Ett giltigt numeriskt värde är en eller flera siffror (som kan innehålla en decimalkomma), eventuellt föregås av ett tecken, följt av en valfri exponent. Exponenten är "e" eller "E" följt av en eller flera siffror.

$foo = 1 + "10.5"; // $foo är en float (11.5) $foo = 1 + "-1.3e3"; // $foo är en float (-1299) $foo = 1 + "bob-1.3e3"; // $foo är ett heltal (1) $foo = 1 + "bob3"; // $foo är ett heltal (1) $foo = 1 + "10 små grisar"; // $foo är ett heltal (11) $foo = 4 + "10.2 små grisar"; // $foo är en flöte (14.2) $foo = "10.0 grisar " + 1; // $foo är flytande (11) $foo = "10.0 grisar " + 1.0; // $foo är flytande (11)

För mer information om denna konvertering, se avsnittet om strtod(3) i Unix-dokumentationen.

Om du vill testa något av exemplen i det här avsnittet kan du kopiera och klistra in det och följande rad för att se vad som händer:

Echo "\$foo==$foo; typ: " . gettype($foo) . "
\n";

Förvänta dig inte att få koden för ett tecken genom att konvertera det till ett heltal (som du till exempel kan göra i C). För att konvertera tecken till sina koder och tillbaka, använd ord() och




Topp