[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 </ optiune.
Mai degrabă decât a fi nevoie să introduceți faptul că eticheta de opțiune o mie de ori diferite
Sunt folosind codul PHP să genereze în mod automat, programatic.
Un fel de puturos. Da,.
Îmi amintesc acest lucru fiind menționat în nici curs sau walkthrough,
dar ceea ce este diferența între ghilimele,
cele normale, iar aceste lucruri simple?
Asta e de fapt ceva ce am făcut greșit aici, că am fost de gând să-ți arăt.
Cele ghilimele simple nu permit caractere speciale,
deci totul într-un singur șir citat este interpretat literal.
Dacă aș fi avut o \ n interiorul ghilimele simple și am salva acest lucru, de exemplu,
și acum mă duc aici și rulați-l-
Hopa, unde mă duc?
Oh, e pentru ca am uitat $.
>> Acum, dacă am deschide-de fapt, aici, vom scapa de ea tastarea într-un fișier.
Vom citi doar.
Aici vei vedea că am luat acest literală \ n în șir, ca să nu o linie nouă reală,
și, de asemenea, în loc de interpolare de fapt, valoarea acestei variabile
mi-a dat $ i in sine, care este un fel de durere.
Cale în jurul valorii de acest lucru este de a folosi ghilimele duble,
și apoi atunci când utilizați ghilimele duble, de fapt aceasta va
interpola corect valorile toate aceste variabile aici
și recunosc, de asemenea, acest \ n pentru a fi noua linie pe care este
și nu \ n.
Folosind cele individuale este frumos atunci când aveți
caractere care ar putea fi interpretate drept caractere speciale, deoarece, atunci nu trebuie să
scăpa le în mod constant.
Lucrurile pot obține dezordonat, și, adesea, modul în care am face acest lucru,
doar pentru a face lucrurile mai ușor, este că, dacă am de gând să aibă nimic
HTML ca în codul meu voi include în termen de ghilimele simple de editare
și de a folosi apoi acest operator de concatenare
Pentru a concatena variabilele inch
Acesta este un alt mod de a face asta
în cazul în care avem puncte care va conecta acest este un șir de
cu acest lucru cu acest lucru cu acest lucru,
si acum nu mai trebuie să scape de aceste ghilimele duble.
Eu nu trebuie să utilizeze acest tip să scape.
Vor fi literalmente imprimate ca ghilimele duble și apoi tipul ăsta chiar aici.
Acesta este un alt mod de amestecare totul împreună.
>> [Student] De asemenea, atunci când a reiterat gettype nu au existat între ghilimele, la toate.
Corect, deci este un fel de ecou special în sensul că nu aveți nevoie de paranteze.
Nu aveți nevoie pentru a avea ghilimelele neapărat în jurul valorii de variabile,
ca e valabil să spun echo $ i, și-l va interpreta acest lucru ca pe un șir.
Se va face exprimate, asa ca am putea face acest lucru, si asta e valabil prea, dar nu avem nevoie de ea.
E opțional.
În set de probleme din această săptămână se uite pentru o mulțime de acest gen de lucruri
în cazul în care sunteți de amestecare și de potrivire HTML cu PHP
la fel ca asta, și acum, dacă ne derulați înapoi și vom rula acest
putem vedea că avem o grămadă de valori opțiune
care tocmai a fost imprimat.
Avem tot acest cod HTML care s-au generat foarte repede pentru noi.
O voi lăsa ca un exercițiu.
Este foarte similar cu citirea fișierului pe care am făcut-o mai devreme.
>> Există un fișier concentrations.txt care se poate trage în jos de la CDN,
și puteți să-l deschideți utilizând același truc foreach că am făcut mai devreme,
și foreach trebuie doar să răsune o opțiune și conectați
valorile corespunzătoare, tastele corespunzătoare și indici,
și atunci veți primi un drop jos care literalmente creează
programatic pentru tine toate concentrații diferite de la Harvard.
Un lucru la îndemână pentru a avea.
Există o mulțime de lucruri de configurare pentru această misiune.
Dacă nu ați făcut-o deja să ia următoarea jumătate de oră, oră,
ceva timp în seara asta cu siguranta pentru sigur,
plimbare prin spec. set de probleme,
a se vedea ce se întâmplă cu înființarea vhosts, gazdă locală, toate chestiile astea.
Un lucru să subliniez acum este faptul că
în cele mai multe seturi de probleme am fost merge în folderul Dropbox
și descărcarea apoi zip problema set de fișiere și dezarhivați-l.
Pentru acest set de problema pe care nu vrei sa.
Vrei să mergi în acest director vhosts.
Veți dori să meargă în vhosts și du-te în directorul gazdă locală în cadrul acestuia,
și acest lucru este în cazul în care veți dori să trage în jos fișierul zip,
dezarhivați-l, și pregătiți-vă să meargă.
Va trebui să urmați pașii de mai îndeaproape.
>> Dacă aveți orice întrebări, trimiteți e-mail, posta pe Forum, vin la ore de birou.
Multumesc baieti. Săptămâna viitoare vom avea o sesiune de revizuire pentru test.
Bucurați-vă de setul de problema ta ultima. Sper ca totul merge foarte bine.
[CS50.TV]