[Powered by Google Translate] [8.pants - ērtāk] [Rob Bowden - Hārvarda] [Tas ir CS50. - CS50.TV] Šie nedēļā sadaļā piezīmes ir būs diezgan īss, tāpēc es esmu tikai gatavojas glabāt runāt, jūs puiši gatavojas glabāt uzdodot jautājumus, un mēs cenšamies, lai uzpildītu tik daudz laika, cik iespējams. Daudzi cilvēki domā, ka tas PSET ne vienmēr ir grūti, bet tas ir ļoti garš. PSET spec pati aizņem stundu lasīt. Mēs dodam jums daudz SQL jūs, iespējams, varētu nepieciešams izmantot. Mēs staigāt jūs cauri daudz no tā, lai tā nebūtu pārāk slikti. Vai kāds sāka vai pabeigta? Tas ir pēdējais PSET. Ak, mans Dievs. Parasti tur ir aktivizētam viens pēc tam, bet kalendāra mainīt lietas padara visu 1 nedēļa īsāks, un mums vairs nebūs JavaScript PSET. Es nezinu, kā tas ietekmē to, vai JavaScript ir gatavojas parādīties uz eksāmenu vai Quiz 1. Es domāju, tas būs kaut kas līdzīgs jums jāzina augsta līmeņa lietas par JavaScript, bet es šaubos, ka mēs gribētu tikai jums taisni JavaScript kodu jo jums nav bijusi PSET tajā. Bet tas būs sīkumi par viktorīna pārskatīt nākamnedēļ. Sadaļā jautājumiem. Šīs daudz stuff ir nedaudz slikti formulēts, bet mēs apspriestu, kāpēc. Atšķirībā C, PHP ir "dinamiski drukāti" valoda. Ko tas nozīmē, Jums uzdot? Nu, atvadīties uz visiem tiem char, peldēt, Int, un citiem atslēgvārdiem jums ir nepieciešams izmantot deklarējot mainīgos un funkcijas C. PHP, mainīgs tips nosaka vērtību, tas patlaban notiek. Tātad, pirms mēs ierakstiet šo kodu failu sauc dynamic.php, PHP ir dinamiski drukāti. Tā ir taisnība. Es nepiekrītu tam, ka tas nozīmē, ka mēs esam sakot ardievas char, peldēt, int, un citus atslēgvārdus. Precīzu atšķirību starp dinamiski drukāti un pakārtoti, kas ir statiski drukāti, ka dinamiski drukāti, visas jūsu tipa pārbaudes un stuff notiek pie palaist laikā, savukārt statiski drukāti tā notiek kompilēšanas laikā. Vārds statiskā kopumā šķiet, nozīmē kompilēšanas laikā lietas. Es domāju, ka ir citi izmanto to, bet C kad deklarēt statisku mainīgs, to uzglabāšana piešķirta kompilēšanas laikā. Lūk, dinamiski drukāti tikai nozīmē, ka - C, ja jūs mēģināt pievienot stīgu un veselam skaitlim, kad jūs sastādīt to, tas notiek, lai sūdzēties, jo tas notiek, lai teikt, ka jūs nevarat pievienot int un rādītāju. Tas vienkārši nav derīgs operācija. Tas ir cita lieta, ka mēs sāksim sekundē. Bet ka veida pārbaudes, ka tā pārmet kompilēšanas laikā, ir statiska veida pārbaudi. Ir valodas, kurās jums nav nepieciešams teikt char, peldēt, Int, un visas no tām lietām, bet valodu var pateikt no saistībā ar lieta, kāda veida tā ir vajadzēja būt, taču tas joprojām statiski drukāti. Tātad, ja jūs ņemt 51, OCaml, jums nekad nevajadzēs izmantot jebkuru no šiem veidiem, taču tas joprojām būs kompilēšanas laikā, jūs nevarat izdarīt, jo tu esi sajaucot int un virkne. Dinamiski drukāti tikai nozīmē, ka dažkārt laikā palaist laikā jūs gatavojas saņemt sūdzību. Ja Jums ir arī izmanto Java, pirms vispār, gandrīz jebkurš C tipa valoda būs statiski drukāti, tāpēc C, C + +, Java, visi no tiem ir parasti statiski drukāti. Java kad jūs sastādīt kaut ko un jūs sakāt stīgu s vienāds jauna kaut kas nav virkne, kas notiek, lai sūdzēties, jo šie tipi vienkārši nesakrīt augšu. Tas notiek, lai sūdzēties kompilēšanas laikā. Bet tas arī ir dažas dinamisks laiks lietām, piemēram, ja jūs mēģināt nodot kaut tipam, kas ir konkrētāki kā pašreizējā veida, tur nekas to var darīt kompilēšanas laikā, lai pārbaudītu, vai šī lieta ir gatavojas gūt panākumus. Java ir arī daži dinamisku tipa pārbaude, ka, tiklīdz kā tas izpaužas uz šo līniju kodu kad tas ir faktiski izpildes, tā gatavojas darīt cast, pārbaudītu, vai tas metiens bija spēkā pirmajā vietā, un ja tas tā nav, tad tas notiek, lai sūdzas, ka jums ir nederīgs tips. Dinamiskā tipa pārbaude. Ierakstiet to vērā failu sauc dynamic.php. Dynamic.php. Es unzip šo formatējumu. Mums ir mainīgs, mēs noteikti to skaitlim 7, tad mēs ejam, lai to izdrukāt un% s - Ak, mēs esam drukāšanas veidu tā, lai gettype gatavojas atgriezties veidu mainīgā. Mēs esam tikai drukāšanas veidu atkal un atkal. Mēs tikko php.dynamic.php. Mēs redzam, ka tas mainās no skaitlim līdz virknes Būla kā mēs iet cauri. C nav Būla datu tips, nav virkne datu tips. Ir char * un Būla vienkārši mēdz būt int vai char vai kaut. PHP šiem veidiem pastāv, un tas ir viens no lielas priekšrocības PHP virs C - ka stīgu darbības ir nesalīdzināmi vieglāk PHP nekā C. Viņi vienkārši strādā. Tātad mēs atgriezties šeit. Mums bija dynamic.php. Šī stāsta PHP tulks, sauc par PHP, lai palaistu PHP kodu dynamic.php. Ja jums ir kādi kļūdas failā, tulks jums pateiks! Tulks, šis ir vēl viens liela atšķirība starp PHP un C C jums ir apkopot kaut ko un tad palaist šo apkopota failu. PHP jūs nekad sastādīt neko. Tāpēc PHP tulks būtībā tikai lasot šo rindu pa rindai. Tas hits var = 7, tad tas hits printf tad tas hits var tad tas hits printf un tā tālāk. Ir apkopošanu tas mazliet, un tas kešatmiņas rezultātus tādēļ, ja jūs palaist skriptu vēlāk jūs varat darīt, daži, bet būtībā tas pozīcijai veida lieta. Tas nozīmē, ka daudz no optimizācijām ka mēs ar C, tāpat apkopojot, tas ir tikai parasti kompilators var darīt daudz triku, lai jums. To var izņemt neizmantotās mainīgos, tā var darīt visas šīs lietas veidu, tā var darīt asti rekursijas. PHP jūs neesat gatavojas saņemt šo priekšrocību jo tas ir tikai gatavojas sākt izpildot rindu pa rindai līnija, un tas nav īsti atpazīt šīs lietas, kā viegli jo tas nav 1 liels apkopojums pa lieta iet un tad izpilde; tas ir tikai pozīcijai. Tā ka ir tulks. Atpakaļ uz mūsu dinamisku mašīnrakstīšanas: diezgan vēss, vai nē? Jūs noteikti nevar darīt, ka C! Tagad, redzēt, ja jūs varat izdomāt veidu katrā no šādām vērtībām. Redzētu šo atsauci. Tātad 3.50. Kāda veida jūs domājat, ka būs? Šeit ir veidi mums ir. Mums ir bools, integers, peldošas punkti, stīgas, masīvi objekti, un tad resursiem, kas ir sava veida neskaidrs. Es domāju, ka tur tiešām piemērs šeit. Tad tur ir NULL. NULL ir īpaša veida. Atšķirībā C kur NULL ir tikai rādītājs ar adresi 0, PHP, NULL ir sava veida, kur derīgs tikai lieta par šāda veida ir NULL. Tas ir daudz vairāk noderīga kļūdu labošanas. C, kur mums bija šo jautājumu, kur, ja tu atgriezties null, tas nozīmē jūs esat atgriežoties NULL rādītāju vai izmantojot NULL neizsaka kļūda vai visas šīs neskaidrības mums bija vienu punktu. Lūk, atgriežoties NULL parasti nozīmē kļūda. Daudz arī atgriezties viltus kļūda. Bet jautājums ir NULL tips, vienīgais, par nulles veida ir NULL. Tad atzvanīšanas ir kā jūs varat noteikt dažas anonīmas funkcijas. Jums nav, lai dotu funkcija nosaukumu, bet jums nebūs galā ar šo šeit. Raugoties no veidiem, kas viņiem gaida, lai mēs zinām, Ko jūs domājat par 3,50 veids ir? >> [Students] pludiņa. Yeah. Tātad, tad šeit, ko jūs domājat par šo veidu? >> [Students] Array. Yeah. Pirmais bija peldēt, otrais ir masīvs. Ievērojiet, ka šis masīvs nav kā C masīvs kur jums ir indekss 0 ir zināma nozīme, 1 indekss ir zināma nozīme. Šeit indeksi, b un c un vērtības ir 1, 2, 3 un. PHP nav starp asociatīvā masīva un tikai regulāri masīvs atšķirība kā jūs domājat par to C. Tur ir tikai tas, un zem motora pārsega regulāri masīvs ir tikai asociatīvā masīva bija 0 kartes uz kādu vērtību pašā veidā kartes uz kādu vērtību. Šī iemesla dēļ, PHP var būt diezgan slikts tiešām ātri kods / salīdzinošās lietām jo C, ja jūs izmantojat masīvu jūs zināt, ka, izmantojot locekli ir nemainīgs laika. PHP piekļuvei locekli ir kas zina, cik daudz laika? Tas ir iespējams, nemainīgu, ja tas hashes pareizi. Kurš zina, ko tas īsti dara zem pārsega? Jums tiešām ir nepieciešams apskatīt īstenošanu, lai redzētu, kā tas notiek, lai risinātu ar to. Tā tad fopen. Es domāju, šeit pieņemsim tikai PHP pamācību fopen skatīties uz atgriešanās veidu. Mēs redzam šeit jūs varat meklēt diezgan daudz jebkuru funkciju PHP rokasgrāmatā un tas ir sava veida cilvēks lapas PHP. Atgriešanās tips būs resurss. Tieši tāpēc es paskatījos to, jo mēs neesam īsti noteikt resursu. Resursu ideja, jo C jūs veida ieguvuši fails * vai neatkarīgi; PHP resurss ir jūsu failu *. Tas ir tas, ko jūs esat būs lasīšanu no tā, ko jūs esat būs rakstiski. Tas parasti ārējo, tāpēc tas ir resurss, jūs varat pull lietām no un mest lietas. Un visbeidzot, kāda ir veida NULL? >> [Students] NULL. Yeah. Tātad vienīgā lieta, kas ir NULL ir NULL. NULL ir NULL. Viena iezīme PHP tipa sistēmas (lai labāk vai sliktāk), ir tās spēja žonglēt veidus. Kad jūs rakstīt līnijas PHP kodu, kas apvieno vērtības dažādu veidu, PHP mēģinās darīt saprātīgi lieta. Izmēģināt katru no šiem virzieniem PHP kodu. Kas izdrukāt? Vai tas, ko jūs gaidīts? Kāpēc jā vai nē? Tas par PHP fakts ir tas, kas padara to, ko mēs saucam vāji drukāti. Vāji drukāti un stipri drukāti, pastāv dažādi izmanto šo terminu, bet lielākā daļa cilvēku izmanto vāji drukāti un stipri drukāti nozīmē šāda veida lieta kur ("1" + 2); kas darbojas. C, kas nedarbojas. Jūs varat iedomāties, tas nedarbojas. Daudzi cilvēki jaukt dinamisku mašīnrakstīšanas un vāja rakstīt un statisko rakstīt un spēcīgu rakstīt. Python ir vēl viens piemērs valodā, kas ir dinamiski drukāti. Jūs varat mest apkārt veidiem mainīgo un tas notiek, lai noteiktu pie palaist laikā jebkura kļūda checkings. Python tas notiek, lai izpildītu šo un to redzēs ("1" + 2); un tas neizdosies, jo tā saka, jūs nevarat pievienot stīgu un veselam skaitlim. PHP, kas ir tikpat dinamiski drukāti, tas nav neizdoties. Vāja rakstīt ir saistīts ar to, ka tā dara lietas ar veidiem ka nav īsti jēgas obligāti. Tātad ("1": + 2), es varu iedomāties, ka ir virkne 12, es varu iedomāties, tas ir virkne 3, Es varu iedomāties, ka tā ir skaitlim 3. Tas ne vienmēr ir labi definētas, un mēs, iespējams, gatavojas redzēt šeit ka tad, kad mēs drukāt ("1" + 2), tas ir iespējams, gatavojas galu galā ir dažādi nekā drukāšanai (1 + "2"). Un tas mēdz būt, pēc manām domām, uz sliktāk. Šeit mēs varam mēģināt šo. Vēl viens maz triks par PHP ir jums nav nepieciešams, lai faktiski rakstīt failu. Tas ir palaist šo komandu režīmā. Tā PHP-R, tad mēs varam iemest komandu šeit: "Print (1" + 2); "un es ņemšu mest jaunu līniju. Tas iespiests 3. Izskatās, ka tas drukā 3 un tas ir skaitlis 3. Tāpēc tagad pamēģināsim otrādi: "Print (1 + 2"); Mēs iegūt 3, un tas ir arī būs skaitlim 3? Es godīgi nav ne jausmas. Izskatās, ka ir konsekventa. Ir nekad jebkurš no tā ir virkne 12 vai kaut kā iespēja, ka jo PHP, atšķirībā JavaScript un Java pārāk, ir atsevišķa operatoru konkatenācija. Konkatenācija PHP ir dot. Tātad drukāšanas (1 2 ".) Gatavojas sniegt mums 12. Šī tendence radīt apjukumu, kur cilvēki cenšas kaut ko darīt, piemēram, str + = dažas citas lieta, ka viņi vēlas, lai pievienotu uz beigām to stīgu, un kas notiek, lai izgāztos. Jums nepieciešams darīt str. = Tik neaizmirstiet konkatenācija PHP ir dot. Citas lietas izmēģināt: print ("CS" + 50); Es esmu teicis, ka nav par šo cerību rezultātā CS50 jo konkatenācija nav +. Ko jūs domājat, ka šis gatavojas galu galā ir? Es godīgi nav ne jausmas. Izskatās, ka tas ir tikai 50. Tā redz virkni, un es bet, ja mēs 123CS - Tā redz pirmo stīgu, tā mēģina nolasīt kādu no tā skaitlim vai no tā numuru. Šajā gadījumā tas redz 123CS. "Tas nav jēgas kā veselums, tāpēc es esmu tikai gatavojas domāt no 123." Tātad 123 + 50 būs 173. Un šeit tas sāk lasīt šo kā veselums. Tā nesaskata neko, lai tā vienkārši izturas pret to kā 0. Tātad 0 + 50 būs 50. To es esmu pieņemot gatavojas darīt kaut ko līdzīgu. Es domāju 99. Jā, jo tas ir gatavojas veikt pirmo - Tā 99. Šeit (10/7), ja tas būtu C, ko tas var atgriezties? [Students] 1. >> Jā, tas būtu 1, jo 10/7 ir dalot 2 integers. Skaitlis jādala ar skaitlim gatavojas atgriezties skaitlim. Tā nevar atgriezties 1 punkts lai kas būtu, tāpēc tas ir tikai gatavojas atgriezties 1. Šeit drukāšanas (10/7), tas notiek, lai reāli interpretēt to. Un tas nozīmē, ka, ja jūs patiešām vēlaties darīt veselu noapaļošanu un sīkumi, piemēram, ka, kas jums jādara, drukāt (stāvs (10/7)); C tas ir iespējams dīvaini, ka jūs varat paļauties uz veselu truncation regulāri, bet PHP jūs nevar, jo tas automātiski pārvērst to apgrozāmos līdzekļus. Un tad (7 + patiess); ko jūs domājat, ka būs? Es esmu guessing 8 Ja tas notiek, lai interpretēt patiess kā 1. Izskatās, ka tas ir 8. Tātad kaut ko mēs esam darījuši pēdējos 10 minūtes, jums vajadzētu absolūti nekad darīt. Jūs redzēsiet kodu, kas to dara. Tas nav tik vienkārši, kā šis. Jums varētu būt 2 mainīgie, un 1 mainīga notiek, ir virkne un citiem mainīgā notiek, ir int, un tad jūs pievienot šos mainīgos kopā. Tā kā PHP ir dinamiski drukāti un tas nav jādara jebkura tipa pārbaudes par jums un kopš tā vāji drukāti un kopš tā būs tikai automātiski mest šīs lietas kopā un viss būs tikai darbs, tas ir grūti pat zināt, ka šis mainīgais ir virkne tagad, tāpēc es nebūtu to pievienotu šo rādītāju, kas ir skaitlis. Labākā prakse ir, ja mainīgais ir virkne, saglabāt to kā virknes mūžīgi. Ja mainīgais ir int, saglabāt to kā int mūžīgi. Ja jūs vēlaties tikt galā ar veseliem skaitļiem un stīgas, Jūs varat izmantot varsint - tas ir JavaScript. Intval. Man tas visu laiku. PHP un JavaScript es sajauc visu. Tāpēc intval gatavojas atgriezties veselu mainīgā vērtību. Ja mēs iet uz "print (intval ('123 ')), jūs saņemsiet 123. Intval pati nav gatavojas darīt to čeku par mums, ka tas ir tikai un vienīgi skaitlim. PHP roku, tur ir tikai tik daudz funkcijas pieejamas, tāpēc šeit es domāju, ko es varētu izmantot, ir is_numeric pirmais. Es esmu guessing, ka atgriezies nepatiesa. Tas ir cita lieta, mums ir jāiet pa ir ===. Tātad is_numeric ('123df "), jūs nebūtu domāju, ka is_numeric. C jums būtu atkārtot pa visas rakstzīmes un pārbaudiet, vai katrs simbols ir cipars vai neatkarīgi. Šeit is_numeric gatavojas darīt, ka mums, un tas ir atgriešanās nepatiesa. Tātad, kad es drukāts ka, to izdrukāt neko, tāpēc šeit es esmu salīdzinot to redzēt, Jūs notikt būt viltus? Un tāpēc tagad tas ir drukāšanas 1. Acīmredzot tas drukā 1 kā patiess nevis drukāšanas taisnība, jo taisnība. Nez, ja es daru print_r. Nē, tas joprojām nav 1. Dodas atpakaļ uz ===, == joprojām pastāv, un, ja tu runā ar Tommy viņš saka == ir perfekti labi. Es esmu gatavojas teikt, ka == ir briesmīga, un jums nekad nevajadzētu izmantot ==. Atšķirība ir tā, ka == salīdzina lietas kur tas var būt taisnība, pat ja viņi nav viena veida, tā === salīdzina lietas, un pirmkārt tas pārbaudes tie paši veidu? Jā. Labi, tagad es esmu gatavojas, lai redzētu, vai viņi tiešām salīdzināt būtu vienādi. Jūs saņemsiet dīvainas lietas, piemēram, 10 vienāds - Paskatīsimies, kas saka. Tātad ('10 '== '1 E1'); Tas atgriež taisnība. Vai kāds ir kādi minējumi, kāpēc tas atgriež taisnība? Tas ir ne tikai par to. Varbūt tas ir mājiens. Bet, ja es mainītu, ka ar F - darn to! Es turpinu izmantojot pēdiņas. Iemesls pēdiņas tiek kliedza uz mani ir, jo es esmu nodot šo pēdiņas. Lai es varētu izvairīties no dubultās pēdiņas šeit, bet vienu pēdiņām padara vieglāku. Tātad ('10 '== '1 F1); nedrukā taisnība. ('10 '== '1 E1 "); izdrukas taisnība. [Students] Vai tas Hex? >> Tas nav heks, bet tas ir tuvu, ka tas ir tāpat - 1e1, zinātniskā notācija. Tā atzīst 1e1 kā 1 * 10 ^ 1 vai neatkarīgi. Tie ir vienādi veseli skaitļi. Ja mēs to === tad tas būs nepatiesa. Man tiešām nav ne jausmas, ja mēs == ko par (10 un '10abc ');? Labi. Tāpēc, ka ir taisnība. Tātad tāpat kā tad, kad jūs (10 + '10abc '), un tas būtu 20, šeit (10 == '10abc "); ir taisnība. Vēl sliktāk ir lietas, piemēram (viltus == NULL); ir taisnība vai (viltus == 0); ir taisnība, (viltus == []); Ir dīvaini gadījumi - Tas ir viens no tiem dīvaini gadījumos. Ievērojiet, ka (viltus == []) ir taisnība. ('0 '== Nepatiess), ir taisnība. ('0 '== []) Ir nepatiesa. Tātad == nekādā veidā transitīvās. var būt vienāda ar B un var būt vienāds ar c, bet b varētu būt vienāds ar c. Tas ir kaut kas pretīgs, lai man, un jums vajadzētu vienmēr izmantot ===. [Students] Vai mēs == kā arī!? >> [Bowden] Jā. Ekvivalents būtu! = Un ==.! Šis ir faktiski uzaudzis PSET spec kur daudz funkciju atgriešanās - PHP pamācība ir labs par to. Tas liek lielā sarkanā kastē, "Tas būs atgriezties viltus ja tur kļūda." Bet atgriežoties 0 ir pilnīgi pamatota lieta atgriezties. Padomā par kādu funkciju, kas atkal ir gaidāma skaitlim. Teiksim šī funkcija ir paredzēts saskaitīt līniju failu vai kaut. Normālos apstākļos, jums iet šī funkcija failu un tas notiek, lai atgrieztos skaitlim, kas norāda, cik līniju. Tāpēc 0 ir pilnīgi pamatota numuru, ja fails ir tikai tukšs. Bet ja jūs nodot to nederīgu failu un funkciju notiek atgriezties viltus ja jūs nodot to nederīgu failu? Ja jūs vienkārši darīt == jūs neesat diferencēt lietu starp nederīgiem failu un tukšu failu. Vienmēr izmantot ===. Tas ir visiem tiem. PHP, masīvs veids ir atšķirīgs no tā, ko jūs esat pieraduši uz C. Patiesi, jūs, iespējams, jau pamanījuši šo iepriekš, kad redzējām, ka tas ir tipa masīvs. Kronšteinu sintakse ir jauns, jo par 5,4 PHP, kas ir jaunākā versija PHP. Pirms šo jūs vienmēr bija rakstīt masīvs ("" -> 1, "b" -> 2. Tas bija konstruktors masīva. Tagad PHP ir beidzot pienācis apkārt ar jauku sintaksi tikai kvadrātiekavās, kas ir tikai tik daudz labāk nekā masīvs. Bet ņemot vērā, PHP 5,4 ir jaunākā versija, Jums var rasties vietās, kas nav pat PHP 5.3. Pa vasaru mēs uzbrauca šo jautājumu, kur PHP 5,3 bija tas, ko mums bija uz ierīces, bet serveris ka mēs izvietoti visus mūsu kvalitātes grāmatu un iesniegt, un visu, kas stuff bija PHP 5.4. Ne zinot to, mēs izstrādāta 5.3 uzstāja līdz 5,4, un tagad pēkšņi neviens no mūsu kodu darbi jo tur noticis, ir bijušas izmaiņas starp 5.3 un 5.4 kas nav savietojams, un mums ir jāiet un noteikt visus mūsu lietām, kas nav darbs 5,4 PHP. Šīs klases, jo ierīce tiešām ir PHP 5,4, tas ir pilnīgi naudas sodu, lai izmantotu kvadrātiekavas. Bet, ja jūs meklējat up lietām ap internetu, ja jūs meklējat up kādu masīva sīkumi, visticamāk jūs gatavojas redzēt ārpus masīva konstruktors sintaksi pareizrakstības jo tas ir aptuveni kopš PHP dzimis un kvadrātiekavas sintakse ir aptuveni par pēdējo pāris mēnešu laikā vai tad, kad 5,4 ieradās apmēram. Tas ir, kā jūs indekss. Tāpat kā K kā tu indekss pēc kvadrātiekavās, piemēram, $ masīvs [0], $ masīvs [1], $ masīvs [2], Jūs indekss tāpat, ja jūs notikt ir jūsu indeksi ir stīgas. Tātad $ masīvs [''] un $ masīvs ['b']. $ Masīvs [b]. Kāpēc tas būtu nepareizi? Tas būs iespējams radīt brīdinājumu, bet joprojām strādā. PHP tendence darīt. Tā ir tendence vienkārši, "es esmu gatavojas jūs brīdināt par to, bet es esmu tikai gatavojas glabāt iet ", Un darīt, ko varam." Tas būs iespējams tulkot šo virkni, bet tas ir iespējams, ka kādā brīdī pagājušajā kāds teica noteikt b būt "HELLO WORLD". Tāpēc tagad b varētu būt pastāvīga un $ masīvs [b] faktiski tiks dara "HELLO WORLD". Es domāju, ka šajā brīdī, vai vismaz mūsu PHP iestatījumi, ja jūs mēģināt indeksam masīvs un ka galvenais nav, tas nebūs. Es nedomāju, ka tas būs tikai jūs brīdināt. Vai vismaz jūs varat iestatīt tā, lai tas nav tikai brīdināt jūs, tas tikai taisni uz augšu neizdodas. Kā jūs pārbaudīt, lai redzētu, vai tiešām ir tāds rādītājs ir isset. Tātad isset ($ masīvs ['Hello World']) atgriezīsies nepatiesa. isset ($ masīvs ['b']) atgriezīsies taisnība. Jūs varat sajauc šīs sintakses. Es esmu diezgan pārliecināts, ko tas masīvs galu galā ir - mēs varam pārbaudītu to. Ak, man vajag PHPWord. Tas ir sajaucot sintaksi, kur Jums jānorāda, kāda galvenais ir un jums nav jānorāda kāda atslēga. Tātad 3 šeit ir vērtība. Jums nav skaidri teica, ko tās galvenais būs. Ko jūs domājat, ka tā atslēga būs? [Students] 0. >> Es esmu guessing 0 tikai tāpēc, ka tas ir pirmais, mēs esam nav norādīts. Mēs faktiski var darīt pāris no šiem gadījumiem. Tātad print_r ir drukāt rekursīvs. Tas drukāt visu masīvs. Tas varētu drukāt subarrays no masīva, ja būtu kāds. Tātad print_r ($ masīvs); php.test.php. Tas izskatās tā deva tam 0. Tur tiešām kaut kas jāpatur prātā, bet mēs nokļūt atpakaļ uz to citā. Bet ja es notikt, lai padarītu šo indeksu 1? PHP neizšķir stīgu indeksu un integer indeksiem, lai šajā brīdī es esmu tikko noteikts indeksu 1 un es varu darīt gan $ Array [1] un $ Array [1 "] un tas būs tāds pats rādītājs un pats galvenais. Tātad tagad, ko jūs domājat 3 būs? >> [Students] 2. >> [Bowden] Es esmu guessing 2. Yeah. Tas ir 2. Ko darīt, ja mēs to darījām ir 10, tas ir par 4? Ko jūs domājat par 3 indekss būs? Es domāju 11. Mans minējums par to, ko PHP dara - un es domāju, ka es esmu redzējis šo pirms - tas ir tikai tur līdzi tam, ko augstākā skaitliskais rādītājs tas, ko līdz šim ir. Tas nekad gatavojas piešķirt virkni rādītāju līdz 3. Tā vienmēr būs ciparu indeksu. Tātad tas seko visaugstākajā tas piešķirtajiem tik tālu, kas notiek, ir 10, un tas notiek, lai dotu 11-3. Ko es teicu iepriekš, paziņojums kā tas ir poligrāfijas šo masīvu. Tā izdrukas taustiņš 10, atslēgu 4, taustiņš 11, atslēgu d. Vai pat pieņemsim do - Es domāju, man nav likts 0, bet tas ir drukāšanas 1, 2, 3, 4. Ko darīt, ja es mainīt šeit? Vai pieņemsim faktiski pāriet šos 2. Tagad tas drukā 2, 1, 3, 4. PHP masīvi nav tāpat kā jūsu regulāri hash tabulas. Tas ir pilnīgi pamatoti domāt par to, kā hash tabulas 99% no laika. Bet jūsu hash tabulu tur nav kārtībā, kādā lietas tika ievietota sajūtu. Tā tiklīdz jūs ievietojiet to hash tabulas, uzņemties tur nav saistīts saraksts un jūs varētu spriest saistītajā sarakstā kas tika iekļauts pirmais. Bet šeit mēs ievietots 2 pirmās un tā zina, kad tas izdrukāt šo masīvu, ka 2 ir pirmajā vietā. Tas nav to izdrukāt tikai jebkurā secībā. Tehniskie dati struktūra, tas ir, izmantojot, ir pasūtīts karte, tāpēc tajā izplānots atslēgas vērtībām un tā atceras kārtību, kādā šie taustiņi bija ievietota. Būtībā tas ir uz dažiem sarežģījumiem, kur tas ir kaitinošas, lai faktiski - Pieņemsim, ka jums ir masīvs 0, 1, 2, 3, 4, 5 un jūs vēlaties izņemt indekss 2. Viens no veidiem, kā to darīt, pieņemsim redzēt, kas tas izskatās. 0, 2, 1, 3, 4. Atstatīt notiek atstatīt gan mainīgie un masīvu indeksus. Tātad atiestatīta ($ masīvs [2]); Tagad to, kas tas gatavojas izskatās? 2 ir tikai aizgāja, tā ka ir perfekti labi. Vairāk kaitinošas ir, ja jūs vēlaties lietas tiešām būt kā masīvu. Es nolikšu izlases numurus. Tagad paziņojums manu indeksus. Es gribu, lai tikai būtu kā C masīvs, kur tā iet no 0 līdz garumā - 1 un es varu atkārtot pār to kā tādu. Bet, tiklīdz es atiestatītu otro indeksu, kas bija 3 indeksā nav kļuvis indekss 2. Tā vietā tas tikai noņem šo indeksu, un tagad jūs doties 0, 1, 3, 4. Tas ir pilnīgi pamatota. Tas ir tikai kaitinošas, un jums ir darīt lietas, piemēram, masīvs salaist. Yeah. [Students] Kas notiktu, ja Jums bija par cilpu un jūs gribēja iet pa visiem elementiem? Kad tas hit 2, vai tas dos kādreiz? Atkārtojot pa masīvu. Ir 2 veidi, kā jūs varat darīt to. Jūs varat izmantot regulāri, lai cilpa. Tas ir vēl viens sarežģījums PHP. Dzimtās valodas, es teiktu, ir kaut kādas garuma vai len vai kaut norādot garumu masīva. PHP tas ir skaits. Tātad skaits ($ masīvs), $ i + +) Pieņemsim tikai drukas ($ masīvs [$ i]); Paziņojums: Undefined offset: 2. Tas ir tikai gatavojas, lai izgāztos. Tas ir iemesls, ka attiecībā uz lielāko daļu, jums nekad nevajadzēs atkārtot pa masīvu kā šis. Tas varētu būt pārspīlēti, bet jūs nekad nepieciešams atkārtot pa masīvu kā šis jo PHP piedāvā savu foreach sintaksi kur foreach ($ masīvs kā $ postenis). Tagad, ja mēs drukāt ($ postenis), - we'll apspriest to otro - kas strādā perfekti labi. Veidā, ka foreach strādā ir pirmais arguments ir masīvs, ka jūs atkārtojot pār. Un otrais arguments, postenis, caur katru caurlaide no cilpa tas notiek, lai uz nākamo lieta masīvā. Līdz ar to atcerēties masīvs ir kārtībā. Pirmo reizi cauri, lai cilpa, postenis būs 123 tad tas būs 12, tad tas būs 13, tad tas būs 23, tad tas būs 213. Lietas iegūt patiešām dīvaini, ja jūs kaut kas līdzīgs foreach. Paskatīsimies, kas notiek, jo jūs nekad darīt. Ko darīt, ja mēs atiestatīta ($ masīvs [1]); Tas bija iespējams, gaidāms. Tu esi atkārtojot pār šo masīvā, un katru reizi, kad jūs esat atiestatīšanas pirmo indeksu. Tātad par 0 indeksu, pirmā lieta, postenis pārņem 0 vērtību, tāpēc tas būs 123. Bet iekšpusē uz cilpas mēs atiestatīta indekss 1, tāpēc tas nozīmē 12 pagājis. Tik drukāt. PHP_EOL. PHP_EOL ir tikai newline, bet tas ir tehniski daudz pārnēsājamu jo newlines Windows ir atšķirīgs no newlines uz Mac un UNIX. Uz Windows newline ir \ r \ n, bet visur citur tā mēdz vienkārši ir \ n. PHP_EOL ir konfigurētas tā, ka tā izmanto neatkarīgi no jūsu sistēmā newline ir. Tā drukāt, ka. Pieņemsim nav print_r ($ masīvs) beigās. Man nebija ne jausmas, ka tas būtu uzvedību. Vienība joprojām uzņemas vērtība 12, lai gan mēs atstatīt 12 Pirms mēs kādreiz got to no masīva. Neņemiet manu vārdu par to, bet tas izskatās foreach rada kopiju masīva un tad vienība uzņemas visu šo eksemplāru vērtības. Tātad, pat ja jūs mainīt masīvs iekšpusē uz cilpas, tas vienalga. Pozīcija būs par sākotnējo vērtību. Pamēģināsim atiestatīšanas to. Ko darīt, ja tas ir $ masīvs [1] = "Hello"; Pat ja mēs ieliekam "sveiki" uz masīvs, postenis nekad uzņemas šīs vērtības. Tur ir cita sintakse foreach cilpas kur jūs varēsiet ievietot 2 mainīgos atdalot ar bultiņu. Šis pirmais mainīgais būs galvenais šīs vērtības, un šo otro mainīgais būs pats precīzs priekšmets. Šis ir neinteresanti šeit, bet, ja mēs ejam atpakaļ uz mūsu sākotnējā gadījumā "a" -> 1, "B" -> 1, Šeit, ja mēs vienkārši atkārtot katram masīva kā posteni, postenis būs 1 katru reizi. Bet, ja mēs arī vēlamies zināt taustiņu saistīta ar šo posteni tad mēs kā $ atslēga -> $ objektu. Tātad tagad mēs varam darīt drukas ($ atslēgu. ':'. Tagad tas atkārtojot atkal un poligrāfijas katru taustiņu un ar to saistītajiem vērtību. Papildu lieta, ko mēs varam darīt, foreach cilpas ir iespējams redzēt šo sintaksi. Ampersands pirms mainīgo nosaukumi mēdz būt kā PHP dara atsauces. Kur norādes ir ļoti līdzīgi norādes, Jums nav norādes, lai jūs nekad nodarbojas ar atmiņu tieši. Bet jums ir atsauces, kur 1 mainīgais attiecas uz vienu un to pašu kā cita mainīgā. Iekšpusē šeit pieņemsim do $ postenis. Iesim atpakaļ uz 1, 10. Darīsim $ postenis + +; Tas joprojām pastāv PHP. Jūs joprojām varat izdarīt + +. php.test.php. Man ir to izdrukāt. print_r ($ masīvs); Mēs drukāt 2, 11. Ja es tikko bija darīts foreach ($ masīvs kā $ pozīcija), tad punkts būs vērtība 1 Pirmo reizi pa cilpu. Tas būs solis 1 līdz 2 un tad mēs esam darīts. Tā tad tas iet cauri otro iet uz cilpas, un ka prece ir 10. Tā pieaugumu postenis līdz 11, un tad tas ir tikai izmest. Tad mēs print_r ($ masīvs), un redzēsim, ka tas ir tikai 1, 10. Tātad pieaugums mēs tika zaudēts. Bet foreach ($ masīvs kā & $ pozīcija) Tagad šis postenis ir tāds pats priekšmets kā šīs tiesības šeit. Tas ir tas pats. Tātad $ postenis + + pārveido masīvs 0. Būtībā, jūs varat arī darīt $ k -> $ objektu, un jūs varat darīt $ masīvs [$ k] + +; Tātad vēl viens veids, kā to izdarīt, ka mēs esam brīvi mainīt objektu, bet nevar izmainīt mūsu sākotnējo masīvs. Bet, ja mēs izmantojam K, kas ir mūsu galvenais, tad mēs varam vienkārši indekss par mūsu masīva izmantojot, ka galvenais un pieauguma ka. Tas vairāk tieši izmaina mūsu sākotnējo masīvs. Jūs pat varat darīt, ja kādu iemeslu dēļ tu gribēji spēju pārveidot - Faktiski, tas ir pilnīgi pamatota. Jums nav vēlas, lai rakstītu $ masīvs [$ k] + +, jūs vienkārši gribēju uzrakstīt $ postenis + +, bet tu vēl gribēju pateikt, ja ($ k === "") tad pieauguma objektu un pēc tam izdrukāt mūsu klāstu. Tātad tagad, ko mēs sagaidām print_r darīt? Kādas vērtības būtu izdrukāt? [Students] 2 un 10. >> [Bowden] Tikai tad, ja atslēga bija "" mēs faktiski drukāt, ka. Jūs, iespējams, ir ļoti reti, ja vispār kādreiz, būs jādefinē funkcijas PHP, bet jūs varētu redzēt kaut ko līdzīgu, kur jūs definētu funkciju, piemēram, funkciju whatever. Parasti jūs teiktu ($ foo, $ bar) un tad noteikt, ka tas ir neatkarīgi. Bet, ja es to izdarītu, tad tas nozīmē, ka neatkarīgi aicina neatkarīgi, neatkarīgi aicina BAZ, tāpēc pirmais arguments nodota Baz var mainīt. Darīsim $ foo + +; un iekšpusē šeit pieņemsim do BAZ ($ vienība); Tagad mēs aicinām funkciju. Arguments tiek pieņemts, atsaucoties, kas nozīmē, ka, ja mēs to maina mēs pārveidojot lieta, kas tika pieņemts iekšā Un drukāšanas to mēs sagaidām - ja vien es messed sintaksi - mēs saņēmām 2, 11, tāpēc tas faktiski tika palielināts. Paziņojums mums atsauces 2 vietām. Ko darīt, ja es to izdarīja? Ko tas nozīmē? [Students] Tas mainīsies. >> Jā. Postenis ir tikai kopija vērtības masīvā. Tātad postenis mainīsies līdz 2, bet masīvs ["'] joprojām būs 1. Vai arī ja es to varu darīt? Tagad vienība tiek nosūtīta kā kopiju Baz. Tātad no argumenta kopija tiks palielināts līdz 2, bet pozīcija pati nekad palielināts līdz 2. Un punkts ir tas pats, kas masīvu grupā neatkarīgi, tāpēc, ka masīvu netika palielināts. Tātad abi šie vietām vajag. PHP parasti ir diezgan gudrs par to. Jūs varētu domāt, es gribu iet ar atsauci - Tas bija tiešām jautājums par vienu no psets. Tas bija questions.txt lieta, ja tā teica, Kāpēc jūs varētu vēlēties, lai iet šo struct atsaucoties? Kāda bija atbilde uz šo jautājumu? [Students] Tātad jums nav kopēt kaut kas liels. >> Jā. Struktūrai var būt patvaļīgi liels, un, kad jūs iet struct kas kā argumentu tai kopēt šo visu struct nodot to funkciju, tā kā, ja jūs vienkārši iet struct ar atsauci tad tas vienkārši ir, lai kopētu 4 baitu adresi kā argumentu funkciju. PHP ir mazliet gudrāku nekā. Ja man ir dažas funkcijas, un es iet uz to masīvs ir 1000 lietas, tas nozīmē, ka nāksies kopēt visus 1000 no šīm lietām nodot to funkciju? Tas nav jādara, ka uzreiz. Ja iekšpuses šo funkciju tā nekad patiesībā izmaina foo, tāpēc, ja ($ foo === 'Hello') atgriezties taisnība.; Pamanīt mēs nekad faktiski mainīja arguments iekšpusē šo funkciju, kas nozīmē, ka neatkarīgi tika pieņemts kā foo nekad nepieciešams kopēt jo tas nemaina to. Tātad ceļš PHP darbi ir argumenti vienmēr pagājis, atsaucoties līdz jūs tiešām mēģināt mainīt to. Tagad, ja es saku $ foo + +, tas būs tagad veikt norakstu no sākotnējā foo un mainīt kopiju. Tas ietaupa laiku. Ja jūs nekad pieskaras šo masveida masīvs, jūs nekad tiešām modificēt, tas nav nepieciešams, lai padarītu kopiju, tā kā, ja mēs tikai izvirzīti šī zīme, kas nozīmē, tas nav pat kopēt to pat ja jums mainīt to. Šī uzvedība sauc kopija-uz-rakstīt. Jūs redzēsiet to citās vietās, īpaši, ja jūs lietojat operētājsistēmas kursu. Copy-on-rakstīt ir diezgan ierasts modelis, kur jums nav nepieciešams veikt kopiju kaut ja vien tas patiešām notiek. Yeah. [Students] Ko darīt, ja Jums bija pieaugumu iekšpusē testu, tāpēc tikai 1 elements no 1000 būtu jāmaina? Es neesmu pārliecināts. Es domāju, ka tas varētu kopēt visa lieta, bet tas ir iespējams, tas ir pietiekami gudrs, ka - Patiesībā tas, ko es domāju, ir iedomāties mums bija masīva, kas izskatās šādi: $ masīvs2 = [ Tad rādītāju "" ir masīvs [1 2 3 4], un indeksa "b" ir masīvs whatever. Man vajag komatus starp visiem no tiem. Iedomāties, ka ir komatus. Tad "c" ir vērtība 3. Labi. Tagad pieņemsim, ka mēs $ baz ($ masīvs2); ja BAZ neņem tas ar atsauci. Tātad $ foo ['c'] + +; Tas ir tāds piemērs, kur mēs iet masīvs2 kā argumentu un tad tas ir pārveidojot īpašu indeksu masīva ar palielināšanai to. Es godīgi nav ne jausmas, ko PHP gatavojas darīt. To var viegli veikt kopiju visa lieta, bet, ja tas ir gudrs, tas dos kopiju šiem taustiņiem, ja tas būs tās atšķiras vērtību bet tas joprojām var norādīt uz paša masīva 1,2,3,4 un tas joprojām var norādīt uz to pašu masīvu. Es ņemšu iPad to. Mums iet šajā masīvā, ja tas puisis norāda uz 3, šis puisis punktus [1,2,3,4], Šis puisis norāda uz [34, ...] Tagad, ka mēs esam iet to uz Baz, mēs mainīt to. Ja PHP ir gudra, tā var tikai darīt - Mums vēl bija kopēt dažas atmiņas, bet, ja tur bija šo milzīgo ligzdotu subarrays mums nav nepieciešams, lai kopētu tos. Es nezinu, ja tas, ko tā dara, bet es varu iedomāties to darām. Tas ir arī diezgan liela priekšrocība C virs PHP. PHP padara dzīvi tik daudz vieglāk par daudz lietām, bet jūs veida ir absolūti ne jausmas, cik labi tas pildīs jo man nav ne jausmas, zem motora pārsega, kad tas ir padarot šos kopijas lietām, Ak, ir tas, ka būs nemainīga laika kopija, tas ir tikai gatavojas mainīt 1 rādītāju, ir tas būs smieklīgi grūti lineārs kopija? Ko darīt, ja tā nevar atrast vietu? Vai tas tad ir nepieciešams, lai palaistu atkritumu vākšana, lai iegūtu dažas vairāk vietas? Un atkritumu savākšana var patvaļīgi garš. C jums nav jāuztraucas par šīm lietām. Katru līnija rakstīt jūs varat diezgan daudz spriest par to, kā tas notiek, lai veiktu. Apskatīsim atpakaļ šos. Cik jauki ir tas, ka jums nav, lai risinātu ar hash funkciju, saistīti saraksti, vai kaut kā tā? Tā strādā ar hash tabulas ir tik viegli tagad, šeit ir jautri puzzle strādāt. Atvērt failu ar nosaukumu unique.php un tajā uzrakstīt PHP programmu (Pazīstams arī kā "skriptu"). Mums ir tendence tos saucam skripti ja viņi īsi lietas, kas jums vadīt pie komandrindas. Būtībā, jebkurā valodā, kas jums nav sastādīt bet jūs gatavojas palaist izpildāmā pie komandrindas, jūs varat zvanīt šo izpildāmo skriptu. Es varētu tikpat labi uzrakstīt C programmu, kas to dara, bet es nesaucu to skriptu, jo es pirmo reizi apkopo to un tad palaist bināro. Bet šī PHP programmas, mēs ejam, lai izsauktu skriptu. Vai, ja mēs to uzrakstīju Python vai Perl vai Node.js vai kādu no šīm lietām, mēs gribētu aicināt tos visus skriptus, jo palaižot tos komandrindas bet mums nav apkopošanai. Mēs varētu izdarīt diezgan ātri. Mums nav gatavojas izmantot argv. Pieņemsim tikai izpūst caur šo. To sauc par unikālu, uzrakstīt programmu. Jūs varat pieņemt, ka ieejas būs viens vārds katrā rindā. Patiesībā, argv būs diezgan niecīgs izmantot. unique.php. Pirmā lieta, pirmkārt, mēs vēlamies, lai pārbaudītu, vai mums ir pagājuši 1 komandrindas argumentu. Tāpat kā jūs varētu gaidīt argc un argv, C, mums vēl ir tie, PHP. Tātad, ja ($ argc! == 2), tad man nebūs galā ar drukāšanas ziņu vai neko. Es ņemšu tikai izietu, kļūdas kods ir 1. Es varētu arī atgriezties 1. Reti PHP jūs šajā valstī, kur mēs esam pie - Parasti tu esi funkciju sauc par funkciju sauc par funkciju sauc par funkciju. Un, ja kaut kas noiet greizi un jūs vienkārši vēlaties, lai izietu viss pilnībā, izejas vienkārši beidz programmu. Tas pastāv arī C. Ja tu esi funkciju funkcija ir funkciju funkciju un jūs vēlaties, lai tikai nogalināt programmu, jūs varat zvanīt izeju un tas būs vienkārši izietu. Bet PHP tas ir vēl reti, ka mēs esam šajā augstākajā līmenī. Parasti mēs esam iekšā kaut kādu funkciju, tāpēc mēs saucam nobrauktuvi tāpēc, ka mums nav jāatgriežas līdz 1 lieta, ko tad saprot tur kļūda lai atgriež augšu, ja tas ir atzīts tur bija kļūda. Mēs nevēlamies, lai risinātu ar to, ka tā izietu (1); atgriešanās (1), kas šajā gadījumā būtu līdzvērtīgi. Tad ko mēs vēlamies atvērt mēs vēlamies fopen. Argumenti gatavojas izskatās diezgan līdzīgi. Mēs vēlamies fopen ($ argv [1], un mēs vēlamies, lai to atvērtu lasījumā. Kas atgriež resurss, ko mēs ejam, lai izsauktu f. Tas izskatās diezgan līdzīgi kā C to dara, ja mums nav ko teikt failu *. Tā vietā mēs tikai teikt $ f. Labi. Patiesībā, es domāju, ka tas pat mums dod mājienu par to PHP funkciju sauc failu. PHP File. Kas tas ir gatavojas darīt, ir lasīt visu failu masīvu. Jums pat nav nepieciešams, lai fopen to. Tas notiek, lai to izdarītu jums. Tātad $ līnijas = fails ($ argv [1]); Tagad visi no lietas materiāliem līnijas ir līnijas. Tagad mēs vēlamies sakārtot līnijas. Kā mēs varam sakārtot līnijas? Mēs kārtot līnijas. Un tagad mēs tos var izdrukāt vai neatkarīgi. Droši vien vienkāršākais veids ir foreach ($ līnijas, kā $ līnija) echo $ līnija; [Students] Vai ne mēs pat šķērsot līniju atsaucoties kaut uz kārtot? Tas ir, ja kārtošanas būtu jādefinē kā funkcija šķirot (& $ masīvs). Kad jūs zvanu funkciju, jums nav nodot to ar atsauci. Tas ir funkcija, kas to definē kā, ņemot to kā atsauces. Tas ir faktiski tieši tas nogāja greizi kad mēs likts viss uz mūsu serveriem, kad mēs devāmies 5,3-5,4. Līdz 5,4, tas bija pilnīgi pamatota. Funkcija neplāno pieņemt to kā atsauci, bet jūs varat nodot to kā atsauci tādēļ, ja funkcija tas notiek, lai mainītu to, tas joprojām modificēts. Kā no 5.4, jūs neesat vajadzēja darīt. Tāpēc tagad vienīgais veids, kā jūs iet ar atsauci ir, ja funkcija nepārprotami dara. Ja jūs nevēlaties to mainīt, tad jums ir nepieciešams darīt $ kopiju = $ līnijas un caurlaide kopija. Tātad tagad līnijas tiks saglabātas un kopija tiks mainīta. php.unique.php. Es varētu būt messed kaut augšu. Negaidīts "kārtot". Tur būs kaut kas tas par mums. Tas nav pat tur. Ievērosiet, kad jūs lasīt rokasgrāmata, kas pirmais arguments ir plānots masīvs un tas ir pieņemts ar atsauci. Kāpēc tas sūdzas ar mani? Jo man ir šī funkcija veida vēl šeit, ka es negribu. Labi, php.unique.php. Man nav nodot to arguments, jo man nav failu. Tas php.unique.php par test.php. Te ir test.php viss izdrukāti jaukā sakārtoti secībā. Ievērojiet, ka sakārtoti pasūtījums ir sava veida dīvaini koda failu jo visi mūsu tukšas rindas gatavojas jānāk vispirms tad gatavojas nākt visiem mūsu 1 līmenis iesēdumu tad nāk visas mūsu bez iesēdumu. Yeah. >> [Students] Tātad pirmkodu tā nav pieņemts, atsaucoties? Ir tas, ka parasti pieņēmis vērtību? [Bowden] Kad jūs zvanu funkciju, tā nekad nosaka, vai tas tika pieņemts ar atsauci. Tas ir funkcija definīcija, kas nosaka, vai tas tika pieņemts ar atsauci. Un skatoties uz funkciju definīcijas veida vai vienkārši meklē tas, tas aizņem argumentu ar atsauci. Tātad, neatkarīgi no tā, vai jūs to vēlaties ņemt to ar atsauci, tas ņemt to ar atsauci. Tas maina masīvs vietā. Tas ir tikai nav atļauta. Jums nav atļauts to darīt. >> [Students] Ak, labi. [Bowden] Tas, kārtot gatavojas veikt līnijas ar atsauci un mainīt to. Un atkal, ja jūs nevēlaties to darīt, jūs varētu veikt kopiju veida. Pat šajā gadījumā, kopija nav faktiski kopija līnijas. Tas tikai norāda uz to pašu, līdz tas vispirms izpaužas pārveidota, ja tas ir pirmais gatavojas saņemt mainīt kārtošanas funkcijas, kur, jo tas ir copy-uz-rakstīt, tagad kopijas kopija tiks veikti. Jūs varat arī izdarīt. Tas ir cits vieta, kur jūs varat redzēt aizvieto & zīmes. Jūs redzēt to foreach cilpas, jūs redzēt to funkciju deklarācijās, un jūs redzat to, kad tikai piešķirot mainīgos. Tagad mēs esam paveikuši neko, ko darīt jo kopēt un līnijas ir burtiski pats. Jūs varat izmantot līnijas un kopēt sinonīmi. Jūs varat darīt stāvoklī ($ kopiju), un ka tas nav atiestatīta līnijas, jūs tikai zaudēt savu atsauci uz to pašu. Tā kā no šā punkta, tagad līnijām ir vienīgais veids, kā jūs varat piekļūt līnijas. Jautājumi? Yeah. [Students] Pilnīgi off topic, bet jums nav slēgt PHP ar - >> jums nav. Labi. [Bowden] es varētu iet tik tālu, ka teikt, tas ir slikta prakse, lai aizvērtu. Tas ir iespējams, pārspīlējums, jo īpaši apstākļos, skriptu, bet pieņemsim redzēt, kas notiek, ja es to izdarītu. Kas neko nedarīja. Ko darīt, ja es gribēju - [nopūšas] Man vajag nodot argumentu. Šaut. I sauc to nepareizi. Tātad php.unique.php ar argumentu. Tagad man nav pat nepieciešams. Es iet to pamatotu argumentu. Tas iespiests kāda tā ir drukāšanas. Es esmu drukāšanas kopiju un kopija nav. Tik līnijas. Tas drukā viss, un tad pamanīt visu šo junk šeit lejā, jo PHP kaut kas ir ārpus PHP tagiem ir tikai gatavojas, lai iespiež burtiski. Tieši tāpēc HTML, tas ir tik jauki, ka es varu darīt div blah, blah, blah klasi vai kāds, blah, blah, blah un tad tie daži PHP kodu un pēc tam darīt beigu div. Un tagad drukāšanas tas man manu jauku div augšu augšu, viss, kas PHP drukātā, div apakšā. Katastrofāla, ja kaut kas līdzīgs tas notiek, kas ir diezgan bieži, tikai klaiņojošu newline apakšā failu. Jūs nebūtu domāju, ka varētu būt, ka liels ir galā līdz jūs uzskatāt, ka ar pārlūkprogrammām - Kā novirza darbu vai būtībā jebkurš galvenes darbu, ja jūs veicat savu savienojumu ar mājas lapā un tas nosūta atpakaļ visas šīs galvenes un lietas piemēram Atbildot 200 vai reaģēšanas novirzīt vai neatkarīgi, galvenes ir spēkā tikai līdz pirmajam datu baitam ir nosūtīts. Jūs varat novirzīt tūkstošiem reižu, bet tiklīdz pirmais baits dati tiek nosūtīti Jūs neesat vajadzēja novirzīt vēlreiz. Ja jums ir klaiņojošs newline apakšā faila un pieņemsim, ka jūs izmantot šo funkciju, un tad jūs vēlaties - Teiksim tā ir cita lieta, ka ir index.php un tu require_once kaut ko - Es nevaru iedomāties labu piemēru no tā. Jautājums notiek, ja šis apakšā līnija izpaužas atkārtojas. Jūs nevēlaties neko ir atbalsojās vēl. Pat ja jums nav paredzējis par kaut kļūst jūtams, kaut did get piebalsoja un tāpēc tagad jūs neesat vajadzēja sūtīt vēl citus virsrakstus un jūs gatavojas saņemt sūdzības. Jums vienkārši nav nepieciešams šos noslēguma tagus. Ja jūs plānojat par darot kaut ko ar HTML - un tas ir pilnīgi pamatoti izdarīt šeit lejā DIV neatkarīgi un tad šajā brīdī jūs varat vai nevarat tos iekļaut. Tas nav īsti jautājums. Bet PHP skriptus tas ir reti, lai to aizvērtu. Kad viss ir PHP, pilnīgi viss, Jums nav tiešām ir nepieciešams, lai to aizvērtu / Jums nevajadzētu aizvērt to. Nodarbojas ar stīgām ir daudz jaukāk, nekā C. PHP jūs varat norādīt virkni ar vienu vai pēdiņās. Ar vienu pēdiņām jūs nevarat izmantot "Escape" sekvences. Pastāvīgi aizbēgt, blah, blah, blah. Tātad printf ir ļoti reti PHP. Es domāju, es varētu izmantot printf ja es gribēju darīt veida lieta - 5 PSET tu izmanto sprintf vai neatkarīgi. Bet jūs vēlaties darīt 001.jpg un 002.jpg. Tāpēc, ka veida lieta, kur es tiešām gribu, lai formatētu tekstu es varētu izmantot printf. Bet citādi es tikai izmantot virkni konkatenācija. Es nekad īsti izmantot printf. Mēs esam tikai diferencējot detaļas starp vienu pēdiņām un pēdiņas. Lielākā atšķirība ir tā, ka vienu pēdiņām, tas tiks izdrukāts burtiski. Nav CHAR datu tips PHP, atšķirībā C, tāpēc tas ir līdzvērtīgs šo. Viņi abi stīgas. Un jauka lieta par vienu citātu virknes ir, es varētu teikt "Hello pasaule!" blah, blah, blah, $ $ Wooo. Kas notiek, kad es drukāt tas ir tas drukāt to burtiski. Pieņemsim atbrīvoties no visiem mūsu stuff. Tātad echo $ str1; Tā burtiski iespiež visas šīs lietas: dolāra zīmes, slīpsvītru n, ko jūs domājat, būtu newlines - visas šīs lietas tā izdrukas burtiski. Vienīgais, kas jums ir nepieciešams, lai izvairītos, ir vienu pēdiņām jo pretējā gadījumā tas būtu domāju, ka tas slēdzot vienu pēdiņām. Pēdiņas, pilnīgi atšķirīgas. Mēs jau redzam sintakse izceļot ir cluing mūs uz to, kas ir par iet briesmīgi nepareizi. php.unique. Undefined mainīgais: wooo jo tas tiek interpretēts kā mainīgo sauc wooo. Pēdiņas ļauj ievietot mainīgos lielumus - Teiksim $ nosaukums = "Robs"; Tātad echo "Sveiki, mans vārds ir $ nosaukums!"; Tā atzīst to par mainīgo. Kad es palaist, ka - un es ievietotu newline - Sveiki, mans vārds ir Rob! un sveiki pasaule! Tas ir tāpēc, ka es nekad noņemt drukāšanu wooo iepriekš. Ir 1 vēl viens solis, jūs varat darīt. $ Masīvs = [1, 2, 3]; Ko darīt, ja es gribu, lai drukātu pirmo indeksu masīva? Jūs darīt $ masīvs [0]. Sintakse izceļot ir pavediens. Kas tas ir gatavojas darīt? php.unique. Sveiki, mans vārds ir 1! kas nav tas, ko es gribēju. Sintakse izceļot meloja man. Pamēģināsim "" -> 1, "b" -> 2. Tas ir kā es būtu rakstīt to. Negaidīts viena citāts (T_ENCAPSED bla, bla, bla, bla, bla). Ideja ir tāda, ka tas nav atzīstot to kā daļu no masīva. Tas nav atzīstot to kā masīvu indeksēts vēstuli a. Jūs vēlaties darīt ieskauj cirtaini bikšturi, un tagad kāds ir šajā cirtaini lencēm tiks interpolē, kas ir vārds, mēs izmantot maģiski ievietojot šos mainīgos lielumus pareizajās vietās. Tagad darot, php.unique, un Sveiki, mans vārds ir 1! kā gaidīts vai Sveiki, mans vārds ir Rob! Viena lieta, ka ir sava veida jauki par vienu pēdiņām ir, ka - Tur ir dažas izmaksas intrapolējot. Ja jūs izmantojat dubultās pēdiņas, tulks ir iet pa šo stīgu, pārliecinoties, ka, "Ak, šeit mainīgs Tagad man ir nepieciešams, lai iet saņemt šo mainīgo un ievietot to šeit.". Pat ja jums nav izmantot jebkuru mainīgie, nekas iekšā šie pēdiņas ir interpolē, taču tas joprojām būs lēnāks, jo tā ir jāiet pa pēdiņas meklē lietas, kas jāņem interpolē. Tātad vienu pēdiņām var būt nedaudz ātrāk, ja nekas nepieciešams interpolē, un man ir tendence pat izmantot vienu pēdiņām, "Sveiki, mans vārds ir". $ Masīvs [''] vienalga. Tas būs līdzvērtīgs tam, ko mums bija pirms tam. Bet tas ir jautājums par priekšrocību. Ja jūs lietojat PHP, jūs, iespējams, nav jārūpējas par ātruma atšķirība. Tur nav pietiekami pamatojusi tos sākt ar. Galīgie jautājumi? Mēs tiešām nav pat saņemt caur visu to, bet tas pārējais bija garlaicīgi. Pēdējā lieta, ka ir sava veida jauki PHP ir, kad jūs nodarbojas ar HTML, jūs izmantojat to mazliet, tāpēc jauku īsceļu sintakse drukāšanai mainīgo. Nepakļaujot PHP šeit, to sauc par īso tagus. Oficiāli par 5,4 PHP, tas ir novecojis. Jums ir ieteicams likt PHP. Tas ir vēl jāatbalsta, tik īss tagus ar <= joprojām perfekti labi?. Tas ir par atbalstītā noklusējuma, lai jūs varētu izmantot tos kā vēlaties, un viņi diezgan ērti. Kādi jautājumi? Labi. Palieciet elegants, San Diego. [Chuckles] Bye. [Smejas] [Aplausiem] [smejas] [CS50.TV]