[Powered by Google Translate] [Sezzjoni 8 - aktar komdi] [Rob Bowden - Università ta 'Harvard] [Dan huwa CS50. - CS50.TV] Dawn in-noti taqsima ġimgħa ser ikunu pjuttost qasir, hekk jien biss ser iżommu jitkellem, inti guys huma ser iżommu tistaqsi mistoqsijiet, u aħna ser nippruvaw biex jimlew l-ħin kemm jista 'jkun. Ħafna nies jaħsbu li dan pset mhuwiex neċessarjament diffiċli, iżda huwa twil ħafna. Il spec pset innifsu jieħu siegħa biex jinqara. Aħna jagħtik ħafna ta 'l-SQL inti tista' possibilment bżonn tuża. Aħna jimxu miegħek permezz ta 'lott ta' dan, u għalhekk m'għandhiex tkun wisq ħżiena. Has ħadd beda jew lesti? Hu l-pset aħħar. Oh, Alla tiegħi. Normalment hemm JavaScript wieħed wara dan, imma affarijiet bidla kalendarji jagħmel kollox 1 ġimgħa iqsar, u aħna m'għadx għandhom pset JavaScript. I do not know kif dan jaffettwa kemm jekk JavaScript huwa se jidhru fuq l-eżami jew Quiz 1. Nimmaġina li se jkun xi ħaġa bħal għandek bżonn tkun taf livell għoli affarijiet dwar JavaScript, imma niddubita aħna'd biss jagħtuk straight JavaScript kodiċi peress li inti ma kellhomx pset fiha. Iżda dan se jkun Jittieħed għal reviżjoni kwizz ġimgħa d-dieħla. Sezzjoni ta 'mistoqsijiet. A lott ta 'dan il-għalf huwa kemmxejn ħażin fformulat, imma aħna ser jiddiskuti għaliex. B'differenza C, PHP huwa "dinamikament ttajpjata" lingwa. Xi jfisser dan, inti ssaqsi? Ukoll, jgħidu addiju għal dawk kollha char, float, int, u keywords oħra li għandek bżonn tuża meta tiddikjara varjabbli u l-funzjonijiet C. Fl PHP, it-tip ta 'varjabbli huwa ddeterminat mill-valur li huwa bħalissa azjenda. Għalhekk qabel we tip dan il-kodiċi fil-fajl imsejjaħ dynamic.php, PHP huwa dinamikament ittajpjat. Dan huwa veru. Ma naqbilx mal-fatt li dan ifisser li aħna qed tgħid addiju għal char, float, int, u keywords oħra. Id-differenza eżatta bejn dinamiku ttajpjata u sussidjarjament, li huwa statikament ittajpjat, huwa li dinamikament ittajpjat, kollha ta 'iċċekkjar tip tiegħek u l-għalf jiġri fil-ħin run, filwaqt statikament ittajpjat dan jiġri fil-ħin jikkompilaw. Il-kelma statiku b'mod ġenerali tidher li tfisser affarijiet waqt jiġbor. I raden hemm użi oħra għaliha, iżda C meta inti tiddikjara varjabbli statiku, ħażna tagħha huwa allokat fil-ħin jikkompilaw. Hawnhekk, dinamiku ittajpjata ifisser biss li - Fil Ċ jekk inti tipprova żżid string u integer, meta inti josservawha, li għaddej biex jilmentaw minħabba li għaddej biex ngħid li inti ma tistax żid int u werrej. Huwa biss mhux operazzjoni validu. Din hija ħaġa oħra li aħna ser tingħata fit-tieni. Iżda dan it-tip ta 'verifika, il-fatt li hija tilmenta fil-ħin jikkompilaw, huwa iċċekkjar tip statika. Hemm lingwi fejn inti m'għandekx bżonn li jgħidu char, float, int, u kollha ta 'dawk l-affarijiet, iżda l-lingwa tista 'tgħid mill-kuntest tal-ħaġa liema tip huwa suppost li jkun, iżda huwa għadu statikament ittajpjat. Mela jekk inti tieħu 51, OCaml, int qatt bżonn tuża xi wieħed minn dawn it-tipi, iżda xorta waħda se fil-ħin jikkompilaw ngħidu li inti ma tistax tagħmel dan għaliex inti qed tħallat l-int u string. Dinamikament ttajpjati biss ifisser li f'xi żmien matul il-ħin run int ser tikseb ilment. Jekk inti użaw ukoll Java qabel, b'mod ġenerali, kważi kull lingwa C-tip se tkun statikament ittajpjat, hekk C, C + +, Java, dawk kollha huma ġeneralment statikament ittajpjat. Fil Java meta inti tiġbor xi ħaġa u int qed tgħid string s ugwali xi ħaġa ġdida li mhix string, li għaddej biex jilmentaw għaliex dawk it-tipi biss ma jaqblu. Li għaddej biex jilmentaw fil-ħin jikkompilaw. Iżda għandu wkoll xi żmien dinamiku affarijiet simili jekk inti tipprova li jitfa xi ħaġa għal tip li l-aktar speċifika minn tip attwali tagħha, hemm xejn li tista 'tagħmel fil-ħin jikkompilaw biex tiċċekkja jekk dik mitfugħa se tirnexxi. Java wkoll xi tip dinamiku verifika li hekk kif jiġrilha dik il-linja tal-kodiċi meta huwa attwalment eżekuzzjoni, li għaddej biex jagħmlu l-mitfugħa, tiċċekkja jekk dik mitfugħa kienet valida fl-ewwel post, u jekk ma kienx, allura huwa għaddej biex jilmentaw li għandek tip invalidu. Tip Dynamic verifika. Tip dan fil-fajl imsejjaħ dynamic.php. Dynamic.php. I ser unzip dan ifformattjar. Għandna varjabbli, waqqafna lill-7 numru sħiħ, allura aħna qed tmur biex jistampaw u s% - Oh, aħna qed istampar it-tip ta 'dan, sabiex gettype se jirritorna t-tip tal-varjabbli. Aħna biss istampar tat-tip fuq u aktar mill-ġdid. Aħna biss php.dynamic.php. Aħna ser tara li dan jinbidel minn numru sħiħ għal string li Boolean kif aħna jgħaddu. Fl C m'hemm l-ebda tip ta 'data Boolean, m'hemm l-ebda tip ta' data string. Hemm * char u Boolean biss tendenza li jkun int jew char jew xi ħaġa. Fil PHP dawn it-tipi jeżistu, u li wieħed mill-vantaġġi kbar ta 'PHP fuq C - li l-operazzjonijiet string huma infinitament aktar faċli fil-PHP milli C. Huma biss xogħol. Allura aħna terga 'lura hawn. Aħna dam dynamic.php. Dan jirrakkonta l-interpretu PHP, PHP imsejħa, biex imexxu l-kodiċi PHP fil dynamic.php. Jekk għandek xi żbalji fil-fajl, l-interpretu ser jgħidlek! L-interpretu, dan huwa pass ieħor differenza kbira bejn PHP u C. Fil Ċ ikollok biex jikkompilaw xi ħaġa u mbagħad inti tmexxi dan il-fajl ikkumpilata. Fil PHP int qatt jikkompilaw xejn. Allura l-interpretu PHP huwa bażikament biss qari din il-linja b'linja. Hija hits var = 7 allura hits printf allura hits var allura hits printf u l-bqija. Hemm daqsxejn ta 'kompilazzjoni li tagħmel, u ħażniet sigrieti r-riżultati hekk jekk inti tmexxi l-iskrittura aktar tard inti tista 'tagħmel xi wħud, imma bażikament huwa linja minn tip linja ta 'ħaġa. Dan ifisser li ħafna mill-optimizations li nagħmlu fis-C, bħall-kompilazzjoni, huwa biss ġeneralment l-kumpilatur jistgħu jagħmlu ħafna ta 'tricks għalik. Hija tista 'tieħu varjabbli mhux użati, hija tista' tagħmel kollha ta 'dawn it-tipi ta' affarijiet, hija tista 'tagħmel recursion denb. Fil PHP int mhux se tikseb dak il-vantaġġ għaliex dan huwa biss se tibda eżekuzzjoni linja minn linja b'linja, u ma verament jirrikonoxxu dawn l-affarijiet kif faċilment peress li mhuwiex 1 kbar kumpilazzjoni jgħaddu minn fuq il-ħaġa u mbagħad l-eżekuzzjoni; huwa biss linja b'linja. Allura dak l-interpretu. Back għal ittajpjar dinamiku tagħna: pretty jibred, eh? You definitely ma setgħux jagħmlu dan fis-C! Issa, ara jekk inti tista figura l-tip ta 'kull wieħed mill-valuri li ġejjin. Ara dan għal referenza. Allura 3.50. Liema tip taħseb li għaddej biex tkun? Hawn huma t-tipi li għandna. Aħna bools, interi, punti galleġġjanti, kordi, arrays, oġġetti, u mbagħad riżorsi, li huwa tip ta vaga. Naħseb li hemm attwalment eżempju hawn. Imbagħad hemm NULL. NULL huwa tip speċjali. B'differenza C fejn NULL huwa biss pointer bl-indirizz 0, fil-PHP, NULL huwa tip tagħha stess fejn l-unika ħaġa validu ta 'dak it-tip huwa NULL. Dan huwa ferm aktar utli għall-iċċekkjar żball. Fl C fejn kellna din il-kwistjoni fejn jekk inti tirritorna NULL, ma jfissirx li inti qed jirritornaw pointer NULL NULL jew bl-użu li turi żball jew kollha ta 'din il-konfużjoni kellna fuq punt wieħed. Hawnhekk, jirritornaw NULL ġeneralment tfisser żball. A lott ta 'affarijiet wkoll ritorn foloz għal żball. Iżda l-punt huwa t-tip NULL, l-unika ħaġa tat-tip NULL NULL huwa. Imbagħad callback huwa simili inti tista 'tiddefinixxi xi funzjonijiet anonimi. Inti ma għandekx biex jagħtu l-funzjoni ta 'isem, imma int mhux se jkollhom jittrattaw ma' dak hawn. Ħarsa lejn it-tipi li dawn ma tistenna li taf, x'taħseb-tip ta '3.50 hu? >> [Student] float. Yeah. Mela allura hawnhekk, x'taħseb-tip ta 'dan huwa? >> [Student] Array. Yeah. L-ewwel waħda kienet float, it-tieni wieħed huwa firxa. Avviż li dan array mhijiex bħal firxa C fejn ikollok indiċi 0 għandha xi valur, indiċi 1 għandha xi valur. Hawn l-indiċi huma a, b, uc u l-valuri huma 1, 2, u 3. Fil PHP ma hemm ebda differenza bejn firxa assoċjattiva u biss firxa regolari kif inti ser jaħseb minnha fil C. Hemm biss dan, u taħt il-barnuża firxa regolari huwa biss firxa assoċjattiva fejn 0 mapep sa ċertu valur bl-istess mod ta 'mapep għal xi valur. Għal din ir-raġuni, PHP jistgħu jiġu pretty bad għal verament mgħaġġel kodiċi / benchmarking affarijiet peress li C meta inti qed tuża l-firxa taf li jaċċessaw membru huwa żmien kostanti. Fil PHP aċċess membru huwa li jaf kemm żmien? Huwa probabbilment kostanti jekk tkun hashes korrett. Min jaf dak li huwa verament tagħmel minn taħt il-barnuża? Int verament bżonn li nħarsu lejn l-implimentazzjoni biex tara kif li għaddej biex tittratta dik. . Fopen Allura mbagħad Naħseb hawn ejja biss PHP fopen manwali li tħares lejn it-tip ta 'ritorn. Naraw hawnhekk tista 'tfittex up pretty ħafna kull funzjoni fil-manwal PHP u dan huwa tip tal-paġna raġel ta 'PHP. It-tip ritorn se tkun riżorsa. C'est pourquoi I ħares it up, għaliex aħna ma verament jiddefinixxu tar-riżorsi. L-idea ta 'riżorsi, b'mod Ċ inti tip ta' ltqajna * FILE jew tkun liema tkun; fil-PHP ir-riżorsa hija * FAJL tiegħek. Huwa dak li int se tkun qari mill, huwa dak li int ser tkun bil-miktub lill. Huwa ġeneralment esterna, dan huwa riżorsa inti tista 'pull affarijiet minn u tarmi l-affarijiet li. U fl-aħħarnett, liema huwa t-tip ta 'NULL? >> [Student] NULL. Yeah. Allura l-unika ħaġa li hija NULL NULL huwa. NULL NULL huwa. Karatteristika waħda tas-sistema tat-tip PHP (għall-aħjar jew għall-agħar) hija l-kapaċità tagħha li juggle tipi. Meta inti tikteb linja tal-kodiċi PHP li tgħaqqad il-valuri ta 'tipi differenti, PHP se jipprova jagħmel il-ħaġa sensibbli. Ipprova l kull wieħed mill-linji ta 'kodiċi PHP. X'hemm stampata? Huwa dak li inti mistenni? Għaliex jew għaliex le? Dan il-fatt dwar PHP huwa dak li jagħmilha dak li nsejħu dgħajjef ittajpjat. Dgħajjef ttajpjati u bil-qawwa ittajpjat, jeżistu użi differenti għal dawk it-termini, imma ħafna nies jużaw dgħajjef ttajpjati u bil-qawwa ittajpjat li jfisser dan it-tip ta 'ħaġa fejn ("1" + 2); li xogħlijiet. F'dan C li ma tkunx taħdem. Tista 'timmaġina dan mhux qed jaħdem. Ħafna nies ħallat ittajpjar dinamika u t-tajping dgħajfa u t-tajping statiċi u l-ittajpjar qawwija. Python huwa eżempju ieħor ta 'lingwa li s dinamiku ittajpjat. Inti tista tarmi madwar tipi fil-varjabbli u li għaddej biex jiddeterminaw fil-ħin run kull ċċekjar żball. Fil Python li għaddej biex tesegwixxi dan u se tara ("1" + 2); u dan se jfallu minħabba li tgħid li inti ma tistax żid string u numru sħiħ. Fil PHP, li huwa daqstant dinamiku ittajpjat, dan mhux se jonqsu. Ittajpjar Dgħajfa għandha tagħmel il-fatt li hija ma affarijiet ma 'tipi li ma verament jagħmel sens neċessarjament. Allura ("1" + 2); I jista 'jimmaġina li huwa l-sekwenza 12, I jista' jimmaġina li huwa l-sekwenza 3, I jista 'jimmaġina li huwa l-3 numru sħiħ. Mhuwiex neċessarjament definiti tajjeb, u aħna qed probabbilment se tara hawn li meta aħna istampar ("1" + 2); huwa probabbilment se jispiċċa jkun differenti minn stampar (1 + "2"). U dan għandu tendenza li jkun, fl-opinjoni tiegħi, għall-agħar. Hawnhekk nistgħu nippruvaw dawn. Ieħor trick ftit dwar PHP hija li inti m'għandekx bżonn li attwalment tikteb il-fajl. Hija ma jkollhom run dan il-mod kmand. Allura PHP-r, allura nistgħu tarmi l-kmand hawn: "Print ('1 '+ 2);" u jien ser tarmi linja ġdida. Dan stampati 3. Jidher qisu dan prints 3 u huwa l-3 numru sħiħ. Allura issa ejja jippruvaw il-mod ieħor madwar: "Print (1 + '2 '); Nikbru 3, u huwa wkoll se tkun numru sħiħ 3? I onestament l-ebda idea. Jidher qisu dan huwa konsistenti. Hemm qatt xi ċans ta 'dan huwa l-12 spaga jew xi ħaġa bħal dik għaliex PHP, b'differenza JavaScript u Java wisq, għandha operatur separata għall konkatenazzjoni. Konkatenazzjoni fil-PHP huwa dot. Allura l-istampar (1 '2 '.); Se tagħtina 12. Dan x'aktarx li jwassal għal konfużjoni fejn in-nies jipprova jagħmel xi ħaġa simili str + = xi ħaġa oħra li jkunu jridu jżidu fuq it-tmiem ta 'sekwenza tagħhom, u li għaddej biex jonqsu. Ikollok bżonn tagħmel str. = Allura ma ninsewx konkatenazzjoni fil-PHP huwa dot. Affarijiet oħra li jippruvaw: jistampaw ("CS" + 50); Stajt qallek li m'hemm l-ebda tama ta 'din tirriżulta CS50 peress konkatenazzjoni mhix +. What do you think dan se jispiċċaw? I onestament assolutament ebda idea. Jidher qisu huwa biss 50. Huwa jara l-sekwenza, u I bet jekk npoġġux 123CS - Huwa jara l-sekwenza ewwel, tipprova taqra integer minnha jew numru minnha. F'dan il-każ jara 123CS. "Dan ma jagħmilx sens bħala numru sħiħ, hekk jien biss se jaħsbu 123." Allura 123 + 50 se tkun 173. U hawn jibda qari dan bħala numru sħiħ. Ma tara xejn, u għalhekk biss titrattah bħala 0. Allura 0 + 50 se tkun 50. Dan Jien wieħed jassumi li jkun ser tagħmel xi ħaġa simili. Jien ħsieb 99. Yeah, minħabba li għaddej biex tieħu l-ewwel - Allura 99. Hawnhekk (10/7), jekk dan kien Ċ, dak li dan jirritorna? [Student] 1. >> Yeah, ikun 1 minħabba 10/7 hija diviżjoni 2 interi. Integer diviż bil integer se jirritorna numru sħiħ. Ma jistax jirritorna 1 punt tkun xi tkun li tkun, hekk huwa biss jmorru lura 1. Hawnhekk istampar (10/7); li għaddej fil-fatt tinterpreta dan. U dan ifisser li jekk inti fil-fatt tixtieq li tagħmel arrotondament numru sħiħ u għalf bħal dik, inti għandek bżonn tagħmel print (art (10/7)); Fl C huwa probabbilment stramb li inti tista 'tistrieħ fuq truncation numru sħiħ regolarment, iżda fil-PHP inti ma tistax għaliex se awtomatikament jibdluh float. U mbagħad (7 + reali); x'taħseb li għaddej biex tkun? Jien guessing 8 jekk li għaddej biex tinterpreta veru bħala 1. Jidher qisu huwa 8. Allura xejn aħna ghamilt fl-aħħar 10 minuti għandek assolutament qatt tagħmel. Inti se tara kodiċi li ma dan. Ma għandhom ikunu ċara kemm dan. Jista 'jkollok 2 varjabbli, u 1 varjabbli jiġri li jkun string u l-varjabbli l-oħra jiġri li jkun int, u allura inti żid dawn il-varjabbli flimkien. Peress PHP huwa dinamikament ittajpjat u mhux se jagħmel kwalunkwe verifika tip għalik u peress li huwa dgħajjef ttajpjata u peress li se biss awtomatikament tarmi dawn l-affarijiet flimkien u kollox se biss xogħol, huwa diffiċli li anki taf li dan il-varjabbli għandha tkun string issa, so I m'għandhomx iżżidhiex mal din il-varjabbli, li huwa integer. L-aħjar prattika hija jekk varjabbli huwa string, jżommha bħala string dejjem. Jekk varjabbli huwa int, jżommha bħala int dejjem. Jekk inti tixtieq li jittrattaw ma interi u kordi, inti tista 'tuża varsint - li JavaScript. Intval. I do dan il-ħin kollu. PHP u JavaScript I ħallat kollox. Allura intval se jirritorna l-valur sħiħ ta 'varjabbli. Jekk aħna jgħaddu fil-"istampar (intval ('123 ')); ikollok 123. Intval innifsu mhux se jagħmlu l-verifika għalina li huwa esklussivament numru sħiħ. Il-manwal PHP, hemm funzjonijiet biss tant disponibbli, hekk hawn I think dak I-użu huwa is_numeric 1. Jien guessing li lura falza. Li ħaġa oħra għandna jmorru fuq huwa ===. Allura is_numeric ("'123df), inti ma naħsibx ta 'dan bħala is_numeric. Fil Ċ inti jkollha jtenni fuq kull karattri u tikkontrolla biex tara jekk kull karattru huwa ċifra jew ikun x'ikun. Hawnhekk is_numeric se tagħmel dan għalina, u huwa jirritorna falza. Allura meta I stampat dan, huwa stampat xejn, hekk hawn I am tqabbilha biex tara, ma jiġri li jkun falz? U għalhekk issa huwa istampar 1. Apparentement prints 1 bħala vera minflok ta 'stampar vera bħala vera. I wonder jekk I do print_r. Le, għadu ma 1. Tmur lura għall ===, == għadha teżisti, u jekk għandek tkellem lit-Tommy hu ser jgħidu == huwa perfettament multa. Jien se ngħid li == hija terribbli u qatt ma għandek tuża ==. Id-differenza hija li == tqabbel l-affarijiet fejn jista 'jkun minnu anki jekk dawn mhux qed l-istess tip, billi === jikkompara l-affarijiet u l-ewwel huwa ispezzjonijiet huma dawn l-istess tip? Iva. Okay, issa jien ser tara jekk dawn attwalment tqabbel bħala ugwali. Ikollok affarijiet stramb simili 10 ugwali - ejja ara dak li jgħid. Allura ('10 '== '1 e1 "); Dan prospetti vera. Ħadd ma jkollu xi guesses għaliex dan jirritornaw vera? Huwa mhux biss dwar dan. Forsi dan huwa ħjiel. Imma jekk jien bidla li għal f - darn it! I iżommu jużaw kwotazzjonijiet doppja. Ir-raġuni l-kwotazzjonijiet doppja huma yelling fil lili huwa għaliex stajt tpoġġi dan fil-kwotazzjonijiet doppja. So I jistgħu jaħarbu l-kwotazzjonijiet doppja fil hawn, imma kwotazzjonijiet uniku jagħmilha aktar faċli. Allura ('10 '== '1 f1 "); ma print veru. ('10 '== '1 E1 "); stampi veru. [Student] Huwa hex? >> Mhuwiex hex, iżda huwa qrib li huwa simili - 1E1, xjentifiċi notazzjoni. Hija tirrikonoxxi 1E1 bħala 1 * 10 ^ 1 jew ikun x'ikun. Dawk huma interi ugwali. Jekk nagħmlu === allura li għaddej biex tkun falza. I attwalment l-ebda idea jekk nagħmlu == dak dwar (10 u ''10abc);? Kull dritt. Allura dan huwa veru. Allura eżatt bħal meta inti għamilt (10 + "'10abc), u jkun 20, hawn (10 == "'10abc); huwa veru. Saħansitra agħar huma affarijiet simili (falz == NULL); veru jew (falz == 0); huwa veru, (falza == []); Hemm każijiet stramb ta '- Dik hija waħda ta' dawk każijiet stramb. Avviż li (falz == []); huwa veru. (0 "== foloz); huwa veru. ('0 '== []); Hija falza. Allura == bl-ebda mod transittivi. a jista 'jkun ugwali għal b u jista' jkun ugwali għal c, imma b tista 'ma tkunx ugwali għal c. Dak abomination lili, u inti għandek dejjem tuża ===. [Student] Nistgħu nagħmlu! == Kif ukoll? >> [Bowden] Iva. L-ekwivalenti tkun! = U! ==. Dan huwa attwalment ppreżentat fil-spec pset fejn ħafna ta 'funzjonijiet ritorn - Il-manwal PHP hija tajba dwar dan. Huwa jpoġġi fil-kaxxa aħmar kbir, "Dan se ritorn foloz jekk ikun hemm żball." Iżda 0 jirritornaw hija ħaġa perfettament raġonevoli li jirritornaw. Aħseb dwar xi funzjoni li hija mistennija li terġa 'lura numru sħiħ. Ejja ngħidu din il-funzjoni huwa suppost li jgħodd in-numru ta 'linji fil-fajl jew xi ħaġa. Taħt ċirkostanzi normali, inti tgħaddi din il-funzjoni ta 'fajl u li għaddej biex jirritorna numru sħiħ li jirrapreżenta l-għadd ta 'linji. Allura 0 huwa numru perfettament raġonevoli jekk il-fajl huwa biss vojta. Imma x'jiġri jekk int tgħaddih fajl invalida u l-funzjoni jiġri li jirritornaw falza jekk inti tgħaddi magħha fajl invalidu? Jekk inti biss tagħmel == int ma jiddistingwi l-każ bejn inkartament invalida u l-fajl vojt. Dejjem uża ===. Li dawk kollha. Fil PHP, it-tip array huwa differenti minn dak li qed jintużaw fl C. Tabilħaqq, inti tista 'diġà nnotat dan ta' hawn fuq meta inti raw li dan huwa ta 'firxa tip. Is-sintassi bracket huwa ġdid bħala ta 'PHP 5.4, li hija l-verżjoni aktar ġodda ta' PHP. Qabel dan inti dejjem kellu jikteb array ("a" -> 1, "b" -> 2. Dan kien il-kostruttur għal firxa. Issa PHP finalment jiġu madwar l-sintassi sbieħ ta 'ftit parentesi kwadri, li huwa biss tant aħjar minn firxa. Iżda jikkunsidraw PHP 5.4 hija l-verżjoni aktar ġodda, inti tista 'tiltaqa postijiet li lanqas biss ikollhom PHP 5.3. Matul is-sajf aħna dam fis din il-kwistjoni meta PHP 5.3 kien dak li kellna fuq l-appliance, iżda l-server li aħna skjerat kollha book grad tagħna u jissottomettu u dak kollu li Jittieħed li kien PHP 5.4. Ma jafux dan, aħna żviluppati fi 5.3, imbuttat sa 5.4, u issa kollha ta 'xejn f'daqqa ta' kodiċi tagħna xogħlijiet minħabba li hemm ġara li kien bidliet bejn 5.3 u 5.4 li mhumiex kompatibbli lura, u għandna biex tmur u jiffissaw kollha ta 'affarijiet tagħna li ma jaħdmux għall PHP 5.4. Għal din il-klassi, peress li l-appliance ma jkollhom PHP 5.4, huwa perfettament multa għall-użu parentesi kwadri. Imma jekk inti qed tfittex up affarijiet madwar l-Internet, jekk qed tfittex up xi tip ta 'għalf array, l-aktar probabbli int ser tara l-jespliċitaw out sintassi kostruttur firxa peress li kien madwar peress PHP twieled u s-sintassi bracket kwadru kien madwar għall-aħħar ftit xhur jew kull meta daħal madwar 5.4. Dan huwa kif inti indiċi. Eżatt bħal fil Ċ kif inti indiċi mill-parentesi kwadri simili $ array [0], $ array [1], $ array [2], inti indiċi bl-istess mod jekk inti jiġri li jkollhom indiċijiet tiegħek qed kordi. Firxa Allura $ array ["a"] u $ ["b"]. $ Array [b]. Għaliex kieku dan ikun ħażin? Huwa probabbilment se jiġġenera twissija iżda għadhom jaħdmu. PHP tendenza li tagħmel dan. Hemm tendenza li biss, "jien ser twissi inti dwar dan, imma jien biss se jibqgħu għaddejjin "U jagħmlu kull nista '." Huwa probabbilment se tittraduċi din lill string, iżda huwa possibbli li f'xi punt fil-passat xi ħadd qal jiddefinixxu b bħala "DINJA HELLO". Allura issa b tista 'tkun firxa kostanti u $ [b] fil-fatt se tkun qiegħda tagħmel "HELLO WORLD". Naħseb f'dan il-punt, jew għall-inqas f'ambjenti PHP tagħna, jekk inti tipprova indiċi fi array u li muftieħ ma jeżistix, dan se jonqsu. Ma naħsibx li se biss twissi inti. Jew għall-inqas inti tista 'tistabbilixxi hekk li ma biss twissi inti, hija biss straight up jonqos. Il-mod kif inti tikkontrolla biex tara jekk hemmx fil-fatt huwa tali indiċi huwa isset. Allura isset ($ array ["HELLO WORLD"]) se terġa 'lura foloz. isset ($ array ["b"]) se terġa 'lura veru. Tista 'taħlita dawn syntaxes. Jien pjuttost ċert liema dan array se jispiċċa jkun hu - Nistgħu tittestja out. Oh, I ħtieġa PHPWord. Dan huwa t-taħlit tal-sintassi fejn inti tispeċifika liema l-importanti hu u inti ma tispeċifika liema l-importanti hu. Allura 3 dritt hawn huwa valur. Inti ma espliċitament qal dak ewlieni tagħha se tkun. What do you think ewlieni tagħha se tkun? [Student] 0. >> Jien guessing 0 biss għaliex dan huwa l-ewwel waħda li għandna mhux speċifikat. Nistgħu attwalment jagħmlu koppja ta 'dawn il-każijiet. Allura print_r huwa print rikursivi. Hija se jistampaw il-firxa sħiħa. Ikun print subarrays tal-firxa jekk kien hemm xi. Allura print_r ($ array); php.test.php. Hija ma look like tatha 0. Hemm fil-fatt xi ħaġa li wieħed iżomm f'moħħu hawnhekk, imma aħna ser terġa 'lura lilha fit-tieni. Imma x'jiġri jekk I jiġri li tagħmel dan l-indiċi 1? PHP ma tagħmilx differenza bejn indiċi spag u indiċi numru sħiħ, hekk f'dan il-punt Stajt biss definit indiċi 1 u I tista 'tagħmel kemm $ array [1] u $ array ['1'] u se jkun l-istess indiċi u l-istess ċavetta. Allura issa x'taħseb 3 se tkun? >> [Student] 2. >> [Bowden] jien guessing 2. Yeah. Huwa 2. X'jiġri jekk aħna ma dan huwa 10, dan huwa 4? What do you think-indiċi tat-3 se tkun? Jien ħsieb 11. Raden tiegħi dwar liema PHP ma - u naħseb stajt tidher dan qabel - huwa hija biss iżomm rekord ta 'dak l-indiċi numeriċi ogħla huwa użat s'issa huwa. Huwa qatt ma ser tassenja indiċi string sa 3. Dejjem se jkun indiċi numeriċi. Għalhekk żżomm kont ta 'l-ogħla waħda huwa assenjat s'issa, li jiġri li jkun 10, u li għaddej biex jagħti 11-3. What I said qabel, avviż-mod huwa istampar dan array. Hija prints 10 ewlenin, ewlenin 4, ċavetta 11, ċavetta d. Jew saħansitra ejja tagħmel - I raden I ma jitqiegħdu 0, imma hija istampar 1, 2, 3, 4. X'jiġri jekk jien jaqilbu hawn? Jew ejja fil-fatt jaqilbu dawn 2. Issa prints 2, 1, 3, 4. Arrays PHP huma mhux biss bħal tabella hash tiegħek regolari. Huwa perfettament raġonevoli biex jaħsbu minnhom bħala tabelli hash 99% tal-ħin. Iżda fit-tabelli hash tiegħek hemm l-ebda sens ta 'l-ordni li fiha l-affarijiet kienu ġew imdaħħla. Allura hekk kif inti daħħalha fil-mejda hash tiegħek, jassumi hemm l-ebda lista marbuta u inti tista 'tiġġudika minn lista marbuta li ddaħħal l-ewwel. Imma hawnhekk aħna inserit 2 l-ewwel u jaf meta huwa istampar out din array li 2 jiġi l-ewwel. Ma ipprintjaha fi biss kull ordni. L-istruttura tad-data teknika li huwa użu huwa mappa ordnat, għalhekk mapep ċwievet għall-valuri u jiftakar l-ordni li fih dawk il-ċwievet kienu mdaħħla. Bażikament huwa għal xi kumplikazzjonijiet fejn huwa annoying li fil-fatt - Ejja ngħidu li għandek firxa 0, 1, 2, 3, 4, 5 u inti tixtieq li tieħu indiċi 2. Mod wieħed kif isir dan, ejja ara dak li qisu. 0, 2, 1, 3, 4. Mitfi jiġri li mitfi kemm varjabbli u indiċi array. Allura mitfi ($ array [2]); Issa x'inhu dan ser look like? 2 huwa biss marret, b'tali mod li l-multa perfettament. Aktar annoying huwa jekk inti tixtieq affarijiet li fil-fatt tkun simili firxa. I ser jitqiegħdu numri bl-addoċċ. Issa avviż indiċi tiegħi. Irrid li jkun biss bħal firxa C fejn tmur minn 0 sa tul - 1 u nista 'jtenni fuqha bħala tali. Imma malli I mitfija l-indiċi 2, dak li kien fl-indiċi 3 ma issa saret indiċi 2. Minflok hija biss tneħħi l-indiċi u issa inti tmur 0, 1, 3, 4. Dan huwa perfettament raġonevoli. Huwa biss annoying u inti għandek tagħmel affarijiet simili splice firxa. Yeah. [Student] X'jiġri jekk kellek biex loop u int riedu li jmorru fuq l-elementi kollha? Meta hit 2, ikun twassal qatt? Iterazzjoni fuq firxa. Hemm 2 modi kif inti tista 'tagħmel dan. Tista 'tuża regolari għall loop. Dan huwa pass ieħor intricacy ta 'PHP. Lingwi Ħafna, nixtieq ngħid, għandhom xi tip ta 'tul jew len jew xi ħaġa jindika t-tul ta 'firxa. Fil PHP huwa għadd. Allura għadd ($ array); $ i + +) Ejja biss print ($ array [$ i]); Avviż: undefined offset: 2. Huwa biss se jonqsu. Din hija r-raġuni li, għall-parti l-kbira, inti qatt ma jeħtieġ li jtenni fuq firxa bħal din. Jista 'jkun eżaġerazzjoni, iżda inti qatt ma jeħtieġ li jtenni fuq firxa bħal din għaliex PHP jipprovdi sintassi foreach tagħha fejn foreach ($ array kif $ oġġett). Issa jekk aħna jistampaw ($ partita), - we'll jiddiskutu dan fil-tieni - li jaħdem perfettament multa. Il-mod li foreach qed taħdem hija l-ewwel argument huwa l-array li int iterazzjoni fuq. U t-tieni argument, il-partita, permezz ta 'kull pass tal-linja għall- li għaddej biex jieħdu fuq il-ħaġa li jmiss fil-firxa. Mela ftakar il-firxa għandha ordni. L-ewwel darba permezz tal-linja għall-partita se tkun 123 imbagħad se jkun 12 imbagħad se jkun ta '13 imbagħad se jkun 23 imbagħad se jkun 213. Affarijiet nikseb verament stramb meta inti tagħmel xi ħaġa simili foreach. Ejja naraw dak li jiġri minħabba qatt ma għandek tagħmel dan. X'jiġri jekk aħna mitfija ($ array [1]); Dan kien probabbilment mistenni. Inti iterazzjoni fuq din array, u kull darba int tifi-indiċi 1. Allura għal indiċi 0, l-ewwel ħaġa, oġġett jieħu fuq il-valur 0, hekk li għaddej biex tkun 123. Iżda ġewwa tal-linja għall aħna mitfija indiċi 1, b'tali mod li l-mezzi 12 hija marret. Allura print. PHP_EOL. PHP_EOL huwa biss newline, iżda huwa teknikament aktar portabbli peress newlines fil-Windows hija differenti minn newlines fuq Mac u UNIX. Fuq Windows newline huwa \ r \ n, filwaqt kullimkien inkella t-tendenza biss sabiex ikunu \ n. PHP_EOL huwa kkonfigurat hekk li juża irrispettivament mill-newline tas-sistema tiegħek hija. Allura print dik. Ejja ma print_r ($ array) fl-aħħar. I kellhom ebda idea li dan ikun l-imġieba. Punt għadu jieħu fuq il-valur 12 anke jekk aħna mitfija 12 qabel we qatt ltqajna lilu mill-firxa. M'għandekx tieħu kelma tiegħi dwar dan, iżda jidher qisu foreach toħloq kopja tal-firxa u allura n-numru jieħu valuri kollha ta 'dik il-kopja. Għalhekk anki jekk inti timmodifika l-firxa ġewwa l-għar loop, mhux se kura. Punt se tieħu fuq il-valuri oriġinali. Ejja nippruvaw tifi dan. X'jiġri jekk dan huwa ta '$ array [1] = "bonjour"; Anki jekk aħna tpoġġi "bonjour" fil-firxa, il-punt qatt jieħu fuq dak il-valur. Hemm ieħor sintassi li foreach loops fejn inti tpoġġi 2 varjabbli separati bi vleġġa. Din il-varjabbli 1 se jkun iċ-ċavetta ta 'dak il-valur, u dan il-varjabbli 2 se tkun l-oġġett eżatt l-istess. Dan huwa uninteresting hawn, imma jekk immorru lura għall-każ oriġinali tagħna ta '"a" -> 1, "B" -> 1, hawn jekk aħna biss jtenni għal kull firxa bħala oġġett, oġġett se tkun l-1 kull wieħed ħin. Imma jekk irridu wkoll trid tkun taf l-ewlenin assoċjati ma 'dak l-oġġett allura nagħmlu kif $ ewlenin -> $ oġġett. Allura issa nistgħu nagħmlu (jistampa $ ċavetta. ":". Issa huwa iterazzjoni fuq u l-istampar kull ewlenin u l-valur assoċjat tiegħu. Ħaġa oħra li nistgħu nagħmlu fil foreach linji hija li inti tista 'tara dan sintassi. Ampersands qabel ismijiet varjabbli għandhom tendenza li jkunu kemm PHP ma referenzi. Fejn ir-referenzi huma simili ħafna għal pointers, inti ma għandekx pointers, sabiex inti qatt jittrattaw memorja direttament. Imma inti għandek referenzi fejn 1-varjabbli tirreferi għall-istess ħaġa bħat ieħor varjabbli. Ġewwa ta 'hawn ejja jagħmlu $ oġġett. Ejja ħa mmorru lura għal 1, 10. Ejja nagħmlu $ oġġett + +; Li għadha teżisti fil-PHP. Inti xorta tista 'tagħmel + +. php.test.php. I għandhom jistampaw. print_r ($ array); Aħna istampar 2, 11. Jekk I kellha biss għamlu foreach ($ array kif $ partita) allura n-numru se jkun il-valur ta '1 l-ewwel darba permezz tal-linja. Hija se inkrement 1-2 u allura aħna qed isir. Mela allura se jgħaddu mill-pass 2 tal-linja u dik il-partita hija 10. Hija żidiet oġġett sa 11, u mbagħad li jinsab biss tintrema. Imbagħad aħna print_r ($ array), u ejja ara li dan huwa biss 1, 10. Allura l-inkrement għamilna kienet mitlufa. Iżda foreach ($ array kif & $ partita) issa din il-partita huwa l-istess oġġett kif dan id-dritt hawn. Hu l-istess ħaġa. Allura $ partita + + huwa li jimmodifika firxa 0. Bażikament, inti tista 'ukoll tagħmel $ k - firxa> $ oġġett u inti tista' tagħmel $ [$ k] + +; Allura mod ieħor ta 'kif isir dan, aħna huma ħielsa li timmodifika partita, imma li mhux se jimmodifikaw firxa oriġinali tagħna. Imma jekk nużaw k, li hija essenzjali tagħna, imbagħad inkunu nistgħu biss indiċi fis firxa tagħna jużaw din ċavetta u inkrement li. Dan aktar direttament jimmodifika firxa oriġinali tagħna. Tista 'anki tagħmel dan jekk għal xi raġuni int riedu l-ħila li timmodifika - Attwalment, dan huwa perfettament raġonevoli. Inti ma tridx li jkollhom jiktbu $ array [$ k] + +, inti biss riedu jiktbu $ partita + + imma inti xorta riedu jgħidu jekk ($ k === "a") imbagħad inkrement oġġett u mbagħad jistampaw firxa tagħna. Allura issa dak li nistennew print_r tagħmel? Liema valuri għandhom jiġu stampati? [Student] 2 u 10. >> [Bowden] Biss jekk iċ-ċavetta kien "a" do we attwalment print dik. You probabbilment ħafna rari, jekk qatt, se jkollha bżonn tiddefinixxi l-funzjonijiet fil-PHP, imma int tista 'tara xi ħaġa simili fejn inti tiddefinixxi funzjoni bħal kwalunkwe funzjoni. Normalment inti ngħid ($ foo, $ bar) u mbagħad jiddefinixxu li jkun x'ikun. Imma jekk jien tagħmel dan, allura dan ifisser li kwalunkwe sejħiet tkun xi tkun, tkun xi tkun jitlob baz, għalhekk l-ewwel argument mgħoddi lill baz jistgħu jiġu mibdula. Ejja nagħmlu $ foo + +; u ġewwa ta 'hawn ejja do baz ($ partita); Issa aħna qed jitolbu funzjoni. L-argument tittieħed b'referenza, li jfisser li jekk aħna jimmodifikaw din aħna qed timmodifika l-ħaġa li kienet għaddiet pulzieri U l-istampar dan qed nistennew - sakemm I messed up sintassi - sirna 2, 11, għalhekk kien attwalment inkrementat. Avviż għandna bżonn referenzi 2 postijiet. X'jiġri jekk jien ma dan? Xi jfisser dan? [Student] Dan se jinbidlu. >> Yeah. Punt huwa biss kopja tal-valur fil-firxa. Allura partita se jinbidlu sa 2, iżda l-array ["a"] xorta se tkun l-1. Jew jekk dak I do dan? Issa partita hija mibgħuta bħala kopja lill baz. Allura l-kopja tal-argument se jkun inkrementat sa 2, imma oġġett innifsu qatt ma kien inkrementat sa 2. U l-oġġett huwa l-istess ħaġa bħat parentesi firxa tkun xi tkun, b'tali mod li firxa qatt ma inkrementat. Allura dawn iż-żewġ postijiet bżonnha. PHP huwa normalment pretty intelliġenti dwar dan. Għandek mnejn taħseb li nixtieq li jgħaddu permezz ta 'referenza - Dan kien effettivament kwistjoni fuq waħda mill-psets. Kienet ħaġa questions.txt fejn qal, Għaliex jista inti tixtieq li tgħaddi din Struct b'referenza? Liema kienet l-risposta għal din? [Student] Allura inti ma għandekx kopja xi ħaġa kbira. >> Yeah. A Struct jista 'jkun arbitrarju kbar, u meta inti tgħaddi l-Struct fl bħala argument jeħtieġ li kopja li Struct kollu li jgħaddi lill-funzjoni, billi jekk inti biss tgħaddi l-Struct b'referenza allura hija biss jeħtieġ li kopja l-indirizz 4-byte bħala l-argument li l-funzjoni. PHP huwa ftit aktar intelliġenti minn dak. Jekk ikolli xi funzjoni u I jgħaddu lilha firxa ta '1,000 affarijiet, ma jfissirx li huwa għaddej biex ikollhom kopja kollha 1000 ta 'dawk l-affarijiet li għaddih fil-funzjoni? Huwa ma għandek tagħmel dan immedjatament. Jekk ġewwa ta 'din il-funzjoni hija qatt ma attwalment jimmodifika foo, hekk jekk ($ foo === "bonjour") ritorn vera.; Avviż aħna qatt effettivament immodifikati-ġewwa argument ta 'din il-funzjoni, li jfisser li kwalunkwe għaddiet fl kif foo qatt ma jeħtieġ li jiġu kkupjati għaliex mhuwiex timmodifika dan. Allura l-mod PHP xogħlijiet huwa l-argumenti huma dejjem mgħoddija permezz ta 'referenza sakemm inti fil-fatt jippruvaw jimmodifikaw dan. Issa jekk jien ngħid $ foo + +; issa se jagħmel kopja ta 'l-foo oriġinali u timmodifika l-kopja. Dan jiffranka xi żmien. Jekk int qatt ma jmissu dan array massiv, int qatt ma attwalment timmodifika dan, ma għandux bżonn tagħmel il-kopja, billi jekk aħna biss jitqiegħed dan ampersand li jfisser li lanqas biss ma kopja anki jekk inti timmodifika dan. Din l-imġieba hija msejħa kopja-on-write. Int ser ikollok tara li f'postijiet oħra, speċjalment jekk inti tieħu kors sistema operattiva. Kopja on-write huwa mudell pjuttost normali fejn inti m'għandekx bżonn li tagħmel kopja ta 'xi ħaġa sakemm huwa attwalment jinbidlu. Yeah. [Student] X'jiġri jekk kellek l-inkrement ġewwa it-test, hekk biss 1 element minn 1000 ikun jeħtieġ li jinbidlu? M'inix ċert. Naħseb li kopja l-ħaġa sħiħa, iżda huwa possibbli huwa intelliġenti biżżejjed li - Fil-fatt, dak li jien ħsieb huwa jimmaġina kellna firxa li tidher bħal dan: $ array2 = [ Imbagħad indiċi "a" huwa firxa ta '[1 2 3 4], u l-indiċi "b" huwa firxa ta' kwalunkwe. I bżonn virgoli bejn dawk kollha. Immaġina hemm virgoli. Imbagħad "c" huwa l-valur 3. Okay. Issa ejja ngħidu li nagħmlu $ baz ($ array2); fejn baz ma tieħu din b'referenza. Allura $ foo ["c"] + +; Dan huwa tali eżempju fejn aħna qegħdin jgħaddu array2 bħala argument u allura huwa modifika ta 'indiċi speċifika tal-array inkrementazzjoni dan. I onestament l-ebda idea dak li PHP huwa se jagħmel. Dan jista 'faċilment jagħmlu kopja tal-ħaġa sħiħa, imma jekk huwa intelliġenti, hija ser tagħmel kopja ta 'dawn iċ-ċwievet fejn dan ser ikollu valur distint tiegħu iżda dan xorta jistgħu jindikaw il-firxa istess 1,2,3,4 u dan jista 'xorta juru l-firxa istess. I ser iPad dan. Aħna jgħaddu f'dan firxa fejn dan Guy punti sa 3, dan il-punti Guy sa [1,2,3,4], dan Guy jindika [34, ...] Issa li aħna qed jgħaddiha fil lill baz, aħna qed timmodifika dan. Jekk PHP huwa intelliġenti, hija tista 'biss tagħmel - Aħna xorta kellhom kopja xi memorja, imma jekk kien hemm dawn subarrays nested enormi aħna ma bżonn li kopja dawk. I do not know jekk dan huwa dak li ma, imma I jista 'jimmaġina li tagħmel dan. Dan huwa wkoll vantaġġ pretty kbir ta 'C fuq PHP. PHP tagħmel il-ħajja tant faċli għal ħafna affarijiet, iżda inti tip ta 'assolutament ebda idea kif ukoll li se jwettqu għaliex għandi ebda idea taħt il-barnuża meta huwa jagħmel dawn il-kopji ta 'affarijiet, oh, huwa li se tkun kopja ħin kostanti, huwa hija biss se jibdlu 1 pointer, huwa se jkun kopja lineari ridiculously diffiċli? X'jiġri jekk ma tistax issib spazju? Ma mbagħad bżonn biex imexxu ġbir taż-żibel li tikseb l-ispazju ftit aktar? U l-ġbir taż-żibel jistgħu jieħdu arbitrarju fit-tul. Fil Ċ inti ma għandekx għalfejn tinkwieta dwar dawn l-affarijiet. Kull linja waħda inti tikteb inti tista 'raġuni pretty ħafna dwar kif li għaddej biex iwettqu. Ejja nħarsu lura lejn dawn. Kif sbieħ huwa li inti ma għandekx biex jittrattaw funzjonijiet hash, listi marbuta, jew xi ħaġa bħal dik? Peress li jaħdmu ma 'tabelli hash hija tant faċli issa, hawn puzzle gost biex jaħdmu fuq. Jiftħu fajl imsejjaħ unique.php u fiha tikteb programm PHP (Magħrufa wkoll bħala "iskrittura"). Għandna t-tendenza li jsejħu lilhom skripts jekk dawn qed affarijiet qosra li inti tmexxi fil-linja tal-kmand. Bażikament, kwalunkwe lingwa li inti ma tiġbor imma int ser imexxu l-eżekutibbli fil-linja tal-kmand, inti tista 'sejħa li iskrittura eżekutibbli. I jistgħu biss kif ukoll jiktbu program C li ma dan, imma jien ma sejħa hija b'kitba peress I ewwel josservawha u mbagħad għaddi l-binarju. Iżda dan il-programm PHP aħna qed tmur biex sejħa b'kitba. Jew jekk aħna kiteb fil Python jew Perl jew Node.js jew xi waħda minn dawk l-affarijiet, aħna'd jsejħulhom kollha skripts għaliex inti imexxuhom fil-linja tal-kmand iżda aħna ma jikkompilawha. Nistgħu nagħmlu dan pretty malajr. Aħna mhux ser tuża ARGV. Ejja biss blow permezz ta 'dan. Sejħa hija unika, jikteb programm. Inti jista 'jassumi li l-input se jkun fih kelma waħda għal kull linja. Attwalment, ARGV se jkun pjuttost trivjali għall-użu. unique.php. L-ewwel ħaġa l-ewwel, irridu li jiċċekkjaw jekk aħna kienu għaddew 1 kmand tal-linja argument. Just kif inti tistenna argc u ARGV fis-C, aħna xorta jkollhom dawk fil-PHP. Mela jekk ($ argc! == 2) allura jien mhux se tittratta l-istampar ta 'messaġġ jew xejn. I ser biss ħruġ, kodiċi ta 'żball ta' 1. I tista 'wkoll ritorn 1. Rarament fil-PHP huma inti fil dan l-istat fejn aħna qed fuq - Normalment int fil-funzjoni msejħa minn funzjoni msejħa minn funzjoni msejħa minn funzjoni. U jekk xi ħaġa tmur ħażin u inti biss tixtieq li toħroġ kollox kollox, ħruġ biss tispiċċa l-programm. Dan teżisti wkoll fl C. Jekk int fil-funzjoni fil-funzjoni fil-funzjoni fil-funzjoni u inti tixtieq li joqtlu biss l-programm, inti tista 'sejħa ħruġ u se biss ħruġ. Iżda fil-PHP huwa saħansitra aktar rari li aħna f'dan il-livell ogħla. Normalment aħna qed ġewwa xi tip ta 'funzjoni, hekk aħna sejħa ħruġ hekk li aħna ma jkollhomx għalfejn imorru lura up 1 ħaġa li mbagħad jirrealizza hemm żball b'tali mod li jirritorna up jekk dan jagħraf kien hemm żball. Aħna ma jridux jiffaċċjaw dan, hekk ħruġ (1); ritorn (1); f'dan il-każ ikun ekwivalenti. Imbagħad dak li rridu li tiftaħ irridu fopen. L-argumenti huma ser tħares pjuttost simili. Aħna rridu li fopen ($ ARGV [1], u rridu li tiftħu għall-qari. Li jirritorna riżorsa li aħna qed tmur biex sejħa f. Dan jidher pjuttost simili għal kif C tagħmlu ħlief aħna ma jkollhom jgħidu * FAJL. Minflok aħna biss jgħidu $ f. Okay. Fil-fatt, jiena naħseb li din anke jagħtina ħjiel dwar l-funzjoni PHP imsejħa fajl. File PHP. X'inhu dan se tagħmel hu li jaqra fajl sħiħ fil-firxa. Inti ma anki ħtieġa li fopen dan. Huwa ser tagħmel dan għalik. Allura $ linji = fajl ($ ARGV [1]); Issa kollha tal-linji tal-fajl huma fil-linji. Issa rridu li sort-linji. Kif nistgħu sort l-linji? Aħna sort-linji. U issa nistgħu jistampaw minnhom jew ikun x'ikun. Probabbilment l-eħfef mod huwa foreach ($ linji kif $ line) eku $ line; [Student] Mhux se aħna anke jaqsmu linji billi referenzar xi ħaġa fis sort? Dan huwa fejn it-tip ikun definit bħala tip funzjoni ($ array &). Meta inti sejħa l-funzjoni li inti ma jgħaddu mill referenza. Hu l-funzjoni li jiddefinixxi bħala tieħdu bħala referenza. Dan huwa attwalment eżattament dak li marret ħażin meta aħna tpoġġi kollox li servers tagħna meta aħna marru 5.3-5.4. Sa 5.4, din kienet perfettament raġonevoli. Funzjoni ma tistenna li tieħu bħala referenza, imma int tista 'tgħaddiha bħala referenza hekk jekk il-funzjoni ma jiġri biex timmodifika dan, huwa għadu modifikata. Mill-5.4, int mhux suppost li tagħmel dan. Allura issa l-uniku mod inti tgħaddi permezz ta 'referenza huwa jekk il-funzjoni b'mod espliċitu ma. Jekk inti ma tridx li timmodifika dan, imbagħad inti għandek bżonn tagħmel $ kopja = $ linji u kopja pass. Allura issa linji se jiġu ppreservati u kopja se jinbidlu. php.unique.php. I jista 'jkollhom messed up xi ħaġa. Mhux mistennija "sort". Hemm għaddej biex tkun xi ħaġa li tagħmel dan għalina. Huwa lanqas hemm. Avviż meta inti taqra l-manwal li l-ewwel argument huwa mistenni li jkun array u huwa meħud mill referenza. Għaliex dan tilmenta lili? Minħabba I jkollhom din it-tip il-funzjoni għadu fil hawn li jien ma jridux. Okay. Php.unique.php, I ma tgħaddih argument minħabba I ma jkollhom fajl. Huwa php.unique.php fuq test.php. Hawnhekk huwa test.php kollha stampati fl-ordni sbieħ magħżula. Avviż li ordni magħżula hija tip ta 'stramb għal fajl kodiċi minħabba kollha ta 'linji vojta tagħna ser jasal l-ewwel imbagħad ser jiġu kollha ta 'għafsiet tagħna livell 1 imbagħad jiġu kollha ta 'għafsiet ebda tagħna. Yeah. >> [Student] Dan għall-kodiċi sors ma kienx għadda b'referenza? Hija li ġeneralment mgħoddi mill-valur? [Bowden] Meta inti sejħa funzjoni, hija qatt ma tiddetermina jekk kienx għadda mill referenza. Hu l-definizzjoni funzjoni li jiddetermina jekk kienx għadda mill referenza. U tħares lejn id-definizzjoni funzjoni ta 'tip jew biss tħares lejn din, dan jieħu l-argument b'referenza. Allura irrispettivament minn jekk inti tixtieq li tieħu b'referenza, hija ma teħodha b'referenza. Hija jimmodifika l-firxa fil-post. Dan huwa biss mhux permess. Int mhux permess li jagħmlu dan. >> [Student] Oh, okay. [Bowden] Dan, it-tip se jieħu linji b'referenza u timmodifika dan. U għal darb'oħra, jekk inti ma tridx li tagħmel dan, inti tista 'tagħmel kopja ta' tip. Anke f'dan il-każ, kopja mhix attwalment kopja ta 'linji. Hija biss tenfasizza l-istess ħaġa qabel ma jiġrilha 1 modifikata, fejn huwa 1 se tikseb modifikati fil-funzjoni sort, fejn, minħabba li l-kopja fuq il-jiktbu, issa kopja tal-kopja se jsiru. Tista 'wkoll tagħmel dan. Dik hija l-post ieħor tista 'tara ampersand. You see fil loops foreach, tara li fid-dikjarazzjonijiet tal-funzjoni, u tara li meta biss tassenja varjabbli. Issa aħna rnexxilna ​​xejn billi tagħmel dan għaliex kopja u linji huma litteralment l-istess ħaġa. Tista 'tuża linji u kopja xulxin. Tista 'tagħmel mitfi ($ kopja), u li ma linji mitfi, inti biss titlef referenza tiegħek għall-istess ħaġa. Allura bħala ta 'dan il-punt, issa linji hija l-uniku mod inti tista' aċċess linji. Mistoqsijiet? Yeah. [Student] Kompletament off topic, imma inti ma għandekx biex tagħlaq PHP mal-- >> Inti ma. Okay. [Bowden] I imur safejn ngħid huwa prattika ħażina li qrib magħhom. Li probabbilment eżaġerazzjoni, speċjalment fil b'kitba, imma ejja naraw x'jiġri jekk nagħmel dan. Li ma xejn. X'jiġri jekk jien ridt - [sighs] I bżonn li tgħaddi l-argument. Rimja. I imsejħa hija żbaljata. Allura php.unique.php ma 'l-argument. Issa jien ma anki bżonn din. I ser tgħaddiha argument validu. Dan stampati kwalunkwe huwa istampar. Jien istampar kopja u kopja ma teżistix. Allura linji. Hija stampati kollox, u mbagħad avviż dan kollu junk stabbiliti hawn, minħabba f'xi ħaġa PHP li huwa barra ta 'tikketti PHP huwa biss se jiġu stampati litteralment. C'est pourquoi HTML, huwa hekk sbieħ li nista 'tagħmel div blah, blah, blah klassi jew kwalunkwe, blah, blah, blah u mbagħad jagħmlu xi kodiċi PHP u mbagħad jagħmlu div aħħar. U issa l-istampar ta 'din I nikseb div sbieħ tiegħi top up, dak kollu li PHP stampat, div fil-qiegħ. Diżastruż meta xi ħaġa bħal din jiġri, li huwa pjuttost komuni, biss newline stray fil-qiegħ tal-fajl. Inti ma naħseb li jkun li kbar ta 'ftehim sakemm inti tqis il-fatt li ma browsers - Kif redirects xogħol jew bażikament kwalunkwe xogħol headers, meta inti tagħmel konnessjoni tiegħek għal sit u tibgħat lura dawn headers u affarijiet bħal reazzjoni 200 jew rispons direzzjoni ġdida jew kwalunkwe, headers huma validi biss sa l-ewwel byte ta 'data hija mibgħuta. Tista 'idawru eluf ta' drabi, iżda hekk kif l-ewwel byte ta 'data hija mibgħuta int mhux suppost li idawwru mill-ġdid. Jekk għandek newline stray fil-qiegħ ta 'fajl u ejja ngħidu li inti tuża din il-funzjoni u allura inti tixtieq li - Ejja ngħidu huwa ieħor fajl li l-index.php u inti require_once xi ħaġa - I cannot think ta 'eżempju tajjeb ta' dan. Il-kwistjoni jiġri meta din il-linja fil-qiegħ gets mtenni. Inti ma tridx xejn li ġew ittennew s'issa. Anke jekk inti ma intenzjoni fuq xejn jkollna mtenni, xi ħaġa ma jiksbu mtenni u hekk issa int mhux suppost li jibagħtu headers kwalunkwe aktar u int ser tikseb l-ilmenti. Inti biss ma jeħtiġux dawk tags għeluq. Jekk inti tagħmel pjan dwar xi ħaġa ma HTML - u huwa perfettament raġonevoli li tagħmel stabbiliti hawn div kwalunkwe u mbagħad f'dan il-punt tista 'jew ma tistax jinkluduhom. Hija ma verament kwistjoni. Iżda fl skripts PHP huwa rari li tagħlaq dan. Meta kollox huwa PHP, assolutament kollox, inti ma verament bżonn li jingħalaq / inti m'għandekx qrib dan. Naffaċċjaw it-kordi huwa ħafna nicer milli fl C. Fil PHP inti tista 'tispeċifika string ma' kwotazzjonijiet wieħed jew doppju. Bil kwotazzjonijiet uniku inti ma tistax tuża "ħarba" sekwenzi. Kontinwament jaħarbu, blah, blah, blah. Allura printf huwa rari ħafna fil-PHP. I raden I se jużaw printf jekk jien ridt li jagħmlu tip ta 'ħaġa - fil pset 5 inti użati sprintf jew ikun x'ikun. Imma inti trid tagħmel 001.jpg u 002.jpg. Allura għal dik it-tip ta 'ħaġa I fejn fil-fatt tixtieq li l-format-test nixtieq użu printf. Imma inkella nixtieq biss użu konkatenazzjoni sekwenza. I qatt verament użu printf. Aħna biss distinzjoni bejn id-dettalji kwotazzjonijiet uniku u kwotazzjonijiet doppja. L-akbar differenza hija li kwotazzjonijiet uniku, se jiġi stampat litteralment. M'hemm l-ebda tip ta 'data char fil-PHP, b'differenza C, għalhekk dan huwa ekwivalenti għal dan. Huma qed kemm kordi. U l-ħaġa sbieħ dwar kordi kwotazzjoni waħda hija nista 'ngħid "bonjour dinja!" blah, blah, blah, $ $ Wooo. X'jiġri meta I jistampaw dan huwa se jistampaw litteralment. Ejja jeħles kollha ta 'għalf tagħna. Allura eku $ str1; Huwa letteralment stampata kollha ta 'dawk l-affarijiet: sinjali dollaru, backslash n, li inti taħseb tkun newlines - kollha ta 'dawk l-affarijiet li prints litteralment. L-unika ħaġa li għandek bżonn biex jaħarbu huma kwotazzjonijiet uniku għaliex inkella ser jaħseb huwa għeluq il-kwotazzjonijiet uniku. Kwotazzjonijiet Double, kompletament differenti. Aħna diġà ara l-enfasi sintassi hija cluing us fuq x'hemm madwar li jmorru terriblement ħażin. php.unique. Undefined varjabbli: wooo għaliex dan huwa interpretat bħala varjabbli imsejjaħ wooo. Kwotazzjonijiet Double tavżak daħħal varjabbli in - Ejja ngħidu $ isem = "Rob"; Allura eku "Hi, jien jisimni $ isem!"; Hija tirrikonoxxi dan bħala varjabbli. Meta I run dan - u jien se tiddaħħal newline - Hi, jien jisimni Rob! u bonjour dinja! Dan huwa minħabba I qatt ma jitneħħew l-istampar ta 'wooo hawn fuq. Hemm 1 pass ulterjuri li tista 'tagħmel. $ Array = [1, 2, 3]; X'jiġri jekk jien tixtieq li jistampaw l-indiċi 1 tal array? You do $ array [0]. L-enfasi sintassi hija clue. X'inhu dan se jagħmlu? php.unique. Hi, jien jisimni 1!! li ma jkunx dak li ridt. Sintassi tenfasizza gideb lili. Ejja nippruvaw "a" -> 1, "b" -> 2. Li kif I jkollhom tiktibha. Kwotazzjoni waħda mhux mistennija (T_ENCAPSED blah, blah, blah, blah, blah). L-idea hija li huwa ma rrikonoxxietx dan bħala parti mill-firxa. Mhuwiex tirrikonoxxi dan bħala firxa indiċjati permezz ta 'ittra a. Inti tixtieq li tagħmel dan mdawra minn ċineg kaboċċi, u issa dak kollu li huwa f'dan il-Brace kaboċċi se jiġu interpolati, li hija l-kelma li nużaw għall magically ddaħħal dawn il-varjabbli fil-postijiet dritt. Issa tagħmel dan, php.unique, u Hi, jien jisimni 1!! kif mistenni jew Hi, jien jisimni Rob! Ħaġa waħda li l-tip ta 'sbieħ dwar kwotazzjonijiet uniku huwa li - Hemm xi spejjeż biex jiġi mdaħħal. Jekk tuża kwotazzjonijiet doppja, l-interpretu irid imur fuq din is-sekwenza, jagħmlu ċert li, "Oh, hawnhekk varjabbli. Now I bżonn biex tmur nikseb dak il-varjabbli u daħħalha hawn." Anki jekk inti ma tuża kwalunkwe varjabbli, xejn ġewwa ta 'dawn il-kwotazzjonijiet doppja jeħtieġ li jiġi interpolat, iżda xorta se jkun aktar bil-mod minħabba li jeħtieġ li jmorru fuq il-kwotazzjonijiet doppja tfittex għal affarijiet li jeħtieġ li jiġu interpolati. Kwotazzjonijiet Allura wieħed jista 'jkun daqsxejn aktar malajr jekk xejn jeħtieġ li jiġi interpolat, u I-tendenza li anki l-użu kwotazzjonijiet uniku għal, "Hi, jien jisimni". $ Array ["a"] xorta waħda. Li għaddej biex tkun ekwivalenti għal dak li kellna qabel. Imma hija kwistjoni ta 'preferenza. Jekk inti qed tuża PHP, inti probabilment ma jimpurtahom dwar id-differenza veloċità. M'hemmx biżżejjed li raġuni għalihom biex tibda bil. Kwalunkwe mistoqsijiet finali? Aħna fil-fatt lanqas biss jiksbu permezz kollha ta 'dan, iżda dan il-għalf kien boring. L-aħħar ħaġa li tip ta 'sbieħ fil-PHP huwa meta inti qed jittrattaw ma HTML, inti ser tuża hija daqsxejn, sabiex il-sintassi shortcut sbieħ għall-istampar ta 'varjabbli. Mingħajr tqegħid PHP hawn, din tissejjaħ tags qosra. Uffiċjalment bħala ta 'PHP 5.4, dan huwa deprecated. Inti huma rakkomandati biex PHP. Dan għadu appoġġjat, tags hekk qosra bil-