[Powered by Google Translate] [Sekcio 8] [Less Komfortaj]
[Nate Hardison] [Universitato Harvard]
[Jen CS50.] [CS50.TV]
>> Bonvenon al nia dua lasta sekcio.
En ĉi tiu semajno ni iras por paroli pri PHP, kaj poste proksiman semajnon
ni faros iom recenzo por Quiz 1.
Ni tuj komenci en la paĝo 3 de la problemo aroj pack,
kaj ni laboros per la sekcio de demandoj sufiĉe rapide.
En la paĝo 3, ni komencas paroli pri tiu diferenco inter C kaj PHP
en la senco ke PHP estas dinamike tajpitaj lingvo,
dum C estas statike tajpita,
kaj neniu vere rapide faris ajnan kodigo en iu kiel PHP
aŭ Python aŭ Rubeno antaŭe, JavaScript?
Tute novan? Okay.
>> Ĉiuj de ĉi tiuj lingvoj, ke mi ĵus menciita
estas tre malsama de lingvoj kiel C kaj C + + kaj Java
en la senco ke kiam vi deklaras variablon vi ne devas deklari
kia variablo estas, tiel en C ni pusxis devi ĉiam diras
ĉi tiu tuj estos int variablo, aŭ ĉi tiu tuj estos char * variablo,
dum kun PHP, kun Python, kun Rubeno,
kun amaso de tiuj pli modernaj lingvoj vi ne devas fari ĉe ĉiu.
Vi nur deklari vian variablon, kaj en la kazo de PHP
vi deklaras, ke ĝi estas variablo de prefixing ĝin per $ signo,
kaj tiam la tipo de la variablo estas difinita per ajn valoro ĝi estas tenante,
kiu estas speco de cool.
Ludi tie kun ĉi iom, ni havas specimenon PHP kodo tie ĉi
en inter la komenco kaj fino etikedoj.
Ni uzas tiun ĉi tipon de kiel HTML en la senco ke
ni havas tiujn angulajn krampojn tie por malfermi kaj fermi.
Vi vidos tion per HTML.
Vi vidos la sama speco de sintakso kun XML tro.
>> Tiu indikas la komencon de PHP bloko.
Tiu? Php estas specifa al PHP.
Ni fermas ĉiu kun?> Ankaŭ.
Ni malfermi dosieron en nia aparaton uzante kion vi ŝatus.
En ĉi paketon diras nomi dynamic.php.
En vero, vi povas nomi ŝin, kion vi ŝatus, sed la dosiernomo venos supren
kaj estu grava poste, do nur memoru kion ajn vi nomas ĝin.
Mi tuj ŝanĝi super la aparaton,
kaj mi tuj faros dosierujon por
sekcio 9 Mi kredas ke ni estas en nun.
Kaj ni iru en sekcio 9,
kaj mi tuj uzos gedit.
Ni vidas, gedit, kaj mi iros por voki mian dynamic.php.
Eksplodo.
Ene dynamic.php, ĉar ĉi tiu estas PHP-dosiero
kaj mi volas kuri ĉi tra la PHP interpretisto
Mi bezonas por komenci ĉiun ekstere kun tiuj malfermitaj etikedoj,
do mi tuj komencos tiuj tuj,
doni min iom spaco inter la etikedoj,
kaj tiam la punkto de ĉi ekzerco estis ludi tie kun
ĉi tiu funkcio nomita gettype, do gettype, ĉi tiu funkcio ĉi tie.
>> Rimarku ke ne estas substreki aŭ spaco aŭ streketo aŭ io simila
disigante la 2 vortojn, get kaj tajpu, nur unu vorto en aro.
Sed kio estas tiu faros estas se mi pasas en variablo al gettype,
diru $ var aŭ $ x,
ĉi rakontos al mi specon de en depuración formato
kion la nomo de tiu tipo estas.
Ni tuj sperti tie.
En aparta, se vi retrorigardas la pset spec
ni havas kelkajn malsamaj linioj de kodo tie.
En la unua linio de kodo oni pravalorizi ĉi variablo, $ var,
esti egala al 7, kaj tiam ni havas ĉi printf linio
kiu diras hey, printf var estas malplena.
Printf estas unu el la multaj manieroj povas presi tion en PHP.
Ofte vi vidos la eĥo funkcio uzata anstataŭ printf,
sed printf ni ĉiuj konas estinte kodigo en C por tempo.
Kion vi povas reale fari estas ni vidu se kopio kaj alglui verkoj.
Mi tuj donos ĉi provu.
Ni reiros sur la aparaton.
Okay, kaj tie ni iru.
Kaj Interspacigo estas iom funky, sed tie ni iru.
Ni havas ĉi kodo en ĉi tie.
>> [Studenta] Ĉu ne bona stilo por langeto ĝin?
Pardonu?
[Studenta] Ĉu kutima al langeto ĝin?
Bone, do Sam demandas se estas konvencio por langeto ĝin aŭ ne.
Tipe jes.
En ĉi tiu kazo mi elektis ne.
Honeste, vi vidos malsamajn aferojn inter diversaj programistoj.
PHP estas tipe uzataj ofte en kombino kun HTML
kaj aliaj lingvoj, kaj tiel kelkfoje la impreson aspektos iom funky
se vi indent ene PHP komenco kaj fino etikedoj.
Vere dependas.
En ĉi tiu kazo la kopio kaj pasto ne almeti la langetoj en mi,
sed certe tio, kiel vi diris, faru ĝin pli klara.
Bone, se vi konservos tiun kodon en dynamic.php
tiam kion vi povas fari estas malsupreniris al via fina fenestro kie mi pravas ĉi tie
en gedit, kaj fari la ekvivalenta kompili
uzante fari kaj poste kurante via kodo en C
ĉiuj vi devas fari kun la PHP-dosiero estas funkciigas la PHP interpretisto,
kiu estas iom programo nomata PHP,
kaj la argumento vi donos al la interpretisto estas la dosiero kiun vi volas interpreti.
En ĉi tiu kazo, dynamic.php.
Whoops, kien mi metis ĝin?
Ho, mi metis ĝin en sekcio 9, kaj jen mi. Tio estas kial.
>> Nun, se mi kuros ke denove
ni vidas, ke en mia unua gettype funkcio alvoko
var estas entjero.
En la sekva var estas ĉeno, kaj poste en la tria var estas bulea.
Kio estas interesa pri tio estas, se ni rulumu back up ni vidas ke
tiuj estas specoj simila al tiuj, kiujn ni havis en C.
Ni havis ints en C.
Ni ia havis ŝnurojn en C,
tiel kordoj ne tutece legit tipo en la senco ke
nia CS50 kordoj estis vere kio?
Pardonu? Missy?
[Missy] Char *.
Jes, estis jena char * ni uzis.
Je la komenco de la semestro oni uzis la kordo tipo,
sed ĝi estis vere char * sub la kapuĉo.
Ni nur tajpi difinis ĝin, dum en PHP tiuj kordoj estas reala tipo.
Ne pli de ĉi char * tipo stuff.
>> Vi vidos, ke ni povos fari multajn pli aĵoj kun kordoj
multe pli facile en PHP ol ni povis en C,
kaj tiam fine, ni havas ĉi bulea tipo, kaj la granda diferenco estas, ke
se ni rulumu posteniras ni vidas ke la nomo de tiuj tipoj
nun estas entjero, kordoj, kaj bulea anstataŭ int kaj bool,
kaj kiel vi repreni malsamaj programlingvoj,
supozante ke en iu punkto en via vivo vi venos en kontakton kun
malsamaj vi rimarkos iom kapricoj kiel tiu
kie C nomas entjeroj ints.
Iuj nomas ĝin entjeroj.
Estas aliaj terminoj kiuj vi kolizii.
Big int ni vidis hodiaŭ en SQL.
Ankaŭ estas nombro kaj tiam bool, bulea,
ĉiaj diferencoj tie.
>> Tio ne estas terure interesa sed nun mi tuj donos al vi iom da tempo-
se ni zoom reen eliraj labori tra ĉi ekzerco ĉe la malsupro de la paĝo 3
kie petas kio tipoj respondas al tiuj valoroj tie malsupre.
Ni havas 3,50.
Ni havas tiun aferon ĉi tie, kiu estas interesa.
Ni ne vidis ke antaŭe, kvankam se vi estis sekvante kune en prelego
vi probable jam scias kion tio estas.
Tiam ni havas tion, kion ĉi tiu estas speco de funky.
Vi rekonos ĉi.
Kio estas ĉi tiu en C?
Sam? Kion tio donas al vi en C?
Estus malfermi dosieron nomatan dynamic.php kaj fari ĝin legebla.
Yeah, kaj kio estus la tipo de variablo kiu ni devus atribui tion al? >> Dosiero stelo.
Ekzakte, ni devus atribui tion al dosiero stelo.
Tio estas legitima PHP tro.
Kuru tio. Vidu kio okazas kiam vi preterpasonta en gettype.
Kaj poste kontroli ankaŭ kio nula estas, kion tio povus esti en PHP.
Mi donos al vi post kelkaj minutoj.
Vi povas laŭvorte kopii kaj alglui ĉi tiujn valorojn en,
kaj poste ni faros iom hazarda vokas vin
kaj vidi kion vi havas.
>> [Studenta] Mi havas demandon. << Jes.
En unu el la prelegoj David diris estas iu vi povas meti en la pinto de via dosiero
por ke vi ne devas tajpi en PHP ĉiufoje.
Kio estis tio?
Li probable parolas la funto bang, la hash bang.
Ĝi estas direktivo, ke se vi markas viajn dosiero ruleblan
tiam kio faras estas kiam ekzekuti la dosiero
ĝi diros la ŝelon programo
uzi la PHP interpretisto por interpreti la enhavon de la dosiero.
La demando estas kio estis tiu speciala linio
ke ni povus inkluzivi en la pinto de nia PHP dosierojn al ne devas inkluzivi
ĉi PHP linio aŭ tiun PHP komando kiam ajn ni volas ekzekuti la dosiero?
Kaj vi povas reale fari ĉi tion kun multajn malsamajn dosierojn.
Mi kredas ke ĝi dependas de kie la PHP duuma stokas,
sed ofte usr / bin / php estas bona loko por komenci.
Vi povas kalkuli tiun el akurate irante reen en vian aparaton
kaj tajpi el kiuj php.
La kio komando ciferojn, kiam vi ekzekuti duuma
aŭ komando kie la responda dosiero.
Ĉi tiu diras al mi ke la PHP estas vere aliasing ĉi duuma dosiero
ke tio stokitaj en usr / bin, kiu estas kie granda parto de la sistemo binaraj estas instalitaj.
Ekzemple, se mi rulumu supren al la supro, nun ke mi metis ĉi #! linio en ĉi tien
Mi povas rulumi malsupren, kaj mi povas provi kuri
dynamic.php, sed mi akiri ĉi tiun eraron pri permeso esti malkonfesis,
kaj kion tio signifas estas ke ĉi dosiero estas nuntempe ne donante ruleblan permesojn.
Ne estas markita kiel dosiero kiu iu povas kuri.
>> Kiam vi kuris fari aŭ Clang kaj vi havas plenumeblan de ĝi
la tradukilo estis sufiĉe inteligenta por scii ke hey, mi konstruas plenumebla.
Vi verŝajne volas ekzekuti ĝin, do ĝi aŭtomate agordas
la permesojn por vi.
Ĉi tiu ne estas la kazo, tamen, kiam oni kreas normalan dosieron de nulo,
la kialo esti tipe vi ne volas havi neniun dosieron en via sistemo estus plenumebla,
tiel vi efektive devas iri en kaj permane fari tion.
La plej facila maniero por fari ĝin estas kun la chmod komando,
kaj chmod + x diras aldoni la plenumeblan iom
ĉar tie estas la legado bito, la skribo iom kaj la ruleblan iom,
r, w kaj x,
kaj dirante chmod + x turnos sur la ruleblan iom
cxar tiam la dosiero kiun ni precizigi, ke en ĉi tiu kazo estos dynamic.php.
>> [Studenta] Ĉu tiu perfidis por ĉiuj?
Ni kontrolu ĉi eksteren, do kiel mi volis kontroli por vidi la permesoj?
Ĉu vi scias, kiel mi kontroli por vidi la permesojn de dosiero?
[Inaudible studento respondon]
Pardonu? >> [Studenta] XSD.
XSD donas al ni la dosiero en hacks.
Printante ĉiuj dosieroj,-l, montros min ĉiujn dosierojn en mia katalogo
ia en siaj longaj, abundajn kantoj, kaj tiel tie ni vidas ke
ĉi dynamic.php dosieron
Laste redaktita November 5, je 4:21 PM.
La mastro de tiu dosiero estas jharvard.
Tio estas la uzanto kiu estas ensalutinta in
Tio estas la uzanto mi laboras kiel,
kaj se vi ankaŭ en la aparaton vi ankaŭ laboras kiel uzanto jharvard.
Vi estas en la studentoj grupo,
kaj ĉi tiuj estas aĵoj, kiun vi vidos sufiĉe ofte.
>> Ni povas iri en multaj detaloj ĉi tie,
sed plejparte kion vi volas rigardi kiam vi serĉas por vidi
ĉu dosiero estas plenumebla estas ĉefe
la uzanto kiu posedas la dosiero, la mastro,
tial ĉi jharvard, kaj tiam ni havi
la permesojn bitoj super tie sur la maldekstra,
kaj la vojon por legi ĉi estas ke la lasta iom
tipe estas uzita por marki ĉu aŭ ne-almenaŭ en ĉi tiu kazo
ĉi lasta iom ofte enkadrigeblajn por ad indiki
ke la dosiero estas dosierujo kaj ne nur normala dosiero.
Tiam jenaj 3 bitoj ĉi tie
determini la permesoj, ke la posedanto de la dosiero havas,
tial en ĉi tiu kazo jharvard, kiel la mastro de la dosiero, povas legi kaj skribi ĉi tiu dosiero,
sed tie estas streko dirante ke jharvard ne povas ekzekuti ĉi tiu dosiero.
La venonta 3 bitoj estas por la grupo, do ĉi tiu estas la studentoj grupo,
do se ekzistus pluraj uzantoj en mia aparaton,
kaj ni havis plurajn uzantojn kiel parto de la studentoj grupo,
tiam ili povas ĉiuj legi tiun dosieron, sed ili ne povas skribi ĝin,
kaj tiel same ĉiu alia, la mondo
povas nur legi tiun dosieron kiel bone.
Estas bona, longa writeup pri tio,
tiel vi povas legi rete.
En la problemon aro spec ni iru en tiun pli detale.
>> [Studenta] Ĉu la 218 raportante al la mondo?
La 218 estas ekflugo la supro de mia kapo min forgesi,
sed ne.
Ni vidu. Mi blanking sur tiu nun.
Reen al kio ni estis faronta kun ĉi chmod + x
kie ni volis doni dynamic.php ruleblan permesoj,
kaj la demando estis ĉu ĉi donus ruleblan permesojn al ĉiuj
aŭ simple jharvard, kaj ni povas vidi ĉi tion
kurante la ordonoj kaj tajpi ls-l,
kaj nun ni vidas ke ĝi estas markita kiel plenumebla.
Vi vidas, ke tie estis kolorŝanĝo.
Nun dynamic.php estas listigita en verdo,
kaj ĝi aspektas kiel la respondo al la demando estas kio, Charlotte?
[Charlotte] Nur jharvard. >> Nur jharvard, jes.
>> Se ni volas turni la ruleblan iom on por ĉiuj
kiom eble ni faru tion?
Ajna pensoj? >> A + x?
Yeah, precize.
Charlotte diris ni povas fari chmod de a + x de dynamic.php,
kaj nun, se ni kuras ls-l ni vidas ke la ruleblan bitoj
estas ja perfidis por ĉiuj.
Kaj vi povas reale fari la dorsflanko de tiu, do vi povos turni ĝin por ĉiuj
uzante minus.
Nun ĝi estas malŝaltita, kaj nun ni povas turni ĝin reen sur cxar jharvard
por ke ni povas reale ruli ĝin nun,
kaj nun vi vidos, kiam ni kuras la kodon tiu speciala #! linio je la supro,
#! linio, diris al la konko,
diris nia fina hey, kiam ĉi dosiero estas kuri,
uzi / usr / bin / php interpreti ĉi tiun dosieron
kaj poste presi la eligo.
[Inaudible studento demando]
Certe, lasu min rulumi back up. Samkiel tiu.
Vi vidos ĉiujn tiujn direktivojn starti kun ĉi funto kaj tiam la ekkrio punkto,
kelkfoje nomata shebang, hash bang.
>> [Studenta] Kiel ni povas ruli ĝin per php dynamic.php antaŭ ol ni faras ĝin plenumebla?
La demando estis kiel ni povas kuri ĉi uzanta la PHP duuma
dum dynamic.php ne plenumebla?
Ĉi tiu estas super grava ĉar ĉi tiu estas ĝuste kiel
ĝi tuj labori kiam vi skribas problemo aro 7.
Plej ofte PHP dosieroj ne estas rekte ruleblan.
La vojo kiu funkcias estas ĉar ĝi estas la PHP duuma jen ruleblan.
La interpretisto estas tio ke tio esti ekzekutita,
kaj tiel kion ĝi estas fari estas laŭvorte slurping en la tuta enhavo
de nia dynamic.php dosiero kaj tuj linio por linio
kaj ekzekuti tiujn ordonojn, do ĝi estas uzanta nian PHP-dosiero
kiel listo de instrukcioj.
Ĝi estas ne rekte ekzekuti ĝin.
Tie estas kie ni diras, ke tiuj dosieroj estas interpretitaj en tempo de ekzekuto.
Estas tempo de ekzekuto lingvo anstataŭ io ke tio determinis ĉe kompila tempo,
ne estas kompilitaj lingvo kiel C.
>> Ĉu estas maniero por atingi tempo de ekzekuto lingvo agi kvazaŭ ĝi estas kompila tempo lingvon,
kiel se vi havas ĉiujn kurado farita ĉe la servilo
anstataŭ-vi scias, kion mi volas diri?
Jes, do la demando estas
estas tie metodon por havigi kuri tempo lingvojn por agi pli kiel kompili tempo tipoj de lingvoj?
Kaj tie estas, mi volas diri, ke estas aktiva areo de esplorado por multe el tiuj firmaoj.
Mi kredas Facebook faris multe da laboro kun PHP
kaj kompili ĝin, farante ĝin pli rapida, optimizando ĝin
ekde ilia retejo estas konstruita en PHP.
Se vi estis sekvante node.js tute ne,
kiu estas speco de JavaScript interpretisto
por povi kuri JavaScript ekster la retumilo, ekstere de via retumilo,
ĉar tradicie JavaScript estus nur kuri ene de Firefox aŭ Chrome,
kaj tio estus uzita por fari cool kuraĝigoj okazi en retpaĝo
kaj Mi faros vian retpaĝon dinamika.
Tio estis konstruita sur tereno de laboro kiu Google faris
fari JavaScript kaj C + +
ligi kune, do ekzistas multe da aktivaj esploro
akiri tiujn lingvojn por interagi kaj optimizar ili,
ĉefe ĉar tiel multaj homoj povas kodi en PHP kaj Javascript
ĉar ĝi estas multe pli facila.
Estas multe pli agrabla. Vi ne havas punteros.
Vi ne havas tipoj flosante ĉirkaŭe.
Ili volis gajni la profitoj de tiuj kompila tempo lingvoj
kun ĉiuj tipo kontrolanta kaj la rapido kaj la malsupra memoro uzado kaj ĉiuj de tiu
dum ankoraŭ subtenante la flekseblecon kaj facileco de uzo de tiuj novaj aĵoj.
>> Reen al nia originala plano de atako.
Ni havas kelkajn el tiuj demandoj cxi tie en nia problemo aro spec.
Ni iru tra ili vere rapide, kaj ni iros ĉirkaŭ la ĉambro.
Charlotte, kion tipo estas 3,50?
[Charlotte] Tio estas duobla. >> Estas duobla.
Jimmy, kio estas ĉi tiu venonta unu? >> An tabelo.
Tabelo, timinda, kaj Jared, kio estas la fopen?
[Jared] Estas rimedo. >> Estas rimedo.
Tio estas speco de nova, ne dosieron stelo, ne dosieron.
Ĝi estas rimedo estas la tipo en PHP,
kaj mi bedaŭras, Ella, la lasta nula estas kio?
Nula.
Nula, kiel estas literumita en PHP? >> La sama maniero.
La sama maniero, ĉefurboj? >> Jes.
Yeah, tute certe.
Ĉi tie ni iros, ni havas duoblan, ni havas aron,
ni havas rimedon, kaj poste ni devas nula.
Ni vidu nun havas vi vidis-
ni vidu, tiel nun mi supozas tion, kion mi ankaŭ volas fari estas elsxiros
ĉi tiu retpaĝo ĉi tie, ĉi php.net / manlibro,
do se vi infanoj kopii tion kaj malfermi foliumilon.
Mi tuj elsxiros Chrome, metis tiun in
Mi volas montri al vi ne nur ĉar
ni povas paroli la tutan tagon sur tipoj kaj cxio, kion amuza stuff
sed prefere ĉar ĉi tiu estas la PHP manlibro,
kaj estas multaj de PHP programistoj tie.
Estas multaj de PHP retejojn tie,
kaj kiel rezulto, estas multe da dokumentoj en PHP,
kaj la manlibro, ĉi php.net, estas vere bona loko por iri
kiam vi havas demandojn pri kio estas la plej bona maniero fari X en PHP
aŭ kion signifas funkcio aspektas?
Nur speco de prenanta konas kio estas tiu similas ĉar
vi venos tien ofte, iom por problemo starigis 7.
>> Se vi finos faras finon projekto kiu uzas PHP
ĉi tio estos loko vi fariĝis tre bone konis.
Ofte la vojo homo faras ĉi estas ili uzas Google por serĉi la lokon,
kaj ili ne uzas la sercxilo jen supre cxi tie en la supra dekstra, kiu estas speco de tre eta.
Se vi Googling ĉirkaŭ ion fari kun PHP kaj vi vidos
unu el la manlibro ligiloj popo supren vi povas tipe fidi ke
kiel sufiĉe bona rimedo.
Awesome, do el tiuj tipoj, nur pro scivolemo,
kiu tiuj ne ni vidis?
Ion ni ne vidis tie?
[Studenta] Resource. >> Ni vidis rimedon kun la fopen alvokon.
[Studenta] Celoj. >> Objektoj ni ne vidis dum certa.
Callbacks ni ne vidis.
Estas iuj el tiuj pseŭdo-tipojn.
Ni definitive nur vidis entjero kaj duobla.
Ni ne vidis iujn de la aliaj, do se ni alklaku entjeroj
ni povas vidi tie estas iu alia entjeroj, ke ili havas tie?
Ĉu ili ĉiuj tiom entjero, entjero, entjero.
Iuj lingvoj havas pli grandan entjeron tipoj,
kiel ni vidis en MySQL hodiaŭ estis int kaj poste grandaj int.
Cool.
>> Do, PHP manlibro.
Ni reiru al nia problemo aro spec, kaj ni nun rulumi malsupren al paĝo 4.
Unu el la aĵoj kiuj okazas kiam vi ricevas tiujn lingvojn
kiuj ne havas tiun statika tajpi, do tiuj lingvoj, kie vi devas deklari
la tipo de variablo supren fronto
estas vi ricevas kazoj kie vi povus komenci havi variablojn de malsamaj tipoj
interagante kun la alia,
kaj PHP faras tion kie klopodas fari
kion ĝi konsideras esti la plej saĝa afero por fari
kiam vi havas 2 malsamaj tipoj interagi kun aliaj.
Ekzemple, se ni rigardas tiujn liniojn de kodo tie ĉi
vi vidas, ke ni havas kio okazas kiam
ni provu kaj aldoni la kordo 1 al la entjero 2.
Kio okazas se ni provu kaj aldonu ĉenon kiu ne estas nombra valoro
sed prefere reala karakteroj, CS al la numero 50?
Tiam ni vidos ĉu estas io malsama ol okazas kie
anstataŭ aldoni ŝnuro al nombro ni aldonante kelkajn al ĉeno,
kaj tiel plu kaj tiel plu, ĝis la punkto kie estas duumaj
ia stranga stuff ĉi tie, kie ni havas 7 + vera.
Kion la heck tio signifas?
>> Se vi infanoj antaŭeniri kaj gluu iom da ĉi tiu kodo en vian aparaton.
Vi povas konservi ĝin en dynamic.php.
Ni vidos kio okazas.
[Studenta] Simple uzu impreso, ne printf?
Yeah, do vi trovos ke impreso estas ankaŭ valida funkcio por presi en PHP.
Estas multaj malsamaj manieroj fari ĝin.
Ni vidos kun paro de la ekzemploj poste iam ni komencu paroli
pri la sola problemo, ke ni tuj skribos
kaj tiam la koncentriĝoj problemo, ke ni tuj skribos
ke eĉ se ni devas fopen kaj fclose
jen ofte ne la plej simpla maniero por legi en la enhavon de dosiero.
PHP havas multan tiuj C-similaj holdovers.
[Studenta] Kiam mi metis en ĉiuj 6 de tiuj aĵoj mi nur get one numeron kiel eliro.
[Nate H.] Kiam vi metas en ĉiuj 6 el tiuj aferoj.
Ni vidu ĉu ĉar estas eble-
unu afero estas ke tiuj presitaj alvokoj ne finita fine kun novaj linioj.
Ne nova linio disigi ĉiu el tiuj presitaj alvokoj,
do eble vi ricevas unu grandan numeron,
kaj estas vere ĝuste amalgama de nova linio gravuloj.
[Studenta] Konsentite, kiel mi certiĝu-
Nu, estas amaso de malsamaj manieroj.
Vi povus mane metitaj en presita de nova linio karaktero,
eĥo de nova linio karaktero,
presi de nova linio.
[Studenta] Do eĥo estas la sama afero kiel printf?
>> Printf estas kiel C printf
kie vi presi formatan kordoj.
Vi provizado ĝi la formato ŝnuro kaj tiam ĉiuj lokokupilo variabloj.
Estas ofte iu kiu ne estas uzata-
ni vidu, kiel disclaimer,
Mi estas malpli familiara kun PHP ol mi kun aliaj TTT lingvoj,
kaj kiam mi programita en PHP Mi tipe ne uzas printf
ĉar mi trovas ĝin pli rapide uzi la ŝnuron interpola kapablojn kiu havas,
kiuj ni iros en kaj mi montros al vi en nur dua,
dum en C ni ia devas fari ĉi hacky afero akiri ĝin por presi konvene.
Vi povas fakte metis variabloj rekte en ĉenoj en PHP.
Printf estas speco de tro longa por kio mi kutime faras. Jes, Ella.
[Ŝi] Ĝenerale se vi ricevas parse eraro tio signifas-
kiel sur C ne diras al vi precize kie la eraro estas kaj kio estas,
do tio signifas rigardu per viaj tutaj kodo kaj kompreni ĝin?
Estas tipe pli celata ol tio.
Mi kredas en tiu kazo estis iom for,
do mi pensas en tiu kazo ni mankis punktokomo.
Ĝi klopodis sencon de ĉiu,
tiel kiel tiuj interpretitaj lingvoj, la interpretisto tuj provi
kaj faru lia pli bona fari cxion laboro taŭge.
>> Vi vidos, ekzemple, en JavaScript
Vi ofte linio deklaroj fino kun punktokomo ĝuste kiel ili faras en PHP,
ĝuste kiel ili faras en C.
En JavaScript kelkaj el la JavaScript interpretistoj
en tereno de la retumiloj metos en punktokomojn por vi
se vi hazarde mankus ili.
Ili provos kaj akomodi por iu sloppiness en via parto.
Tie estas kie gxi eble provi kaj provi kaj provi fari tion laboron,
kaj tiam fine alvenos al punkto kie diras bone,
Mi ne povas fari tion labori en achique, kaj tie estas kie vi ricevos numero de linio
kiuj povus simili iom for de la ĝusta loko.
Konsentite, do ni iru tra tiu vere rapide.
Ni cxesis kun Ella, do ni transiru al Missy,
kaj Missy, kion signifas truon de kordoj 1 plus la nombro 2 al vi?
[Missy] 3. >> 3.
Ĉu tio havas sencon? Ordigi de?
Ĉu ĝi donas al vi kelkajn? Ĉu ĝi donas al vi ĉenon?
[Missy] A nombro. >> Estas nombro.
Sed ĝi estas videbligi ĝin, do ĝi estas tuj donos al vi ian kordoj.
>> Unu aferon ni povos fari por kontroli this out
estas, se ni faras $ var = 1 + 2
kaj tiam ni diri eĥo de gettype,
do ni uzas la trian specon de presi ĉi tie.
Nun ni povas vidi kio okazas tie.
Jen kion ni havas estas ni akiris entjero el ĉi.
Kvankam ni estis aldonante ĉi ŝnuro al nombro,
ni ne ricevis ĉenon el ĝi, kiel Missy diris.
Ni ricevas entjero.
Konsentite, do ni vidas, apud supren, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H.] 50. Ĉu tio havas sencon?
[Kevin] Yeah.
[Nate H.] Kial? Kial havas sencon por vi?
[Kevin] Ĉar ĝi estas nur havi la ŝnuro, havanta nombro valoron nulo.
Yeah, granda.
Speco de dubasenca situacioj, sed estas bone scii kio okazas.
Stella, kio okazas tuj poste kun nombro 1 + kordoj 2?
[Stella] 3. >> 3 denove.
Kaj en ĉi tiu kazo, ni ricevas ŝnuro aŭ numeron?
>> Ni donu ĉi provu.
Neniu pli rapida ol mi ricevas la respondon? Charlotte?
Ho, mi didn't-bonfartas, vidu, ni faros la saman tiaj aferoj
kie ni havas numeron pli kordoj, kaj oni tuj eĥon de la tipo,
vidi kion ni preni.
Ni atingas entjero.
Ne gravas kiu estas la kordo, kiu estas la nombro.
Ni ankoraŭ ricevos entjero.
Ĝi estas ankoraŭ faros kion ni povus atendi.
Bone, do Sam, kio pri la 90 + 9 boteloj de biero sur la muro?
[Sam] 99. >> 99.
Neniu boteloj de biero sur la muro, though.
Ĝi donas al ni iom da informoj pri kio okazas.
[Sam] Se vi estis skribinta 9 en literoj
tiam vi havus 90, ĉu ne?
[Nate H.] Yeah.
La demando estis se ni volas skribita 9 ekster kiel N-I-N-E
estus ni alvenas 99 aŭ 90?
Ni ŝatus ricevi 90.
Ĝi estas laŭvorte nur serĉas cifero gravuloj.
Ne sufiĉe inteligenta por rekoni nombro vortoj kaj ke aĵoj. Jes.
>> [Studenta] Ĉu ekzistas tia afero kiel typecasting en PHP?
Ekzistas, kaj ĝi estas precize la vojon vi farus en C.
Kio pri 10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H.] Jes, tia kiu povas esti surprize pri tio?
Kio okazus se vi faris tion saman tiaj aferoj en C,
se vi faris 10/7 en C?
[Charlotte] Estus nur doni al vi-dependanta sur kiel vi typecasted mi supozas
donus al vi nur limigita kvanto de ciferoj post la decimala.
Yeah, do limigita nombro de ciferoj post la decimala.
Kion alian povus esti-ĉu doni al vi ajnan ciferoj post la dekuma?
Ofte ne, do denove, dependanta sur kiel vi typecasting ĝin
ĝi povas aŭ ne konverti ĝin al glitpunkta nombro.
Tie estis tia agrabla ke ĝi faris.
Se ni montris al vi ĉi reen kiam ni komencis fari tian materialon en C
ĝi probable estus farita iom pli sentita
ke li ne nur iri al 1.
Kaj poste fine, Jamie, kio pri 7 + vera?
[Jamie] 8. >> 8.
Kion tio signifas?
Mi supozas ke nur donas veran la valoron de 1.
Yeah. Kio okazas se ni ŝanĝu tion al falsa?
[Studenta] 7.
Yeah, do memoras kie oni parolas pri tiuj binaraj valoroj,
1 estante sur, 0 esti ekstere?
Nun ni havas veran estas 1, 0 estas falsa,
kaj vi eble ne vidis tion en la C ekzemploj kiujn ni faris ĉi pasinta semestro,
sed historie la bool tipo en C ne estis reala tipo,
tial homoj uzis 0 kaj 1 en la loko de vera kaj malvera.
Tio estas elmontro de tio.
>> Okay, do la grava parto pri ĉiuj ĉi
estas ke ni havas ĉi tiuj malsamaj tipoj.
Ili povas interagi kun aliaj.
Ili povas ofte interagas kun unu la alian en manieroj kiuj estas bela, kiel ni vidis tie.
Estas agrable povi havi ĉenon 1 kaj la nombro 2, aldonu ilin kune kaj akiri 3.
Tio havas sencon.
Tamen, kiam vi skribas retejoj, kaj precipe kiam vi procesante
uzanto enigo, do diru al vi mi skribis retejo formo
kiu enspezas informon de la uzanto kaj tiam iras al procesi ĝin
sur la dorso senfina sur la servilo flanko en la PHP-an kodon
se vi esperas tiun valoron kiun la uzanto tajpas en kaj afiŝita
al viaj formo de esti entjero aŭ esti glitpunkta nombro aŭ io simila
Vi devas eksplicite jxetis gxin
kaj tiam faru iun tipon kontrolanta.
>> Vi ne volas simple fidi ĉi tiu tipo juggling sistemo por fari tion ellabori,
speciale por kialoj de sekureco kaj justa por la robustez de via retejo.
Nur ion por ne forgesi, ke ĉiufoje kiam vi manipulas formo datumoj,
ion, kio venas en la post aŭ la get superglobals
certigi ke vi ĉiam validigi ĝin kaj konverti ĝin kaj encasillado ĝin.
Kaj ĝuste kiel ni parolas antaŭ momento, ke typecasting
en PHP estas ekzakte la sama kiel en C kie vi havas la krampoj
kaj tiam la tipo.
Konservu ke en menso.
Unu funkcio kiu venos en oportuna kiam vi faras ĉi
estas ni estis uzante-kaj ĉi tiu estas speco de kiel flanken-
ni uzis tiun gettype funkcio ĉi tie
elŝeligi la tipo de variablo,
kaj dum ĉi tiu estas oportuna por depuración kaj vidi kion variablo de tipo estas
vi ne volas uzi tiun, ekzemple, en kondiĉo, kie
vi kontrolanta vidi se gettype di $ var = entjera fari ion.
Ĉi tiu estas malbona, malbona, malbona.
Anstataŭe ekzistas tiuj funkcioj nomas estas entjero, estas ĉeno,
estas tabelo, kiun vi volas uzi anstataŭ, do en tiu ĉi kazo
kion mi volas fari anstataŭ ĉi tiu viro ĉi tie
estas uzi la estas entjero var.
Kaj ili estas ofte referita estas is_ * en la senco, ke vi povus anstataŭi la * kun entjero,
ĉeno, kaj tiel plu, kaj justa por certigi vere rapida
Estas ĉi tiu estas int php.
Aspektas kiel vi povas fari bone estas int aŭ ekzistas entjero tiel?
Jes, alias, do int entjero alias.
Cool.
>> Kiel ni faras?
Ni reprenos la ritmo iom.
Nun ni iras por paroli pri tabeloj, do kiel vi povas vidi
en la venonta parto de la spec ni parolas pri kiel arrays en PHP
estas iomete malsama ol ili estas en C.
En vero, ili estas klaso de amalgama de
la tabeloj kiujn vi venis por koni kaj ami en C
kie ĉiu estas de la sama tipo
stokita sinsekve kaj contiguously en memoro,
kaj vi havas tiujn nombraj indeksoj.
Vi havas indicon 0, indico 1, indekso 2,
kaj vi stoki valorojn ĉe tiuj indeksoj.
Vi ankaŭ en C, kiam vi skribis Speller, multaj el vi
faris la hash tablo alproksimiĝo, kaj vi vidis, ke ni havis
malsama speco de stokado, kie ni surĵeto
ŝlosilo al valoro, do kiam vi provis gardi ion en hash tablo
vi devis precizigi ke vi volis konservi ĝin kun specifa klavo,
kaj ke ŝlosilo determinis la situon de la valoro kaj kie estus stokitaj.
Vi ia ricevis ambaŭ tiuj konceptoj okazas samtempe en PHP tabelo,
kaj kiel rezulto, ni ofte nomas tiujn asociaj tabeloj
kie ni estas asocii ŝlosilon en valoro.
En ĉi sekva parto ni parolas pri simpla PHP tabelo
kie ni havas klavojn a, b, kaj c,
ĉiuj kordoj, surĵeto al la entjeroj 1, 2, kaj 3.
Kaj vi povas havi klavojn de malsamaj tipoj.
>> Vi povas havi iujn klavojn kiuj kordoj, iuj klavoj kiuj estas entjeroj.
Vi povas havi valorojn de malsamaj tipoj.
Vi povas havi valoron kiu estas ĉeno, valoro kiu estas entjero,
valoro kiu estas objekto aŭ alia tabelo, ekzemple,
ĉiuj en la sama tabelo objekto, kiu estas speco de stranga.
Vi ne devas havi tabelo ke tio ĵus unu tipon de elemento en ĝi.
Vi povas havi multajn malsamajn aferojn okazas en tie.
La alia afero noti estas ke kiam vi faros vidi iun kiel ĉi tio en via kodo,
kiu estas valida PHP deklari tabelo nur kiel ĉi tiu, 0, 1, 2, 3, 4, 5,
kiu deklaras inicializado $ Arr esti ĉi tabelo.
Sed kion vi efektive atingi sub la kapuĉo estas tian implicitan
generacio de klavoj, kie ni devas 0 al 0, 1 al 1, 2 al 2, 3 al 3.
Kaj ĝi rezultas ke eĉ se vi ja havas aron kiel tiu ulo ĉi tien
kie vi havas, b kaj c kiel la ŝlosilojn
kaj tiam vi komencos uzi la tabelo puŝo metodo por ekuzi ĉi tabelo kiel stako,
tial vi povas vidi ke tiu tabelo objekto, ĉi tabelo estas vere farante superŝarĝita.
Ni povas uzi ĝin kiel tabelo. Ni povas uzi ĝin kiel hash tablo.
Ni povas uzi ĝin kiel stako.
Kiam vi komencas peli aĵoj sur tiu tabelo
la unua kiu pelas onto ĉi estos indekso 0 kaj tiam indekso 1 kaj indekso 2.
Vi povas akiri tian implicitan generacio de klavoj
se vi ne specifi ilin eksplicite.
La vojo vi precizigi klavoj eksplicite, kompreneble, estas per uzo ĉi krampo skribmaniero,
kiu estas simila al arrays krom anstataŭ nur permesante
entjero indeksoj en ĉi tie, nun ni permesi ion.
Se vi volas, ke via ŝlosilo esti ĉeno, vi volas specifi ĝin kiel ĉi tio.
Se vi volas esti int, vi precizigi ĝin kun la int vi volas uzi.
>> Demandoj en tiu ĝis nun?
Unu el la belaj aĵoj pri tiu ideo
estas ke vi povas nur iam havi unu valoron stokita kun aparta ŝlosilo.
Se ni reiru al nia super aparaton-lasu min forigi iun de ĉi aĵoj.
Kaj diru mi pravalorizi tabelo al esti 0, 1, 2, farita.
Se mi nun scias ke, ekzemple, se mi eĥon $ Arr [0]
Mi iros por ricevi la valoron 0 presita eksteren,
kaj ekde tie povas nur iam esti unu valoro stokita por aparta klavo
se mi stoki io ​​en $ Arr [0], diru al,
tiam mi scias kiam mi eĥon $ Arr [0] denove
Mi ne ricevos 0 surpaperigataj kiel antaŭe.
Mi nur tuj akiri.
Do tiu estas esence dirante ke mi ne povas havi $ Arr [0] provizon 2 malsamaj valoroj.
Ĝi ne povas stoki ambaŭ 0 kaj la ŝnuro al, kiel ĉi laŭvorte anstataŭas
kio estis en $ Arr [0] antaŭe.
La kialo mi alportas ĉi supren kuras ĝin, vidu kio okazas.
Atentu, ke mi atingis 0 surpaperigataj kaj tiam malsupren tie.
Ne nova linio tie ĉar mi estis pigra kaj ne metis tiun in
Kio estas cool pri ĉi estas ni povas uzi tiun, kiel maniero
kapti tiun ideon de aro
kie ni ne povas havi plurajn klavojn ene de tabelo.
Ni ne povas havi identa klavoj ene de tabelo.
Mi ne povas havi ŝlosilon 0 kaj valoro 1 kaj ŝlosilo 0 kaj valoro de
aŭ ŝlosilo 0 kaj valoro vera.
La ŝlosiloj estas ĉiuj-tie estas nur 1 ŝlosilon en la tabelo.
Kvankam vi povas havi la saman valoron stokita
multnombraj fojojn en la tabelo sub malsamaj ŝlosiloj
ĝi ne estas ebla havi identa klavoj plurfoje en via PHP tabelo.
>> Se ni rigardas tiun sekva problemo, unique.php,
kie ni volas malfermi al PHP-dosiero
enhavanta listo de kordoj, unu cxeno por linio,
kaj ni volas trovi ĉiun el la solaj kordoj en tiu dosiero
ĉiuj ni devas fari estas uzi unu el tiuj PHP arrays
kaj uzu la kordojn en la dosiero la ŝlosilojn al ĉi tabelo
kaj observu ĝisdatigi nian tabelo kiel ni stoki tiuj novaj klavoj.
Kiel ni legas ĉiu linio el la dosiero povas stoki ĝin en la tabelo,
kaj fine ni havos kiel nia klavoj en nia tabelo
ĉiuj la sola kordoj ene de la dosiero.
Ĉu tio havas sencon?
Ni vidos kiel tio funkcias.
Ni tuj malfermi, laŭ la specifo, nova dosiero nomata unique.php.
Malfermu. Oops, sorry, nova dosiero.
Ni tuj komenci ĝin kun la sama komenco kaj fino etikedoj.
Ni tuj savos ĝin en sekcio 9, kaj ni iras nomi ĝin unique.php.
Okay, nun zoom in
La ideo cxi tie estas malfermi dosieron,
legis en dosiero linio por linio.
Por ĉiu linio en dosiero
ni havos tabelo kie ni havi
la linio kiel nia ŝlosilo.
Kaj poste kiam ni atingos la finon ĉi tie
$ Arr la klavoj estas la sola linioj
de la arkivo ekde ni scias, ke se mi metis linion en tiun tabelo
multnombraj fojoj ĝi simple observu supera la malnovan valoron,
kaj ni povas efektive metis tabelo linio en kiel sin ĝuste tia.
>> Tio estas speco de stranga.
Ni stoki la sama klavo valoro paro denove kaj denove kaj denove,
sed kiam ni garantias ke estos nur 1 ŝlosilo nomita linio
tial se ni havas dosieron kiu diras-dosieron de bestoj bruoj kaj ĝi havas woof, woof,
Meow, Meow, Moo, Moo, kaj ĉiun fojon ni legas besto bruo ekster
kiel woof kaj ni konservas ĝin en nia tabelo ni preni woof, kaj tiam la dua fojo
ni stoki woof ĝi anstataŭigi la unua fojo ke ni gardis ŝin.
En la fino ni havas nur unu ero en la tabelo
por ĉiu el la besto bruoj en nia besto bruoj dosiero.
Ĉu vi infanoj sentas konfidas ke vi povas pritrakti la malfermo de dosiero en PHP?
Unu maniero fari ĝin-ni transiru ĉi rapide unu maniero fari ĝin
estas kun fopen, kiel ni vidis antaŭe.
Vi povas fopen some_file.txt.
Vi povas malfermi ĝin en legu modo, samkiel en C.
Tio estas unu perfekte bona maniero fari ĝin.
Vi ankaŭ tiam por legi en la dosiero linio por linio
havas la samajn funkciojn, multaj el ili, ke vi faris en C.
Vi havas fgets.
Vi havas feof, kvankam ni ne ŝatas uzi tiun
ĉar, memoru, ke ne estis granda en C.
Vi povas fari ĝin la sama vojo,
sed jen estas vere genia afero.
Pardonu, mi ne volas fari $ dosiero, sed tie estas funkcio nomita dosiero en PHP,
kaj ĉi tiu funkcio ĉi tie estas malvarmaj, ĉar ĝi legas la tutan enhavon
de la dosiero kiun vi specifas, do some_file.txt,
legas la tutan enhavon de tiu dosiero en tabelo
kaj poste lasas vin persisti super ĝi, kiu estas bela nifty.
>> Se ni iras, ekzemple, al nia reta foliumilo
kaj ni rigardu Google por PHP-dosiero
vi povas vidi ĉi tie ke nia manlibro diras ke dosieron legas tutan dosieron en tabelo,
kaj ni povas file_get_contents redoni la enhavon de dosiero kiel linio,
sed tipe nur nun ĝi tiel tablo estas vere bela ĉar kio faras
Estas ĝi rompas gxin tiel, ke ĉiu elemento
en la tabelo estas unu linio de la dosiero,
do se ni rigardas dosieron 0, tio estas la unua linio de la dosiero.
Dosiero 1, dua linio, arkivo 2, tria linio, kaj tiel plu kaj tiel plu.
Ĉu ne estus bela se tiu estis la tuta oni devis fari en C?
Bela nifty.
David montris ĉi tion en prelego, kaj la idiomo li montris estis
ke, krom nia normo por buklo-en PHP ni havis tiun
por ($ i = 0; i <10; i + +),
kaj vi povas fari tion en PHP tro, sama afero-
ni ankaŭ havas ĉi cool konstruo nomata foreach.
Foreach estas vere utila, kiam ripetanta super tabeloj aŭ tiuj datumstrukturoj
ĉar vi permesas eltiri ĉiu ero de la tabelo
sen devi permane fari la indeksado mem,
sen devi permane krei indekson variablo, pliigo ĝin,
eltiri la valoron en la tabelo en tiu punkto, ĉar tio estas tre komuna afero por fari.
>> Vi verŝajne faris tion tunoj da fojoj kiam vi faris C stuff
super la semestro, do kun ĉi foreach
ni povas buklo sur ĉi tiu dosiero tabelo,
kaj la sintakso estas ke ni volas nun buklo super ĉi tabelo
kaj specifi ke la variablo nin tuj uzi por stoki
la elemento de tablo loke, lokaj al la atingo de ĉi foreach buklo,
estas ni iras nomi ĝin linion.
Se ĝi estas dosiero de nur vortojn kaj estas unu vorto en linio
ni povus nomi ĝin vorton tiel, vere nur vi donas tiun nomon,
kion ajn vi volas nomi ĝin,
kaj poste interne de la buklo vi povas fari kion vi volas kun tiu variablo linio.
Se ĝi ne sufiĉas por ricevi la valoron de la tabelo, kaj vi ankaŭ volas
la indekso kune kun ĝi vi povas specifi nomon por la indekso
tiel kiel la valoro, kaj nun vi havas aliron al 2 variabloj.
Vi havas $ i kaj linio
kie $ i estas la indekso en la tabelo,
kaj linio estas la linio kiu vi rekuperita de la dosiero.
Ekzemple, se ni volis printi eĥo linio 0 de la dosiero ĉi,
ni povus fari ĝin ĝuste kiel ĉi tiu, "Linio $ i de la dosiero $ linio,"
kaj jen estas io ni ankaŭ ne vidis ankoraŭ ĉu
kie mi ĵus tute saltis super ĉi tiu tuta% s% d negoco
ke ni devis trakti en C, kaj anstataŭe mi iris rekte al
skribi la variabloj en linio en mia ĉeno.
>> Ĉi tio estas nomita variablo interpolado, kordoj interpolo
kie vi plenigaĵo la variabloj bone, kaj la PHP interpretisto
estas sufiĉe inteligenta, kiam ĝi estos legante tra ĉenon, kiu komenciĝas per duobla citaĵoj-
ne sola citaĵoj, kun simpla quoted kordoj vi ne povas fari ĉi-
sed kun duobla quoted ĉenojn kiel ĝi legas tra ĝi estas serĉas variabloj.
Oni ĉasas ilin, kaj se li vidas variabloj ĝi prenos la valoro de la variablo
kaj plenigos gxin en la kordo se ĝi povas konverti ĝin en kordoj reprezento,
kio estas bela nifty.
Cxar nun, ni diri la reston de ĉio,
savi tion, kaj kion ni povas fari nun estas ni povas malfermi dosieron
ke ni povas nomi some_file.txt-let-ejon krei novan dosieron-
kaj ni povas meti en faskon da sensencaĵoj stuff ĉi tien nur por testi cxion eksteren,
savi ĝin, nomas ĝin some_file.txt, kiel mi faras ĉi tien al la supro
kaj nun, se mi malzomi nur por certigi ĉiu estas en la sama dosierujo-
ĝi aspektas kiel mi havas unique.php kaj some_file.txt en la sama dosierujo.
Se mi kuras php unique.php
vidi kiel presas el ĉiu linio en mia dosiero kaj kion la linio estas?
>> Tio estas bela potenca, ĉu ne?
Rigardu, li prenis 3 linioj de kodo por malfermi dosieron.
Nu, 4 linioj de kodo. Mi ne povas rakonti hodiaŭ, klare.
Sed vere nur 2 interesaj linioj de kodo, ĉar la aliaj 2 estis la frizita krampoj,
sed en ĉi tiu multe kodo ni povis malfermi dosieron, persisti tra ĝi,
eltiri la numero de linio kaj la linio mem
kaj presi ĝin.
Cool stuff. Charlotte.
[Charlotte] Mi havas demandon pri la sintakso.
Do foreach traktas ĉiu unuopa linio de la dosiero kiun vi malfermos,
kaj kiam vi volas fari tion kun ĉiu unuopa linio vi simple fari ĝin kiel
kaj poste asocii la valoro.
[Nate H.] Kion vi povas fari ĉi tie-la demando estis
la foreach devas vidi kun la tabelo, do la foreach sintakso
Estas vere foreach, kaj rimarkas ke mankas spaco
aŭ io inter la por kaj la ĉiu.
Ili devas iri tuj apud la alia,
kaj tiam ĝi prenas en tabelo,
kaj tiam vi havas ĉi tiu alia ŝlosilvorto nomita kiel tiu devas esti tie,
kaj post la kiel vi povas ĉu meti unu variablo nomo,
en kiu kazo vi tuj estos eltiris la valoroj de la tabelo,
ne la indeksoj, aŭ se vi faros kiel ni skribas sube
vi ricevas la klavoj kaj la valoroj.
Vi havas foreach ero de la tabelo aŭ paro de la tabelo kiel tajpas taksi
aŭ kiel simple valoron.
Depende de kion vi bezonas, se vi ne bezonas la ŝlosilojn,
tiam vi povas iri per la valoro.
Se vi volas la klavoj vi povos iri kun ili ankaŭ.
>> [Charlotte] Mi ankaŭ rimarkis ni neniam deklaris la i aŭ linio.
Kiel ĝi eĉ scias kio ili estas?
[Nate H.] Kion vi aludas per deklari?
[Charlotte] Ni neniam diris al ili kion i aŭ linio rimedoj.
[Nate H.] Ni neniam diris la komputilo kio i aŭ linio signifas en terminoj de-
[Charlotte] Tio ili estas indeksita aŭ kiu they're-
[Nate H.] Ni neniam diris ke tiu estas supozataj esti la indekso aŭ la ŝlosilo kaj la valoro,
kaj tio estas ĉar tiu estas la PHP interpretisto.
Tiu servas kiel la deklaro kaj diras bone, la ŝlosilo tuj estos
variablo nomis i stokitaj en variablo vokis mi.
La valoro tuj estos stokitaj en variablo nomas linio,
tiel ĉi tio utilas kiel la deklaro de ĉi tiuj variabloj
kaj diras $ i estas ŝlosilo, kaj $ linio estas valoro.
Yeah, Ella.
[Ŝi] Se la klavoj ne estas faritaj ciferece
kiel faras ĝi decidi kion ordon ĝin tuj presi ĉion?
Ĉu ĝuste kiel la ordo ĝi estas eniris en?
[Nate H.] Ni provu.
Ni krei variablon nomis Arr,
kaj ni povas fari iras al 7.
Diru 0 iras al alia tabelo kun 1, 2, aŭ pomon.
Diru 7 iras al 1, b iras al 2,
kaj 3 iras al 4.
Tio estas speco de freneza rigardante ekzemple ĉar ni miksante supren
kordoj kaj entjeroj tuta loko.
Estas neniu reala Por ĉi tabelo.
Mi volas diri, ni povus mendi ĉion en alfabeta ordo de la klavoj.
Ni povis ordigi cxion alfabete de la valoro.
>> Ni povus provi kaj konsideri ke iuj estas kordoj, iuj estas ints,
kaj ni povus provi kaj konverti ilin ĉiujn al la sama tipo kaj vidu kio okazas,
aŭ ni povus konsideri ilin en la valoro kiun ni jam eniris ilin
kie ni metas tiun ulo en la komenco, tiu ulo en la dua, tiu ulo en tria,
ĉi ulo en kvara, kaj tiel plu.
Ni vidu kio okazas kiam ni kuras ĉi tiu kodo.
Se ni rulumu malsupren kaj faru la samajn tiaj aferoj,
kaj jen ĝi ne presi el la novaj linioj.
Kiam legi aferojn el la dosiero estis inkludante la novajn liniojn en la valoroj,
kiu estis kial presita ekster bele, dum tie ne faris tion,
por ke tio ĉio estas smushed kune.
Ni aldonu en tiu nova linio simple fari tion agrabla.
Ni rerun ĝin, kaj tial ĉi tie
rigardi kio okazis.
Ĝi presas cxion el la ordo en kiu ni metas gxin en la tabelo.
Ĝi konservi ordon en tiu senco.
>> Reiros al tiu problemo de uniques
kie ni volas povi persisti super dosiero,
kaj ni donos al ĝi some_file.txt,
kaj ni iras al persisti super ĝin kiel ĉi tio.
Ni diris, ke ni volis uzi tabelo por certigi ke ni volonte ricevis ĉiujn
unika liniojn el tie, kaj ni povus fari tion vere facile
por nur stokante en tabelo, ke ni kompreneble deklari ekster la medio de ciklo,
kaj ni diris ke se ni uzas la linioj en la dosiero de la klavoj en nia tabelo
se ni eniris duplikatajn linio ni volas esti supera al la antaŭa valoro.
Ne cxiam eblas havi 2 klavoj kiuj estas identaj en la sama tabelo.
Ni povas fari ĝuste tion.
Ni forigi ĉi eĥo deklaro ĉi tie.
Jen ni stoki la linio en la dosiero en nia tabelo
uzante sin kiel la ŝlosilo.
Nenio al ĝi, kaj ĝi rezultas ke ni eĉ ne bezonas tiun ŝlosilon.
Ni ne bezonas, ke i variablo.
Je ĉi tiu punkto se ni devis fari alian foreach buklo
kaj ni devis buklo super ĉiu Arr
kaj linio nun se ni eĥon-oops, sorry.
Ni ne povas uzi la komo. Ni devas uzi tion kiel ŝlosilvorto.
Nun se ni eĥon linio ni atingas ĉiuj la sola vortojn en la dosiero.
Se ni supreniras al some_file.txt,
kaj ni diras, ke ni faru pomo, banano, pomo, apple, banano,
se ni presi cxiujn el la solaj vortoj en tiu dosiero Ni devas nur preni
pomo kaj banano por presi.
Se ni savos tion, nun tie ni zoom reen en,
php unique.php, kaj ta-da.
Ni sukcese uniqued la dosiero.
>> La fina parto de tiu problemo estas demandante al vi por ordigi ĉi tabelo antaŭ vi presita ĝin
ĉar en tiu simpla ekzemplo ke ni ĵus faris
ni estis bonŝanca en la senco ke la dosiero-
ni faris tion elpensita ekzemple kun pomoj kaj bananoj.
Ĝi jam ordo.
Sed uzante la simpla speco funkcion vi povas ordigi tabelo, kiu estas bela nifty.
La fina afero mi volis paroli kun vi pri infanoj vere rapide
estas ke tiu speco de PHP estas ĉio bone kaj bonan, kaj ĝi estas super oportuna
scii kiel fari se vi iam bezonas fari iom, rapida aĵoj programmatically.
Ekzemple, se mi bezonas skribi programon kiu, ni diru,
metas ĉiujn en sekcioj Mi ne tuj iros kaj skribi ĝin en C.
Ĝi tuj estos longa.
Ĝi tuj estos speco de doloro, precipe se estas dosieroj implikitaj,
same kiel vi infanoj vidis.
Estas tiel bela, ke kun nur ĉi multe kodo tie ĉi
ni povis ŝiri per dosiero, eltiri ĉiujn solaj valoroj
kaj presi ilin eksteren.
>> Tamen, por via taskoj, por viaj projektoj,
se vi konstruas retejojn kun PHP la potenco estas ke
ni kuras niaj PHP dosieroj tra tiu interpretisto,
kaj la interpretisto estas procesante ĉio ene de la PHP etikedoj,
lasante ĉion alian netuŝita kaj kracxi el la rezultoj.
Ni povas fari ĉi konstrui HTML programmatically.
Nun, se ni reiru al la specifo, la lasta problemo en la spec
prelegoj pri tiu ideo de koncentriĝoj
kaj kreante falmenuo,
kion vi povas aŭ ne volas fari, depende de kion via fina projekto faras,
kiu permesas al la uzanto elekti el listo de ĉiuj eblaj koncentriĝoj
ilia unu koncentriĝo.
Nun, ĉi tiu estas speco de doloro por tajpi tiun eksteren
kaj ili devas fari ĉion ĉi permane, precipe kiam vi havas por certigi
ke vi havas ĉiujn angulajn krampojn en la ĝusta loko kaj ĉiuj citaĵoj en la ĝusta loko,
do kun PHP vi povas fari ĉi programmatically, kaj vi povas fari tion vere rapide.
>> Vidu kiel fari tion.
Ni tuj malfermi novan dosieron.
Ni tuj metos en nia PHP etikedoj.
Ni tuj nomas ĝin concentrations.php,
kaj nun kiam vi faras tion, speco de bona afero por pensi pri
kiam vi provas miksi kaj kongrui kun via PHP kaj HTML vian
estas decidi, estas bone, kio estas la parto, kiun mi volas programmatically generi?
Kio estas la parto, kiun mi povas programmatically generi?
Estas vere ke vi povas fari ĉion de via HTML
ene de PHP blokoj.
Vi povas eĥon ĉiuj la HTML kiel kordoj.
Ekzemple, se mi volas komenci fari la unuaranga etikedoj ene de PHP
Mi povas diri eĥo, diras elekti nomon = koncentriteco,
kaj tiam malsupren sub mi povus havi alian eĥo etikedo
aŭ alia eĥo nomis fermas la elektu.
Tiu estas unu maniero por fari ĝin ĉar kion tiu estas laŭvorte faros
estas presi ĉi ŝnuro kiam ĝi kuras tra la PHP interpretisto,
do la rezulto estos HTML.
Se mi savos tiun dosieron kiel estas nun
kaj mi kuras php concentrations.php
rigardu kion mi ricevis.
I got this malfermitaj proksimaj unuaranga etikedo.
>> Se mi estus fari tion kaj mi estis por savi ĉi tiun rezulton al dosiero,
diru concentrations.html-wait, ĝi aspektas kiel la l iris sur la alian flankon-
nun, se mi malfermos ĉi tien concentrations.html vi vidas mi havas validan HTML-dosiero.
Ĉu tio estas speco de stranga?
Ni uzas PHP por krei HTML, krei validan HTML.
La maniero ni faras estas ni nur havi la PHP print
la HTML, ke ni volas ĝin por presi.
Ĉi tiu estas laŭvorte kiel PHP retejoj laboras.
Kiam vi vizitas retejo kiu sendas vin al iu kiel
io, iu, iu punkto com oblikvo index.php
la komputilo estas laŭvorte nomante supren index.php,
kurante ĝin tra la PHP interpretisto, kaj kio ajn rubo eliras
ĝi estas sendi reen al la retumilo kaj dirante hey, retumilo, interpreti tion kiel HTML.
La belan afero estas ke ĝi povas esti doloro por konstante skribi eĥo, eĥo, eĥo, eĥo
kaj enfermas cxion en citilojn kiel ĉi tiu, do se vi volas skribi
la HTML tiu tuj estos statika mem povas fari ĝin kiel ĉi tiu,
metis ĝin ekstere, fermi ĝin,
kaj tiam tie vi nur metis ene de la PHP-etikedoj kion vi scias
vi volas programmatically generi, kaj en ĉi tiu kazo estas tiuj eblo etikedoj
ke estas doloro por generi.
>> Ekzemple, ni povus generi mil eblo etikedoj
farante io tiamaniere, $ i <1000, i + +
kaj dirante eĥo eblo valoro = $-whoops, mi ne povas fari tion.
Nu, ni provu kaj vidu kio okazas.
$ I kaj tiam dirante $ i </ eblo.
Prefere ol devi tajpi ke opcion etikedo mil malsamaj fojoj
Mi uzas PHP-kodo por generi ĝin aŭtomate, programmatically.
Speco de nifty. Yeah.
Mi memoras tiun esti menciitaj en ĉu la prelego aŭ la walkthrough,
sed kio estas la diferenco inter la citiloj,
la normalaj kaj ĉi tiuj nur tion?
Tio estas vere io ke mi faris malĝuste tie, ke mi tuj montros al vi.
La sola citaĵoj ne permesas neniun specialaj karakteroj,
do ĉio ene sola quoted kordoj estas interpretita laŭvorte.
Se mi havus \ n ene de unuopaj kurzoj kaj mi savos tiun, ekzemple,
kaj nun mi iras malsupren tie kaj ruli ĝin-
oops, kie mi povos?
Ho, ĝi estas ĉar mi forgesis la $.
>> Nun, se mi malfermos-efektive, cxi tie, ni forigi la tajpinte ĝin al dosiero.
Ni ĵus legis.
Ĉi tie vi vidas, ke mi havas ĉi laŭvorta \ n en la ĉeno, kiel ne estas reala nova linio,
kaj tiel same, anstataŭ reale interpolanta la valoron de ĉi tiu variablo
donis al mi la $ i mem, kiu estas speco de doloro.
La vojo ĉirkaŭ ĉi estas uzi la duoblaj citiloj,
kaj kiam vi uzas duoblan citaĵoj ĝin volo vere
adekvate interpoli la valorojn de ĉiu el ĉi tiuj variabloj ĉi tien
kaj ankaŭ rekonas ĉi \ n esti la nova linio kiu estas
kaj ne \ n.
Uzante la solaj estas bela, kiam vi havos
karakterojn, kiuj povus esti interpretita kiel supersignoj ĉar tiam vi ne devas
eskapi ilin senĉese.
Aĵoj povas akiri senorda, kaj ofte la vojo mi faros,
nur fari tion facila, estas ke se mi iros kaj havas nenion
HTML kiel en mia kodo mi inkluzivas redakti ene sola citaĵoj
kaj poste uzi tiun kunmeto operatoro
al concatenate la variabloj in
Ĉi tiu estas alia maniero fari ĝin
kie ni havas la skalara ke tuj konekti ĉi estas ĉeno
kun tiu kun ĉi kun ĉi tio,
kaj nun mi ne havas por eskapi tiuj duoblaj citiloj.
Mi ne devas uzi ĉi tiu viro eskapi.
Ili devos laŭvorte esti presita ekster kiel duoblaj citiloj kaj tiam ĉi ulo ĉi tie.
Ĉi tiu estas alia maniero de miksi ĉio kune.
>> [Studenta] Ankaŭ, kiam vi faris eĥon gettype ne estis citiloj ajn.
Bone, do eĥo estas speco de speciala en la senco ke vi ne bezonas krampojn.
Vi ne bezonas havi la citaĵo markas nepre ĉirkaŭ variabloj,
kiel ĝi estas valida por diri eĥon $ i, kaj ĝi tuj interpretas tion kiel ŝnuro.
Oni faros la dividon, do ni povis fari tion, kaj tio estas valida ankaŭ, sed ni ne bezonas ĝin.
Estas nedeviga.
En ĉi tiu semajno problemo aro elsercxu por multan tian stuff
kie vi miksante kaj trafa HTML kun PHP
samkiel tiu, kaj nun se ni rulumu dorso kaj ni kuras ĉi
ni povas vidi ke ni havas tuta amaso de eblo valoroj
ke nur got presita eksteren.
Ni havas ĉion ĉi HTML kiu got generita vere rapide por ni.
Mi lasos ĝin kiel ekzerco.
Ĝi estas tre simila al la dosiero legado kiun ni faris antaŭe.
>> Estas concentrations.txt dosiero kiun vi povas tiri malsupren de la CDN,
kaj vi povas malfermi ĝin per la sama foreach lertaĵo, ke ni faris antaŭe,
kaj foreach vi nur devas eĥon eblo kaj konekti
la taŭga valoroj, la taŭga klavoj kaj indeksoj,
kaj tiam vi ricevas guton malsupren kiu laŭvorte kreas
programmatically por vi ĉiuj la malsamaj koncentriĝoj en Harvard.
Al oportuna afero havi.
Ekzistas multe de agordo-ajxojn ĉi tiu farita.
Se vi ne faris ĝin jam preni la sekva duona horo, horo,
iu tempo hodiaŭ vespere definitive por certa,
trairu la problemo aro spec,
vidi kio okazas kun la starigo de la vhosts, la loka gastiganto, cxiuj aferoj.
Unu afero atentigi nun estas ke
en plej problemo aroj ni iris en vian Dropbox dosierujo
kaj poste elŝuti la problemo aro zip dosieron kaj unzipping ĝin.
Por ĉi tiu problemo aro vi ne volas.
Vi volas iri en tiun vhosts dosierujo.
Vi volas iri al vhosts kaj iru al la loka gastiganto dosierujon en ĝi,
kaj ĉi tiu estas kie vi volas disbatos la zip-dosiero,
maldensigi ĝin, kaj disponas iri.
Vi devas sekvi la paŝojn de apude.
>> Se vi havas demandojn, sendu retmesaĝon, afiŝi ĝin sur Discuss, venu al oficejo horoj.
Danke guys. Sekva semajno ni tuj havos revizio kunsido por la kvizo.
Ĝuu vian lastan problemon aro. Mi esperas ke ĉiu iras vere bone.
[CS50.TV]