[Powered by Google Translate] [Oddelek 8 - Več Udobna] [Rob Bowden - Harvard University] [To je CS50. - CS50.TV] Te opombe oddelek teden se bo zelo kratek, tako da bom samo, da govorim, fantje se dogaja, da postavljajo vprašanja, in bomo poskušali napolniti toliko časa, kot je mogoče. Veliko ljudi misli, da je to pset ni nujno težak, vendar je zelo dolgo. Pset spec sam prevzame uro brati. Ponujamo vam veliko SQL lahko morebiti treba uporabiti. Mi lahko sprehodite skozi veliko tega, tako da ne bi smelo biti preveč slabo. Je kdo začel ali končal? To je zadnja pset. Oh, moj bog. Običajno je JavaScript 1 po tem, toda stvari se spreminjajo koledar naredi vse, kar je 1 teden krajši in ne bomo več imeli pset JavaScript. Ne vem, kako to vpliva, ali se bo Javascript pojavijo na izpit ali Kviz 1. Mislim, da bo nekaj takega, kar morate vedeti visoki ravni stvari o JavaScriptu, ampak dvomim, da bova samo vam ravno JavaScript kodo saj niste imeli pset v njem. Vendar pa bo to stvar za pregled kviz naslednji teden. Oddelek vprašanj. Veliko teh stvari je nekoliko slabo oblikovan, vendar bomo razpravljali, zakaj. Za razliko od C, PHP je "dinamično vnešeno" jezik. Kaj to pomeni, boste vprašali? No, da se poslovite od vseh teh char, float, int in drugih ključnih besed, morate uporabiti ob prijavi spremenljivke in funkcije v C. V PHP, je spremenljivka tipa je določena z vrednostjo, ki jih sedaj v rokah. Torej, preden vnesete to kodo v datoteko z imenom dynamic.php, PHP je dinamično vnesli. To je res. Ne strinjam se s tem, da to pomeni, da smo poslavlja od char, float, int in druge ključne besede. Razlika je med dinamično tipkal in podredno, , ki je statično vnesli, je, da dinamično tipizira vse vaše vrste preverjanja in podobno se zgodi v času izvajanja, ker statično vnesli to zgodi v času prevajanja. Beseda statična na splošno se zdi, da pomeni reči času prevajanja. Mislim, da obstajajo drugi načini za to, ampak v C, ko izjavi, statične spremenljivke, njihovo skladiščenje se dodeli v času prevajanja. Tukaj dinamično vnesli samo pomeni, da - V C, če boste poskušali dodati vrvico in celo število, ko jo pripravijo, to se dogaja, da se pritožijo, ker je hotel reči, da ne morete dodati int in kazalec. To preprosto ni veljavna operacija. To je še ena stvar, ki jo bomo obravnavali v sekundi. Ampak to je vrsta preverjanja, da se pritoži na prevajanju času, je statično preverjanje tipov. Obstajajo jezikov, kjer vam ni treba reči, char, float, int, in vse te stvari, vendar lahko povem iz jezika okviru kakšne stvari je, da naj bi se, vendar je še vedno v mirovanju tipkal. Torej, če ste vzeli 51, OCaml vam nikoli ni treba uporabiti katero od teh vrst, vendar je še vedno bo v času prevajanja rekel, da tega ne more storiti, ker ste mešanje int in niz. Dinamično vnesli samo pomeni, da nekje med vožnjo času boš dobil odgovor na pritožbo. Če ste tudi Java, preden se na splošno skoraj vse tipa C jezik se bo statično vnesli, zato so C, C + +, Java, vsi so navadno statično natipkan. V Java, ko zbere nekaj in pravite Niz je enak novo nekaj, kar ni niz, da se dogaja, da se pritožijo, ker so ti tipi pač ne ujemajo. To se dogaja, da se pritožijo v času prevajanja. Vendar pa ima tudi nekaj dinamičnega časa, stvari všeč, če poskusite, da odda nekaj s tipom, ki je bolj natančen kot sedanji tip, nič lahko storite v času prevajanja, da preveri, ali je ta zasedba bo uspelo. Java ima tudi dinamično preverjanje, da takoj, ko pride do te vrstice kode ko se je dejansko izvajanje, da se bo to litine, preverite, če je to cast je bila veljavna na prvem mestu, in če ne bi bilo, potem se dogaja, da se pritožujejo, da ste neveljavno vrsto. Dinamični tip preverjanje. Vnesite to v datoteko z imenom dynamic.php. Dynamic.php. Jaz bom to unzip oblikovanje. Imamo spremenljivko, jo nastavite na celo 7, potem bomo natisniti in ga% s - Oh, smo tiskanje na vrsto to, da gettype vrača vrsto spremenljivke. Mi smo samo tiskanje na vrsto znova in znova. Pravkar smo php.dynamic.php. Bomo videli, da se spremeni iz celega števila v niz z logičnim, kot smo šli skozi. V C ni logično vrsto podatkov, ni niz vrste podatkov. Tukaj je char * in logično samo kaže, da je int ali char ali kaj podobnega. V PHP te vrste obstajajo, in to je ena od velikih prednosti PHP nad C - da niz operacij, so neskončno lažje kot v PHP C. Samo delo. Tako smo prišli nazaj. Zmanjkalo nam dynamic.php. To pove PHP tolmača, PHP teči PHP kode v dynamic.php. Če imate kakršne koli napake v datoteki, bo tolmač vam povem! Tolmač je to še ena velika razlika med PHP in C. V C morate zbrati nekaj in potem zaženete to prevedeno datoteko. V PHP nikoli ne pripravijo ničesar. Torej tolmač PHP v bistvu samo branju tega po vrsticah. Zadene var = 7, potem udari printf potem udari var potem udari printf in tako naprej. Obstaja malo priprave to počne, in shranjuje rezultate tako da, če zaženete skript kasneje lahko narediš nekaj, ampak v bistvu je to linija uredi po liniji stvari. To pomeni, da veliko od optimizacije, da smo dobili v C, kot prevajanje, saj je samo na splošno prevajalnik lahko naredite veliko trikov za vas. To lahko traja od neuporabljenih spremenljivk, lahko to storite vse te vrste stvari, to lahko storite rep rekurzijo. V PHP ne boš, da se da prednost saj je le, da bo za začetek izvršitve po vrsticah z vrvico, in v resnici ne priznajo te stvari tako enostavno saj ni 1 velika zbirka izkaznica nad stvarjo in nato izvedba; to je samo po vrsticah. Tako, da je tolmač. Nazaj na naši dinamično tipkanje: kul, kaj? Vi zagotovo ne bi mogla v C! Zdaj vidim, če lahko ugotovimo tip vsake od naslednjih vrednosti. Oglejte si to za referenco. Tako 3.50. Kakšne vrste misliš, da bo še? Tu so vrste, ki jih imamo. Imamo bools, cela števila, plavajoče točk, nizi, nizi, predmeti, in nato sredstva, ki jih je malo nejasen. Mislim, da je dejansko primer tukaj. Potem je tu še NULL. NULL je posebna vrsta. Za razliko od C, če je le NULL kazalec z naslovom 0, v PHP, NULL je svojo vrsto, kjer je edina stvar, ki veljajo za ta tip je NULL. To je veliko bolj uporaben za preverjanje napak. V C, kjer smo imeli ta problem, kjer, če se vrne NULL, to pomeni, da ste vrne NULL NULL kazalec ali uporabo, ki označuje napako ali vse te zmede smo imeli na enem mestu. Tukaj se vračamo NULL običajno pomeni napako. Veliko stvari tudi vrne false za napake. Toda točka je NULL tipa, edina stvar NULL NULL tipa. Nato je kot klic lahko določite nekaj anonimnih funkcij. Saj ni treba, da bi funkcijo, ime, vendar pa vam ne bo treba ukvarjati s tem tukaj. Če pogledamo na vrste, ki jih ne pričakujemo, da bi vedeli, Kaj misliš, da je tip 3,50 je? >> [Študent] Float. Ja. Torej tukaj, kaj misliš, da je tip je to? >> [Študent] Array. Ja. Prvi je bil plovec, drugi pa je matrika. Vedite, da je ta matrika ne kot niz C če imate indeks 0 ima neko vrednost, indeks 1 ima neko vrednost. Tu so indeksi so a, b in c ter vrednosti 1, 2, in 3. V PHP ni razlike med asociativni niz in le periodično razporejenimi kot bi si mislili o njej C. Obstaja samo to, in pod pokrovom redno matrika je samo asociativno polje kjer je 0 zemljevidi do neke vrednosti enak način, kot se preslika v neko vrednost. Zaradi tega lahko PHP je zelo slabo za res hitre kode / benchmarking stvari ker je v C, ko boste uporabljali niz veste, da dostop do člana konstanten čas. V PHP dostop član je, kdo ve, koliko časa? Verjetno je konstantna, če jih hashes pravilno. Kdo ve, kaj se je v resnici počne pod pokrovom? Res je treba gledati z izvajanjem da vidite, kako se bo ukvarjal s tem. Torej fopen. Mislim, da sem kaj je samo PHP priročnik fopen pogled na povratni tipa. Vidimo tukaj lahko pogledate precej nobene funkcije v PHP navodil in to je nekako med človekom strani PHP. Vrnitev vrsta se bo vir. Zato sem ga pogledal, ker nismo zares določiti vir. Zamisel vira, C si nekako dobil FILE * ali karkoli; v PHP vir je vaš FILE *. To je tisto, kar boš bral od tega, kaj boš pisal, da. To je običajno zunanja, tako da je vir lahko potegnite stvari iz in metati stvari. In končno, kaj je tip NULL? >> [Študent] NULL. Ja. Torej, edina stvar, ki je NULL NULL. NULL NULL. Ena od značilnosti sistema vrsti PHP (za boljše ali slabše) je njena sposobnost, da Manipulirati vrst. Ko pišete kode PHP, ki združuje vrednosti različnih vrst, PHP bo poskusil narediti smiselno stvar. Preizkusite vsako od naslednjih vrstic kode PHP. Kaj se natisne? Je to tisto, kar ste pričakovali? Zakaj ali zakaj ne? To dejstvo pa je, kaj je PHP naredi tisto, čemur pravimo slabo natipkan. Šibko in močno vnesli tipkajo, obstajajo različni načini uporabe teh izrazov, vendar je večina ljudi uporablja šibko in močno vnesli vnesli pomeni to reč če ("1" + 2), ki deluje. V C, da ne bi delovalo. Lahko si predstavljate, to ne deluje. Veliko ljudi pomešajo dinamično tipkanje in šibko tipiziranje in statično tipiziranje in močno tipiziranje. Python je še en primer jezika, ki se dinamično vnesli. Lahko vrgel okrog tipov iz spremenljivk in to se dogaja, da ugotovi, v času izvajanja o napakah checkings. V Python, da bo za izvedbo tega pa bo videl ("1" + 2); in to ne zato, ker pravi, da ne morete dodati vrvico in celo število. V PHP, ki je prav tako dinamično vnesli, to ne bo uspelo. Šibka tipkanje ima opraviti z dejstvom, da je stvari s tipi da ne res smiselno, nujno. Torej ("1" + 2), lahko si predstavljam, da je biti niz 12, lahko si predstavljam, da bi bilo niz 3, Lahko si predstavljam, da bi bilo celo 3. To ni nujno dobro opredeljeno, in smo verjetno bo tukaj vidim da ko smo natisniti ("1" + 2), to je verjetno, da bo na koncu pa različne kot tisk (1 + "2"). In to zna biti po mojem mnenju na slabše. Tukaj lahko poskusite teh. Še en mali trik PHP je, vam ni treba dejansko napisati spis. To so pa zaženite ukazni način. Tako php-r, potem lahko vržemo v ukaz tukaj: "Print ('1 '+ 2)," in jaz bom vrgel v novo vrstico. Ta natisnjena 3. Videti je, da natisne 3 in je celo 3. Torej, zdaj poskusimo obratno: "Print (1 + 2"); Smo dobili 3, in se tudi bo celo 3? Resnično nimam pojma. Izgleda, da je v skladu. Nikoli obstaja možnost da bi se bilo niz 12 ali kaj podobnega ker PHP, za razliko JavaScript in Java preveč, ima ločen subjekt, pri združevanju. Spoj v PHP je pika. Torej tiskanje (1 2 ".) Se dogaja, da nam 12. To vodi v zmedo, kjer ljudje poskušajo narediti nekaj podobnega str + = kakšno drugo stvar, ki jih želite dodati na koncu njihovega vrvico, in da se bo to uspelo. Morate storiti str. = Torej, ne pozabite, združevanje v PHP je pika. Druge stvari, da poskusite: print ("CS" + 50); Povedal sem vam, da ni upanja, da bi to povzročilo CS50 saj je združevanje ni +. Kaj misliš, da se bo to končalo? Iskreno se pojma. Videti je, da je samo 50. Zato meni, da je niz, in stavim, da če smo se 123CS - Zato meni, da je v prvo postavo, poskuša prebrati celo število od njega ali številko od njega. V tem primeru se vidi 123CS. "To nima nobenega smisla, kot celo število, tako da bom samo, da razmišljajo o 123". Torej 123 + 50 se bo 173. In tu se začne ta tekst kot celo število. Ne vidim ničesar, zato je le to obravnava kot 0. Torej, 0 + 50 se bo 50. To sem ob predpostavki, da se bo nekaj podobnega. Razmišljam 99. Ja, saj bo trajalo 1. - Torej 99. Tukaj (10/7), če bi bilo to C, kaj bi to vrniti? [1] študent. >> Ja, bi bilo 1, ker 10/7 je tako, da cela 2. Celo deli za celo vrača celo število. To ne more vrniti 1 točko, da bi bilo karkoli, tako da je le, da bo vrnil 1. Tukaj tiskanje (10/7), da se bo dejansko interpretira to. In to pomeni, da če si dejansko želijo narediti celoštevilsko zaokroževanje in stvari, kot je ta, kar morate storiti, print (tla (10/7)); V C je verjetno čudno, da se lahko zanesete na celo krajšanje redno, ampak v PHP ne moreš, ker bo samodejno pretvorijo v likvidna sredstva. In potem (7 + true); kaj misliš, da se dogaja, da je? Ugibam 8, če gre za razlago prava kot 1. Videti je, da je 8. Torej, kaj smo naredili v zadnjih 10 minutah popolnoma nikoli ne bi smeli početi. Videli boste kodo, ki počne to. Ni nujno, da je tako enostavno, kot to. Lahko bi imeli 2 spremenljivk in 1 spremenljivka zgodi, da se niz in druge spremenljivke se zgodi, da bo int in nato dodajte te spremenljivke skupaj. Ker je PHP dinamično vnesli in ne bo naredil nobenega tipa preverjanje za vas in ker je to slabo tipkal in ker bo to šele avtomatsko vrgel te stvari skupaj in da bo vse samo delo, je težko celo vedeti, da mora biti ta spremenljivka niz zdaj, tako da ne bi smel dodati k tej spremenljivki, ki je celo število. Najbolje je, če je spremenljivka niz, ga shranite kot niz večno. Če spremenljivka int, ga shranite kot int večno. Če želite, da se ukvarjajo s števil in godala, lahko uporabite varsint - to Javascript. Intval. To počnem ves čas. PHP in JavaScript mešam vsemu. Torej intval vrača celo število vrednosti spremenljivke. Če se peljemo v "print (intval ('123 ')); dobite 123. Intval sam ne bo naredil pregled, za nas, da je to samo število. Priročnik PHP, obstaja le toliko funkcij na voljo, tako da tukaj mislim, da bi jo uporabil, je is_numeric prvi. Ugibam, da se vrne false. To je še ena stvar, ki jo moram iti čez je. === Torej is_numeric ('123df), da ne bi pomislil na to, kot is_numeric. V C bi morali ponoviti čez vse znake in preverite, če je vsak znak je številka ali karkoli. Tukaj is_numeric bo naredil za nas, in to je vrnil napačen. Torej, ko sem natisnil, da se natisne ničesar, tako da tukaj sem primerjavo, da bi videli, pa se zgodi, da se ne drži? In tako zdaj je tiskanje 1. Očitno se natisne 1, kot velja namesto izpisovanja res, saj res. Zanima me, če naredim print_r. Ne, še vedno pa 1. Če se vrnemo k ===, == še vedno obstaja, in če se pogovarjaš z Tommy bo rekel == je popolnoma v redu. Jaz bom rekel, da je grozno == in nikoli ne smete uporabljati. == Razlika je, da == primerja stvari če je to lahko velja tudi, če niste enakega tipa, ker === primerja stvari in ga prvič pregledi so istega tipa? Da. Ok, zdaj bom videl, če dejansko primerjati enaka. Dobiš čudne stvari, kot znaša 10 - Poglejmo kaj piše. Torej, ('10 '== '1 E1); To vrne true. Ima kdo kakršne koli ugibanja, zakaj je ta vrne true? Ne gre samo za to. Mogoče je to namig. Ampak, če spremenim, da je f - to darn! Držim z uporabo dvojne narekovaje. Razlog dvojne navednice so kričiš name, ker sem dal to v dvojnih narekovajih. Tako sem lahko pobegniti v dvojne narekovaje tukaj, ampak enojnih narekovajih lažje. Torej, ('10 '== '1 F1 «), ne pa tiskati res. ('10 '== '1 E1); natisne res. [Študent] Ali je čarovnica? >> To ni čarovnica, ampak je blizu, da je kot - 1e1, znanstveni zapis. Priznava 1e1 kot 1 * 10 ^ 1 ali karkoli. Tisti, ki so enake cela števila. Če tega ne storimo === potem se dogaja, da je lažna. Pravzaprav ne vem, če bomo kaj == (10 in '10abc ');? V redu. Torej, to je res. Torej, ravno tako, kot si (10 + '10abc "), in da bi bilo 20, tukaj (10 == '10abc "); je res. Še huje, so stvari, kot so (napačno == NULL); velja ali (napačno == 0); je res (false == []); Obstajajo čudna primeri - To je eden tistih čudnih zadev. Obvestilo, da je (napačno == []), je res. ('0 '== False); je res. ('0 '== []), Je napačen. Torej == nikakor prehodni. lahko enak b in je lahko enaka c, a b morda ne bo enaka c. To je odvratno z mano, in morate vedno uporabljati. === [Študent] lahko naredimo! == Tudi? >> [Bowden] Da. Enakovredna bo! = In! ==. To je pravzaprav odraščali v pset spec kjer je veliko vrnitev funkcij - Navodilo za PHP je dobro o tem. To postavlja v veliki rdeče polje "To bo vrne false, če je do napake." Toda vrnitev 0 je popolnoma smiselno stvar vrniti. Pomislite na vse funkcije, ki naj bi se vrnili celo število. Recimo, da je ta funkcija naj bi prešteti število vrstic v datoteki, ali kaj podobnega. V normalnih okoliščinah se boste peljali to funkcijo datoteko in to se dogaja, da se vrnete celo število, ki predstavlja število linij. Torej, 0 je popolnoma sprejemljivo število, če je datoteka samo prazna. Kaj pa, če se boste peljali to neveljavno datoteko in funkcija se zgodi, da vrne false če se boste peljali to neveljavno datoteko? Če si naredil == niste razlikovanje z zadevo med neveljavne datoteke in prazno datoteko. Vedno uporabljajte. === To je vse,. V PHP array tip je drugačen od tistega, ki smo ga vajeni v C. Seveda, ste morda že opazili, je to predvsem, ko ste videli, da je to niz tipa. Nosilec sintaksa je nova, kot PHP 5.4, ki je najnovejša različica PHP. Pred tem si vedno moral napisati niz ("" -> 1, 'b' -> 2. To je bil gradbenik za matrike. Zdaj je končno prišel okrog PHP na lepo sintakso samo nedorečena, , ki je prav tako veliko bolje kot array. Toda če upoštevamo PHP 5.4 je najnovejša različica, boste lahko naletijo na kraje, ki nimajo niti PHP 5.3. Čez poletje smo naleteli na to vprašanje, če je PHP 5,3, kar smo imeli na napravi, vendar pa je strežnik, ki smo uvedli vse naše redovalnice in predložiti in vse te stvari, da je PHP 5.4. Ne da bi vedel to, smo razvili v 5,3, potisnjene na 5,4, zdaj pa kar naenkrat nič našega dela kode ker se je zgodilo, da so bile spremembe med 5,3 in 5,4 ki niso združljive nazaj, in moramo iti in popraviti vse naše stvari, ki ne delajo za PHP 5.4. V tem razredu, saj ima naprava PHP 5.4, je popolnoma v redu za uporabo oglatih oklepajev. Ampak, če ste gledal stvari po internetu, če ste gledal neke vrste stvari diod je najbolj verjetno, da boste videli urok iz diod konstruktor sintakso, ker da je bilo od leta PHP je bil rojen in je oglati oklepaj sintaksa je bila približno za zadnjih nekaj mesecih ali kadar je prišel okoli 5,4. To je, kako indeks. Tako kot v C, kako bi kazalo oglati oklepaji, kot $ niz [0], $ array [1], $ array [2], Indeks se na enak način, če se zgodi, da so vaši indeksi pa strune. Torej $ array [''] in $ array ['b']. $ Array [b]. Zakaj bi to bilo narobe? To bo verjetno ustvarila opozorilo, vendar še vedno deluje. PHP skuša narediti. To kaže, da le: "Jaz bom vas opozoriti na to, ampak bom samo nadaljuj "In storiti vse, kar sem lahko." To bo verjetno prevedi to v niz, vendar je možno, da na neki točki v preteklosti nekdo rekel, define b, da je "Hello World". Torej, zdaj bi b biti konstantna in $ array [b] bo dejansko delal "Hello World". Mislim, da na tej točki, ali vsaj naši PHP nastavitve, Če boste poskušali indeks v matriki, in da ključ ne obstaja, bo propadel. Ne verjamem, da bo samo opozoril. Ali pa vsaj lahko nastavite tako, da ne samo vas opozoriti, da je samo naravnost ne. Tako lahko preverite, ali je dejansko tak indeks isset. Tako bo isset ($ array ['Hello World']) vrne false. isset ($ array ['b']) se bo vrnil res. Lahko mešanje teh syntaxes. Sem prepričan, kaj to polje bi na koncu pa je - Lahko ga preizkusiti. Oh, potrebujem PHPWord. To je mešanje sintakso, kjer ste ga določili, kaj je ključ in ne določajo, kaj je ključ. Torej, tukaj je 3 vrednosti. Ti niso izrecno povedal, kaj je njegov ključni bo. Kaj misliš, da je njegov ključni bo? [0] študent. >> Ugibam 0 samo zato, ker je prvi, ki smo jih ni določena. Mi lahko dejansko narediti nekaj takih primerov. Torej print_r je tiskanje rekurzivno. To bo izpisal celoten niz. To bi natisniti subarrays iz niza, če je bilo vse. Torej print_r ($ array); php.test.php. To ne izgleda kot ji je dal 0. Tam je dejansko nekaj imeti v mislih, ampak bomo prišli nazaj na to v sekundi. Kaj pa, če bi se zgodilo, da bi to kazalo 1? PHP ne dela razlik med niza indeksov in cela indeksov, Tako na tej točki sem že opredelili indeks 1 in sem lahko oboje $ array [1] in $ array ['1 '] in bo isti indeks in isti ključ. Torej, zdaj, kaj misliš 3 se bo? >> [Študent] 2. >> [Bowden] Ugibam 2. Ja. To je 2. Kaj, če bi to naredil je 10, to je za 4? Kaj misliš, indeks 3 se bo? Razmišljam 11. Mislim, kaj počne PHP - in mislim, da sem videl že prej - je to le beleži kar najbolj številčna Indeks je uporabljena doslej. To se ne bo nikoli dodeliti niz indeks 3. Vedno bo številčna indeks. Torej sledi najvišjim 1 to je dodeljena delu, ki se zgodi na 10, in to se dogaja, da 11-3. Kaj sem rekel prej, opazili, kako je to vrsto tiska. To natisne ključa 10, točko 4, ključ 11, ključ d. Ali celo naredimo - Mislim, da nisem dal 0, vendar je tiskanje 1, 2, 3, 4. Kaj če začnem tukaj? Ali kaj je dejansko izbrati te 2. Zdaj se natisne 2, 1, 3, 4. Nizi PHP ni tako kot vaš redni hash tabele. To je popolnoma smiselno razmišljati o njih, kot hash tabele 99% časa. Toda v vašem hash tabele nima smisla v vrstnem redu, v katerem so bile vstavljene stvari. Torej takoj, ko ga vstavite v vaš hash tabele, Predvidevam, da ni povezan seznam in ga lahko sodnik v povezanem seznamu ki je bil prvič vstavljena. Ampak tukaj vstavi 2 1. in ve, kdaj se tiskanje te nizom, 2 na prvem mestu. Ni ga natisnite samo v poljubnem vrstnem redu. Tehnični podatki struktura, ki jo je z uporabo je odredil zemljevid, tako da preslika ključe z vrednostmi in si zapomni vrstni red, v katerem so bili vstavljeni te ključe. V bistvu je to za nekatere zaplete, ko se počutiš neprijetno, da dejansko - Recimo, da imate vrsto 0, 1, 2, 3, 4, 5 in želite, da iz indeksa 2. Eden od načinov za to početje, pa poglejmo, kaj to izgleda. 0, 2, 1, 3, 4. Izklopi se zgodi, da nenastavljen obeh spremenljivk in matrične indeksov. Torej unset ($ array [2]); Zdaj, kaj bo to videti? 2 je pravkar šla, tako da je popolnoma v redu. Več nadležno je, če želite, da se stvari dejansko kot matriko. Jaz bom dal naključnih številk. Zdaj opazil moje indeksov. Želim, da se samo kot matriko C, če gre od 0 do dolžine - 1 in sem lahko izbirate nad njim kot take. Vendar pa takoj, ko sem nenastavljen drugi indeks, kar je bilo v indeks 3, ni postal indeks 2. Namesto tega preprosto odstrani, da je indeks, zdaj pa imaš 0, 1, 3, 4. To je popolnoma smiselno. To je samo siten in kar morate storiti, stvari, kot je spoj diod. Ja. [Študent] Kaj bi se zgodilo, če bi imeli za zanko in si želel iti čez vse elemente? Ko je zadel 2, bi prinesla kdaj? Ponavljanjem v matriko. Obstajata 2 načina, kako lahko to storite. Lahko uporabite za redne zanke. To je še en Zamršenost PHP. Večina jezikov, bi rekel, neke vrste dolžine ali dol ali kaj podobnega označuje dolžino niza. V PHP je število. Torej, count ($ array); $ i + +) Reciva print ($ array [$ i]); Opozorilo: Undefined offset: 2. To je le, da bo uspelo. To je razlog, da je za večino del, vam nikoli ni treba ponoviti čez niz, kot je ta. Morda bi bilo pretirano, vendar vam nikoli ni treba ponoviti čez niz, kot je ta ker PHP ponuja svoje foreach sintakso, kjer foreach ($ $ kot matrično točka). Zdaj, če želimo natisniti ($ točka), - Bomo o tem razpravljali v drugi -, ki deluje popolnoma v redu. Tako, da foreach deluje, je prvi argument je niz, ki ste ponavljanjem več. In drugi argument, element z vsako izkaznici za zanke to se dogaja, da se na naslednjo stvar v matriki. Torej, ne pozabite matrika naročila. Prvič skozi zanko, točka bo še 123 potem bo 12 potem bo 13 potem bo 23 potem bo 213. Stvari se res čudno, ko narediš nekaj podobnega foreach. Pa poglejmo, kaj se bo zgodilo, ker si nikoli ne bi smela narediti. Kaj, če bi unset ($ array [1]); To je verjetno pričakovati. Ti ponavljanjem v tem polju, in vsakič, ko boste unsetting prvi indeks. Torej za indeks 0, je prva stvar, točka popelje na vrednost 0, tako da bo v 123. Ampak notranjost za zanke, nevezanega indeks 1, to pomeni 12 ni več. Torej tiskanje. PHP_EOL. PHP_EOL je samo vrstico, vendar je tehnično bolj prenosni od novih vrstic v sistemu Windows je drugačna od novih vrstic za Mac in Unix. V sistemu Windows newline je \ r \ n, ker povsod drugje pa kaže samo, da \ n. PHP_EOL je nastavljen tako, da uporablja ne glede na vrstico vašega sistema. Tako, da natisnete. Naj ne print_r ($ array) na koncu. Nisem vedel, da bi bilo tako ravnanje. Postavka še vedno traja na vrednost 12, čeprav smo nenastavljen 12, preden smo kdaj dobil z njim iz matrike. Ne jemljite mojo besedo za to, ampak izgleda, da foreach ustvari kopijo matrike in potem postavka prevzame vse vrednosti te kopije. Torej, tudi če spremenite vrsto znotraj zanke, za to ne bo motilo. Točka bo na prvotne vrednosti. Poskusimo ga unsetting. Kaj pa, če je to $ array [1] = "zdravo"; Čeprav smo se "zdravo" v polju, točka nikoli ne prevzame te vrednosti. Še en sintakso za foreach zanke če si dal 2 spremenljivk ločeni s puščico. Ta prva spremenljivka se dogaja, da je ključ do te vrednosti, in ta druga spremenljivka se bo enako točen predmet. To je tukaj, nezanimivo, če pa gremo nazaj na naše prvotne primeru "a" -> 1, "B" -> 1, tu, če smo le ponovitev za vsako postavko matrike kot točka se bo vsak čas 1. Toda, če smo prav tako želeli vedeti ključ povezan s tem zapisu Nato naredimo kot $ ključ -> $ element. Sedaj lahko naredimo tiskanja ($ ključ. ":". Zdaj je pred ponavljanjem in tiskanje vsak ključ in z njim povezanimi vrednost. Dodatna stvar, ki jo lahko storite v foreach zanke je lahko vidite to sintakso. Ampersands pred imeni spremenljivk ponavadi kako PHP ne referenc. Če reference so zelo podobni kazalci, nimate napotke, tako da vam nikoli ne ukvarjajo s spominom neposredno. Vendar vam zgleduje po 1 spremenljivka se nanaša na isto stvar kot drugo spremenljivko. Znotraj tu naredimo $ element. Pojdimo nazaj na 1, 10. Naredimo $ element + +, ki še vedno obstaja v PHP. Še vedno lahko storite + +. php.test.php. Moram ga natisnete. print_r ($ array); Tiskamo 2, 11. Če sem pravkar naredil foreach ($ niz, kot $ točka), nato pa se bo postavka je vrednost 1 prvič skozi zanko. To bo prirastek 1-2, nato pa bomo končali. Torej bo šel skozi drugo izkaznici zanke in točka je 10. Ta postavka korakih na 11, nato pa, da je samo vrgel stran. Potem smo print_r ($ array), in da vidimo, da je to samo 1, 10. Tako je izgubil prirastek smo. Ampak foreach ($ niz kot $ & element) Zdaj ta element je enak izdelek, kot to prav tukaj. To je ista stvar. Torej $ element + + spreminja zaporedje 0. V bistvu, lahko tudi do $ K -> $ element in lahko storite $ array [$ k] + +; Torej drug način dela, da smo svobodni, da spremeni element, vendar to ne bo spremenil naš prvotni niz. Ampak, če bomo uporabili K, ki je naš ključ, potem lahko le indeks v naši matriki uporabljena ta ključ in prirastek to. To so bolj neposredno spreminja naš prvotni niz. Lahko tudi to, da če iz nekega razloga si želel možnost spreminjanja - Pravzaprav, to je povsem razumno. Nisi hotel, da bi napisal $ array [$ k] + +, si želel pisati $ element + +, vendar si še vedno želel povedati, če ($ k === '") nato prirastek element in nato natisnete portfelj. Torej, kaj bomo sedaj pričakujejo print_r storiti? Katere vrednote je treba zapisati? [Študent] 2 in 10. >> [Bowden] Samo, če je bil ključ "a" bomo dejansko natisnete to. Verjetno ste zelo redko, če sploh kdaj, bo treba opredeliti funkcije v PHP, vendar pa bi morali videti nekaj podobnega, kjer lahko določite funkcijo kot karkoli funkcijo. Ponavadi bi rekel ($ foo $ bar), nato pa določite, da je karkoli. Ampak, če bi to naredili, potem to pomeni, da ne glede na karkoli zahteva, kar zahteva Baz, tako da je prvi argument, da Baz mogoče spremeniti. Naredimo $ foo + +; in notranjost tukaj naredimo BAZ ($ točka); Zdaj smo kliče funkcijo. Ta argument se sprejme odločbe, kar pomeni, da če ga spremenite smo spremenili stvar, ki je bil posredovan noter In tiskanje to pričakujemo - če sem zamočil sintakso - imamo 2, 11, Tako je bil dejansko poveča. Obvestilo moramo referenc 2 mesti. Kaj pa, če sem to storil? Kaj to pomeni? [Študent] se bo spremenilo. >> Ja. Postavka je samo kopija vrednosti v matriki. Tako bo predmet sprememb na 2, vendar array ['a'], bo še vedno 1. Ali pa kaj, če bi to naredil? Zdaj, ko je pošiljka poslana kot kopijo Baz. Tako bo kopija trditev poveča za 2, vendar je bila novica ni nikoli poveča za 2. In točka je ista stvar kot nosilec polja karkoli, tako da je bila matrika ne poveča. Torej sta ti mesti potrebovali. PHP je ponavadi zelo pameten o tem. Morda si mislite, želim opraviti s sklicevanjem - To je dejansko vprašanje, na eni od psets. To je stvar, kjer questions.txt je dejal, Zakaj boste morda želeli prenesti ta struct s sklicevanjem? Kakšen je bil odgovor na to? [Študent] Torej nimate kopirati nekaj velikega. >> Ja. Struct lahko poljubno dolga, in ko podaš v struct kot argument je treba kopirati, da je celoten struct, da jo prenesejo na funkcijo, ker če si mimo struct s sklicevanjem potem to potrebno kopirati 4-byte naslov kot argument funkcije. PHP je malo pametnejši. Če imam funkcijo in sem mimo, da mu paleto 1.000 stvari, ali to pomeni, da se bo moral kopirati vse 1.000 od teh stvari ga posredovati v funkciji? Ni treba storiti, da takoj. Če znotraj te funkcije ni nikoli dejansko spreminja foo, tako da, če ($ foo === "zdravo") return true.; Obvestilo nikoli dejansko spremenil argument znotraj te funkcije, kar pomeni, da je ne glede na sprejet kot foo ni treba kopirati saj se ne spreminja. Torej, način dela je PHP argumenti vedno podan po referenci dokler ne boste dejansko poskušali spremeniti. Zdaj, če rečem $ foo + +, bo zdaj narediti kopijo originalnega foo in spremenite kopijo. To prihrani nekaj časa. Če se ne dotika tega veliko zbirko, se nikoli dejansko spreminja, ni treba, da bi kopijo, ker se, če se le dal ta znak pomeni, da se sploh ne da kopirati tudi če ga spremenite. To vedenje se imenuje copy-on-write. Boste videli na drugih mestih, še posebej, če ste vzeli tečaj operacijskega sistema. Copy-on-write, je precej običajno za vzorec, če vam ni treba narediti kopijo nekaj razen če se dejansko spreminja. Ja. [Študent] Kaj če bi imeli prirastek znotraj testa, Tako bi samo 1 element iz 1000 je treba spremeniti? Nisem prepričan. Mislim, da bi prekopirati celotno stvar, vendar je možno, da je dovolj pameten, da - Pravzaprav, kaj mislim, je predstavljati, da smo imeli vrsto, ki je videti takole: $ array2 = [ Potem "" indeks je matrika [1 2 3 4], in indeks "B", je matrika karkoli. Rabim vejice med vsemi od njih. Predstavljajte si, da so vejice. Potem pa "c" je vrednost 3. Ok. Zdaj pa recimo, da naredimo $ BAZ ($ array2); če BAZ ne bo to s sklicevanjem. Torej $ foo ['c'] + +; To je kot primer, kjer smo se mimo array2 kot argument potem pa se spreminja poseben indeks polja, ki jih je povečevanje. Resnično nimam pojma, kaj se dogaja, PHP storiti. To lahko enostavno naredite kopijo celotno stvar, ampak če je pametno, da bo kopijo teh tipk, kjer bo to imelo svojo posebno vrednost vendar je to še vedno opozarjajo na istem polju 1,2,3,4 in to lahko še vedno kažejo na istem polju. Jaz bom iPad. Peljemo v tem polju, kjer je to fant točk, 3, ta tip točke [1,2,3,4], Ta tip opozarja na [...] 34, Zdaj, ko smo to mimo, da bi Baz, smo se spreminja to. Če je pameten PHP, lahko samo to - Še vedno je bilo nekaj kopiranje pomnilnika, vendar če ne bi bilo te ogromne ugnezdene subarrays nam ni bilo treba kopirati teh. Ne vem, če je to, kar počne, ampak lahko si predstavljam, da s tem. To je tudi zelo velika prednost C v PHP. PHP je življenje tako veliko lažje za veliko stvari, ampak nekako se absolutno nobene ideje, kako dobro bo opravljanje ker nimam pojma, pod njim pokrovom, ko se naredi te prepise stvari, oh, da se bo konstantna izvod čas, je le, da bo do sprememb 1 kazalec se bo smešno težko linearni kopija? Kaj pa, če se ne najde prostora? Ali je potem treba zagnati zbiranje smeti, da bi dobili nekaj več prostora? In lahko zbiranje smeti traja poljubno dolgo. V K vam ni treba skrbeti za te stvari. Vsak linijo, ki jo pišete lahko precej razlog o tem, kako se bo opravljala. Poglejmo nazaj na njih. Kako lepo je, da vam ni treba ukvarjati z večimi funkcijami, povezani seznam, ali kaj podobnega? Ker je delo z večimi tabelami je tako enostavno zdaj, tukaj je zabavna puzzle delati. Odprite datoteko z imenom unique.php in v njej napisati program PHP (Znan tudi kot "scenarij"). Nagnjeni smo k temu, da jim pravimo scenariji, če si kratke stvari, ki jih vodijo v ukazni vrstici. V bistvu, vsak jezik, ki ga ne zbere vendar boste teči izvršljiv v ukazni vrstici, lahko pokličete, da izvedljivi skript. Lahko bi prav tako dobro napisati program C, ki počne to, ampak jaz ne imenujem scenarij, odkar sem jo prvič pripravijo in nato zaženite binarno. Toda ta program PHP bomo poklicati scenarij. Ali pa, če smo ga zapisali v Python ali Perl ali Node.js ali katero koli od teh stvari, mi bi jim pravimo da so vse skripte, ker ste jih vodijo v ukazni vrstici vendar jih ne zbira. Mi lahko to zelo hitro. Mi se ne boste uporabljali argv. Naj samo piha skozi to. Razpis je edinstven, napisati program. Lahko domnevamo, da bo vložek vsebuje eno besedo na vrstico. Pravzaprav bo argv je precej nepomembno za uporabo. unique.php. Prva stvar, prvič, smo želeli preveriti, če so bili smo opravili 1 ukazno vrstico argumenta. Tako kot bi lahko pričakovali argc in argv v C, še vedno imamo tiste v PHP. Torej, če ($ argc! == 2), potem se ne bom ukvarjal s tiskanjem sporočilo ali kaj podobnega. Jaz bom samo izhod koda napake 1. Tudi jaz bi mogel vrniti 1. Redko v PHP, ste v tej državi, kjer smo pri - Ponavadi si za funkcijo imenovan s funkcijo imenovan s funkcijo imenovan s funkcijo. In če gre kaj narobe in si samo želim, da zaprete vse v celoti, izstopa le konča program. To obstaja tudi v C. Če ste v funkciji, v funkciji za funkcijo v funkciji in želite samo ubil program, lahko pokličete na odhod in se bo le izhod. Toda v PHP, je še bolj redko, da smo na tej najvišji ravni. Ponavadi smo znotraj neke funkcije, zato pravimo izhod tako da se nam ni treba vrniti do 1 stvar, ki nato realizira tam je napaka tako da se vrne, če se zaveda, da je prišlo do napake. Ne želimo, da se ukvarjajo s tem, da izhod (1); vrnitev (1), v tem primeru bi bili enaki. Torej, kaj želimo odpreti želimo fopen. Argumenti so bo videti precej podobni. Želimo fopen ($ argv [1], in želimo odpreti za branje. To vrne vir, ki smo jo bomo imenovali f. To izgleda precej podobno, kot to počne C, razen nimamo povedati FILE *. Namesto tega smo pravkar rekel, $ f. Ok. Mislim, da je to tudi nam daje namig, da delujejo PHP imenom datoteke. PHP datotek. Kaj bo to storiti, je prebral celotno datoteko v array. Vi sploh ne potrebujete, da ga fopen. To bo storil za vas. Torej $ vrstice = Datoteka ($ argv [1]); Zdaj vse linije datoteki so v vrsticah. Sedaj želimo razvrstiti vrstice. Kako lahko razvrščate vrstice? Mi razvrstiti vrstice. In sedaj lahko natisnete njih ali karkoli drugega. Verjetno najlažji način je foreach ($ $ linije, kot postavka) echo $ vrstica; [Študent], ne bi sploh prečkati linije s sklicevanjem na nekaj, kar v vrste? To je, če bi se vrsta opredeljena kot neke funkcije (& $ array). Ko pokličete funkcijo, ki jo ne prenese s sklicevanjem. To je funkcija, ki jo opredeljuje kot to, da se kot referenca. To je pravzaprav, kaj je šlo narobe ko smo se vse, kar je na naših strežnikih, ko smo šli 5,3-5,4. Do 5,4, to je popolnoma razumljiva. Funkcija ne pričakuje, da ga bo kot referenca, lahko pa jo prenese kot referenca tako da, če funkcija ni zgodilo, da ga spremeni, je to še spremeni. Od 5,4, si ne bi smel narediti tega. Torej, zdaj edini način, da se boste peljali s sklicevanjem je, če funkcija izrecno ne. Če ne želite, da se ga spremeni, potem morate narediti kopijo $ = $ linije in geslo kopiranje. Torej, zdaj bodo vrstice ohraniti in kopija se bo spremenilo. php.unique.php. Mogoče sem zamočil nekaj. Nepričakovana "uredi". Tu gre za nekaj, kar počne za nas. To sploh ni tam. Obvestilo, ko ste prebrali navodilo, da je treba prvo trditev naj bi se niz in se je sprejela s sklicevanjem. Zakaj je to pritožbo z mano? Ker imam to funkcijo nekako še vedno tukaj, da ne želim. Ok, php.unique.php. Nisem dajati argument, ker nimam datoteko. To je php.unique.php na test.php. Tukaj je test.php vse natisnjene v lepo razvrščene redu. Obvestilo, da razporejene, da je nekako čudno kodno datoteke ker so vse naše prazne vrstice bodo na prvem mestu potem se dogaja, da pridejo vsi naši ravni 1 zamikov nato pa pridejo vse naše brez zamikov. Ja. >> [Študent] Torej za izvorno kodo ni bil sprejet s sklicevanjem? Je to običajno podajajo po vrednosti? [Bowden] Ko pokličete funkcijo, pa nikoli ne ugotovi, ali je bil sprejet s sklicevanjem. To je funkcija opredelitev, ki določa, ali je bil sprejet s sklicevanjem. In si ogleduje funkcijo opredelitev vrste ali pa samo pogled na to, je potrebno trditev s sklicevanjem. Torej, ne glede na to, ali želite, da jo sprejmejo glede tega ne vzemi s sklicevanjem. To spreminja zaporedje na mestu. To preprosto ni dovoljena. Ne smeš storiti tega. >> [Študent] V redu. [Bowden] To, nekako se bo trajalo linije s sklicevanjem in ga spremenite. In še enkrat, če ne želite, da narediti, da lahko narediš kopijo vrste. Tudi v tem primeru je izvod dejansko ni kopija linij. Prav tako opozarja na isto stvar, dokler ne dobi 1. spreminjati, kjer se je 1. bo dobil spremenjen razvrščanja funkcijo, kjer je, ker je kopija ob pisanju, zdaj Kopija bo treba. To lahko storite tudi to. To je drug kraj, kjer si lahko ogledate 'in' znak. Vidiš, v zanke foreach, boste lahko videli v funkcionalnih izjav, in boste videli, ko le dodeljevanju spremenljivk. Zdaj smo dosegli ničesar s tem ker je kopija in linije so dobesedno eno in isto. Lahko uporabite linije in kopirati sopomenki. To lahko naredite kopijo unset ($) in da ne nevezanega linije, ste pravkar izgubili sklicujejo na isto stvar. Tako kot te točke, zdaj proge je edini način, da lahko dostopate do črte. Vprašanja? Ja. [Študent] popolnoma off topic, vendar vam ni treba zapreti s PHP - >> Saj ne. Ok. [Bowden] Jaz bi šel tako daleč, da pravijo, da je slaba praksa, da jih zaprite. To je verjetno pretiravanje, še posebej v pisavi, pa da vidimo, kaj se zgodi, če to storim. To ni nič. Kaj pa, če sem hotel - [vzdihne] Moram opraviti argument. Streljaj. Poklicala sem se zmotil. Torej php.unique.php s trditvijo. Zdaj sploh ne potrebujemo. Bom dajati tehtnega argumenta. To, kar je natisnjen tiskanje. Jaz tiskanje in kopiranje kopije ne obstaja. Torej linije. To natisne vse, nato pa opazil, vse to sranje dol, ker se v ničemer PHP, da je zunaj PHP oznak se le, da bo treba dobesedno natisnjeni. Zato HTML, to je tako lepo, da lahko naredim div bla, bla, bla razred ali karkoli, bla, bla, bla, nato pa naredite nekaj PHP kodo in nato naredite konec div. In sedaj je ta tiskanje dobim lepo div do vrha, vse, kar PHP tiskani, div na dnu. Katastrofa, če se kaj takega zgodi, kar je precej pogosta, Samo zaiti vrstico na dnu datoteke. Saj ne bi mislil, da bo to velik posel dokler ne upoštevamo dejstvo, da z brskalniki - Kako preusmerja delo ali v bistvu vse glave dela, Ko bo vaše povezave na spletni strani in ga pošlje nazaj vse te glave in stvari kot odziv 200 ali odgovor preusmeriti ali karkoli, Glave so veljavne le, dokler se pošlje prvi bajt podatkov. Lahko preusmerite tisočkrat, vendar takoj, ko je poslala prvi bajt podatkov ne smeš ponovno preusmeriti. Če imate potepuške vrstico na dnu datoteke in recimo, da to funkcijo uporabljate in potem hočeš - Recimo, da je ena datoteka, ki je index.php in si require_once nekaj - Ne morem misliti dober primer tega. Vprašanje se zgodi, ko postane odmevalo to vrstico na dnu. Če ne želite, da kaj ni bil še odmevalo. Čeprav niste nameravali na nič dobili odmevala, ni nekaj, kar se je ponovil in sedaj si ne bi smel poslati vse več glav in boste dobili pritožb. Enostavno ne potrebujem končne oznake. Če ste načrt o tem kaj s HTML - in to je popolnoma smiselno, da to, kar tukaj div in potem na tej točki lahko ali pa ne boste mogli vključiti. To sploh ni pomembno. Toda v PHP skripte je redko, da ga zapre. Ko je vse PHP, absolutno vse, ne boste res morali zapreti / ga ne bi smeli zapreti. Ukvarjanje s strunami, je veliko lepše, kot v C. V PHP lahko določite niz z enojnimi ali dvojnimi narekovaji. Z enojnih narekovajih ne morete uporabiti "Escape" posnetkov. Nenehno pobegniti, bla, bla, bla. Torej printf je zelo redka v PHP. Mislim, da bi printf uporabite, če sem hotel narediti takšne stvari - v pset 5 se uporablja sprintf ali karkoli. Ampak hočeš 001.jpg 002.jpg in. Torej, za take stvari, kjer sem dejansko želijo oblikovati besedilo bi printf uporabo. Sicer pa bi jaz šele raba niz spoj. Nikoli nisem uporabiti printf. Midva samo razlikovanje podatke med enojnih narekovajih in dvojne kotacije. Največja razlika je, da je enojnih narekovajih, bo dobesedno natisnjeni. Ni char vrste podatkov v PHP, za razliko od C, tako da je to enakovredna. Oni oba niza. In lepo stvar o posameznih nizov citatom je lahko rečem "zdravo svet!" bla, bla, bla, $ $ Wooo. Kaj se zgodi, ko natisnete to je, da bo tiskanje dobesedno. Naj se znebite vseh naših stvari. Torej echo $ str1; To dobesedno natisnjeni vse te stvari: dolar znaki, Znak n, ki misliš, da bi bilo novih vrstic - vse te stvari tiska dobesedno. Edina stvar, ki jo morate pobegniti, so enojnih narekovajih ker drugače bi mislil, da je zapiranje apostrof. Dvojni narekovaji, popolnoma različni. Smo že videli datoteko zaznamkov nas cluing na tisto, kar je približno iti zelo narobe. php.unique. Nedoločen spremenljivka: wooo, ker se to lahko razumelo kot spremenljivko, imenovano wooo. Dvojni narekovaji vam omogoča vnos spremenljivk v - Recimo, $ ime = "Rob"; Torej echo "Zdravo, moje ime je $ ime!" Priznava, da je to spremenljivko. Ko sem teči, da - in bom vstaviti novo vrstico - Zdravo, moje ime je Rob! in zdravo svet! To je zato, ker nikoli nisem odstranil tiskanja wooo zgoraj. Tu je 1 korak naprej ne moreš storiti. $ Niz = [1, 2, 3]; Kaj, če želim, da natisnete prvo indeks niz? Saj $ array [0]. V datoteko zaznamkov je namig. Kaj je to storil? php.unique. Pozdravljeni, moje ime je 1! ki ni tisto, kar sem si želela. Sintakso poudarjanja mi je lagal. Poskusimo "" -> 1, 'b' -> 2. Tako bi moral napisati. Nepričakovana enojni narekovaj (T_ENCAPSED bla, bla, bla, bla, bla). Ideja je, da je ne priznava, da je to del niza. To ne priznava, da je to niz indeksira z dopisom a. Si želiš, da v zavitih oklepajih, in zdaj bo vse, kar je v tem oklepaja kodrasti interpolirajo, ki je beseda, ki jo uporabljajo za vstavljanje čudežno te spremenljivke v pravih mestih. Zdaj tem, php.unique in Zdravo, moje ime je 1! kot je bilo pričakovano ali Zdravo, moje ime je Rob! Ena stvar, ki je nekako lepo o enojnih narekovajih, da - Nekaj ​​stroškov za interpolacijo. Če uporabite dvojne narekovaje, tolmač mora iti čez to niz, zagotoviti, da: "Oh, tukaj je spremenljivka. Zdaj moram iti dobil to spremenljivko in jo vstavite tukaj." Tudi če ne uporabljate nobenih spremenljivk, Nič znotraj teh narekovajev treba interpolirati, vendar bo še vedno počasneje, saj je potrebno iti preko dvojne narekovaje išče stvari, ki jih je treba interpolira. Torej enojnih narekovajih lahko malo hitreje, če nič drugega je treba interpolirati, in sem se nagibajo k uporabite tudi apostrof za "Pozdravljeni, moje ime je". $ Array ['a'] anyway. To se dogaja, da so enakovredni, kar smo imeli prej. Ampak to je stvar okusa. Če uporabljate PHP, vam verjetno ne skrbi hitrosti razlike. Ni dovolj, da jih razmislite na začetku. Vse končne vprašanje? Mi dejansko sploh ne priti skozi vse to, ampak ta stvar je bila dolgočasna. Zadnja stvar, ki je nekako lepo v PHP, ko imate opravka s HTML, boste uporabljali to malo, tako da je lepo bližnjico sintakso za tiskanje spremenljivke. Ne da bi PHP tukaj, se to imenuje kratke oznake. Uradno je PHP 5.4, je zastarelo. Priporočamo vam, da dajo php. To je še vedno možna, tako kratke oznake z