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

Ta kratek članek vam pokaže, kako in kje uporabiti citati v PHP.

Enojni narekovaji (apostrofi) v PHP

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

// Pravilen odmev "Kako si?"; echo "Kako si? $name"; echo "Kako si?".$name; // Napačen odmev "Kako si? $name";

Posebni znaki v enojnih in dvojnih narekovajih

Če želite na primer tabulator (\t) razlagati kot tabulatorski znak in ne kot poševnico in črko t, morate besedilni niz, ki vsebuje tabulatorski znak, dati v dvojne narekovaje. Samo \' in \\ se lahko uporabita v enojnih narekovajih. Vsa druga ubežna zaporedja (\n, \r, \$ itd.) niso dovoljena v enojnih narekovajih.

// Napačen 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 drugače. Na primer, spremenljivke v dvojnih narekovajih se nadomestijo z njihovimi vrednostmi. To omogoča priročno sestavljanje SQL poizvedbe z uporabo dvojnih narekovajev.

$query = "VSTAVITE V tabelo (objava,avtor,besedilo,datum) VREDNOSTI ("$id","$avtor","$besedilo","$datum")";

S kakšnimi narekovaji naj okrasimo nize - apostrofe ali klasične dvojne narekovaje?

Razčlenimo 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 za to je preprost: nize v dvojnih narekovajih tolmač PHP dodatno preveri za prisotnost spremenljivk, in če obstajajo, se njihova vrednost vstavi v niz namesto imena spremenljivke. Toda niz, obdan z apostrofi, tolmač zazna kot navadno besedilo in PHP v teh nizih ne izvaja nobenih transformacij. Mislim, da je jasno, da bo obdelava nizov v enojnih narekovajih vseeno hitrejša.

Za začetek bomo opisali, kako definiramo niz, nato pa bomo preverili, koliko hitrejša bo obdelava nizov v enojnih narekovajih.

Najlažji način za definiranje niza je, da ga stavite v enojne narekovaje ("). Če želite uporabiti enojne narekovaje znotraj niza, zaprtega v enojne narekovaje, mora biti pred njimi poševnica nazaj (\), to je ubežni znak. Če poševnica nazaj mora biti pred posameznim narekovajem ali na koncu niza, morate jo 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";
// Izhod: Tukaj sem
echo "Tukaj sem";
// Izhod: To ne bo vstavilo: \n nove vrstice
echo "To ne bo vstavilo: \n nova vrstica";
// Izhod: spremenljivka $example tudi ne bo zamenjana
echo "Tudi spremenljivka $example ne bo zamenjana"; Če je niz v dvojnih narekovajih ("), 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 znotraj niza, zaprtega v dvojnimi narekovaji, mora biti pred njimi poševnica nazaj (\).

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

Ugotovimo, koliko hitrejši so enojni narekovaji od dvojnih. Za meritve bomo napisali kratko testno skripto in takoj bomo opazili, 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);
// Ustvarite zanko zanke za 1 milijon ponovitev
za ($i = 0; $i< 1000000; $i++) {
$text = "Niz znakov tukaj";
}
// Izračunaj pretečeni čas
$time = (microtime(true) - $start); Rezultat: 0,09 sekunde.

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

Kot lahko vidite, je pri uporabi besedilnih nizov razlika v času izvajanja zelo majhna, lahko celo rečemo, da je sploh ni. Najbolj zanimivo se bo začelo, ko bomo poskušali združiti niz in spremenljivko.
$text = "Znakovni niz $i tukaj"; oz
$text = $i."To je niz znakov"; Rezultat približno: 0,27 sekunde.

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

Ko strežnik obdela kodo, preveri celotno vsebino dvojnih narekovajev za spremenljivke, konstante in drugo. Traja. In tisto, kar je med enojnimi narekovaji, strežnik obdela kot že pripravljeno besedilo in mu je vseeno, kaj je tam. Razlika med zmogljivostjo enojnih in dvojnih narekovajev je zelo majhna, a če razvijate zelo obremenjen projekt, potem je nekaj prihranjenih milisekund že 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 natančno 256 različnih znakov. To tudi pomeni, da PHP nima vgrajene podpore za Unicode. Nekaj ​​podpore za Unicode zagotavljajo funkcije utf8_encode() in utf8_decode() .

Niz je mogoče preprosto obdelati s standardnimi funkcijami, do katerega koli znaka v njem pa lahko dostopate neposredno.

Preprost primer nizovne spremenljivke:

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

Zdaj pa si podrobneje oglejmo sintakso podatkovnega tipa. vrvica.

Sintaksa vrste niz (nizi)

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

Najenostavnejši način za definiranje 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. zaščitite ga. Če mora biti poševnica nazaj pred enim narekovajem ali na koncu niza, 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, spremenljivka in ubežna zaporedja za posebne znake, ki se pojavljajo v nizih, zaprtih v, ne obdelan.

Tukaj je primer uporabe enojnih narekovajev:

odmev "to je preprost niz";

odmev "Prav tako lahko vstavite v vrstice
znak nove vrstice, kot je ta
ker je v redu"
;

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

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

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

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

// Izhod: spremenljivke $expand prav tako niso nadomeščene z $either
odmev "Spremenljivke $expand tudi niso nadomeščene z $either";
?>

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

Tabela za pobeg:

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 se ujema z regularnim izrazom, znak v osmiški obliki
\x(1,2) zaporedje znakov, ki ustreza regularnemu izrazu, šestnajstiški znak

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

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

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

Pozor! Zelo pomembno je vedeti, da niz z zapiralnim identifikatorjem ne vsebuje drugih znakov, razen morda podpičja ( ; ). To pomeni, da je identifikator 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 Windows® je to \r.

Če je to pravilo kršeno in zaključni identifikator ni "čist", se šteje, da zaključnega identifikatorja ni in ga bo PHP nadaljeval z iskanjem. Č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 enako kot niz z dvojnimi narekovaji, ne da bi jih imel. To pomeni, da vam ni treba ubežati narekovajem v heredocu, vendar lahko še vedno uporabite zgornja ubežna zaporedja. Spremenljivke se obravnavajo, vendar morate biti pri uporabi kompleksnih spremenljivk znotraj heredoc tako previdni kot pri delu z nizi.

Heredoc primer definicije niza:

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

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

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

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

odmev<<Moje ime je "$name". Vnesem $foo-> foo.
Zdaj grem ven
( $foo -> bar [ 1 ]) .
To bi moralo 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 samo, 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 nekaj

echo "moje ime";

hitrejši kot

echo "moje ime";

echo "my" . $a;

počasneje kot

echo "moj $a";

To velja za druge nize v uporabi.

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 v tem, da so sklice na ugnezdene identifikatorje zamenjane znotraj dvojnih narekovajev, ne znotraj enojnih narekovajev.

Niz je niz znakov. V PHP je znak enak bajtu, kar pomeni, da je možnih natanč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 v nizu, kot v mnogih drugih jezikih, mora biti pred njim poševnica nazaj (\), tj. Če mora biti poševnica nazaj pred enim narekovajem ali na koncu niza, 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 "V take nize lahko vstavite tudi nove vrstice, saj je to v redu"; // Izhod: Nekega dne je Arnold rekel, da se bom vrnil" echo "Nekega dne je Arnold rekel, da se bom vrnil""; // Izhod: Ali ste izbrisali C:\*.*? echo "Ali ste izbrisali C:\\*.*?"; // Izhod: Ali ste izbrisali C:\*.*? echo "Ali ste izbrisali C:\*.*?"; // Izhod: To ne bo vstavilo: \n a newline echo "To ne bo vstavilo: \n a newline"; // Izhod: spremenljivke $expand prav tako niso nadomeščene z $either echo "Spremenljivke $expand prav tako niso nadomeščene z $either";

Dvojni narekovaji

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

Tabela 11-1. Ubežna zaporedja

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

Toda najpomembnejša lastnost nizov z dvojnimi narekovaji je obravnavanje spremenljivk. Za več podrobnosti glejte Ravnanje z nizi.

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 enake konvencije poimenovanja kot vse druge oznake PHP: vsebovati samo alfanumerične znake in podčrtaje ter se mora začeti z neštevko ali podčrtajem.

Pozor

Zelo pomembno je vedeti, da niz z zapiralnim identifikatorjem 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čnega identifikatorja ni in ga bo PHP nadaljeval z iskanjem. Če v tem primeru pravilnega zaključnega identifikatorja nikoli ne najdemo, bo to povzročilo napako pri obdelavi s številko vrstice na koncu skripta.

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

Primer 11-2. Heredoc primer definicije niza

$str =<<foo="foo"; $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.

Obdelava spremenljivk

Če je niz definiran v dvojnih narekovajih ali s heredocom, 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 (matrika) ali lastnosti objekta (objekt).

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

Enostavna sintaksa

Če tolmač naleti na znak za dolar ($), zajame č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 veljaven znak za ime spremenljivke echo "Popil je nekaj $(piva)s"; // deluje echo "Popil je nekaj ($piva)"; // deluje

Podobno je mogoče obdelati element matrike (array) ali lastnost predmeta (object). V matričnih indeksih oglati oklepaj (]) označuje konec definicije indeksa. Za lastnosti predmetov veljajo ista pravila kot za preproste spremenljivke, čeprav zanje ni nobenega trika kot za spremenljivke.

// Ti primeri govorijo posebej o uporabi nizov znotraj // nizov. Zunaj nizov ključe nizov // matrike vedno stavite 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"]."; // echo "Banana je " deluje. $fruits["banana"] . "."; // Deluje echo "Ta kvadrat je $square->width metrov širok."; // Ne deluje. Za rešitev si oglejte kompleksno sintakso. 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, temveč zato, ker omogoča uporabo zapletenih izrazov.

Pravzaprav lahko s to sintakso v vrstico vključite katero koli vrednost imenskega prostora. Izraz preprosto napišete na enak način, kot bi ga zunaj niza, in ga nato zavijete v ( in ). Ker ne morete ubežati "(", bo ta sintaksa prepoznana le, če $ takoj sledi (. (Uporabite "(\$" ali "\($" za prikaz "($")). Nekaj ​​ilustrativnih primerov:

// Pokažimo vse napake error_reporting(E_ALL); $great = "fantastično"; // Ne deluje, izhodi: This is (fantastic) echo "This is ( $great)"; // Deluje, rezultati: 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 narobe iz istega razloga, kot je $foo napačen zunaj // vrstice. Z drugimi besedami, to bo še vedno // delovalo, toda ker PHP najprej išče konstanto foo, bo vrgel napako na ravni // 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))";

Dostop do znaka v nizu in njegovo spreminjanje

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 isti namen. Vendar je od PHP 4 ta sintaksa 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 niza $str = "Poglej morje"; $str(strlen($str)-1) = "jaz";

Uporabne funkcije in operaterji

Nize je mogoče povezati z uporabo "." (pika). Upoštevajte, da operator dodajanja "+" tukaj ne deluje. Za več informacij glejte temo 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 extended).

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 potreben niz, se pretvorba izvede samodejno. To se zgodi, ko uporabljate funkciji echo() ali print() ali ko primerjate vrednost spremenljivke z nizom. Če preberete razdelke o vrstah in manipulacijah s tipi v priročniku, 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čnega tipa v nizovni tip in obratno.

Celo število (integer) ali število s plavajočo vejico (float) 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 ugotovili, kaj vsebuje. Za ogled posameznega elementa morate narediti nekaj takega kot 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, vam izpis nizov, predmetov ali virov ne zagotovi nobenih uporabnih informacij o samih vrednostih. Bolj primeren 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 lahko izvedete 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, kot je prikazano spodaj.

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četnim delom niza. Če se niz 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 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 kodo znaka dobili 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