Dvojni narekovaji v php. Kakšna je razlika med enojnimi in dvojnimi narekovaji v PHP? Php uhajanje iz narekovajev

Ta kratek članek prikazuje, kako in kje uporabiti citati v PHP.

Enojni narekovaji (apostrofi) v PHP

PHP na noben način ne obdeluje nizov v enojnih narekovajih. To pomeni, da enojni narekovaji predstavljajo besedilo med njimi, kakršno je.

// Pravilen odmev "Kako je življenje?"; echo "Kako je življenje? $name"; echo "Kako je življenje?".$name; // Nepravilen odmev "Kako si? $name";

Posebni znaki v enojnih in dvojnih narekovajih

Da bi zagotovili, da se na primer tabulator (\t) razlaga kot tabulator in ne kot poševnica in črka t, morate vrstico besedila, ki vsebuje tabulator, dati v dvojne narekovaje. \' in \\ lahko uporabite samo v enojnih narekovajih. Vsa druga ubežna zaporedja (\n, \r, \$ itd.) niso dovoljena v enojnih narekovajih.

// Nepravilen odmev "Kako si?\n"; // Popravi odmev "Kako si?\n";

Če se želite izogniti dvojnim narekovajem v nizu, postavite narekovaje pred poševnico nazaj \" .

// Napačen odmev "

Kaj se dogaja?

"; // Popravi odmev "

Kaj se dogaja?

"; odmev "

Kaj se dogaja?

";

Dvojni narekovaji v PHP

Besedilo v dvojnih narekovajih se obravnava zelo različno. Na primer, spremenljivke v dvojnih narekovajih se nadomestijo z njihovimi vrednostmi. To omogoča priročno prevajanje SQL poizvedbe z uporabo dvojnih narekovajev.

$query = "VSTANI V tabelo (objava, avtor, besedilo, datum) VREDNOSTI ("$id","$author","$text","$date"");

Kakšno vrsto narekovajev naj uporabim za oblikovanje nizov – apostrofe ali klasične dvojne narekovaje?

Oglejmo si razliko med dvojnimi in enojnimi narekovaji v PHP in uporabimo primere, da ugotovimo, kdaj uporabiti katere.

Spremenljivke in ubežna zaporedja za posebne znake, ki se pojavljajo v nizih v enojnih narekovajih, niso obdelani. Nize, obdane z apostrofi, tolmač PHP obdela veliko hitreje kot podobne nize, obdane z dvojnimi narekovaji.

Razlog je preprost: tolmač PHP dodatno preveri nize v dvojnih narekovajih za prisotnost spremenljivk, in če jih najde, se namesto imena spremenljivke v niz vstavi njena vrednost. Toda vrstico, obdano z apostrofi, tolmač zazna kot običajno besedilo in PHP v teh vrsticah ne izvaja nobenih transformacij. Mislim, da je jasno, da bo obdelava nizov v enojnih narekovajih v vsakem primeru hitrejša.

Najprej opišemo, kako definiramo niz, nato pa preverimo, koliko hitrejša bo obdelava nizov v enojnih narekovajih.

Najenostavnejši način za definiranje niza je, da ga zadate v enojne narekovaje ("). Če želite uporabiti enojne narekovaje v nizu z enojnimi narekovaji, mora biti pred njimi poševnica nazaj (\), kar pomeni, da mora biti poševnica nazaj. Če mora biti poševnica nazaj pred enim narekovajem ali na koncu vrstice, ga morate podvojiti. Če poskusite ubežati kateremu koli drugemu znaku, bo natisnjena tudi poševnica nazaj.

Tukaj je primer uporabe enojnih narekovajev:
// Izhod: preprost niz
echo "Preprost niz";
// Natisne: Tukaj sem
echo "Tukaj sem";
// Izhod: To ne bo vstavilo: \n nove vrstice
echo "To ne bo vstavilo:\nnova vrstica";
// Izhodi: tudi spremenljivka $example ne bo zamenjana
echo "Tudi spremenljivka $example ne bo zamenjana"; Če je niz obdan z dvojnimi narekovaji ("), PHP prepozna več ubežnih zaporedij za posebne znake in tudi nadomesti vrednost imena spremenljivke v nizu. Tako kot pri enojnih narekovajih, če želite uporabiti dvojne narekovaje v nizu, obdanem z dvojnimi narekovajih mora biti pred njimi poševnica nazaj (\).

Tukaj je primer uporabe dvojnih narekovajev:
// Izhod: preprost niz
echo "Preprost niz";
// Rezultati: Podjetje "Snowdrop"
echo "Podjetje \"Snowdrop\"";
// Izhod: To bo pripeljalo do nove vrstice
echo "To se bo prekinilo v novo vrstico \n";
// Izhod: spremenljivka bo zamenjana
$example = "bo zamenjan";
echo "Spremenljivka $example"; Zapomniti si morate tudi, da je zaporedje "\n" (nova vrstica), "\r" (povratni začetek) za navadno besedilo, ne za HTML. Tako ne boste videli sprememb v brskalniku (samo v izvorna koda strani).

Ugotovimo, koliko hitrejši so enojni narekovaji od dvojnih. Za meritve bomo napisali kratko testno skripto, pri čemer bomo takoj opozorili, da bodo rezultati, ki so odvisni od strojne opreme vašega računalnika ali strežnika, drugačni, če jo testirate sami.
// Vrni časovni žig na začetku zanke
$start = mikročas (true);
// Ustvari zanko za 1 milijon ponovitev
za ($i = 0; $i< 1000000; $i++) {
$text = "Tukaj je niz znakov";
}
// Izračunaj porabljen čas
$time = (microtime(true) - $start); Rezultat: 0,09 sekunde.

Če enojne narekovaje zamenjamo z dvojnimi:
$text = "Tukaj je niz znakov"; Rezultat bo 0,10 sekunde.

Kot lahko vidite, je pri uporabi besedilnih nizov razlika v času izvajanja zelo majhna, lahko bi celo rekli, da je sploh ni. Zabava se začne, ko poskušamo združiti niz in spremenljivko.
$text = "Tukaj je niz znakov $i"; oz
$text = $i."Tukaj je niz znakov"; Rezultat približno: 0,27 sekunde.

Razlika je precej opazna. Združevanje in dvojni narekovaji očitno vplivajo na zmogljivost, ko so nizu dodane spremenljivke.

Ko strežnik obdela kodo, preveri vso vsebino dvojnih narekovajev za spremenljivke, konstante in drugo. Traja. In strežnik obdela tisto, kar je med enojnimi narekovaji, kot že pripravljeno besedilo in ga ne zanima, kaj je tam. Razlika med zmogljivostjo enojnih in dvojnih narekovajev je zelo majhna, a če razvijate zelo obremenjen projekt, je že nekaj prihranjenih milisekund zmaga.

Niz v PHP je nabor znakov poljubne dolžine. Za razliko od C lahko nizi vsebujejo tudi ničelne znake, kar na noben način ne bo vplivalo na program. Z drugimi besedami, nize je mogoče uporabiti za shranjevanje binarnih podatkov. Dolžina niza je omejena samo s količino prostega RAM-a.

V PHP je znak enak bajtu, kar pomeni, da je možnih točno 256 različnih znakov. To tudi pomeni, da PHP nima izvorne podpore za Unicode. Nekaj ​​podpore Unicode zagotavljajo funkcije utf8_encode() in utf8_decode() .

Niz je mogoče enostavno obdelati s standardnimi funkcijami, prav tako pa lahko neposredno dostopate do katerega koli od njegovih znakov.

Preprost primer nizovne spremenljivke:

$a= "To je samo besedilo, shranjeno v spremenljivki niza";
echo $a ; //Izpiše "To je samo besedilo, zapisano v nizovno spremenljivko"
?>

Zdaj pa si podrobneje oglejmo sintakso podatkovnega tipa. vrvica.

Sintaksa tipa niz

Niz lahko definiramo na tri različne načine.

Najenostavnejši način definiranja niza je, da ga stavite v enojne narekovaje (simbol " ).

Če želite v nizu uporabiti en sam narekovaj, mora biti pred njim, tako kot v mnogih drugih jezikih, poševnica nazaj ( \ ), tj. Če mora biti poševnica nazaj pred posameznim narekovajem ali na koncu vrstice, jo morate podvojiti. Upoštevajte, da če poskusite ubežati kateremu koli drugemu znaku, bo natisnjena tudi poševnica nazaj! Tako na splošno ni potrebe, da bi ubežali sami poševnici nazaj.

Za razliko od drugih dveh sintaks, spremenljivk in ubežnih zaporedij za posebne znake, ki se pojavljajo v nizih, zaprtih v, ne so v obdelavi.

Tukaj je primer uporabe enojnih narekovajev:

odmev "to je preprost niz";

Echo "Lahko tudi vstavite v vrstice
znak nove vrstice tako,
ker je normalno"
;

// Izhod: Arnold je nekoč rekel: "Vrnil se bom"
odmev "Nekega dne je Arnold rekel:" Vrnil se bom.;

Echo "Ste izbrisali C:\\*.*?";

// Izhodi: Ali ste izbrisali C:\*.*?
echo "Ali ste izbrisali C:\*.*?" ;

// Izhod: To ne bo vstavilo: \n nove vrstice
odmev "To ne bo vstavilo:\nnova vrstica";

// Izhodi: spremenljivki $expand in $either nista zamenjani
odmev "$expand in $either spremenljivki nista zamenjani";
?>

Če je niz v dvojnih narekovajih ( " ), PHP prepozna več ubežnih zaporedij za posebne znake:

Tabela krmilnega zaporedja:

Naknadno zaporedje Pomen
\n nova vrstica (LF ali 0x0A (10) v ASCII)
\r vrnitev v začetek (CR ali 0x0D (13) v ASCII)
\t vodoravni zavihek (HT ali 0x09 (9) v ASCII)
\\ poševnica nazaj
\$ znak za dolar
\" dvojni narekovaj
\{1,3} zaporedje znakov, ki ustreza regularnemu izrazu, znak v osmiškem številskem sistemu
\x(1,2) zaporedje znakov, ki ustreza regularnemu izrazu, znak v šestnajstiškem številskem sistemu

Ponovno si zapomnimo, da če želite mnemonizirati kateri koli drug znak, bo natisnjena tudi poševnica nazaj!

Drug način za definiranje nizov je uporaba sintaksa heredoc ("<<< "). Po<<< необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

Končni identifikator se mora začeti v prvem stolpcu vrstice. Poleg tega mora identifikator upoštevati enaka pravila poimenovanja kot vse druge oznake v PHP: vsebovati samo alfanumerične znake in podčrtaj ter se mora začeti z neštevko ali podčrtajem.

Pozor! Zelo pomembno je upoštevati, da zaključna identifikacijska vrstica ne vsebuje nobenih drugih znakov, razen morda podpičja ( ; ). To pomeni, da je identifikator in da pred podpičjem ali za njim ne sme biti presledkov ali zavihkov. Pomembno je tudi razumeti, da mora biti prvi znak pred končnim identifikatorjem znak za novo vrstico, kot ga določa vaš operacijski sistem. Na primer, v sistemu Windows® je to \r.

Če je to pravilo kršeno in zaključni identifikator ni "čist", se šteje, da zaključni identifikator manjka in PHP ga bo še naprej iskal. Če v tem primeru pravilnega zaključnega identifikatorja nikoli ne najdemo, bo to povzročilo napako pri obdelavi s številko vrstice na koncu skripta.

Heredoc-text se obnaša na enak način kot niz v dvojnih narekovajih, ne da bi jih imel. To pomeni, da vam v heredoc ni treba ubežati narekovajem, vendar lahko še vedno uporabite zgornja ubežna zaporedja. Spremenljivke se obdelujejo, vendar morate biti tako previdni pri uporabi kompleksnih spremenljivk znotraj heredoc kot pri delu z nizi.

Primer definiranja niza heredoc:

$str =<<Primer vrstice,
pokriva več vrstic,
z uporabo sintakse heredoc.
EOD;

/* Bolj zapleten primer s spremenljivkami. */
razred foo
{
var $foo ;
var $bar ;

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

$foo = novo foo();
$name = "MojeIme" ;

Echo<<Moje ime je "$name". Vnašam $foo-> foo.
Zdaj pa sklepam
( $foo -> bar [ 1 ]) .
To mora izpisati veliko črko "A":
\x41
EOT;
?>

Nisem strokovnjak za programiranje PHP, vendar sem nekoliko zmeden, zakaj vidim kodo v PHP z nizom v enojnih in včasih dvojnih narekovajih.

Vem le, da v jeziku .NET ali C, če je v enojnih narekovajih, to pomeni, da je znak in ne niz.

rešitev

Kaj morate vedeti

$a = "ime"; $b = "moj $a"; == "moje ime" $c = "moj $a"; != "moje ime"

V PHP ljudje uporabljajo enojne narekovaje za definiranje konstantnega niza, kot je "a", "moje ime", "abc xyz", medtem ko uporabljajo dvojne narekovaje za definiranje niza, ki vsebuje identifikator, kot je "a $b $c $d".

In še ena stvar je

Echo "moje ime";

hitrejši kot

Echo "moje ime";

Odmev "moj" . $a;

počasneje kot

Echo "my $a";

To velja za druge uporabljene nize.

V PHP se besedilo v enojnih narekovajih obravnava kot vrednost niza, medtem ko bo besedilo v dvojnih narekovajih razčlenilo spremenljivke z zamenjavo in obdelavo njihove vrednosti.

$test = "spremenljivka"; echo "Pozdravljeni gospod $test"; // rezultat bi bil: Pozdravljeni gospod spremenljivka echo "Pozdravljeni gospod $test"; // rezultat bi bil: Pozdravljeni, gospod $test

Tu dvojni narekovaj razčleni vrednost, enojni narekovaj pa se obravnava kot vrednost niza (brez razčlenjevanja spremenljivke $test.)

Obe vrsti ugnezdenih znakov sta niza. Primerno je uporabiti eno vrsto ponudbe za zaključek druge vrste ponudbe. """ in """. Največja razlika med vrstami narekovajev je, da se sklice na ugnezdene identifikatorje zamenjajo znotraj dvojnih narekovajev namesto znotraj enojnih.

Niz je niz znakov. V PHP je znak enak bajtu, kar pomeni, da je možnih točno 256 različnih znakov. To tudi pomeni, da PHP nima izvorne podpore za Unicode.Nekatero podporo za Unicode zagotavljata funkciji utf8_encode() in utf8_decode().

Opomba: Ni problema, če je niz zelo velik. Omejitev glede velikosti nizov, ki jih določa PHP, praktično ni, zato ni prav nobenega razloga za skrb glede njihove dolžine.

Sintaksa

    Niz lahko definiramo na tri različne načine.

Enojni narekovaji

Najenostavnejši način definiranja niza je, da ga zadate v enojne narekovaje (znak ").

Če želite uporabiti en sam narekovaj znotraj niza, mora biti pred njim, kot v mnogih drugih jezikih, poševnica nazaj (\), tj. Če mora biti poševnica nazaj pred posameznim narekovajem ali na koncu vrstice, jo morate podvojiti. Upoštevajte, da če poskusite ubežati kateremu koli drugemu znaku, bo natisnjena tudi poševnica nazaj! Tako na splošno ni potrebe, da bi ubežali sami poševnici nazaj.

Opomba: v PHP 3 bo v tem primeru izdano sporočilo ravni E_NOTICE.

Opomba: Za razliko od drugih dveh sintaks, spremenljivke in ubežna zaporedja za posebne znake, ki se pojavljajo v nizih z enojnimi narekovaji, niso obdelani.

Echo "to je preprost niz"; echo "Tako lahko v nize vstavite tudi znak za novo vrstico, kot je normalno"; // Izhodi: Arnold je nekoč rekel: "Vrnil se bom" echo "Arnold je nekoč rekel: "Vrnil se bom""; // Izhodi: Ali ste izbrisali C:\*.*? echo "Ali ste izbrisali C:\\*.*?"; // Izhodi: Ali ste izbrisali C:\*.*? echo "Ali ste izbrisali C:\*.*?"; // Izhodi: To ne bo vstavilo: \n nove vrstice echo "To ne bo vstavilo: \n nove vrstice"; // Izhodi: spremenljivki $expand in $either nista zamenjani echo "Spremenljivki $expand in $either nista zamenjani";

Dvojni narekovaji

Če je niz v dvojnih narekovajih ("), PHP prepozna več ubežnih zaporedij za posebne znake:

Tabela 11-1. Ubežna zaporedja

Ponavljamo, če želite mnemonizirati kateri koli drug znak, bo natisnjena tudi poševnica nazaj!

Toda najpomembnejša lastnost nizov z dvojnimi narekovaji je obravnavanje spremenljivk. Glej več podrobnosti: obdelava nizov.

Heredoc

Drug način za definiranje nizov je uporaba sintakse heredoc ("

Končni identifikator se mora začeti v prvem stolpcu vrstice. Poleg tega mora identifikator upoštevati enaka pravila poimenovanja kot vse druge oznake v PHP: vsebovati samo alfanumerične znake in podčrtaj ter se mora začeti z neštevko ali podčrtajem.

Pozor

Zelo pomembno je upoštevati, da zaključna identifikacijska vrstica ne vsebuje nobenih drugih znakov, razen podpičja (;). To pomeni, da identifikator ne sme biti zamaknjen in da pred ali za podpičjem ne sme biti presledkov ali zavihkov. Pomembno je tudi razumeti, da mora biti prvi znak pred končnim identifikatorjem znak za novo vrstico, kot ga določa vaš operacijski sistem. Na primer, v sistemu Macintosh je \r.

Če je to pravilo kršeno in zaključni identifikator ni "čist", se šteje, da zaključni identifikator manjka in PHP ga bo še naprej iskal. Če v tem primeru pravilnega zaključnega identifikatorja nikoli ne najdemo, bo to povzročilo napako pri obdelavi s številko vrstice na koncu skripta.

Heredoc besedilo se obnaša enako kot niz v dvojnih narekovajih, ne da bi jih bilo. To pomeni, da vam v heredoc ni treba ubežati narekovajem, vendar lahko še vedno uporabite zgornja ubežna zaporedja. Spremenljivke se obdelujejo, vendar morate biti tako previdni pri uporabi kompleksnih spremenljivk znotraj heredoc kot pri delu z nizi.

Primer 11-2. Heredoc primer definicije niza

$str =<<foo = "Fuj"; $this->bar = array("Bar1", "Bar2", "Bar3"); ) ) $foo = novo foo(); $name = "MojeIme"; odmev<<foo. Zdaj izpišem ($foo->bar). To bi moralo izpisati veliko črko "A": \x41 EOT;

Opomba: Podpora za Heredoc je bila dodana v PHP 4.

Ravnanje s spremenljivkami

Če je niz definiran v dvojnih narekovajih ali z uporabo heredoc, se spremenljivke v njem obdelajo.

Obstajata dve vrsti sintakse: preprosta in zapletena. Preprosta sintaksa je lažja in priročnejša. Omogoča obdelavo spremenljivke, vrednosti polja ali lastnosti objekta.

Kompleksna sintaksa je bila predstavljena v PHP 4 in jo je mogoče prepoznati po zavitih oklepajih, ki obkrožajo izraz.

Preprosta sintaksa

Če tolmač naleti na znak za dolar ($), zgrabi čim več znakov, da tvori veljavno ime spremenljivke. Če želite podati konec imena, ime spremenljivke zapičite v zavite oklepaje.

$pivo = "Heineken"; echo "Okus $piva je odličen"; // deluje, """ je neveljaven znak za ime spremenljivke echo "Popil je nekaj $piva"; // ne deluje, "s" je veljavno ime spremenljivke echo "Popil je nekaj $(piva)s"; // deluje echo "Popil je nekaj ($piva)"; // deluje

Element niza (matrika) ali lastnost predmeta (objekt) je mogoče obdelati na enak način. V matričnih indeksih oglati oklepaj (]) označuje konec definicije indeksa. Za lastnosti objektov veljajo enaka pravila kot za preproste spremenljivke, čeprav jih ni mogoče pretentati, kot so s spremenljivkami.

// Ti primeri govorijo posebej o uporabi nizov znotraj // nizov. Zunaj nizov vedno vstavite ključe nizov vaše // matrike v narekovaje in jih ne uporabljajte zunaj nizov (oklepajev). // Pokažimo vse napake error_reporting(E_ALL); $fruits = array("strawberry" => "rdeča", "banana" => "rumena"); // Deluje, vendar upoštevajte, da deluje drugače zunaj navedenega niza echo "Banana je $fruits."; //Deluje echo "Banana je ($fruits["banana"])."; // Deluje, vendar PHP, kot je opisano spodaj, najprej išče // banano konstanto. echo "Banana je ($sadje)."; // Ne deluje, uporabite zavite oklepaje. To bo povzročilo napako pri obdelavi. echo "Banana je $fruits["banana"]."; // Deluje echo "Banana je " . $fruits["banana"] . "."; // Deluje echo "Ta kvadrat je $square->width metrov širok."; // Ne deluje. Glejte zapleteno sintakso za rešitev. echo "Ta kvadrat je širok $square->width00 centimetrov.";

Za vse, kar je bolj zapleteno, morate uporabiti zapleteno sintakso.

Kompleksna (kodrasta) sintaksa

Zapleteno se imenuje ne zato, ker je težko razumljivo, ampak zato, ker omogoča uporabo zapletenih izrazov.

Pravzaprav lahko v vrstico s to sintakso vključite katero koli vrednost, ki je v imenskem prostoru. Izraz preprosto napišete na enak način, kot bi ga izven vrstice, in ga nato vstavite v ( in ). Ker ne morete ubežati "(", bo ta sintaksa prepoznana le, če $ takoj sledi (. (Uporabite "(\$" ali "\($" za umik "($")). Nekaj ​​ilustrativnih primerov:

// Pokažimo vse napake error_reporting(E_ALL); $great = "fantastično"; // Ne deluje, izpisalo bo: This is (fantastic) echo "To je ($great)"; // Deluje, rezultat bo: To je fantastično echo "To je ($super)"; echo "To je $(super)"; // Deluje echo "Ta kvadrat je širok ($square->width)00 centimetrov."; // Deluje echo "To deluje: ($arr)"; // To je neveljavno iz istega razloga, kot je $foo neveljaven zunaj // vrstice. Z drugimi besedami, to bo še vedno delovalo, // toda ker PHP najprej išče konstanto foo, // vrže napako E_NOTICE (nedefinirana konstanta). echo "To je narobe: ($arr)"; // Deluje. Pri uporabi večdimenzionalnih nizov vedno uporabite zavite oklepaje znotraj // nizov echo "To deluje: ($arr["foo"])"; // Deluje. echo "To deluje: ". $arr["foo"]; echo "Lahko celo napišete ($obj->values->name)"; echo "To je vrednost spremenljivke z imenom $name: ($($name))";

Dostopanje in spreminjanje znaka v nizu

Znake v nizih lahko uporabljate in spreminjate tako, da določite njihov odmik od začetka niza, začenši z nič, v zavitih oklepajih za nizom.

Opomba: zaradi združljivosti za nazaj imate še vedno možnost uporabe matričnih oklepajev za iste namene. Vendar pa je ta sintaksa od PHP 4 zastarela.

Primer 11-3. Nekaj ​​primerov nizov

// Pridobite prvi znak niza $str = "To je test."; $prvi = $str(0); // Pridobi tretji znak niza $third = $str(2); // Pridobi zadnji znak niza $str = "To je še vedno test."; $last = $str(strlen($str)-1); // Spremeni zadnji znak vrstice $str = "Poglej morje"; $str(strlen($str)-1) = "jaz";

Uporabne funkcije in operaterji

Nize je mogoče povezati z uporabo operatorja "." (pika). Upoštevajte, da operator dodajanja "+" tukaj ne deluje. Za več informacij glejte Operatorji nizov.

Obstaja veliko uporabnih funkcij za spreminjanje nizov.

Glavne funkcije so opisane v razdelku o funkcijah nizov, funkcijah regularnih izrazov za napredno iskanje in zamenjava (v dveh delih: Perl in POSIX advanced).

Obstajajo tudi funkcije za URL nize in funkcije za šifriranje/dešifriranje nizov (mcrypt in mhash).

Nazadnje, če še vedno niste našli, kar iščete, si oglejte tudi funkcije tipov znakov.

Pretvori v niz

Vrednost lahko pretvorite v niz z uporabo funkcije cast (string) ali strval(). V izrazih, kjer je zahtevan niz, se pretvorba izvede samodejno. To se zgodi, ko uporabljate funkciji echo() ali print() ali ko primerjate vrednost spremenljivke z nizom. Če v priročniku preberete razdelke Vrste in Manipulacije s tipi, bo naslednje jasnejše. Glej tudi settype().

Logična vrednost TRUE se pretvori v niz "1", vrednost FALSE pa je predstavljena kot "" (prazen niz). Na ta način lahko pretvorite vrednosti v obe smeri - iz logičnih v niz in obratno.

Celo število ali število s plavajočo vejico se pretvori v niz, ki ga predstavlja število, sestavljeno iz števk (vključno z eksponentom za števila s plavajočo vejico).

Nizi so vedno pretvorjeni v niz "Array", zato ne morete prikazati vsebine niza z uporabo echo() ali print(), da bi videli, kaj vsebuje. Za ogled posameznega elementa morate narediti nekaj takega, kot je echo $arr["foo"]. Spodaj si oglejte nasvete za prikaz/ogled celotne vsebine.

Objekti se vedno pretvorijo v niz "Object". Če želite natisniti vrednost spremenljivke člana objekta za namene odpravljanja napak, preberite naslednje odstavke. Če želite pridobiti ime razreda zahtevanega predmeta, uporabite get_class().

Viri se vedno pretvorijo v nize s strukturo "Resource id #1", kjer je 1 edinstvena številka vira, ki mu jo dodeli PHP med izvajanjem. Če želite pridobiti vrsto vira, uporabite .

NULL se vedno pretvori v prazen niz.

Kot lahko vidite zgoraj, izpisovanje nizov, predmetov ali virov ne daje nobenih uporabnih informacij o samih vrednostih. Boljši način za tiskanje vrednosti za odpravljanje napak je uporaba funkcij print_r() in var_dump().

Vrednosti PHP lahko tudi pretvorite v nize za trajno shranjevanje. Ta metoda se imenuje serializacija in jo je mogoče izvesti s funkcijo serialize(). Poleg tega, če ima vaša namestitev PHP podporo za WDDX, lahko vrednosti PHP serializirate v strukture XML.

Pretvarjanje nizov v številke

Če je niz prepoznan kot številska vrednost, se dobljena vrednost in vrsta določita na naslednji način.

Niz bo prepoznan kot lebdeči, če vsebuje katerega od znakov ".", "e" ali "E". V nasprotnem primeru bo definiran kot celo število.

Vrednost je določena z začetkom niza. Če se vrstica začne z veljavno številsko vrednostjo, bo ta vrednost uporabljena. V nasprotnem primeru bo vrednost 0 (nič). Veljavna številska vrednost je ena ali več števk (ki lahko vsebujejo decimalno vejico), pred katerimi je neobvezno znak, ki mu sledi neobvezen eksponent. Eksponent je "e" ali "E", ki mu sledi ena ali več števk.

$foo = 1 + "10,5"; // $foo je float (11.5) $foo = 1 + "-1.3e3"; // $foo je float (-1299) $foo = 1 + "bob-1.3e3"; // $foo je celo število (1) $foo = 1 + "bob3"; // $foo je celo število (1) $foo = 1 + "10 majhnih prašičev"; // $foo je celo število (11) $foo = 4 + "10.2 prašički"; // $foo je float (14.2) $foo = "10.0 prašičev" + 1; // $foo je float (11) $foo = "10,0 prašičev" + 1,0; // $foo je float (11)

Za več informacij o tej pretvorbi glejte razdelek o strtod(3) v dokumentaciji za Unix.

Če želite preizkusiti katerega od primerov v tem razdelku, ga lahko kopirate in prilepite ter naslednjo vrstico, da vidite, kaj se zgodi:

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

Ne pričakujte, da boste dobili kodo znaka tako, da jo pretvorite v celo število (kot bi lahko storili na primer v C). Za pretvorbo znakov v njihove kode in nazaj uporabite ord() in




Vrh