[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