[Powered by Google Translate] [Secțiunea 8] [mai puțin confortabilă] [Nate Hardison] [Universitatea Harvard] [Acest lucru este CS50.] [CS50.TV] Bine ati venit la a doua noastră de a ultima secțiune. În această săptămână vom vorbi despre PHP, iar apoi saptamana viitoare vom face un comentariu mic pentru Test 1. Vom incepe de la pagina 3 a problemei seturi de ambalaj, și vom lucra prin secțiunea de întrebări destul de repede. La pagina 3, începem să vorbim despre această diferență între C și PHP în sensul că PHP este un limbaj dinamic tastat, întrucât C este static tastat, și-a făcut cineva foarte repede orice codificare în ceva de genul PHP sau Python sau Ruby înainte, JavaScript? Cu totul nou? Bine. Toate aceste limbi pe care tocmai am menționat sunt foarte diferite de limbi, cum ar fi C și C + + si Java în sensul că, atunci când declarați o variabilă nu trebuie să declare ce fel de variabile, este, deci, în C am fost blocați în vedere spună întotdeauna acest lucru este mergi la a fi o variabila int, sau acest lucru este mergi la a fi o variabilă char *, întrucât, cu PHP, Python cu, cu Ruby, cu o mulțime de aceste limbi mai moderne nu trebuie să faci asta la toate. Tu doar să declarați variabila, iar în caz de PHP te să declare că este o variabila prin prefixarea cu un semn $, și apoi tipul de variabilă este determinat de orice valoare este holding, care este destul de mișto. Pentru a juca în jurul cu acest bit un pic, avem mostră de cod PHP chiar aici în între etichetele de început și de sfârșit. Suntem folosind acest fel de HTML, în sensul că ne-am luat aceste paranteze unghiulare aici pentru a deschide și închide. Veți vedea acest lucru cu HTML. Veți vedea același tip de sintaxa cu XML prea. Aceasta indică începutul unui bloc PHP. Acest php? Este specific PHP. Am aproape totul cu o>, precum și?. Să deschide un fișier în aparatul noastră folosind orice dorești. În acest pachet se spune pentru a apela dynamic.php. Într-adevăr, se poate numi orice dorești, dar numele fișierului va veni și să fie important mai târziu, astfel încât amintesc doar ce-ai spune. Am de gând să treacă la aparat, și am de gând să facă un director pentru Secțiunea 9 Eu cred că suntem puțin acum. Și vom merge în secțiunea 9, și am de gând să folosească gedit. Să vedem, gedit, și am de gând să sun dynamic.php mea. Boom. În cadrul dynamic.php, deoarece aceasta este un fișier PHP și vreau să rulați acest lucru prin interpret PHP Am nevoie pentru a începe totul off cu aceste tag-uri deschise, așa că am de gând să înceapă celor imediat, da eu un mic spatiu intre tag-uri, și apoi punctul de acest exercițiu a fost să se joace în jurul valorii de cu aceasta functie numita gettype, așa gettype, această funcție chiar aici. Observați că nu e nici o subliniere sau de spațiu sau cratimă sau ceva de genul asta separarea 2 cuvinte, pentru a primi și tastați, doar un singur cuvânt cu totul. Dar ce va face este dacă am trece intr-o variabila pentru a gettype, spune $ var sau $ x, acest lucru va spune-mi un fel de într-un format de depanare ce nume de acest tip este. Vom experimenta aici. În special, dacă te uiți înapoi la spec. PSET ne-am luat câteva linii diferite de cod aici. În prima linie de cod am inițializa această variabilă, $ var, să fie egal cu 7, și apoi avem această linie printf care spune hey, var printf este gol. Printf este una dintre cele mai multe moduri putem imprima lucruri în PHP. De multe ori veți vedea funcția de ecoul folosit în loc de printf, dar printf toți suntem familiarizați cu care au fost de codificare în C pentru un timp. Ce puteți face de fapt, este să vedem dacă lucrările de copiere și lipire. Am de gând să dea această un try. Ne vom întoarce pe la aparatul. Bine, și acolo vom merge. Și spațierea este un funky, pic, dar aici vom merge. Avem acest cod aici. [Student] E stilul nu este bine sa-l fila? Ne pare rău? [Student] Este convențional să-l fila? Corect, deci Sam întreabă dacă e convenție la tab-ul sau nu. De obicei da. În acest caz, am ales să nu. Sincer, veți vedea lucruri diferite printre programatori diferite. PHP este de obicei folosit de multe ori în combinație cu HTML și alte limbi, și așa, uneori, de imprimare va arata un pic funky, dacă în termen de pornire liniuță PHP și etichetele finale. Este într-adevăr depinde. În acest caz, copiere și lipire nu a lipi pe filele din pentru mine, dar cu siguranta nu, cum ai spus, face mai clară. În regulă, dacă salvați acest cod în dynamic.php atunci ce poti sa faci este coborât la fereastra terminalului dumneavoastră în cazul în care am dreptate aici în gedit, și să facă echivalentul a compila folosind facă și să fie difuzate, apoi codul în C tot ce trebuie să faci cu fișierul PHP este pornirea interpret PHP, care este un mic program numit PHP, și argumentul pe care il dați interpret este fișierul pe care doriți să interpreteze. În acest caz, dynamic.php. Hopa, în cazul în care l-am pus? Oh, am pus-o în secțiunea 9, și iată-mă aici. Asta e motivul. Acum, dacă am alerga din nou vedem că în prima invitație mea funcție gettype var este un număr întreg. În următoarea var este un șir, și apoi în al treilea var este un boolean. Ce este interesant despre acest lucru este în cazul în care ne derula înapoi, vedem că Acestea sunt tipuri asemănătoare cu cele pe care le-am avut în C. Am avut Ints în C. Am avut un fel de siruri de caractere în C, astfel siruri de caractere nu au fost un tip cu totul legitim, în sensul că șir nostru CS50 a fost cu adevărat ce? Ne pare rău? Missy? [Missy] Char *. Da, a fost acest char * am folosit. La începutul semestrului am fost folosind tipul de șir, dar a fost într-adevăr un char * sub capota. Am doar de tip a definit-o, în timp ce în PHP aceste siruri de caractere sunt un tip real. Nu e nici mai mult de acest tip de lucruri char *. Veți vedea că putem face multe lucruri mai mult cu siruri de caractere mult mai ușor în PHP decât am putea în C, și apoi în cele din urmă, avem acest tip boolean, iar diferența mare aici este că dacă ne derula în jos, vedem că numele acestor tipuri de sunt acum șir întreg, și în loc de boolean, int și bool și cum să te iau diferite limbaje de programare, presupunând că, la un moment dat în viața dumneavoastră vă va veni în contact cu cele diferite pe care le vei observa ca aceasta quirks puțin în cazul în care solicită, C Ints întregi. Unii o numesc numere întregi. Există alți termeni pe care veți rula în. Int mare am văzut azi în SQL. Există, de asemenea, numărul și apoi bool, boolean, tot felul de diferențe acolo. Acest lucru nu este teribil de interesantă, dar acum am de gând să vă dau un pic de timp- dacă ne zoom înapoi-a lucra prin intermediul acestui exercițiu, la partea de jos a paginii 3 în cazul în care se întreabă ce tipuri corespund la aceste valori aici, la partea de jos. Avem 3.50. Avem chestia asta chiar aici, ceea ce este interesant. Nu am văzut că înainte, deși, dacă ați fost în urma de-a lungul în curs probabil știți deja ce este. Apoi, avem acest lucru, care este un fel de funky. Ai recunosc acest lucru. Ce este acest lucru în C? Sam? Ce s-ar prezenta dai în C? Aceasta ar deschide un fișier numit dynamic.php și să-l fi citit. Da, și ceea ce ar fi tipul de variabile care ne-ar atribui acest fișier să stea? >>. Exact, ne-ar atribui acest lucru o stea fișier. Acest lucru este PHP legitim prea. Executați. Vezi ce se întâmplă atunci când treci asta în gettype. Și apoi, de asemenea, să verificați ce este nul, ceea ce ar putea fi în PHP. Îți dau câteva minute. Aveți posibilitatea să copiați și să lipiți literalmente aceste valori în, și apoi vom face un apel pic de aleator pe tine si vezi ce ai. [Student] Am o intrebare. << Da. Într-una din prelegerile lui David a spus că e ceva ce se poate pune la începutul fișierului dvs. astfel încât să nu trebuie să tastați în PHP de fiecare dată. Ce-a fost asta? El a fost, probabil, vorbind despre bang-ului lira, bang hash. E o directivă că, dacă marcați fișierul ca executabil apoi ceea ce face este atunci când executați fișierul se va spune programul coajă pentru a utiliza interpretorul PHP să interpreteze conținutul fișierului. Întrebarea fiind ceea ce a fost această linie specială că am putea include în partea de sus a fișierelor PHP noastre nu trebuie să includă această linie PHP, sau ori de câte ori această comandă PHP vrem să execute fișierul? Și vă puteți face de fapt acest lucru cu o grămadă de fișiere diferite. Cred că depinde de unde binarul PHP este stocat, dar de multe ori usr / bin / php este un loc bun pentru a începe. Vă puteți da seama exact de asta merge înapoi la aparatul dvs. și tastarea în care php. Comanda care figurează atunci când sunteți de executare binar sau o comandă în cazul în care fișierul corespunzător este. Acest lucru mi-a spus că PHP este într-adevăr aliasing acest fisier binar care este stocat în usr / bin, care este în cazul în care o mulțime de binare de sistem sunt instalate. De exemplu, dacă am derulați până la partea de sus, acum că l-am pus asta #! Linia aici Eu pot derula în jos, și pot încerca să fugi dynamic.php, dar am această eroare cu privire la permisiunea de a fi refuzat, și ceea ce înseamnă că este faptul că acest fișier nu este oferindu-prezent permisiunile executabile. Acesta nu este marcat ca un fișier care cineva poate rula. Când ai fugit Marca sau zăngănit și ai un executabil de la ea compilatorul a fost suficient de inteligent să știe că hei, eu sunt construirea unui executabil. Probabil, veți dori să-l execute, asa ca ar configura în mod automat permisiunile pentru tine. Acest lucru nu este cazul, deși, atunci când creați un fișier obișnuit de la zero, motivul fiind de obicei nu doriți să aveți orice fișier de pe sistemul dvs. să fie executabil, deci de fapt trebuie să mergi și să-l facă manual. Cel mai simplu mod de a face acest lucru este cu comanda chmod, și chmod + x spune adaugă biți executabil pentru că nu e pic de citire, scriere și biți biți executabil, r, w și x, și zicând: chmod + x va porni biți executabil pentru ca mai apoi fișierul pe care le specificați, care în acest caz va fi dynamic.php. [Student] este că pornit pentru toata lumea? Să verificăm acest lucru, asa cum mi-ar verifica pentru a vedea permisiunile? Știi cum aș verifica pentru a vedea permisiunile unui fișier? [Răspuns studentul neauzit] Ne pare rau >> [Student]? XSD. XSD ne dă fișierul în hacks. Enumerând toate fișierele,-l, va arata-mi toate fișierele din directorul meu un fel de listare lung în lor, prolix, și așa mai departe aici vedem că acest fișier dynamic.php Ultima modificare 05 noiembrie la ora 04:21. Proprietarul acestui fisier este jharvard. Asta e utilizatorul care este logat Asta e ghidul lucrez ca, și, de asemenea, dacă sunteți în aparatul esti, de asemenea, de lucru ca jharvard utilizator. Ești în grupul studenților, și acestea sunt lucruri pe care le veți vedea destul de des. Putem merge într-o mulțime de detalii aici, dar pentru cea mai mare parte ceea ce vrei să se uite la atunci când sunteți în căutarea pentru a vedea dacă este sau nu un fișier executabil este în primul rând este utilizatorul care deține fișierul, proprietarul, astfel încât acest jharvard, iar apoi ne-am biți permisele de aici de pe partea stângă, și modul de a citi acest lucru este faptul că ultimul bit de obicei, este utilizat pentru marcarea sau cel puțin nu-în acest caz, acest ultimul bit va fi adesea setat la anunț pentru a indica faptul că fișierul este un director și nu doar un fișier obișnuit. Atunci următoarele 3 biti chiar aici determina permisiunile pe care proprietarul fișierului are, astfel încât, în acest caz jharvard, în calitate de proprietar al fișierului, poate citi și scrie acest fișier, dar exista o linie spune că jharvard nu poate executa acest fișier. Următoarele 3 biti sunt pentru grup, astfel încât acesta este grupul studenților, așa că, dacă au existat mai mulți utilizatori de pe aparat meu, si am avut mai mulți utilizatori, ca parte a grupului studenți, atunci ei pot citi toate acest fișier, dar nu o pot scrie, și, de asemenea oricine altcineva, lumea poate doar citi acest fișier, de asemenea. Există o writeup bun, mult timp despre acest lucru, astfel încât să puteți citi on-line. În spec. set de probleme vom merge in aceasta mai în detaliu. [Student] Este 218 referindu-se la lumea? 218-off este partea de sus a capul meu mă uit, dar nu. Hai să a se vedea. Sunt decupare pe asta acum. Revenind la ceea ce am fost pe cale de a face cu acest chmod + x în cazul în care am vrut să dea permisiuni dynamic.php executabile, și întrebarea dacă a fost sau nu acest lucru ar da permisiuni executabile pentru toată lumea sau doar la jharvard, și putem vedea acest lucru prin execută comenzile și tastarea ls-l, și acum vedem că este marcat ca executabil. Veți vedea că a existat o schimbare de culoare. Acum dynamic.php este listat în verde, si se pare ca raspunsul la intrebare este ce, Charlotte? [Charlotte] Numai jharvard. >> Numai jharvard, da. Dacă am vrut să transforme bit executabil pe pentru toată lumea cum am putea face asta? Orice gânduri >> A? + X? Da, exact. Charlotte a spus putem face chmod a + x de dynamic.php, și acum, dacă vom rula ls-l vedem ca executabile biți într-adevăr, sunt pornite pentru toată lumea. Și puteți face de fapt, invers de acest lucru, astfel încât să puteți opri pentru toată lumea folosind minus. Acum este oprit, iar acum putem porni din nou pentru jharvard astfel încât să putem rula de fapt, acum, și acum voi vedea când vom rula codul de această specială #! linie la partea de sus, #! Linia, a declarat coajă, a spus terminalul nostru hei, atunci când acest fișier se execută, utilizarea / usr / bin / php pentru a interpreta acest fișier și apoi să imprimați de ieșire. [Întrebare elev neauzit] Sigur, lasă-mă să derulați înapoi. La fel ca asta. Veți vedea toate aceste directive să înceapă cu acest lire și apoi semn de exclamare, numit, uneori, o bubuitură shebang, hash. [Student] Cum putem rula cu dynamic.php php înainte de a ne face executabil? Întrebarea era cum putem rula acest lucru utilizând binarul PHP în timp ce dynamic.php nu este executabil? Acest lucru este extrem de important, deoarece acest lucru este exact modul în care o să lucreze, atunci când scrie set de probleme 7. Cele mai multe dintre fișierele de timp PHP nu sunt direct executabil. Modul în care funcționează este că este binar executabil PHP care e. Interpretul este lucru care se execută, și așa cum se face este literalmente slurping în întregul conținut de fișier nostru dynamic.php și linia merge prin linie și de executare aceste comenzi, asa ca foloseste fisierul PHP ca o listă de instrucțiuni. Nu e asta direct de executare. Asta e atunci când spunem că aceste fișiere sunt interpretate la momentul execuției. E o limba timpul de funcționare în loc de ceva care este determinat la momentul compilării, nu un limbaj compilat ca C. Există o modalitate de a obține un limbaj timpul de funcționare să acționeze ca în cazul în care este un timp de compilare limbă, ca în cazul în care aveți toate funcționare încheiat la serverul mai degrabă decât-Știi ce vreau să spun? Da, așa este întrebarea există o modalitate de a obține limbi rula timp să acționeze mai mult ca tipuri de timp de compilare de limbi? Și acolo sunt, vreau să spun, că este un domeniu activ de cercetare pentru o mulțime de aceste companii. Cred că Facebook a făcut o mulțime de lucru cu PHP și a le compila în jos, făcându-l mai rapid, optimizarea se deoarece site-ul lor este construit pe PHP. Dacă ați fost în urma node.js la toate, care este un fel de interpret JavaScript pentru a fi în măsură să ruleze JavaScript în afara browser-ului, in afara de browser-ul web, deoarece în mod tradițional JavaScript va rula doar din interiorul Firefox sau Chrome, și ar fi folosite pentru a face animații se răcească întâmpla pe o pagină Web și să facă pagina de web dinamice. Care a fost construit pe o mulțime de muncă pe care Google le-a făcut pentru a face JavaScript și C + + obligati împreună, astfel încât există o mulțime de cercetare activă a obține aceste limbi pentru a interacționa și de a optimiza le, în primul rând pentru că atât de mulți oameni pot coda in PHP si JavaScript deoarece este mult mai ușor. E mult mai frumos. Nu aveți pointeri. Nu aveți tipuri plutesc în jurul. Ei au vrut să obțină beneficiile acestor limbi timp de compilare cu toate verificarea tipul și viteza și utilizarea memoriei inferioare și toate că menținând în același timp încă flexibilitatea și ușurința de utilizare a acestor cele mai noi. Înapoi la planul nostru inițial de atac. Avem câteva dintre aceste întrebări aici, în spec. nostru set de probleme. Să mergem prin ele foarte repede, și vom merge în jurul valorii de cameră. Charlotte, ce tip este 3.50? [Charlotte] Asta e un dublu. >> E o dubla. Jimmy, ce e asta urmatoarea? >> O matrice. O matrice, minunat, și Jared, ceea ce este fopen? [Jared] E o resursă >> E o resursă.. Asta e un fel de una noua, nu o stea dosar, nu un fișier. E o resursă este de tip în PHP, și îmi pare rău, Ella, nul ultima este ceea ce? Null. Null, cum este scris în PHP? >> Fel. În același fel, capitalele >> Da. Da, în regulă. Aici mergem, avem o dublă, avem o matrice, avem o resursă, iar apoi ne-am luat nul. Să vedem acum ai văzut- hai sa vedem, asa ca acum cred ca ceea ce am, de asemenea, vreau să faceți este să trageți în sus această pagină web chiar aici, acest php.net / manual, Deci, dacă voi, care copiați și deschidă un browser web. Am de gând să trageți în sus Chrome, care a pus inch Vreau să-ți arăt asta nu doar pentru că putem vorbi toată ziua despre tipurile și toate chestiile alea amuzante ci mai degrabă pentru că aceasta este manualul PHP, și există o mulțime de programatori PHP acolo. Există o mulțime de site-uri web PHP acolo, și, ca urmare, există o mulțime de documente pe PHP, si manual, acest php.net, este un loc foarte bun pentru a merge ori de câte ori aveți întrebări despre ceea ce este cel mai bun mod de a face X în PHP sau ceea ce nu o funcție arata? Doar un fel de a obține familiarizat cu ceea ce acest lucru arata ca, deoarece veți fi venit aici de multe ori, un pic de problemă set 7. Dacă ajungi să faci un proiect final care utilizează PHP acest lucru va fi un loc care vă veți deveni foarte bine familiarizat cu. Adesea modul în care oamenii fac acest lucru este ei folosesc Google pentru a căuta site-ul, și nu utilizați caseta de căutare, care e aici, în partea din dreapta sus, care este un fel de mici. Dacă sunteți Googling în jurul valorii de ceva de-a face cu PHP și veți vedea unul din link-urile de manual de pop-up care vă puteți baza pe faptul că de obicei ca o resursă destul de bun. Minunat, astfel încât din aceste tipuri, doar din curiozitate, cele care nu am văzut? Orice nu am văzut aici? [Student] Resurse. >> Am văzut resursă cu apelul fopen. [Student] Obiecte Obiecte >> nu ne-am vazut sigur.. Callback nu am văzut. Există unele dintre aceste pseudo-tipuri. Am văzut cu siguranta doar întreg și dublu. Noi nu am vedea unele de celelalte, deci dacă ne faceți clic pe numere întregi putem vedea sunt acolo orice alte numere întregi pe care le au aici? Sunt toate-așa întreg, întreg, întreg. Unele limbi au mai mari tipuri de intregi, ca am vazut pe MySQL astăzi nu a fost int și apoi int mare. Mișto. Deci, PHP Manual. Să ne întoarcem la spec. nostru set de probleme, iar noi vom defila acum la pagina 4. Unul dintre lucrurile care se întâmplă atunci când vei ajunge aceste limbi care nu au această dactilografiere static, astfel încât aceste limbi în cazul în care va trebui să declare tipul unui front de până variabilă este veți obține cazurile în care s-ar putea începe cu variabile de diferite tipuri interacționează unii cu alții, și PHP face acest lucru în cazul în care acesta încearcă să facă ceea ce consideră a fi cel mai sensibil pentru a face cand ai 2 tipuri diferite interacționează unele cu altele. De exemplu, dacă ne uităm la aceste linii de cod aici vedeți că avem ceea ce se întâmplă atunci când vom încerca și se adaugă șir întreg de la 1 la 2. Ce se întâmplă dacă am încerca și adaugă un șir care nu este o valoare numerică ci mai degrabă personaje reale, CS la numărul 50? Apoi, vom vedea ceva diferit este faptul că se întâmplă în cazul în care în loc de a adăuga un șir de la un număr suntem adăugarea unui număr la un șir de caractere, și așa mai departe și așa mai departe până la punctul în care ne apropiem un fel de chestii ciudate chiar aici unde ne-am luat 7 + adevărat. Ce naiba înseamnă asta? Dacă voi mergeți mai departe și să lipiți o parte din acest cod în aparatul. Puteți să vă păstrați-l în dynamic.php. Vom vedea ce se întâmplă. [Student] Tocmai folosi de imprimare nu, printf? Da, astfel încât veți găsi că de imprimare este de asemenea o funcție valabil pentru imprimarea în PHP. Există multe moduri diferite de a face asta. Vom vedea, cu un cuplu de exemple mai târziu, odată ce vom începe să vorbim despre problema unica pe care vom scrie și apoi problema concentrații care am de gând să scrie că, deși avem fopen și fclose asta nu e de multe ori mai simplu mod de a citi în conținutul unui fișier. PHP are o mulțime de aceste holdovers C-ca. [Student] Când m-am pus în toate 6 din acele lucruri pe care le primesc doar un singur număr ca o ieșire. [Nate H.] Atunci când pune în toate 6 din aceste lucruri. Să vedem este ca este posibil, un lucru este faptul că aceste apeluri de imprimare nu sunt oprite de la sfârșitul cu linii noi. Nu e nici o noua linie de separare fiecare dintre aceste apeluri de imprimare, asa ca poate vei primi un număr mare, și este într-adevăr doar amalgam de personaje noi de linie. [Student] Bine, cum mă pot asigura că- Ei bine, există o mulțime de moduri diferite. Ai putea pune manual într-o imprimare de un caracter linie nouă, un ecou al unui caracter linie nouă, imprima de linie nouă. [Student] Deci ecou este același lucru ca și printf? Printf este ca C printf în cazul în care sunteți de imprimare un șir formatat. Tu le furnizează șirul de formatul și apoi toate variabilele substituente. E de multe ori ceva care nu este utilizat- hai sa vedem, ca o declarație de renunțare, Sunt mai puțin familiarizați cu PHP decât mine cu limbi de web alte, și când m-am programat în PHP de obicei nu folosesc printf pentru că mi se pare mai rapid de a utiliza capacitățile șir de interpolare pe care o are, pe care vom merge în și vă voi arăta în doar o secundă, întrucât, în C avem un fel de trebuie să facem acest lucru hacky să-l pentru a imprima în mod corespunzător. Puteți pune, de fapt variabile direct în siruri de caractere în PHP. Printf este un fel de prea mult timp pentru ceea ce fac de obicei. Da, Ella. [Ella] În general, dacă aveți eroare de analiză înseamnă asta- ca pe C nu-ți spun exact unde este greseala si ceea ce este, astfel înseamnă asta privire prin codul întreaga dvs. și dau afară? E de obicei, mai precis decât atât. Cred că, în cazul în care a fost oprit un pic, deci cred ca in acest caz am fost lipsește o virgulă. Acesta a fost încercarea de a face sens de tot, astfel ca aceste limbi interpretate, interpretul este de gând să încerce și de a face tot posibilul pentru a face munca totul în mod corespunzător. Veți vedea, de exemplu, în JavaScript veți de multe ori-line declarațiile end cu un punct și virgulă la fel cum o fac în PHP, la fel cum o fac în C. În JavaScript unele dintre interpreți JavaScript într-o mulțime de browsere va pune punct și virgulă pentru tine în dacă se întâmplă să fie le lipsesc. Vor încerca și potrivi pentru unele superficialitate din partea ta. Asta e în cazul în care acesta ar putea fi încercat și încearcă și încercarea de a face lucrurile sa mearga, și apoi în cele din urmă se va ajunge la un punct în cazul în care se spune bine, Eu nu pot face lucrurile sa mearga pe salvarea, și asta e în cazul în care veți obține un număr de linie care ar putea părea un pic off de la locul exact. Bine, asa ca hai sa trecem prin asta foarte repede. Am lăsat-o cu Ella, așa că hai să mergem pe la Missy, și Missy, ceea ce nu se imprimă șir 1 plus numărul 2 dai? [Missy] 3 >> 3.. Are vreun sens? Oarecum? Nu-l da un număr? Nu-l da un șir? [Missy] Un număr >> E un număr.. Dar e asta imprimarea, așa că o să vă dau un fel de șir. Un lucru pe care îl putem face pentru a verifica acest lucru este, dacă facem $ var = 1 + 2 și apoi spunem ecou de gettype, așa că suntem folosind un al treilea fel de tipărire aici. Acum putem vedea ce se întâmplă aici. Aici ceea ce avem este un număr întreg avem din asta. Chiar dacă am fost adăugarea acestui șir la un număr, nu am primit un șir de ea, la fel ca Missy a spus. Am fost obtinerea un număr întreg. Bine, asa ca hai sa vedem, în continuare sus, Kevin. CS + 50 >> [Kevin] 50?. [Nate H.] 50. Are vreun sens? [Kevin] Da. [Nate H.] De ce? De ce are sens pentru tine? [Kevin] Pentru că este doar având în șir, având o valoare de zero numărul. Da, grozav. Fel de situații ambigue, dar e bine să știm ce se întâmplă. Stella, ce se întâmplă în continuare cu numărul 1 + string 2? [Stella] 3 >> 3 din nou.. Și în acest caz, nu vom obține un șir sau un număr? Hai da-i o încercați. Oricine mai repede decât mă răspunsul? Charlotte? Oh, am didn't-ok, hai sa vedem, vom face același tip de lucru în cazul în care avem un număr, plus un șir, și vom ecou tipul, vedem ce putem obține. Avem, de asemenea, un număr întreg. Nu conteaza care unul este șir, care unul este numărul. Suntem încă în desfășurare pentru a obține un număr întreg. E încă în desfășurare pentru a face ceea ce ne-am putea aștepta. În regulă, deci Sam, ce zici de 90 + 9 sticle de bere pe perete? [Sam] 99 >> 99.. Nu există sticle de bere pe perete, totuși. Ea ne dă informații un pic mai mult despre ceea ce se întâmplă. [Sam] Daca ai fi scris cu litere de 9 atunci ar avea 90, nu? [Nate H.] Da. Întrebarea era dacă am fi scris ca 9 N-I-N-E ne-ar fi ajuns 99 sau 90? Ne-ar lua 90. Este literalmente în căutarea doar pentru caracterele cifre. Nu e suficient de inteligent pentru a recunoaște cuvinte și că numărul chestii. Da. [Student] Există un astfel de lucru ca typecasting în PHP? Există, și este exact modul în care ar face-o în C. Ce zici de 10/7, Charlotte? [Charlotte] 1.4285. [Nate H.] Da, deci ceea ce ar putea fi surprinzător despre asta? Ce s-ar întâmpla dacă ați făcut acest fel același lucru în C, dacă ai făcut-o 10/7 în C? [Charlotte] Aceasta ar da numai tu-în funcție de modul în care typecasted cred s-ar da doar un număr limitat de cifre după zecimală. Da, deci un număr limitat de cifre după zecimală. Ce altceva ar putea fi, l-ar da orice cifre după zecimală? De multe ori, nu, acest lucru din nou, în funcție de modul în care îl typecasting acesta poate sau nu poate să-l transforma într-un număr în virgulă mobilă. Aici a fost un fel de frumos ca acesta a facut. Dacă am arătat asta înapoi când am început să fac acest gen de lucruri în C probabil că ar fi avut sens un pic mai mult că nu merge doar la 1. Și apoi în cele din urmă, Jamie, ce zici de 7 + adevărat? [Jamie] 8. >> 8. Ce înseamnă asta? Cred că doar dă adevărata valoarea de 1. Da,. Ce se întâmplă dacă am schimba asta la fals? [Student] 7. Da, asa ca nu uita unde vorbim despre aceste valori binare, 1 fiind pe, 0 fiind oprit? Acum avem adevarata este 1, 0 este falsă, și ar putea să nu fi văzut acest lucru în exemplele C pe care le-am făcut în acest semestru trecut, dar istoric de tip bool în C nu a fost un tip real, astfel încât oamenii au folosit 0 și 1 în loc de adevărat și fals. Aceasta este o manifestare a acestei. Ok, deci o parte importantă despre toate astea este că avem aceste tipuri diferite. Ele pot interactiona unii cu alții. Ele pot interacționa adesea unul cu altul în moduri care sunt frumos, așa cum am văzut aici. E frumos să fie în măsură să aibă șir 1 și numărul 2, adăugați-le împreună și de a lua 3. Asta are sens. Cu toate acestea, atunci când scrii site-uri web, și mai ales atunci când sunteți de prelucrare introduse de utilizator, astfel încât să presupunem că ați scris un formular web care colectează informații de la utilizator și apoi se duce să-l proceseze pe partea din spate, pe partea de server în cod PHP dacă vă așteptați ca valoare pe care utilizatorul tastat și a prezentat pentru a forma dvs. pentru a fi un întreg sau să fie un număr în virgulă mobilă sau ceva de genul asta aveți nevoie pentru a arunca în mod explicit că și de a face apoi unele verificări de tip. Tu nu vrei să se bazeze doar pe acest tip de sistem de jonglerie pentru a face lucrurile să meargă afară, în special pentru motive de securitate și doar pentru robustețea site-ul tau. Doar ceva pentru a păstra în minte faptul că ori de câte ori sunteți manipularea datelor de formular, ceva care vine din post sau get superglobalele asigurați-vă că validează întotdeauna și de ao transforma și typecast-l. Și la fel ca noi vorbeam despre un moment în urmă, că typecasting în PHP este exact același ca în C, unde aveți paranteze și apoi tipul. Țineți minte asta. O funcție care va veni la îndemână atunci când faci asta este am fost folosind-și acest lucru este un fel de ca o parte- am fost folosind această funcție gettype chiar aici să dau seama de tipul unei variabile, și în timp ce acest lucru este la îndemână pentru depanare și pentru a vedea ce tip de variabila este nu doriți să utilizați acest lucru, de exemplu, într-o stare în care te de verificare pentru a vedea dacă gettype de $ var = număr întreg facem ceva. Acest lucru este rău, rău, rău. În schimb, există aceste funcții numite este întreg, este șir, este matrice pe care doriți să o utilizați în schimb, în ​​acest caz, ceea ce aș vrea să fac în loc de acest tip chiar aici este utilizarea este var întreg. Și ei adesea menționată este * is_ în sensul că ați fi putut înlocui cu * întreg, șir, et cetera, si doar pentru a asigurați-vă că într-adevăr rapid este acest lucru este int php. Se pare ca poti face, fie este int sau este nu este întreg, precum și? Da, alias, alias-uri, astfel int intregi. Mișto. Cum facem? Să ridica ritmul un pic. Acum vom vorbi despre matrice, astfel încât puteți vedea în următoarea parte a spec. vorbim despre modul matrice în PHP sunt ușor diferite decât sunt în C. Într-adevăr, ei sunt un fel de amalgam de tablouri pe care le-ați venit să cunoască și să iubească în C în cazul în care totul este de același tip stocate consecutiv și contiguously în memorie, și aveți aceste indicii numerici. Ai indicele 0, indice 1, indice 2, și să stocați valori de la aceste indicii. Puteți, de asemenea, în C, atunci când ai scris Speller, o mulțime de tine a făcut abordare tabel hash, și ați văzut că nu am avut un alt fel de stocare în cazul în care am fost cartografierea o cheie de la o valoare, astfel încât atunci când ați încercat să stocați ceva în tabel hash ai avut să se precizeze că ai vrut să-l păstrează cu o cheie specifică, și că tasta determinat locația valoare și în cazul în care ar fi stocate. Ati cam luat aceste două concepte se întâmplă în același timp, într-o matrice PHP, și, ca rezultat, de multe ori numim aceste tablouri asociative în cazul în care suntem asocierea o cheie într-o valoare. În această parte următoare vorbim despre o matrice PHP simplu în cazul în care avem cheile a, b, și c, toate siruri de caractere, cartografiere la 1 intregi, 2, și 3. Și tu poți avea chei de diferite tipuri. Puteți avea unele taste care sunt siruri de caractere, unele chei care sunt numere întregi. Puteți avea valori de diferite tipuri. Puteți avea o valoare care este un șir de caractere, o valoare care este un număr întreg, o valoare care este un obiect sau un alt tablou, de exemplu, toate în același obiect matrice, care este un fel de ciudat. Tu nu trebuie să aibă o matrice care are doar un singur tip de element în el. Puteți avea multe lucruri diferite întâmplă pe acolo. Un alt lucru de remarcat este faptul că, atunci când văd așa ceva în cod, care este PHP valabilă de a declara o matrice la fel ca asta, 0, 1, 2, 3, 4, 5, care va declara o suma initializat ARR să fie această matrice. Dar ceea ce esti de fapt, obtinerea de sub capota este acest tip de implicit generarea de chei, unde am primit 0 - 0, 1 la 1, 2 la 2, 3 la 3. Și se dovedește că, chiar dacă aveți o matrice ca pe tipul ăsta aici în cazul în care aveți o, b și c ca tastele și apoi începe să utilizați metoda de apăsare matrice pentru a începe să utilizați acest tablou ca o stivă, astfel încât să puteți vedea că acest obiect matrice, această matrice este într-adevăr deveni supraîncărcat. O putem folosi ca o matrice. O putem folosi ca un tabel hash. O putem folosi ca o stivă. Când porniți impinge lucrurile pe această matrice primul lucru pe care împinge pe acest indice va fi 0 și apoi indexul 1 și indicele 2. Puteți obține acest tip de generații implicită de taste dacă nu le precizeze în mod explicit. Modul în care specificați în mod explicit cheile, desigur, este prin utilizarea acestui suport notație, care este similar cu matrice, cu excepția în loc de doar permițându- Indicii întregi de aici, acum ne permit nimic. Dacă doriți ca cheia să fie un șir de caractere, ți-ar specifica ca acest lucru. Dacă vrei să fi un int, îl specificați cu int pe care doriți să o utilizați. Întrebări cu privire la faptul că până în prezent? Unul dintre lucrurile frumoase despre această idee este că puteți doar vreodata avea o valoare stocată cu o cheie specială. Dacă ne întoarcem pe la aparatul nostru lasă-mă să-ștergeți unele din lucrurile astea. Și să spun că am inițializa o matrice pentru a fi 0, 1, 2, făcut. Dacă Știu acum că, de exemplu, în cazul în care am echo $ arr [0] Mă duc pentru a obține valoarea 0 imprimat, și din moment ce nu poate fi decât vreodată o valoare stocată pentru o anumită cheie dacă am păstra ceva la $ arr [0], spune o, atunci știu că atunci când am echo $ arr [0] din nou Eu nu am de gând pentru a obține 0 imprimate la fel ca înainte. Mă duc doar pentru a obține o. Deci, acest lucru este practic spune că eu nu pot avea $ arr [0] păstrare 2 valori diferite. Ea nu poate stoca atât 0 și string-o, ca aceasta literalmente înlocuiește ceea ce era de la $ arr [0] anterior. Motivul pentru care am adus asta este rula, a se vedea ce se întâmplă. Vezi aici care am 0 tipărite și apoi o jos aici. Nu e nici o linie nouă acolo pentru că am fost leneș și nu am pus asta inch Ce e misto despre acest lucru este, putem folosi acest lucru ca o modalitate de pentru a capta această idee a unui set de în cazul în care nu putem avea mai multe chei în cadrul unei matrice. Nu putem avea chei identice în cadrul unei matrice. Eu nu pot avea tasta 0 și valoarea 1 și 0 și valoarea tasta o sau 0 cheie și adevărata valoare. Tastele sunt toate acolo e doar 1-cheie în matrice. Chiar dacă puteți avea aceeași valoare stocată de mai multe ori în matrice sub chei diferite nu este posibil să aibă chei identice de mai multe ori în matrice PHP. Dacă ne uităm la această problemă viitoare, unique.php, în cazul în care dorim să deschidem un fișier PHP care conține o listă de siruri de caractere, un singur șir pe linie, și vrem să găsim toate siruri de caractere unice în acest dosar tot ce trebuie sa faci este sa folosesti una din aceste matrice PHP și de a folosi siruri de caractere în fișier ca cheile de la această matrice și să păstreze actualizarea gama noastră așa cum am păstra aceste chei noi. Așa cum am citit fiecare linie a fișierului putem stoca în matrice, iar la final vom avea ca cheile noastre în gama noastră toate siruri de caractere unice în cadrul fișierului. Are vreun sens? Să vedem cum funcționează. Vom deschide, în conformitate cu spec., un nou fisier numit unique.php. Deschide. Hopa, îmi pare rău, fișier nou. Vom porni cu tag-uri de pe acelasi inceput și de sfârșit. Mergem să-l salvați în secțiunea 9, și am de gând să-l sun unique.php. Bine, acum zoom inch Ideea aici este deschis un fișier, citit în linie cu linie dosar. Pentru fiecare linie din fișier vom avea o matrice în cazul în care avem  linie ca cheia noastră. Și apoi când vom ajunge la sfârșitul aici Tastele $ ARR sunt liniile unice de la dosar, deoarece știm că, dacă am pus în această matrice linie de mai multe ori că va păstra doar imperative valoarea veche, și putem pune de fapt, linia de matrice, în sine, ca la fel ca asta. Aceasta este un fel de ciudat. Suntem stocarea pereche de aceeași valoare tasta de peste si peste si peste, din nou, dar din moment ce sunt garantate că nu va fi doar 1 cheie numită linie Deci, dacă avem un fișier care spune că-un fișier de zgomote de animale si are bătătură, bătătură, miau, miau, moo, Moo, si de fiecare data am citit un zgomot animală din ca bătătură și am stoca în gama noastră avem bătătură, iar apoi a doua oară stocăm bătătură se va suprascrie prima dată că l-am păstrat. În final vom avea doar o intrare în matrice pentru fiecare dintre cele zgomote de animale din dosarul nostru animalelor zgomote. Nu voi avea încredere că puteți aborda deschiderea unui fișier în PHP? O modalitate de a face acest lucru, să trecem peste acest fel de repede, o să-l facă este cu fopen, cum am văzut mai devreme. Puteți fopen some_file.txt. Puteți să-l deschidă în modul de citire, la fel ca în C. Asta e un mod perfect bună de a face acest lucru. Puteți, de asemenea apoi pentru lectură în linie cu linie dosar au aceleași funcții, multe dintre ele, pe care le-ai făcut în C. Ai fgets. Ai feof, deși nu ne place folosind ca deoarece, amintiți-vă, că nu a fost mare în C. Puteți face același mod, dar aici este un lucru foarte misto. Ne pare rău, nu vreau să fac $ file, dar există o funcție numită fișier în PHP, și această funcție chiar aici este rece, deoarece acesta citește întregul conținut de fișier pe care îl specificați, așa some_file.txt, citește întregul conținut al acestui fișier într-o matrice și apoi vă permite să itera peste el, ceea ce este destul de puturos. Dacă mergem, de exemplu, browser-ul nostru și ne uităm la Google pentru fișier PHP puteti vedea aici că manualul nostru spune că fișierul citește întregul fișier într-o matrice, și putem file_get_contents pentru a reveni conținutul unui fișier ca un șir de caractere, dar de obicei doar obtinerea ca o matrice este într-adevăr frumos, deoarece ceea ce face este că se rupe în sus, astfel încât fiecare element de în matrice este o linie a fișierului, așa că, dacă ne uităm la dosar 0, asta e prima linie a fișierului. File 1, a doua linie, dosar 2, al treilea rând, și așa mai departe și așa mai departe. Nu ar fi frumos dacă asta a fost tot ce trebuia să fac în C? Destul de puturos. David a arătat acest lucru în curs, precum și a arătat idiomul a fost că, în plus față de standardul nostru pentru buclă în PHP-am avut ca pentru ($ i = 0; i <10; i + +), și puteți face acest lucru în PHP de asemenea, același lucru- avem, de asemenea, această construcție se răcească numit foreach. Foreach este foarte la îndemână atunci când iterarea peste tablouri sau aceste structuri de date pentru că vă permite să scoateți fiecare element al matricei fără a fi nevoie de a face manual indexare tine, fără a fi nevoie să creați manual o variabila index, incrementa, scoate valoarea din matrice la acel moment, pentru că este un lucru foarte comun de a face. Tu, probabil, au făcut ca de tone de ori, atunci când făceau lucruri C peste semestru, deci cu această foreach putem bucla peste acest fișier matrice, și sintaxa este că dorim acum bucla peste această matrice și să precizeze că variabila vom folosi pentru a stoca element al acestei matrice pe plan local, locale, la domeniul de aplicare al prezentei bucla foreach, se vom numi linie. Dacă e un fișier de cuvinte și nu e doar un cuvânt într-o linie am putea numi cuvânt la fel de bine, de fapt doar dai asta un nume, ce vrei să-i spunem, și apoi în interiorul bucla poți să faci ce vrei cu această linie variabilă. Dacă nu e de ajuns pentru a obține valoarea de matrice și tu, de asemenea, doriți să obțineți Indicele împreună cu ea aveți posibilitatea să specificați un nume pentru index precum și valoarea, iar acum aveți acces la 2 variabile. Ai $ i și linia de unde $ i este indexul în matrice, și linia este linia pe care ați preluat de la dosar. De exemplu, dacă am vrut să imprime ecou 0 linie de fișier ca acest lucru, am putea face la fel ca asta, "Linia $ i al fișierului este de $ line," și aici este ceva ce, de asemenea, nu am văzut încă nici în cazul în care tocmai am sarit peste acest total% s% d toată afaceri pe care am avut de a face cu în C, și în loc să am dus direct la scris variabilele din linie în șir mea. Aceasta se numește interpolare variabila, string interpolare în cazul în care sunteți umplutura variabilele chiar în, și interpret PHP este suficient de inteligent atunci când este citit prin intermediul unui șir care începe cu citate duble- nu ghilimele simple, cu siruri de caractere unice cotate nu poți face acest lucru, dar cu siruri de caractere dublu cotate ca ea citește prin el se caută variabile. E-i vânează în jos, iar în cazul în care consideră că variabilele se va lua valoarea variabilei și chestii în șir dacă se poate transforma într-o reprezentare șir, care este destul de puturos. Pentru moment, să comentați restul de tot, salva acest lucru și ceea ce putem face acum este, putem deschide un fișier pe care o putem numi some_file.txt-hai să creați un nou fișier și ne poate pune într-o grămadă de lucruri prostii aici doar pentru a testa totul, salvați-l, suna-l some_file.txt, așa cum fac eu aici, la partea de sus, și acum, dacă am micșora doar pentru a vă asigura că totul este în același director- se pare ca am unique.php și some_file.txt în același director. Dacă I ​​a alerga php unique.php a se vedea cum se imprimă fiecare linie în dosarul meu și ceea ce este linia? Asta e destul de puternic, nu? Uite, a fost nevoie de 3 linii de cod pentru a deschide un fișier. Ei bine, 4 linii de cod. Eu nu pot conta azi, în mod clar. Dar de fapt doar 2 linii de cod interesante, deoarece celelalte 2 au fost acolade, dar în acest cod de mult am putut pentru a deschide un fișier, itera prin ea, scoate numărul de linie și linia de sine și-l imprimați. Misto chestii. Charlotte. [Charlotte] Am o întrebare despre sintaxa. Foreach așa Oferte cu fiecare linie a fișierului pe care îl deschideți, și atunci când vrei să faci lucruri cu fiecare linie pe care tocmai ați face ca și să se asocieze, apoi valoarea. [Nate H.] Ce puteți face chiar aici, întrebarea a fost foreach are de a face cu matrice, astfel încât foreach sintaxa foreach este într-adevăr, și observați că nu există nici un spațiu sau ceva între și pentru fiecare. Ei au dreptul să meargă unul lângă altul, și apoi ia într-o matrice, și apoi aveți acest cuvânt cheie altă numit ca trebuie sa fie acolo, și apoi, după cum puteți pune nici un nume variabilă, în cazul în care ai de gând să fie trăgând valorile matrice, nu indicii, sau daca o faci cum am scris mai jos veți obține cheile și valorile. Ai element de foreach de matrice sau o pereche de matrice ca tastat la valoarea sau ca doar o valoare. În funcție de ceea ce ai nevoie, dacă nu aveți nevoie de cheile, atunci poti sa te duci cu valoarea. Dacă doriți tastele poti sa te duci cu ei prea. [Charlotte] De asemenea, am dat seama că niciodată nu a declarat I sau linia. Cum se știe nici măcar ce sunt? [Nate H.] Ce vrei să spui prin declara? [Charlotte] Noi nu le-am spus ce am sau linia mijloace. [Nate H.] N-am spus ceea ce am calculatorul sau linie înseamnă, în termeni de- [Charlotte] că acestea sunt indexate sau care Sunt pe- [Nate H.] N-am spus-o ca aceasta ar trebui să fie index sau tasta și valoarea, și asta pentru că e interpret PHP. Aceasta servește ca declarație și spune bine, cheia va fi o variabilă numită i stocate într-o variabilă numită i. Valoarea este de gând să fie stocate într-o variabilă numită linie, astfel încât aceasta servește ca declarație a acestor variabile și spune $ i este o cheie, iar $ line este o valoare. Da, Ella. [Ella] În cazul în care cheile nu sunt facute numeric cum decide ce ordine se va imprima totul? Este la fel ca ordinea este înscris la? [Nate H.] Hai să încercăm. Să creăm o variabila numita ARR, și putem face un merge la 7. Să spunem 0 merge la un alt matrice cu 1, 2, sau de mere. Să spunem că merge la 7 1, b merge la 2, și 3 se duce la 4. Aceasta este un fel de exemplu nebun în căutarea pentru că suntem de amestecare până siruri de caractere și numere întregi peste tot locul. Nu e nici o ordine reală a acestei matrice. Adică, am putea comanda totul în ordine alfabetică, după cheile. Am putea comanda totul în ordine alfabetică de valoare. Am putea încerca și să ia în considerare faptul că unele sunt siruri de caractere, unele sunt Ints, și am putea încerca și de a le converti toate la același tip și să vedem ce se întâmplă, sau am putea să le ia în considerare în valoarea în care noi deja le-a intrat în cazul în care am pus acest tip, în primul rând, acest tip în al doilea rând, acest tip din al treilea, acest tip în al patrulea rând, et cetera. Să vedem ce se întâmplă atunci când vom rula acest cod. Dacă ne defilați în jos și de a face același tip de lucru, și aici nu e tipărirea noilor linii. Când a citit lucruri din dosar a fost inclusiv de noi linii în valorile, care a fost motivul pentru care imprimat frumos, întrucât aici nu a făcut, deci de aceea totul este smushed împreună. Să adăugăm că, în noua linie doar pentru a face lucrurile frumos. Să-l rulați din nou, și așa mai departe aici uita-te la ceea ce sa întâmplat. Acesta tipărite tot în ordinea în care l-am pus în matrice. Ea își păstrează ordinea în acest sens. Revenind la această problemă de unici în cazul în care dorim să fie în măsură pentru a itera peste un fișier, și vom da some_file.txt, și am de gând să itera peste el ca asta. Am spus că am vrut să utilizați o matrice pentru a vă asigura că am primit toate linii unice de acolo, și am putea face asta într-adevăr ușor doar prin stocarea într-o matrice care ne desigur declara în afara domeniului de aplicare a unei bucle, și am spus că, dacă am folosit liniile din fișierul ca cheile în gama noastră în cazul în care am intrat într-o linie de duplicat am fi imperative valoarea precedentă. Nu este niciodată posibil să aibă 2 chei, care sunt identice în aceeași matrice. Putem face doar asta. Vom scăpa de această declarație ecou chiar aici. Aici suntem stocarea linie în fișierul în gama noastră folosind-se ca tasta. Nimic la ea, și se pare că nu avem nevoie de chiar și această cheie. Nu avem nevoie de asta am variabilă. În acest moment, dacă ar fi să facem o altă buclă foreach și am fost la bucla peste fiecare arr și linia de acum, dacă am echo-Oops, îmi pare rău. Noi nu putem folosi virgula. Noi trebuie să utilizeze acest drept cuvânt cheie. Acum, dacă am echo line ar trebui să ne toate cuvintele unice din dosar. Dacă vom merge până la some_file.txt, și să spunem că vom face mere, banane, mere, mere, banane, dacă suntem imprimarea toate cuvintele unice în acest dosar ar trebui sa ne doar mere și banane pentru a imprima. Dacă vom salva acest lucru, acum aici, ne vom mări înapoi, php unique.php, si TA-DA. Am uniqued cu succes fișierul. Partea finală a acestei probleme vă cere pentru a sorta această matrice înainte de a le tipărit pentru că în acest exemplu simplu, pe care le-am făcut doar am fost norocos în sensul că-file am făcut acest exemplu artificială cu mere și banane. Acesta a fost deja sortate. Dar folosind funcția de sortare simplu, aveți posibilitatea să sortați o matrice, care este destul de puturos. Ultimul lucru am vrut sa vorbesc cu voi despre foarte repede este faptul că acest tip de PHP este tot bine și bună, și e foarte la îndemână să știi cum să faci, dacă ai nevoie să faci lucruri mici, rapide programatic. De exemplu, dacă am nevoie pentru a scrie un program care, să zicem, pune toata lumea in sectiuni nu am de gând să meargă și să scrie în C. O să fie lung. O să fie un fel de durere, mai ales dacă există fișiere implicate, la fel ca și voi ați văzut. E atât de frumos ca doar cu acest cod de mult aici noi am fost capabil pentru a extrage printr-un fișier, scoate toate valorile unice și să le imprimați înapoi. Cu toate acestea, pentru sarcinile tale, pentru proiectele tale, dacă sunteți construirea site-uri web cu PHP putere este faptul că nu mai avem dosarele noastre PHP prin acest interpret, și interpretul este prelucrarea totul în cadrul tag-uri PHP, lăsând totul altceva neatins si scuipa rezultatele. Putem face acest lucru pentru a construi HTML programatic. Acum, dacă ne întoarcem la spec., ultima problemă în spec. vorbește despre această idee a concentrațiilor și crearea unui meniu drop-down, care poate sau nu poate să facă, în funcție de ceea ce proiectul dvs. final este de a face, care permite utilizatorului să selecteze dintr-o listă cu toate posibilele concentrări lor o concentrație. Acum, acest lucru este un fel de durere de tip acest lucru și trebuie să facem tot acest manual, mai ales atunci când aveți pentru a vă asigura că aveți toate parantezele unghiulare în locul potrivit și toate citate în locul potrivit, deci cu PHP puteți face acest lucru în mod programatic, și puteți face acest lucru foarte repede. Să vedem cum se face acest lucru. Vom deschide un fișier nou. Vom pune în tag-uri PHP noastre. Vom numi concentrations.php, și acum, când faci asta, un fel de un lucru bun să se gândească atunci când sunteți încercarea de a se amestecă și se potrivesc PHP si HTML este imaginind, bine, ceea ce este partea pe care doresc să genereze programare? Care este partea care pot genera programare? E adevărat că poți să faci tot a codului HTML în interiorul blocurilor de PHP. Puteți ecou toate HTML ca șiruri. De exemplu, dacă vreau să încep a face etichetele selectați în interiorul PHP Eu pot să spun ecou, ​​spune selectați numele = concentrația, și apoi în jos de mai jos am putea avea un alt tag-ecou sau un alt ecou numit aproape selectați. Aceasta este o modalitate de a face acest lucru, deoarece acest lucru este ceea ce literalmente de gând să faci se imprima acest șir atunci când a rulat prin interpret PHP, astfel încât rezultatul va fi HTML. Dacă aș salva acest fișier ca acesta este chiar acum și alerg concentrations.php php uita-te la ceea ce am primit. Am primit această etichetă deschisă, selectați aproape. Dacă ar fi să fac acest lucru și am fost pentru a salva acest rezultat într-un fișier, spun, concentrations.html-asteptati, se pare ca am trecut peste a la alte lateral- acum, dacă mă deschid aici concentrations.html vezi Am un fișier HTML valid. Este acel tip de ciudat? Suntem folosind PHP pentru a crea HTML, de a crea HTML validă. Mod o facem este vom avea doar de imprimare PHP HTML pe care dorim să imprimați. Aceasta este literalmente modul în care site-urile web PHP sunt de lucru. Când vizitați un site Web care vă trimite la ceva de genul ceva, ceva, ceva dot com slash index.php calculatorul este literalmente de asteptare pana index.php, rulează-l prin interpret PHP, precum și orice drog iese se trimite înapoi la browser-ul și zicând: hei, browser-ul, interpreta acest lucru ca HTML. Cel mai frumos lucru este că aceasta poate fi o durere de a scrie în mod constant ecou, ​​ecou, ​​ecou, ​​ecou și încadrați totul în ghilimele, cum ar fi acest lucru, așa că, dacă doriți să scrieți HTML care va fi statice te poti face ca aceasta, a pus-o afară, închideți-l, si apoi aici, ai pus numai în interiorul tag-uri PHP pe care pe care le cunoașteți doriți pentru a genera programatic, și în acest caz, e acele etichete opțiunea care sunt o durere pentru a genera. De exemplu, am putea genera o mie de tag-uri opțiune de a face ceva de genul asta, $ i <1000, i + + și spunând opțiune valoarea echo $ =-Ups, eu nu pot face asta. Ei bine, hai să încercăm și să vedem ce se întâmplă. $ I și apoi spun $ i