1 00:00:00,000 --> 00:00:05,340 2 00:00:05,340 --> 00:00:07,370 >> DOUG LLOYD: Do ni faris multan laboron en C, 3 00:00:07,370 --> 00:00:09,536 kaj C estas vere freŝa lingvo ĉar ĝi donas al vi 4 00:00:09,536 --> 00:00:12,840 la kapablo plonĝi vere malalta nivelo en viaj programoj. 5 00:00:12,840 --> 00:00:16,810 Ni atingos fari aferojn kiel vere minuto kiel manipulanta 6 00:00:16,810 --> 00:00:18,800 individuajn bajtojn da memoro. 7 00:00:18,800 --> 00:00:21,420 Memoru ke Pointers vere permesos ke fleksebleco. 8 00:00:21,420 --> 00:00:25,260 >> Sed ni ĉiam devas havi ke fajna grajno nivelo de detalo 9 00:00:25,260 --> 00:00:26,820 en niaj programoj? 10 00:00:26,820 --> 00:00:28,210 Probable ne, ĉu ne? 11 00:00:28,210 --> 00:00:30,376 Kaj se ni tuj devas komerco-off inter esti 12 00:00:30,376 --> 00:00:32,911 kapabla fari vere, vere minuto aferoj kaj vere, vere 13 00:00:32,911 --> 00:00:35,910 grandaj aferoj, ke ni ne devas pensi pri, ni ne devas apliki 14 00:00:35,910 --> 00:00:40,290 tiuj vere granda ideojn se ili estas jam konstruita en por ni, 15 00:00:40,290 --> 00:00:43,980 ĝenerale por konstruado grandaj programoj aŭ grandaj projektoj, 16 00:00:43,980 --> 00:00:49,130 verŝajne ni erari sur la flanko de esti pli lingvo havajxoj enkonstruita 17 00:00:49,130 --> 00:00:51,300 por ni, anstataŭ havi la malalta nivelo aĵoj. 18 00:00:51,300 --> 00:00:53,970 Kaj jen kie PHP vere eniros. 19 00:00:53,970 --> 00:00:58,200 >> Nun, unu el la kialoj ke ni instruu PHP en CS50 20 00:00:58,200 --> 00:01:01,020 estas ke ĝi estas peze inspirita C. Kaj fakte, en mia opinio, 21 00:01:01,020 --> 00:01:05,140 estas vere du pragenerinto lingvoj 22 00:01:05,140 --> 00:01:08,200 estas tre ofta nuntempe. 23 00:01:08,200 --> 00:01:10,110 C kaj Lisp. 24 00:01:10,110 --> 00:01:13,280 Kaj ili estas generinto lingvoj ĉar ĉiu alia moderna programado 25 00:01:13,280 --> 00:01:17,380 lingvo kiu evoluigis de tiam estas inspirita 26 00:01:17,380 --> 00:01:20,330 por aŭ alia sintakse. 27 00:01:20,330 --> 00:01:26,160 PHP estas tre simila sintakse al C, dum lingvoj kiel Scheme, 28 00:01:26,160 --> 00:01:27,900 ekzemple, kiu vi eble aŭdis de, 29 00:01:27,900 --> 00:01:32,070 estas peze inspirita lingvon nomata LISP, kiu estas pli malnova lingvo. 30 00:01:32,070 --> 00:01:34,220 >> Do la kialo ni instrui PHP en CS50 estas ke, 31 00:01:34,220 --> 00:01:37,730 per scio C kiel fundamente kiel vi faras en ĉi tiu punkto, 32 00:01:37,730 --> 00:01:41,280 kaptanta PHP, kiu donas al vi la kapablo fari multe pli alta nivelo aferoj 33 00:01:41,280 --> 00:01:44,710 ol C faras, estas ne ke multe de hurdo, 34 00:01:44,710 --> 00:01:48,230 ĉar vi jam havas la baza ideo de la sintakso. 35 00:01:48,230 --> 00:01:50,590 C estas estita proksimume por preskaŭ 45 jaroj ĉe tiu punkto. 36 00:01:50,590 --> 00:01:52,780 PHP estas estita proksimume por ĉirkaŭ 20 jaroj. 37 00:01:52,780 --> 00:01:57,080 Kaj en tiu 25 jaroj intere, programistoj 38 00:01:57,080 --> 00:02:01,540 determinis ke ili deziris multe Prefere havi pli altan nivelon kapablecoj, 39 00:02:01,540 --> 00:02:04,970 kaj la erarojn kaj bataloj de la 20 jaroj intere 40 00:02:04,970 --> 00:02:08,210 kondukis al PHP kaj aliaj modernaj lingvoj. 41 00:02:08,210 --> 00:02:11,039 >> PHP la granda elekto de lingvo por programaro 42 00:02:11,039 --> 00:02:14,042 ke allow-- por programaro that-- kie vi 43 00:02:14,042 --> 00:02:16,250 bezonas fari aĵojn kiuj en C estas vere komplika. 44 00:02:16,250 --> 00:02:18,480 Do ekzemple, laborante kun kordoj en C 45 00:02:18,480 --> 00:02:21,709 estas tre komplika, ĉar kiel ni scias, kordoj en C 46 00:02:21,709 --> 00:02:23,250 Estas vere nur arrays de karakteroj. 47 00:02:23,250 --> 00:02:25,230 Ĝi ne estas enkonstruita en datumtipo. 48 00:02:25,230 --> 00:02:28,220 Aŭ eble pli fundamente, io ni ne eĉ kovri en C, 49 00:02:28,220 --> 00:02:30,360 kio se vi bezonas fari iuj komputilaj retoj? 50 00:02:30,360 --> 00:02:30,860 Bone? 51 00:02:30,860 --> 00:02:34,920 >> C havas la kapablon fari gxin, sed estas tiel arcano kaj tiel malfacile reale fari. 52 00:02:34,920 --> 00:02:37,580 Ĉu ne estus bela se la lingvo havis korpigita, facila vojo 53 00:02:37,580 --> 00:02:38,910 implementar interkonektanta? 54 00:02:38,910 --> 00:02:43,420 Kaj PHP estas lingvo kiu faras ke, aŭ faciligas tion, tre iom pli. 55 00:02:43,420 --> 00:02:47,740 Kiel mi diris, PHP estas tre peze inspirita per C. La sintakso estas tre simila. 56 00:02:47,740 --> 00:02:51,760 Kaj do devus espereble faros la transiro de unu al la alia 57 00:02:51,760 --> 00:02:54,710 iomete mola ol iuj aliaj lingvoj povas esti. 58 00:02:54,710 --> 00:02:58,800 >> Komenci skribi PHP, simple malfermi dosiero kun la .php dosiersufikso. 59 00:02:58,800 --> 00:03:00,670 Teknike tio ne vere bezonata, 60 00:03:00,670 --> 00:03:04,495 sed se vi volas aĵojn kiel sintakso elstarigante en IDE, tiel ke tipo 61 00:03:04,495 --> 00:03:07,620 nomojn, aŭ variablo nomoj, funkcioj, vi scias, la ŝlosilvortoj de la lingvo 62 00:03:07,620 --> 00:03:10,090 estas elstarigitaj en specifa koloro, vi ĝenerale 63 00:03:10,090 --> 00:03:14,020 volas nomi viajn dosierojn kun aparta dosiersufikso. 64 00:03:14,020 --> 00:03:18,430 Do ni nomis nian dosieron kun Php etendo, sed tiam ankaŭ kun PHP, 65 00:03:18,430 --> 00:03:23,310 ĉiuj PHP kodo ni skribi en tiu dosiero devas esti enmetitaj en tiuj PHP 66 00:03:23,310 --> 00:03:25,190 delimitadores ke ni vidas tie sur la ekrano. 67 00:03:25,190 --> 00:03:27,910 Angle krampo? Php komenci. 68 00:03:27,910 --> 00:03:30,860 Tiam ni skribos ĉiuj niaj PHP kodo kiun ni volas en inter. 69 00:03:30,860 --> 00:03:32,260 Kaj tiam ? 70 00:03:32,260 --> 00:03:34,710 angulo krampo fermi. 71 00:03:34,710 --> 00:03:37,170 >> Se ni ne faros tiun, tiam kio okazos? 72 00:03:37,170 --> 00:03:38,170 Oni ne tuj kraŝi. 73 00:03:38,170 --> 00:03:39,410 Ĝi ne tuj vere ruinigi nian programon. 74 00:03:39,410 --> 00:03:41,440 Sed gxi ne tuj havas la efekto kiun ni volas. 75 00:03:41,440 --> 00:03:44,540 Kio okazos, vere, estas ke kiam ni provas kaj ruli tiun programon, 76 00:03:44,540 --> 00:03:50,330 ĉio ne inter tiuj limoj tuj estos presita eksteren verbatim. 77 00:03:50,330 --> 00:03:52,210 Ĝi ne tuj reale ekzekuti la kodon, 78 00:03:52,210 --> 00:03:56,010 ĝi tuj simple presas ĝin laŭvorte. 79 00:03:56,010 --> 00:03:57,320 >> Nun kial estas la kazo? 80 00:03:57,320 --> 00:04:00,416 Do C estas kio konata kiel kompilita lingvo. 81 00:04:00,416 --> 00:04:03,040 Vi verŝajne konas la paŝo de faranta viajn programojn, 82 00:04:03,040 --> 00:04:07,820 turnante la .c dosierojn kaj .h dosierojn en ununuran ruleblan kun ŝminko, 83 00:04:07,820 --> 00:04:11,130 precipe uzante Tin kiel nia tradukilo. 84 00:04:11,130 --> 00:04:13,030 PHP, tamen, ne havas ĉi ekvivalento. 85 00:04:13,030 --> 00:04:15,600 PHP estas kio nomiĝas interpretita lingvo. 86 00:04:15,600 --> 00:04:16,760 Kaj kion tio signifas? 87 00:04:16,760 --> 00:04:20,680 >> Nu, tio signifas ke ni ne devas konverti nian fontkodon nuloj kaj 88 00:04:20,680 --> 00:04:21,470 anticipe. 89 00:04:21,470 --> 00:04:23,900 Prefere, ekzistas programon, kiu ankaŭ estas nomita 90 00:04:23,900 --> 00:04:29,771 PHP, kiu komprenas PHP kaj povas ordigi de fari ĝin sur la muŝo. 91 00:04:29,771 --> 00:04:32,520 Tio ne vere akurate preciza, sed ĝi estas sufiĉe bona analogio 92 00:04:32,520 --> 00:04:33,760 de kio okazas. 93 00:04:33,760 --> 00:04:37,230 Ĝi estas la interpreti tiujn nuloj kaj aĵoj sur la muŝo. 94 00:04:37,230 --> 00:04:40,160 Kaj do se ĝi ne scias kiel procesi ion, 95 00:04:40,160 --> 00:04:42,800 se ĝi ne scias kiel procezo PHP, vi probable 96 00:04:42,800 --> 00:04:44,680 volis meti tiun tekston en tie, ĉu ne? 97 00:04:44,680 --> 00:04:48,960 >> Vi probable volis meti la kodon en tie, eĉ se ĝi ne estas inter PHP-- 98 00:04:48,960 --> 00:04:50,035 la PHP delimitadores. 99 00:04:50,035 --> 00:04:51,910 Sed- do ĝi ne tuj forigi ĝin por vi, 100 00:04:51,910 --> 00:04:53,576 ĝi estas ĝuste tuj esence forĵeti ĝin. 101 00:04:53,576 --> 00:04:55,550 Do ĝi tuj presi ĝin al la ekrano. 102 00:04:55,550 --> 00:04:57,150 >> Tio ŝajnas kiel ĝi estas malbona afero, sed fakte ĝi estas 103 00:04:57,150 --> 00:04:58,220 tuj estos vere bona afero, kiel ni 104 00:04:58,220 --> 00:05:00,390 vidos, kiam ni parolas pri PHP ttt disvolviĝo, 105 00:05:00,390 --> 00:05:04,010 ĉar ĝi signifas eblan intersperse PHP kaj HTML. 106 00:05:04,010 --> 00:05:06,640 Ni povas uzi ilin kune krei pli dinamika retpaĝo. 107 00:05:06,640 --> 00:05:10,650 Sed pli sur tiu en la vídeo sur PHP ttt disvolviĝo. 108 00:05:10,650 --> 00:05:12,021 >> Do kio estas la sintakso de PHP? 109 00:05:12,021 --> 00:05:13,520 Tion ĉi video temas. 110 00:05:13,520 --> 00:05:14,850 Ni parolu pri ĝi. 111 00:05:14,850 --> 00:05:16,490 >> Do komenci ekstere, variabloj. 112 00:05:16,490 --> 00:05:18,030 PHP variabloj ekzistas. 113 00:05:18,030 --> 00:05:20,067 Ekzistas nur du grandaj diferencoj de C. 114 00:05:20,067 --> 00:05:21,900 La unua estas ke ekzistas neniu tipo especificación. 115 00:05:21,900 --> 00:05:24,245 Ni ne devas diri int, char, kaleŝego, cxiuj havajxoj. 116 00:05:24,245 --> 00:05:25,620 Ni ne devas fari tion plu. 117 00:05:25,620 --> 00:05:26,810 PHP estas moderna lingvo. 118 00:05:26,810 --> 00:05:28,910 Ĝi povas diveni kion vi estas provas fari aŭ faru bonan 119 00:05:28,910 --> 00:05:30,451 diveni, kion vi provas fari. 120 00:05:30,451 --> 00:05:31,700 Do jen vere bela. 121 00:05:31,700 --> 00:05:35,330 >> La alia afero estas, ke ĉiuj ŝanĝiĝema nomoj devas komenci per dolaro signo. 122 00:05:35,330 --> 00:05:36,940 Tio estas nur io por alkutimiĝi al. 123 00:05:36,940 --> 00:05:39,496 Ĝi estas iom bizara, ĉar ĝi estas tiel ke PHP povas kompreni 124 00:05:39,496 --> 00:05:40,870 kio estas ŝanĝiĝema kaj kio estas ne. 125 00:05:40,870 --> 00:05:43,340 Do ĉiu variablo nomo komenciĝas per unu dolaro signo. 126 00:05:43,340 --> 00:05:46,884 Do en C ni povus diri ion kiel tiun, int x = 54. 127 00:05:46,884 --> 00:05:48,550 Ni ne devas fari tion plu en PHP. 128 00:05:48,550 --> 00:05:52,540 Ni povas simple diri $ x = 54. 129 00:05:52,540 --> 00:05:55,920 Kaj ni povus diri, ekzemple, en C, Se ni almenaux funto-inkludis la CS50 .h 130 00:05:55,920 --> 00:06:00,314 kaplinio dosiero, ni povus diri string frazon = "Ĉi tiu estas CS50." 131 00:06:00,314 --> 00:06:01,980 Ni ne devas fari tion en PHP, tamen. 132 00:06:01,980 --> 00:06:04,865 Ni povas simple diri $ frazon = "Ĉi tiu estas CS50." 133 00:06:04,865 --> 00:06:08,760 Kaj fakte, linio estas nun enkonstruita datumtipo en PHP, 134 00:06:08,760 --> 00:06:10,950 aŭ prefere PHP komprenas kio kordo estas. 135 00:06:10,950 --> 00:06:15,612 Ĝi estas separata de tabelo de karakteroj kiel ĝi estas en C. 136 00:06:15,612 --> 00:06:17,570 Ĉiuj viaj preferataj kondiĉa deklaroj de C 137 00:06:17,570 --> 00:06:19,520 estas ankoraŭ disponebla por vi uzi. 138 00:06:19,520 --> 00:06:21,140 Do ne granda transiro tie. 139 00:06:21,140 --> 00:06:23,400 Ni povas say-- ni povas havi se deklaroj kiel ĉi. 140 00:06:23,400 --> 00:06:28,210 se $ y 43, aŭ $ z = 15. 141 00:06:28,210 --> 00:06:29,690 Do jen bela simpla. 142 00:06:29,690 --> 00:06:31,980 Ni povas havi se kaj alie. 143 00:06:31,980 --> 00:06:34,210 Ni povas havi se kaj alie se. 144 00:06:34,210 --> 00:06:36,430 >> Kaj rimarki ion sufiĉe bela tie, kaj ĉi 145 00:06:36,430 --> 00:06:39,620 estas speco de unu el tiuj avantaĝoj de PHP kontre C, avizo 146 00:06:39,620 --> 00:06:41,510 kio funkcio ni ne uzas ĉi tie? 147 00:06:41,510 --> 00:06:47,737 Ni uzas == kompari variablo, $ nomo, al ĉeno. 148 00:06:47,737 --> 00:06:49,070 Ni ne povis fari tion en C, dekstra? 149 00:06:49,070 --> 00:06:53,200 Ni devis uzi funkcio nomita StrComp aŭ StrEndComp aŭ ajna 150 00:06:53,200 --> 00:06:54,840 el lia rilatajn gekuzoj. 151 00:06:54,840 --> 00:06:56,980 >> Kaj do jam vidas tiujn avantaĝojn. 152 00:06:56,980 --> 00:07:00,930 Ni ne devas fari ion kiel stulta aŭ eble unintuitive 153 00:07:00,930 --> 00:07:03,540 kiel nomi funkcio nomita StrComp se mi volas nur testi 154 00:07:03,540 --> 00:07:05,237 ĉu valoro egalas ŝnuron. 155 00:07:05,237 --> 00:07:07,820 Mi povis nur uzi egalas egaluloj, kiel mi povis fari ion alian. 156 00:07:07,820 --> 00:07:09,560 Do ekzistas avantaĝon. 157 00:07:09,560 --> 00:07:13,350 >> Foje, parenteze, vi eble vidu alian se unu vorton, elseif. 158 00:07:13,350 --> 00:07:14,910 Kaj tio estas bone en PHP ankaŭ. 159 00:07:14,910 --> 00:07:17,020 Do kelkfoje vi povus vidi ke. 160 00:07:17,020 --> 00:07:17,790 Ĝi ne estas tajperaro. 161 00:07:17,790 --> 00:07:21,830 PHP reale komprenas elseif. 162 00:07:21,830 --> 00:07:23,980 Mi ne scias kial ili decidis apliki tion, 163 00:07:23,980 --> 00:07:28,220 sed kiel ni vidis multajn fojojn dum nia videos ĝis nun, 164 00:07:28,220 --> 00:07:30,460 ni programistoj amas ĝin se ni povas fari aferojn rapide, 165 00:07:30,460 --> 00:07:33,660 tiel liverante de tiu spaco estas ŝajne grandan avantaĝon. 166 00:07:33,660 --> 00:07:34,800 >> Do jen se kaj elseif. 167 00:07:34,800 --> 00:07:37,540 Ni ankaŭ havas la triargumenta operatoro, revokon demandosigno dupunkto, 168 00:07:37,540 --> 00:07:43,262 por vere mallonga formo se alie aŭ kondiĉa branĉantaj. 169 00:07:43,262 --> 00:07:45,470 Kaj ŝajne, en ĉi, kion ni provas fari ĉi tie 170 00:07:45,470 --> 00:07:49,720 estas atribui la variablo $ letero ĉu vera aŭ malvera, 171 00:07:49,720 --> 00:07:54,110 dependanta sur ĉu $ var estas alfabeta karaktero. 172 00:07:54,110 --> 00:07:57,320 Do tiu estas sufiĉe simila al isalpha ke ni estas familiara kun de C. 173 00:07:57,320 --> 00:07:59,010 Tiu estas speco de la ekvivalenta en PHP. 174 00:07:59,010 --> 00:08:01,550 La funkcio estas ŝajne nomata ctype_alpha, 175 00:08:01,550 --> 00:08:03,450 sed tiel estas kiel ni faras ĝin en PHP. 176 00:08:03,450 --> 00:08:08,560 Do ĉio ĉi estas iranta esti estas, se $ var estas litero, $ letero estas vera. 177 00:08:08,560 --> 00:08:13,820 Se $ var ne leteron, $ letero estas falsaj. 178 00:08:13,820 --> 00:08:15,820 >> Ni ankaŭ havas ŝaltilon deklaroj ankoraŭ. 179 00:08:15,820 --> 00:08:17,870 Ni memoras tiujn de C ankaŭ. 180 00:08:17,870 --> 00:08:22,480 Ĉe la plejsupro tie, jen kiel ni fari io kiel get int aŭ akiri kordoj. 181 00:08:22,480 --> 00:08:23,845 Do PHP havas tiun enkonstruita. 182 00:08:23,845 --> 00:08:25,470 Ni ne bezonos la CS50 biblioteko anymore. 183 00:08:25,470 --> 00:08:27,237 Ni povas nur uzi la funkcion readline. 184 00:08:27,237 --> 00:08:29,820 Kion tio tuj fari estas presaĵo el la mesaĝo, "Via stato, 185 00:08:29,820 --> 00:08:33,820 bonvolu, "kaj tiam palpebrumante prompto atendante la uzanto enigo 186 00:08:33,820 --> 00:08:34,739 iuj informoj. 187 00:08:34,739 --> 00:08:36,530 Nun rimarkas kion alian ni povas fari kun ŝaltilo. 188 00:08:36,530 --> 00:08:39,105 Se vi uzis ĝin antaŭ, vi eble memoras ke ŝaltilo 189 00:08:39,105 --> 00:08:44,960 estas limigita preskaux por entjeroj kaj karakterojn, sed nun ni povas uzi kordoj. 190 00:08:44,960 --> 00:08:50,190 Kaj fakte, la ŝaltilo deklaro en PHP estas tre iom pli fleksebla 191 00:08:50,190 --> 00:08:54,880 ol ĝia kuzo de C. 192 00:08:54,880 --> 00:08:55,380 Loops. 193 00:08:55,380 --> 00:08:58,130 Samkiel Conditionals, ĉiuj viaj malnovaj favoritos estas ankoraŭ tie. 194 00:08:58,130 --> 00:09:00,740 Ni havas dum maŝojn kiuj rakontas de 1 al 100 en tiu kazo. 195 00:09:00,740 --> 00:09:03,940 Ni faru dum cikloj ke kalkulo de 1 al 100, 196 00:09:03,940 --> 00:09:06,200 kaj ni havas por bukloj ke kalkulo de 1 al 100. 197 00:09:06,200 --> 00:09:07,220 Do neniu grandan salton tie. 198 00:09:07,220 --> 00:09:09,360 La sintakso estas bela multe ekzakte la sama, 199 00:09:09,360 --> 00:09:11,760 krom nun ni uzas dolara signo variablo anstataŭe 200 00:09:11,760 --> 00:09:17,260 deklari entjero variabloj aŭ io simila por nia nombriloj. 201 00:09:17,260 --> 00:09:20,090 >> Jen kie aĵoj a multe pli bona ol C, kvankam. 202 00:09:20,090 --> 00:09:21,020 Arrays. 203 00:09:21,020 --> 00:09:23,020 Do memoru, kiam ni estis parolante pri C, por 204 00:09:23,020 --> 00:09:25,560 por ni kreski kaj ŝrumpi aroj de informoj, 205 00:09:25,560 --> 00:09:28,310 ni bezonis por ordigi de defaŭlta al tiu ideo de ligillisto, 206 00:09:28,310 --> 00:09:30,780 ĉar C sensilo estis fiksitaj en grandeco. 207 00:09:30,780 --> 00:09:31,800 Ni ne povis retiri ilin. 208 00:09:31,800 --> 00:09:32,930 Ni ne povis kreski ilin. 209 00:09:32,930 --> 00:09:36,074 Ni devis reallocate memoro kaj fari ĉiujn ĉi frenezo 210 00:09:36,074 --> 00:09:38,490 aŭ uzi ligitaj listoj, kiuj levu tre iom pli da spaco. 211 00:09:38,490 --> 00:09:41,590 Sed en PHP, tabeloj estas ne fiksita en grandeco anymore. 212 00:09:41,590 --> 00:09:43,240 Ili povas kreski kaj povas ŝrumpi. 213 00:09:43,240 --> 00:09:46,660 Do denove, ĉi tiuj 20 jaroj kiuj ekzistis inter la unua publikigo de C 214 00:09:46,660 --> 00:09:49,440 kaj la unua ĵeto PHP, ni decidis ke, sciu, 215 00:09:49,440 --> 00:09:51,670 estus vere granda se ni povus fari tion. 216 00:09:51,670 --> 00:09:54,100 Kaj tiel ni implementado ĉi. 217 00:09:54,100 --> 00:09:58,040 >> Do PHP arrays ne fiksita en grandeco, kaj ĉar PHP ne vere 218 00:09:58,040 --> 00:10:03,090 havas programisto front-alfrontanta nocioj de tipoj, 219 00:10:03,090 --> 00:10:05,110 ni povas miksi datumtipoj en nia arrays, tro. 220 00:10:05,110 --> 00:10:08,100 Do ni ne eĉ devas uzi ĉiujn entjeroj aŭ ĉiuj flosanta punktoj, 221 00:10:08,100 --> 00:10:12,826 ni povas havi miksaĵo de ĉiuj malsamaj specoj en ununura tabelo. 222 00:10:12,826 --> 00:10:14,700 Deklarante tabelo estas bela simpla. 223 00:10:14,700 --> 00:10:16,116 Ĝi estas nur kiel ajna alia variablo. 224 00:10:16,116 --> 00:10:20,020 $ núms = array (1, 2, 3, 4), tabelo estante funkcio 225 00:10:20,020 --> 00:10:22,760 ke estas konstruita en PHP kiu kreos tabelo por vi. 226 00:10:22,760 --> 00:10:28,315 Tio kreas aron de kvar valoroj, nombroj en tiu kazo, nomita $ núms. 227 00:10:28,315 --> 00:10:29,940 Kaj estas pli ol unu maniero fari ĝin. 228 00:10:29,940 --> 00:10:32,420 Kaj ni tuj vidu tiun multon en PHP. 229 00:10:32,420 --> 00:10:36,380 PHP estis disvolvita de multaj malsamaj personoj kaj kreskas kaj kreskas kaj kreskas. 230 00:10:36,380 --> 00:10:40,050 Ekzistas kutime ne nur du aŭ tri manieroj fari ion en PHP, 231 00:10:40,050 --> 00:10:42,170 ekzistas kutime kiel 10 aŭ 20. 232 00:10:42,170 --> 00:10:45,300 Jen nur alia komuna maniero deklari tabelo. 233 00:10:45,300 --> 00:10:48,310 $ núms = kvadrata krampo 1, 2, 3, 4. 234 00:10:48,310 --> 00:10:53,170 Do ĉi tiu estas speco de simila al C la angulo br-- buklaj krampoj skribmaniero, prefere. $ - 235 00:10:53,170 --> 00:10:58,525 aŭ ĝi estus int núms kvadrataj krampoj egalas krispa streĉa 1, 2, 3, 4. 236 00:10:58,525 --> 00:11:02,710 En PHP estas $ núms = kvadrata krampoj 1, 2, 3, 4. 237 00:11:02,710 --> 00:11:08,920 Sed ambaŭ de tiuj ekzemploj tie doni min tabelo de kvar tiukaze entjeroj. 238 00:11:08,920 --> 00:11:10,920 >> Kio se mi volas najlu ion nun? 239 00:11:10,920 --> 00:11:14,760 Bone mi povas simple diri $ núms 4, kiu denove, ni ankoraŭ rakonti de 0 tie 240 00:11:14,760 --> 00:11:17,800 en PHP, estus la kvina elemento de la tabelo. 241 00:11:17,800 --> 00:11:18,990 Mi povas nur diri ke. 242 00:11:18,990 --> 00:11:22,860 Mi ne tuj suferi seg kulpo, ĉar mia tabelo estas nur 243 00:11:22,860 --> 00:11:24,337 tuj kreskos akomodi tion. 244 00:11:24,337 --> 00:11:25,420 Tio estas sufiĉe bela, ĉu ne? 245 00:11:25,420 --> 00:11:28,400 Kaj fakte, mi eĉ ne bezonas specifi kie mi volas meti ĝin. 246 00:11:28,400 --> 00:11:31,220 Mi povas nur diri tion kaj nur najlu gxin rekte al la fino, 247 00:11:31,220 --> 00:11:34,099 aŭ mi povis eĉ nur diru $ núms 20 aŭ 1.000. 248 00:11:34,099 --> 00:11:35,140 Fakte ne gravas. 249 00:11:35,140 --> 00:11:38,330 Ĝi estas ankoraŭ nur tuj najlu gxin rekte al la fino. 250 00:11:38,330 --> 00:11:41,490 >> Do mi povas kreski, kaj as-- ni estas ne tuj kovri ĝin en ĉi tie, 251 00:11:41,490 --> 00:11:45,360 sed mi povas splisas aŭ strio elementoj el la tabelo tiel, 252 00:11:45,360 --> 00:11:50,064 kaj la tabelo estos ŝrumpi akomodi ke nun mankas aŭ malplena spaco. 253 00:11:50,064 --> 00:11:52,230 Ekzistas alia vojo al najlu ion sur tabelo, 254 00:11:52,230 --> 00:11:54,330 kiu estas funkcio nomita array_push. 255 00:11:54,330 --> 00:11:57,860 Do denove, nur tiu ideo de esti kapabla fari aferojn diversmaniere. 256 00:11:57,860 --> 00:12:01,950 Do ni vidis tri malsamaj manieroj nun al najlu alia elemento sur tabelo. 257 00:12:01,950 --> 00:12:06,900 Do tiu aldonas alian elementon al la fino de la $ núms tabelo. 258 00:12:06,900 --> 00:12:08,340 Kaj ni povas miksi nian datumtipoj. 259 00:12:08,340 --> 00:12:13,110 Do mi povis havi tabelo de ne 1, 2, 3, 4, sed 1, vera, 3, 4, 260 00:12:13,110 --> 00:12:16,420 kie vera estas Bulea kaj poste se mi volas najlu en alia elemento 261 00:12:16,420 --> 00:12:20,860 al tiu tabelo, eble cxeno, la ĉeno "kvin", mi povus fari tion. 262 00:12:20,860 --> 00:12:26,110 Kaj nun mia tabelo volus esti 1, vera, 3, 4, kvin. 263 00:12:26,110 --> 00:12:28,640 La vorto kvin, ne la entjero 5. 264 00:12:28,640 --> 00:12:31,270 Do multe da fleksebleco tie. 265 00:12:31,270 --> 00:12:33,290 >> La fleksebleco ricevas eĉ pli bone, kvankam, 266 00:12:33,290 --> 00:12:37,530 ĉar PHP havas subtenon por io nomita asocieca tabelo. 267 00:12:37,530 --> 00:12:40,660 Kaj ni ia parolis pigre pri asociaj tabeloj en C 268 00:12:40,660 --> 00:12:44,740 en la kunteksto de hash tabloj, ĉar kio asociaj tabeloj estas vere ĉiuj 269 00:12:44,740 --> 00:12:48,950 pri faras ŝlosilo valoro paro mappings. 270 00:12:48,950 --> 00:12:53,410 Kaj en ĉi tiu kazo, la keys-- se ni estas familiara kun tabeloj de C, 271 00:12:53,410 --> 00:12:55,440 la ŝlosiloj estas indekso nombroj. 272 00:12:55,440 --> 00:12:57,530 0, 1, 2, 3. 273 00:12:57,530 --> 00:13:03,070 Kaj la valoroj estas kion ni trovas ke tabelo 0, tabelo 1, tabelo 2, kaj tiel plu. 274 00:13:03,070 --> 00:13:06,310 Do la ŝlosiloj estas indeksas, kaj la valoroj estas 275 00:13:06,310 --> 00:13:10,060 kio estas en tiu tabelo loko, precizigita per tiu indekso. 276 00:13:10,060 --> 00:13:15,130 >> Sed en PHP, ni ne devas fari tion nocio de tabelo 0, tabelo 1, tabelo 2 277 00:13:15,130 --> 00:13:15,830 anymore. 278 00:13:15,830 --> 00:13:21,025 Ni povas nun uzi fakta vortoj mapi ŝlosilojn al valoroj. 279 00:13:21,025 --> 00:13:22,650 Kaj tiel mi povus diri ion kiel tion. 280 00:13:22,650 --> 00:13:26,710 Mi povus krei tabelon uzante la kvadrata krampo sintakso jene. 281 00:13:26,710 --> 00:13:30,685 $ picoj = kvadrata krampo "fromaĝo" kaj poste 282 00:13:30,685 --> 00:13:37,210 ĉi tia duobla sago skribmaniero, 8.99, "pepperoni" arrow 10.99-- 9.99, 283 00:13:37,210 --> 00:13:37,880 kaj tiel Plu. 284 00:13:37,880 --> 00:13:39,060 Kaj do kio okazas ĉi tie? 285 00:13:39,060 --> 00:13:41,040 Kion mi fakte faras? 286 00:13:41,040 --> 00:13:43,990 Mi kreanta ŝlosilo valoro paro mappings. 287 00:13:43,990 --> 00:13:49,060 Do anstataŭ diri, ekzemple, picoj 0, pecoj 1, picoj 2, 288 00:13:49,060 --> 00:13:52,350 Mi povas nun diri picoj fromaĝo, picoj pepperoni, 289 00:13:52,350 --> 00:13:55,120 kaj raporti al la valoroj asociita kun ili. 290 00:13:55,120 --> 00:13:56,970 >> Do jen nia klavoj en verda. 291 00:13:56,970 --> 00:13:59,870 Fromaĝo, pepperoni, legomo, bubalo kokido. 292 00:13:59,870 --> 00:14:04,200 Jen la sago kiu faras tiu ŝlosilo valoro paro mapado. 293 00:14:04,200 --> 00:14:07,420 Kaj tiam tie estas la valoroj en tiu tabelo situon. 294 00:14:07,420 --> 00:14:10,330 Do estas kiel diri tabelo 0 egalas 8.99. 295 00:14:10,330 --> 00:14:11,720 La ŝlosilo estas 0. 296 00:14:11,720 --> 00:14:13,600 La valoro estas 8.99. 297 00:14:13,600 --> 00:14:19,370 Mi povas nun diri tabelo fromaĝo, aŭ en ĉi kazo picoj fromaĝo, fromaĝo estas la ŝlosilo, 298 00:14:19,370 --> 00:14:23,340 kaj kion mi trovas ĉe picoj fromaĝo estas 8.99. 299 00:14:23,340 --> 00:14:25,540 Tio estas la valoro kiun mi trovas tie. 300 00:14:25,540 --> 00:14:28,124 >> Do mi povas diri aĵojn ŝatas. $ pico fromaĝo = 7,99. 301 00:14:28,124 --> 00:14:29,040 Diru min havanta vendo. 302 00:14:29,040 --> 00:14:31,750 Mi volas dis-- mi volas faligi la prezo de la fromaĝo picon. 303 00:14:31,750 --> 00:14:35,620 Aŭ mi povas uzi la legomo pico kiel parto de kondiĉo, 304 00:14:35,620 --> 00:14:39,990 aŭ mi povas aldoni novan elementon al mia tabelo, kiel mi povis fari antaŭe. 305 00:14:39,990 --> 00:14:44,680 Mi povas aldoni novan elementon al tiu asocieca tabelo kun la klavo "lardo" 306 00:14:44,680 --> 00:14:49,250 kaj la valoro 13,49. 307 00:14:49,250 --> 00:14:53,820 >> Sed tian enkondukas problemo, se vi pensas pri ĝi dum sekundo. 308 00:14:53,820 --> 00:14:55,721 Kiel ni persisti tra tiu tabelo? 309 00:14:55,721 --> 00:14:56,220 Dekstra? 310 00:14:56,220 --> 00:14:59,820 En C, ni devus nur havi por ciklo, tipe, ke 311 00:14:59,820 --> 00:15:03,650 forkurus de 0 al la grandeco de la tabelo minus 1. 312 00:15:03,650 --> 00:15:08,060 La tabelo havas n elementojn en ĉe la valida indeksoj estas 0 por n minus 1. 313 00:15:08,060 --> 00:15:11,530 Do ni povus uzi por buklo paŝi tra ĉiu ununura ero. 314 00:15:11,530 --> 00:15:13,530 >> Sed tio ne estas vere la kazo plu, bone? 315 00:15:13,530 --> 00:15:17,360 Sed kie ni havas ŝlosilan valoron paro mappings kie la klavoj estas vortoj, 316 00:15:17,360 --> 00:15:19,970 kiel ni persisti super ĉiuj el la vortoj? 317 00:15:19,970 --> 00:15:22,420 Nu, feliĉe, PHP havas maniero trakti ĉi ankaŭ, 318 00:15:22,420 --> 00:15:24,580 kaj do ni salti reen al cikloj dum sekundo 319 00:15:24,580 --> 00:15:30,780 enkonduki kvara speco de buklo ke ekzistas en PHP nomis foreach buklo. 320 00:15:30,780 --> 00:15:34,430 Kaj kia foreach buklo faras estas ĝi estas esence la sama ideo. 321 00:15:34,430 --> 00:15:36,060 Vi povas uzi ĝin por ia tabelo. 322 00:15:36,060 --> 00:15:38,100 Sed estas esence la sama ideo kiel por ciklo, 323 00:15:38,100 --> 00:15:40,750 krom anstataŭ uzi indekso nombroj, vi nur 324 00:15:40,750 --> 00:15:45,830 havas tiun strangan sintakson kie vi vokos unu sola ero 325 00:15:45,830 --> 00:15:47,550 nomon por la celoj de tiu ciklo. 326 00:15:47,550 --> 00:15:49,258 >> Do en tiu kazo, foreach ($ array kiel $ ŝlosilo). 327 00:15:49,258 --> 00:15:52,900 328 00:15:52,900 --> 00:15:56,450 Esence, kiel tio komenton notoj, ene de tiu foreach buklo, 329 00:15:56,450 --> 00:16:00,466 ĝi tuj transiru ĉiu unuopa elemento de $ tabelo, kiu estas tipe 330 00:16:00,466 --> 00:16:03,340 tuj esti asocieca tabelo, sed povas vere esti ajna speco de tabelo 331 00:16:03,340 --> 00:16:05,419 ke vi volas en PHP. 332 00:16:05,419 --> 00:16:07,210 Kaj ĉiufoje ke en por buklo vi eble 333 00:16:07,210 --> 00:16:13,780 diris $ tabelo rektaj krampoj $ i, vi povus simple diri $ ŝlosilo. 334 00:16:13,780 --> 00:16:22,340 Ke $ ŝlosilo iĝas alias por ĉiu indekso de via PHP asocieca tabelo, 335 00:16:22,340 --> 00:16:23,710 kaj tiel vi povas uzi ĝin tiel. 336 00:16:23,710 --> 00:16:25,897 >> Do ekzemple, ni nun havas nian picoj tabelo. 337 00:16:25,897 --> 00:16:27,730 Mi ia refaldis ĝi en la angulo 338 00:16:27,730 --> 00:16:31,080 tiel ni povas uzi ĝin por fari rapidan ekzemplon. 339 00:16:31,080 --> 00:16:36,420 Se mi diras foreach ($ picoj kiel $ pico), nu, kio okazas? 340 00:16:36,420 --> 00:16:42,400 Nu, mi tuj persisti tra ĉiu sola elemento de la array $ picoj, 341 00:16:42,400 --> 00:16:46,670 kaj tion farante, mi tuj vokos ĉiu ero, kiam mi estas ene 342 00:16:46,670 --> 00:16:49,400 de la korpo de tiu por buklo, $ pico. 343 00:16:49,400 --> 00:16:52,440 >> Do jen speco de staru -en, revokon, ke $ pizza 344 00:16:52,440 --> 00:16:59,140 estas starejo-je por dirante $ picoj kvadrataj krampoj $ i 345 00:16:59,140 --> 00:17:03,370 se ni uzis por ciklo, kie ni povus iri de $ i = 0 por, en tiu kazo, 346 00:17:03,370 --> 00:17:06,089 $ i = 3. 347 00:17:06,089 --> 00:17:09,780 Se ni ne havis ŝlosilon valoro paroj tie, tio estus ero 0, 1, 2, 3, 348 00:17:09,780 --> 00:17:16,390 kaj ni uzus por buklo iri $ picoj 0, $ picoj 1, $ 2 picoj, 349 00:17:16,390 --> 00:17:17,750 $ picoj 3. 350 00:17:17,750 --> 00:17:23,130 Do nun nur $ pico estas anstataŭiganta por ke individuaj ŝlosilo. 351 00:17:23,130 --> 00:17:25,630 >> Do kio estas tiu tuj presi? 352 00:17:25,630 --> 00:17:29,030 Mi presi el $ pico. 353 00:17:29,030 --> 00:17:35,270 Kion mi povos trovi at-- se mi presi $ picoj, $ i? 354 00:17:35,270 --> 00:17:35,770 Dekstra? 355 00:17:35,770 --> 00:17:38,680 Se mi tuj presi la Ith elemento de picoj, 356 00:17:38,680 --> 00:17:40,070 kion mi povos presi? 357 00:17:40,070 --> 00:17:42,580 Mi tuj presi la valorojn ĉe tiu loko, ĉu ne? 358 00:17:42,580 --> 00:17:45,370 Kiel se ni estis farantaj tion en la kunteksto de C, 359 00:17:45,370 --> 00:17:49,786 ni ne kutimas uzi nian iterator variablo, int i = 0, i estas malpli ol 3, 360 00:17:49,786 --> 00:17:52,900 Mi ++, presi 0, 1, 2, 3. 361 00:17:52,900 --> 00:17:57,500 Ni presi el tabelo 0, tabelo 1, tabelo 2, tabelo 3. 362 00:17:57,500 --> 00:17:59,580 Kaj tiel kion ĉi presas estas tiu. 363 00:17:59,580 --> 00:18:01,150 Ĝi estas la listo de prezoj. 364 00:18:01,150 --> 00:18:05,750 8.99, 9.99, 10.99, 11,99. 365 00:18:05,750 --> 00:18:06,900 >> Nun rapidan noton ĉi tie. 366 00:18:06,900 --> 00:18:10,900 A foreach buklo ne nepre elprinti aferojn en ordon. 367 00:18:10,900 --> 00:18:12,770 Ĝi ne estas guaranteed. 368 00:18:12,770 --> 00:18:13,550 Ĝi kutime faras. 369 00:18:13,550 --> 00:18:17,667 Ĝi estas kutime bazitaj sur la ordo en kiuj eroj estas aldonitaj al la tabelo, 370 00:18:17,667 --> 00:18:18,750 tiom simple toleri ke en menso. 371 00:18:18,750 --> 00:18:20,830 Ĝi eble ne estas en ordo. 372 00:18:20,830 --> 00:18:23,930 Sed foreach buklo persisti trans ĉiu unuopa elemento 373 00:18:23,930 --> 00:18:25,060 de la tabelo en demando. 374 00:18:25,060 --> 00:18:27,980 En tiu kazo, denove, ke tabelo estas $ picoj. 375 00:18:27,980 --> 00:18:32,920 >> Mi povas ŝanĝi la sintakso, kvankam, se Mi volas ambaŭ la ŝlosilo kaj la valoro. 376 00:18:32,920 --> 00:18:37,179 Anstataŭ diri $ picoj kiel $ pizza, mi povas diri tion. 377 00:18:37,179 --> 00:18:39,470 Kaj se vi rigardas kion mi havas elstarigitaj en verda tie, 378 00:18:39,470 --> 00:18:42,130 ĝi aspektas kiel ŝlosila valoro paro mapado. 379 00:18:42,130 --> 00:18:45,980 Kaj do se you-- eĉ se vi ne estas tute certa kion ĝi tuj faros, 380 00:18:45,980 --> 00:18:49,300 vi versxajne povas diveni ke $ Topping tuj 381 00:18:49,300 --> 00:18:53,800 esti la ŝlosilo en ĉi tiu kazo kaj $ prezo tuj estos la valoro. 382 00:18:53,800 --> 00:18:59,200 Do mi anstataŭiganta nun ĉiu ero de $ picoj kiel ŝlosila valoro paro, 383 00:18:59,200 --> 00:19:03,900 kaj nun mi povas referi al la kernaj kaj la valoro, kiu eble en oportuna, 384 00:19:03,900 --> 00:19:05,590 ekzemple, kiel sekvas. 385 00:19:05,590 --> 00:19:10,170 >> "Tuta" - tiu estas multa preso daŭriganta here-- "Tuta" 386 00:19:10,170 --> 00:19:17,300 Topping "pico kostas $" prezo, kaj tiam Mi presi periodo kaj backslash n. 387 00:19:17,300 --> 00:19:23,420 Do nun, avizo denove mi havas aliron al klavo, $ Topping, kaj valoro, $ prezo. 388 00:19:23,420 --> 00:19:26,647 Do ĉu vi povas diveni kion ĉi tuj elprinti? 389 00:19:26,647 --> 00:19:29,480 Ekzistas multe de presaĵo deklaroj, sed estas nur unu backslash n, 390 00:19:29,480 --> 00:19:33,410 tial ĝi tuj presi ion sur an entire-- sur unu linio de kodo. 391 00:19:33,410 --> 00:19:36,965 >> Se mi povas referi al la klavon kaj la valoro, tiam nun, 392 00:19:36,965 --> 00:19:39,090 anstataŭ nur povante presi la prezoj, 393 00:19:39,090 --> 00:19:41,330 Mi povas presi ion kiel tiu. 394 00:19:41,330 --> 00:19:43,780 "Tuta fromaĝo picon kostas $ 8.99." 395 00:19:43,780 --> 00:19:47,150 Kaj nun mi uzas ĉiujn la keys-- fromaĝo, pepperoni, legomo, 396 00:19:47,150 --> 00:19:49,640 buffalo chicken-- kaj la valoroj. 397 00:19:49,640 --> 00:19:53,980 8.99, 9.99, 10.99, 11,99 Do tio estas nur alimaniere 398 00:19:53,980 --> 00:19:57,840 fari foreach buklo ke anstataŭ nur donante al vi aliron al la valoroj, 399 00:19:57,840 --> 00:20:02,950 ĝi nur donas you-- donas vin aliro al la klavoj kaj la valoroj. 400 00:20:02,950 --> 00:20:04,411 >> Do presi el informo. 401 00:20:04,411 --> 00:20:07,410 Mi jam faris kelkajn malsamaj vojoj, vi eble rimarkis. 402 00:20:07,410 --> 00:20:11,080 La du funkcioj havas ni unuavice vidita estas presitaj kaj eĥo. 403 00:20:11,080 --> 00:20:14,380 Kaj cxar preskaux ĉiuj intencoj kaj celoj, ili estas precize la sama. 404 00:20:14,380 --> 00:20:17,130 They're-- ekzistas tre subtilaj diferencon tio ne eĉ valoras 405 00:20:17,130 --> 00:20:21,130 akiranta en, sed esence ĉie vi povas uzi presaĵo vi povas verŝajne uzi 406 00:20:21,130 --> 00:20:22,370 eĥon ankaŭ. 407 00:20:22,370 --> 00:20:23,610 >> Kaj tio ne estas la solaj du. 408 00:20:23,610 --> 00:20:26,970 PHP havas multajn malsamajn manieroj printi aferojn, 409 00:20:26,970 --> 00:20:30,520 kaj ĝi ankaŭ havas manierojn integri variablojn en la mezo de ŝnuro. 410 00:20:30,520 --> 00:20:32,860 Do rememori de C, do vi memori kio funkcio 411 00:20:32,860 --> 00:20:37,580 ni povas uzi por anstataŭigi variabloj en aferoj ni volas elprinti? 412 00:20:37,580 --> 00:20:40,160 Vi probable uzas tiun funkcii sufiĉe multe. 413 00:20:40,160 --> 00:20:42,290 printf, dekstra? 414 00:20:42,290 --> 00:20:45,290 Do jen kion ni havis antaŭe interne de la kunteksto de nia foreach buklo. 415 00:20:45,290 --> 00:20:48,000 Ni havis tiujn kvin aparta presaĵo deklaroj, 416 00:20:48,000 --> 00:20:50,330 ĉar tiu estis la sola Tiel mi vere sciis tiutempe 417 00:20:50,330 --> 00:20:52,450 kiel presi mesaĝojn. 418 00:20:52,450 --> 00:20:59,560 Mi ne sciis kiel integri la variablo $ estrante en mian PHP-kodo. 419 00:20:59,560 --> 00:21:03,700 Nu, se mi nur prenis sovaĝan konjekton, printf, ĝi fakte estus laborinta. 420 00:21:03,700 --> 00:21:08,980 printf estas funkcio ke mi povas uzi en PHP, ĝuste kiel mi povas uzi ĝin en C. 421 00:21:08,980 --> 00:21:11,880 >> Kaj do ion tiel, printf, denove, ni estas familiara kun tiu. 422 00:21:11,880 --> 00:21:16,420 La unua% s anstataŭigita kun la valoro de $ Topping. 423 00:21:16,420 --> 00:21:19,700 La dua% s estas anstataŭigita kun la valoro de $ prezo. 424 00:21:19,700 --> 00:21:22,630 Kaj tial mi interpellating, Kiu estas nur ornama metodo 425 00:21:22,630 --> 00:21:25,400 diri mi batante la variablojn en tiun lokon. 426 00:21:25,400 --> 00:21:31,000 Do mi ŝtopanta en $ pintante kie la ruĝa% s estas kaj $ prezo kie la blua% s 427 00:21:31,000 --> 00:21:36,060 estas, kaj poste mi ricevus la mesaĝon, "Tuta fromaĝo picon kostas $ 8.99." 428 00:21:36,060 --> 00:21:37,750 >> Ne la sola maniero mi povas fari ĝin, Tamen. 429 00:21:37,750 --> 00:21:39,760 Eble mi volus uzi ĉi tiun metodon. 430 00:21:39,760 --> 00:21:44,890 Tiu estas fakte kio estas plej ofte nomata variablo interpelacio. 431 00:21:44,890 --> 00:21:45,690 Mi povas uzi eĥo. 432 00:21:45,690 --> 00:21:47,737 Mi povus uzi presaĵo ankaŭ, kiel ni vidos. 433 00:21:47,737 --> 00:21:48,820 Sed kio okazas ĉi tie? 434 00:21:48,820 --> 00:21:51,520 >> Unue, mi devas eskapi la dolaro signo. 435 00:21:51,520 --> 00:21:55,140 Ĉar rememoru, kiam ni estis fakte presi el la prezojn de la picoj, 436 00:21:55,140 --> 00:21:59,370 Mi estis reale formati ilin kiel mona figuroj kun dolaro signo. 437 00:21:59,370 --> 00:22:05,635 Sed ni uzas dolaro signoj ankaŭ reprezenti variablon nomoj en PHP, 438 00:22:05,635 --> 00:22:08,010 kaj precipe kiam mi uzante ĉi tiu metodo de la krispa 439 00:22:08,010 --> 00:22:10,040 stegon ŝanĝiĝema interpelacio metodo, mi bezonas 440 00:22:10,040 --> 00:22:13,490 eskapi mian dolaro signo do ne pensi mi parolas variablon. 441 00:22:13,490 --> 00:22:16,920 Ĝi tuj efektive, laŭvorte presi dolaro signo. 442 00:22:16,920 --> 00:22:19,530 >> Do ia analogize ĝin kion vi vidas fine tie. 443 00:22:19,530 --> 00:22:22,832 Ĝi faras ne efektive print backslash n, ĉu ne? 444 00:22:22,832 --> 00:22:24,290 Ĝi presas el nova linio karaktero. 445 00:22:24,290 --> 00:22:26,750 Ĉi is-- ĝi ne tuj print backslash dolaro signo, 446 00:22:26,750 --> 00:22:30,130 ĝi tuj presi nur dolaro signo karakteron. 447 00:22:30,130 --> 00:22:30,640 Sama ideo. 448 00:22:30,640 --> 00:22:32,760 Escape sekvencoj, kio tion nomas. 449 00:22:32,760 --> 00:22:37,080 >> Sed rimarki ke mi ne faras omnaspeca% s anstataŭoj, 450 00:22:37,080 --> 00:22:40,050 Mi nur laŭvorte ŝtopanta en tiuj variabloj. 451 00:22:40,050 --> 00:22:45,110 Kaj tiel en this-- kio okazus tie estas ke la valoro de $ topping-- denove, 452 00:22:45,110 --> 00:22:48,390 nur konformaj ni estis parolas tiel far-- fromaĝo akirus 453 00:22:48,390 --> 00:22:49,720 ŝtopita en tie. 454 00:22:49,720 --> 00:22:54,780 Kaj $ prezo estus ajn valoro estas ĉe picoj, rektaj krampoj, fromaĝo, 455 00:22:54,780 --> 00:22:56,270 kiu estis 8.99. 456 00:22:56,270 --> 00:23:01,860 Kaj tiel tio estus ankaŭ elprinti "Tuta fromaĝo picon kostas $ 8.99." 457 00:23:01,860 --> 00:23:05,160 Kaj kiel mi diris, mi povus uzi presi tie anstataŭ eĥo, 458 00:23:05,160 --> 00:23:08,040 kaj la funkciaro estos preskaux precize la saman. 459 00:23:08,040 --> 00:23:09,660 Estus presi la samon. 460 00:23:09,660 --> 00:23:12,680 >> Ekzistas alia maniero fari ĝin, kaj tio estas alia avantaĝo 461 00:23:12,680 --> 00:23:14,710 de PHP labori kun kordoj. 462 00:23:14,710 --> 00:23:17,130 Ni povas fari ĉenon kunmeto. 463 00:23:17,130 --> 00:23:19,660 Ni povis fari tion en C, tro, uzante funkcio nomita strcat, 464 00:23:19,660 --> 00:23:21,180 sed denove, ni devis voki apartaj funkcioj. 465 00:23:21,180 --> 00:23:22,640 Estis ĉi tuta ĥaoso fari. 466 00:23:22,640 --> 00:23:24,590 Ni devis funto-inkluzivi string.h. 467 00:23:24,590 --> 00:23:25,780 Estis produktado, dekstra? 468 00:23:25,780 --> 00:23:30,070 Sed nun mi povas simple uzi tiun skalara operatoro al concatenate kordoj kune. 469 00:23:30,070 --> 00:23:34,910 >> Do mi concatenando "Tuta" kaj tiam ajn la valoro de $ Topping estas, 470 00:23:34,910 --> 00:23:38,860 kaj poste alia ŝnuro, "pico kostoj $" 471 00:23:38,860 --> 00:23:42,340 kaj tiam concatenando ajn la valoro de $ prezo estas, 472 00:23:42,340 --> 00:23:45,670 kaj tiam ĉe la fino mi tacking sur periodo backslash n. 473 00:23:45,670 --> 00:23:47,926 Kaj tiel tio same presi "Tuta" - denove, 474 00:23:47,926 --> 00:23:50,550 se ni parolas pri la unua elemento de tiu picoj tabelo 475 00:23:50,550 --> 00:23:54,710 "Tuta fromaĝo picon kostas $ 8.99." 476 00:23:54,710 --> 00:24:01,260 Periodo, backslash n, denove, kun la $ Topping kaj $ prezo anstataŭiganta 477 00:24:01,260 --> 00:24:06,580 por kio ni estis specifita en nia foreach buklo kiel la ŝlosilo valoro paro mapado. 478 00:24:06,580 --> 00:24:08,050 >> PHP povas manipuli funkcioj. 479 00:24:08,050 --> 00:24:11,250 Funkcioj estis ia integralo al C, kiel ni vidis. 480 00:24:11,250 --> 00:24:14,870 Kiel variabloj, ni ne bezonas specifi la reveno tipo de la funkcio, 481 00:24:14,870 --> 00:24:16,350 ĉar ĝi ne vere gravas. 482 00:24:16,350 --> 00:24:18,660 Kaj ni ne specifas la datumtipoj de ajna parametroj, 483 00:24:18,660 --> 00:24:21,410 ĉar ili ne vere afero, kiel ni vidis en PHP. 484 00:24:21,410 --> 00:24:24,510 Ĉiu funkcio estas enkondukitaj kun la funkcion ŝlosilvorto. 485 00:24:24,510 --> 00:24:27,920 Tiel estas kiel ni indikas al PHP kiu kion ni parolas estas funkcio. 486 00:24:27,920 --> 00:24:29,720 >> Kaj ni ne devas trakti ĉefa entute, 487 00:24:29,720 --> 00:24:33,690 ĉar la interpretisto, la PHP interpretisto, verkoj de supro al malsupro, 488 00:24:33,690 --> 00:24:34,190 sendistinge. 489 00:24:34,190 --> 00:24:35,640 Se vidas vi povas fari funkcio alvoko, ĝi devos 490 00:24:35,640 --> 00:24:37,850 iri trovi la funkcion alvoko, eĉ se ĝi venas poste. 491 00:24:37,850 --> 00:24:40,360 Sed ĝi tuj legi desupre fundo, tial ni ne bezonas specifi, 492 00:24:40,360 --> 00:24:41,500 jen kien vi komencas. 493 00:24:41,500 --> 00:24:46,700 Vi komencas sur linio 1 de via PHP kaj labori malsupren de tie. 494 00:24:46,700 --> 00:24:49,690 >> Do jen kiel ni kreus funkcio nomita hard_square. 495 00:24:49,690 --> 00:24:54,100 Ĝi ŝajne prenas unu parametro, kiun mi vokas $ x. 496 00:24:54,100 --> 00:24:58,424 Tiu funkcio estas komplikita nur ilustri diversajn aferojn. 497 00:24:58,424 --> 00:24:59,590 Ni ankoraŭ havas reveno valoroj. 498 00:24:59,590 --> 00:25:00,870 Mi uzas por buklo tie. 499 00:25:00,870 --> 00:25:04,970 Sed estas resume nur, kion tiu kvantoj al estas nur $ x fojojn $ x. 500 00:25:04,970 --> 00:25:10,520 Kion mi fakte faras estas nur aldono x 0 x fojoj aŭ $ x al nulo $ x fojojn. 501 00:25:10,520 --> 00:25:15,850 Sed estas efike akurate la sama kiel multipliko $ x fojojn $ x. 502 00:25:15,850 --> 00:25:18,700 Mi povas ankoraŭ resendas valoron, tiukaze $ rezulto, 503 00:25:18,700 --> 00:25:22,060 kaj Mi faris funkcio en PHP. 504 00:25:22,060 --> 00:25:24,160 >> Jen kiel vi povus uzi ĝin en kunteksto. 505 00:25:24,160 --> 00:25:26,020 Do eble mi estas ene de iuj PHP-dosiero. 506 00:25:26,020 --> 00:25:29,240 Rimarku en bluo tie Mi uzis mian PHP delimitadores, 507 00:25:29,240 --> 00:25:31,010 angulo krampo demandosigno php. 508 00:25:31,010 --> 00:25:35,180 Intere tiuj estas ĉiuj la PHP kiu mi volas skribi. 509 00:25:35,180 --> 00:25:37,840 Do mi ŝajne tuj get-- Mi tuj instigas la uzanton 510 00:25:37,840 --> 00:25:41,550 doni al mi kelkajn, ke vendejo variablo, stoki en tiu variablo $ x, 511 00:25:41,550 --> 00:25:43,320 kion ili donis al mi. 512 00:25:43,320 --> 00:25:48,590 Tiam mi tuj eĥon hard_square de tiu valoro, 513 00:25:48,590 --> 00:25:50,370 kaj ŝajne iranta al najlu en nova linio 514 00:25:50,370 --> 00:25:53,590 tiel, kaj tiam poste sur Mi timige difini la funkcion hard_square tiel 515 00:25:53,590 --> 00:25:55,550 ke kiam mi faras la voki al hard_square, 516 00:25:55,550 --> 00:25:58,160 ĝi scias kion mi parolas. 517 00:25:58,160 --> 00:26:00,705 >> Nun, mi povus ankaŭ fari io tiamaniere. 518 00:26:00,705 --> 00:26:02,050 Tio estas iomete malsamaj. 519 00:26:02,050 --> 00:26:04,190 Ĝi estas preskaŭ ĝuste la sama kiel kion ni vidis antaŭe, 520 00:26:04,190 --> 00:26:08,400 krom anstataŭ diri nur $ x tie kiel la parametro hard_square, 521 00:26:08,400 --> 00:26:11,730 Mi dirante $ x = 10. 522 00:26:11,730 --> 00:26:14,330 Do tiu estas ekzemplo de defenda programado, 523 00:26:14,330 --> 00:26:17,070 gardanta viaj programoj kontraŭ malicaj uzantoj. 524 00:26:17,070 --> 00:26:20,020 >> Tio estas unu maniero por fari iun eraron kontrolanta ke ni ne vere 525 00:26:20,020 --> 00:26:24,670 havas kiel eblo en C. Ni povis neniam specifi la defaŭlta valoro de io. 526 00:26:24,670 --> 00:26:27,010 Ni ĉiam devis kontroli ĉu, ekzemple, 527 00:26:27,010 --> 00:26:30,820 se ni faris alvokon al GetString, estis plej konvena se tuj post ni 528 00:26:30,820 --> 00:26:33,300 kontrolis ke, ni kontrolis ĉu la kordo 529 00:26:33,300 --> 00:26:35,504 ke la uzanto donis al ni estas ne egala al nula, 530 00:26:35,504 --> 00:26:37,920 ĉar ni ne volas komenci laborante kun nula kordo. 531 00:26:37,920 --> 00:26:39,670 >> Ĉi tie, tio estas maniero por gardi kontraŭ tio. 532 00:26:39,670 --> 00:26:43,480 Se la uzanto ne havigas al ni ion iel, kion ni faros? 533 00:26:43,480 --> 00:26:46,080 Nu, ni nur diros ajn ili ne provizas nin, 534 00:26:46,080 --> 00:26:47,705 ni ĵus tuj ŝtopi en 10 anstataŭe. 535 00:26:47,705 --> 00:26:52,030 Do se ili ne donas al ni valoron, simple aliru 10 defaŭlte. Kaj do ĉi tie, 536 00:26:52,030 --> 00:26:53,940 rimarkos ke mi faras alvokon al hard_square, 537 00:26:53,940 --> 00:26:55,980 sed estas neniu prompto al la uzanto, ĉu ne? 538 00:26:55,980 --> 00:26:57,540 Mi nur faras malplenan alvokon. 539 00:26:57,540 --> 00:27:00,860 >> Sed mia funkcio hard_square atendas parametro. 540 00:27:00,860 --> 00:27:02,222 Kio estas ĉi tuj presi? 541 00:27:02,222 --> 00:27:03,680 Ĝi tuj presi 100, dekstra? 542 00:27:03,680 --> 00:27:05,720 Ĉar la uzanto ne donu al mi ion ajn. 543 00:27:05,720 --> 00:27:08,970 Kaj do mi simple tuj supozi ke 10-- 10 estas la defaŭlta valoro. 544 00:27:08,970 --> 00:27:13,760 Kaj tiel tio estus presi el 100 sur ĝia propra linio. 545 00:27:13,760 --> 00:27:16,390 >> PHP dosierojn ne devas esti nur unu dosiero. 546 00:27:16,390 --> 00:27:19,480 Vi povas kombini plurajn dosierojn kune, nur ŝatas vin povas en C. La vojo 547 00:27:19,480 --> 00:27:24,330 ni faris ke en C estis tipe fari #include akiri header files tiris je. 548 00:27:24,330 --> 00:27:26,180 Ni ne faras tion en PHP. 549 00:27:26,180 --> 00:27:29,110 Ni faru ion nomatan require_once. 550 00:27:29,110 --> 00:27:33,360 Kaj tiam tie estas tio tutajn afero, kio estas tio __dir__? 551 00:27:33,360 --> 00:27:36,510 Tio estas nur speciala variablo, aŭ speciala konstanta, 552 00:27:36,510 --> 00:27:39,030 vere, kiu specifas kion via nuna dosierujo estas. 553 00:27:39,030 --> 00:27:41,320 Kaj tial ĝi tuj rigardi en via nuna dosierujo 554 00:27:41,320 --> 00:27:44,900 por dosiero nomata cs50.php en ĉi tiu ekzemplo tie, 555 00:27:44,900 --> 00:27:50,490 kaj ĝi tuj algluita ke dosiero ĉe la supro de via PHP programo, 556 00:27:50,490 --> 00:27:56,980 supozante ke vi metis la postuli iam linion ĉe la supro de via PHP-dosiero. 557 00:27:56,980 --> 00:28:01,474 >> Do PHP estas unuavice uzata, sed ne ekskluzive uzataj, 558 00:28:01,474 --> 00:28:03,140 kiel lingvo por reta programado. 559 00:28:03,140 --> 00:28:05,270 Tio estas vere kiel ĝi venis esti. 560 00:28:05,270 --> 00:28:06,980 Sed estas plena lingvo, kiel ni vidis. 561 00:28:06,980 --> 00:28:10,105 Ni vidis preskaux cxion ke ĝi povas fari ke estas similaj al C, 562 00:28:10,105 --> 00:28:13,290 kaj ĝi povas fari heck de multe pli ol tio. 563 00:28:13,290 --> 00:28:16,950 >> Sed ĉar ĝi estas plena lingvo kaj ni povas fari komandlinio programado en ĝi. 564 00:28:16,950 --> 00:28:18,630 Ni povas kuri komandlinio programoj. 565 00:28:18,630 --> 00:28:22,580 Ĉiuj kiu estas postulita kuri komando linio programo kiu estas skribita en PHP 566 00:28:22,580 --> 00:28:24,260 estas ke vi havas PHP interpretisto. 567 00:28:24,260 --> 00:28:27,460 Do ĝi estas speco de analogaj al havante tradukilo en via sistemo 568 00:28:27,460 --> 00:28:31,100 se vi volas kompili vian C kodo por igi ĝin plenumebla dosierojn. 569 00:28:31,100 --> 00:28:33,810 Vi bezonas havi PHP interpretisto ke ekzistas en via sistemo 570 00:28:33,810 --> 00:28:37,330 por ke vi povas interpreti PHP dosierojn. 571 00:28:37,330 --> 00:28:40,370 >> Supozante vi, kaj kutime tiu interpretisto nomata PHP, 572 00:28:40,370 --> 00:28:44,300 kaj ĝi estas kutime inkludita kun plej Elŝutoj aŭ instalaĵoj de PHP 573 00:28:44,300 --> 00:28:47,430 ke vi povas akiri en linio, kaj certe la nomo de la PHP interpretisto 574 00:28:47,430 --> 00:28:49,550 ni havas en CS50, IDE. 575 00:28:49,550 --> 00:28:51,819 Ĉiuj vi fari estas tipo php dosiero. 576 00:28:51,819 --> 00:28:53,610 Kaj kion via programo tuj faros estas ĝi estas 577 00:28:53,610 --> 00:28:55,360 tuj kuri tra la interpretisto, ĝi estas 578 00:28:55,360 --> 00:28:58,040 ignoros ĉio tio ne intere demando mark-- 579 00:28:58,040 --> 00:29:03,160 aŭ, angulo krampo demandosigno php, la PHP delimitadores, kaj presi ĝin, 580 00:29:03,160 --> 00:29:07,660 kaj ĝi interpretos kaj ekzekuti la kodo ene de via PHP delimitadores. 581 00:29:07,660 --> 00:29:12,850 >> Do ni Pufo al CS50 IDE kaj rigardi kelkajn PHP dosierojn, 582 00:29:12,850 --> 00:29:19,850 kuranta paro de PHP dosieroj, en komandlinio interfaco de CS50 IDE. 583 00:29:19,850 --> 00:29:22,100 Do jen ni estas en CS50 IDE, kaj mi prenis la liberecon 584 00:29:22,100 --> 00:29:25,800 malfermi dosieron nomatan hello1.php. 585 00:29:25,800 --> 00:29:29,920 Kaj ŝajne, la enhavo de tiu dosiero estas nur la PHP delimitadores tie, 586 00:29:29,920 --> 00:29:32,220 kaj intere, eĥo ("saluton, mondo"). 587 00:29:32,220 --> 00:29:34,710 Jen sufiĉe simpla PHP programo. 588 00:29:34,710 --> 00:29:37,670 Mi simple tuj rulumu malsupren al mia fina fenestro tie, 589 00:29:37,670 --> 00:29:44,320 kaj mi tuj tajpi php hello1.php, batis eniri. 590 00:29:44,320 --> 00:29:44,950 Saluton mondo. 591 00:29:44,950 --> 00:29:48,110 Tio probable kion ni estis atendis ĝin fari, ĉu ne? 592 00:29:48,110 --> 00:29:51,140 >> Ni iru supren kaj preni alia rigardi programon. 593 00:29:51,140 --> 00:29:52,924 hello2.php. 594 00:29:52,924 --> 00:29:55,090 Pli malpli la sama afero, Ne multe okazas tie. 595 00:29:55,090 --> 00:29:57,190 Ĉi tiu fojo, tamen, mi tuj suflori la uzanto doni al mi iliajn nomojn. 596 00:29:57,190 --> 00:29:59,290 Mi uzas tiun readline funkcion denove. 597 00:29:59,290 --> 00:30:01,340 $ nomo = readline. 598 00:30:01,340 --> 00:30:03,070 Jen la invito, "Kio estas via nomo?" 599 00:30:03,070 --> 00:30:04,880 >> Ŝajne mi estas preso ĝin sur ĝia propra linio. 600 00:30:04,880 --> 00:30:07,220 Kaj tiam, do la linio malsupre tio estos la prompto 601 00:30:07,220 --> 00:30:08,750 kie la uzanto povas eniri ilian nomon. 602 00:30:08,750 --> 00:30:12,030 Kaj tiam mi uzas iomete de ŝanĝiĝema interpelacio tie sur linio 3 603 00:30:12,030 --> 00:30:14,780 presi "Saluton" kaj kiom la uzanto tajpas. 604 00:30:14,780 --> 00:30:22,040 Do tiu estas analoga al diri: Saluton, komo,% s se ni uzis printf en C. 605 00:30:22,040 --> 00:30:24,910 >> Do ni iru kaj interpreti ĉi programo. 606 00:30:24,910 --> 00:30:27,400 Do denove, mi rulumu malsupren al mia fina fenestro. 607 00:30:27,400 --> 00:30:29,070 php hello2.php. 608 00:30:29,070 --> 00:30:31,920 609 00:30:31,920 --> 00:30:33,820 Kio estas via nomo? 610 00:30:33,820 --> 00:30:35,490 Doug. 611 00:30:35,490 --> 00:30:36,526 Saluton, Doug. 612 00:30:36,526 --> 00:30:39,440 Mi ankaŭ havas alian dosiero nomata hello3.php. 613 00:30:39,440 --> 00:30:42,850 Mi tuj purigi mian ekrano kun Kontrolo L, 614 00:30:42,850 --> 00:30:46,210 kaj mi tuj ekzekuti tiu. 615 00:30:46,210 --> 00:30:47,640 Kio estas via nomo? 616 00:30:47,640 --> 00:30:49,020 Doug. 617 00:30:49,020 --> 00:30:49,780 Saluton, Doug. 618 00:30:49,780 --> 00:30:56,540 Do la konduto estas identa al hello2.php, sed kial hello3.php? 619 00:30:56,540 --> 00:30:58,040 >> Nu, jen la diferenco. 620 00:30:58,040 --> 00:31:00,620 En tiu kazo, avizo ke sur linio 1 tie, 621 00:31:00,620 --> 00:31:04,270 Mi havas ion ke estas ne en inter la PHP delimitadores. 622 00:31:04,270 --> 00:31:07,760 Mi simple videbligi fjordon aŭ mi nur tajpitaj, "Kio estas via nomo?" 623 00:31:07,760 --> 00:31:12,060 Kiam la PHP interpretisto vidas ĉi, ĝi havas nenian ideon kiel interpreti ĝin kiel PHP, 624 00:31:12,060 --> 00:31:15,060 kaj tiel anstataŭe de malsukcesi, ĝi estas ĝuste tuj kraĉis ĝin. 625 00:31:15,060 --> 00:31:19,010 >> Do rimarki sur linio 3 nun, mia alvoko al readline, ne prompto anymore. 626 00:31:19,010 --> 00:31:21,750 Mi nur vere tuj to-- kiam la PHP interpretisto vidas ĉi, 627 00:31:21,750 --> 00:31:23,400 ĝi tuj presi "Kio estas via nomo?" 628 00:31:23,400 --> 00:31:25,941 Tiam vidas, ho, okej, here's-- ĉio alia tuj estos 629 00:31:25,941 --> 00:31:29,970 interpretitaj kiel PHP, do jen kial ĉi verkoj. 630 00:31:29,970 --> 00:31:34,990 Mi ne devas nepre suflori la uzanto to-- ene de readline, 631 00:31:34,990 --> 00:31:37,490 Mi povas nur havi ĝin ekstere de la PHP delimitadores 632 00:31:37,490 --> 00:31:41,490 kaj permesi la interpretisto simple printi ĝin por mi. 633 00:31:41,490 --> 00:31:45,364 >> Do vi ne fakte nur havas havi unu aron de PHP delimitadores 634 00:31:45,364 --> 00:31:46,030 en via programo. 635 00:31:46,030 --> 00:31:49,887 Vi povas fakte havi plurajn el ili, malfermante kaj fermante ilin laŭbezone. 636 00:31:49,887 --> 00:31:51,720 Do ni rigardu ĉe kelkaj programoj 637 00:31:51,720 --> 00:31:55,070 en CS50 IDE kie ni ilustri tiun ideon de havado 638 00:31:55,070 --> 00:31:58,376 multoblaj aroj de limigitaj PHP. 639 00:31:58,376 --> 00:32:02,010 >> Bone, do mi malfermis dosieron tie nomata add1.php. 640 00:32:02,010 --> 00:32:03,390 Kaj rimarki kio okazas tie. 641 00:32:03,390 --> 00:32:08,077 Ĝuste kiel antaŭe, mi havas sola PHP aro de limoj. 642 00:32:08,077 --> 00:32:10,660 Mi tuj presi la mesaĝo, "Bonvolu doni al mi kelkajn." 643 00:32:10,660 --> 00:32:13,394 Tiam mi tuj legis linion kaj stoki ĝin en la variablo $ num1. 644 00:32:13,394 --> 00:32:14,810 Tiam mi tuj presi denove. 645 00:32:14,810 --> 00:32:16,310 Donu al mi duan numeron. 646 00:32:16,310 --> 00:32:20,450 Legu linion de la uzanto, vendejo ajn ili tajpitaj en en $ num2. 647 00:32:20,450 --> 00:32:23,980 Aldoni ilin kune kaj stoki tio rezultigi variablon nomita $ sumo, 648 00:32:23,980 --> 00:32:26,180 kaj tiam presi, "La sumo de tiuj du nombroj 649 00:32:26,180 --> 00:32:29,254 estas, "kaj tiam interpellate ekzistas la variablo $ sumo. 650 00:32:29,254 --> 00:32:31,170 Do ni nur kuri ĉi tra la interpretisto 651 00:32:31,170 --> 00:32:33,720 konfirmi ke ĉi tio estas kion ni atendas. 652 00:32:33,720 --> 00:32:37,540 php add1.php. 653 00:32:37,540 --> 00:32:38,665 Bonvolu doni al mi kelkajn, 3. 654 00:32:38,665 --> 00:32:40,410 Bonvolu doni al mi la duan numeron, 4. 655 00:32:40,410 --> 00:32:43,370 La sumo de ĉi tiuj du nombroj estas 7. 656 00:32:43,370 --> 00:32:45,030 Jen 3 plus 4. 657 00:32:45,030 --> 00:32:45,530 BONE? 658 00:32:45,530 --> 00:32:47,770 Do nenio terure imago tie. 659 00:32:47,770 --> 00:32:51,080 >> Kaj nun ni malfermu add2.php. 660 00:32:51,080 --> 00:32:54,460 Ĉi tie, mi havas kelkajn de PHP limigita aroj tie, ĉu ne? 661 00:32:54,460 --> 00:32:59,107 Linioj 1, 3-- linioj 1 kaj 3 havas neniun PHP delimitadores. 662 00:32:59,107 --> 00:33:00,940 Do kiam la interpretisto vidas ilin, estas nur 663 00:33:00,940 --> 00:33:03,220 tuj kraĉis precize kion mi tajpis tie. 664 00:33:03,220 --> 00:33:05,011 Do jen kie mi estas fari cxiujn miajn instigante. 665 00:33:05,011 --> 00:33:11,220 Sur linioj 2 kaj 4, ni vidos la tre familiara $? php ia delimitadores, 666 00:33:11,220 --> 00:33:15,210 do tiuj du linioj estas tuj ekzekuti kiel PHP. 667 00:33:15,210 --> 00:33:18,270 Kaj tiam sur linio 5 Mi havas ĉi stranga afero ĝuste ĉi tie, ĉu ne? 668 00:33:18,270 --> 00:33:20,480 Tiu angulo krampo demandosigno egalsigno. 669 00:33:20,480 --> 00:33:22,660 Mi eĉ zomi iomete plu. 670 00:33:22,660 --> 00:33:29,270 Vi povas vidi ĉi estas kio mi estas parolas rekte tie, ĉi $? =. 671 00:33:29,270 --> 00:33:33,420 >> Ĝi rezultas ke ĝi estas tiel komuna ol la kialo ke ni malfermu aron de PHP 672 00:33:33,420 --> 00:33:36,055 delimitadores estas presi valoro. 673 00:33:36,055 --> 00:33:37,430 Kaj jen ĉio ni tuj faros. 674 00:33:37,430 --> 00:33:39,220 Sed estas eĉ stenografio por tio. 675 00:33:39,220 --> 00:33:46,490 $? = Estas PHP stenografio por dirante io kiel $? php echo sumo 676 00:33:46,490 --> 00:33:48,350 de num1 kaj num2. 677 00:33:48,350 --> 00:33:51,900 Do tiu estas nur alia stenografio por tio. 678 00:33:51,900 --> 00:33:55,550 >> Do se mi kuros ĉi programo, php add2.php. 679 00:33:55,550 --> 00:33:57,530 Mi zomi malsupren iomete. 680 00:33:57,530 --> 00:33:59,000 Bonvolu doni al mi kelkajn, 4. 681 00:33:59,000 --> 00:34:00,350 Bonvolu doni al mi la duan numeron. 682 00:34:00,350 --> 00:34:04,650 Kaj ĉar mi ne vere zorgas pri datumtipoj en PHP, mi povas diri 4.8. 683 00:34:04,650 --> 00:34:07,160 La sumo de ĉi tiuj du nombroj estas 8.8. 684 00:34:07,160 --> 00:34:10,179 Domadministranto kondutas preskaux precize samaj kiel ni atendus, 685 00:34:10,179 --> 00:34:10,989 ankaŭ. 686 00:34:10,989 --> 00:34:13,114 Mi havas unu pli malfermita tie supre nomitaj dice.php. 687 00:34:13,114 --> 00:34:25,625 688 00:34:25,625 --> 00:34:26,250 Provu tion denove. 689 00:34:26,250 --> 00:34:29,429 690 00:34:29,429 --> 00:34:33,280 Mi havas unu pli tie nomas dice1.php, kiu ankaŭ, vidas, 691 00:34:33,280 --> 00:34:37,440 havas tiun angulon krampo demando marki egalsigno notacio tien, 692 00:34:37,440 --> 00:34:40,659 sed rimarki ke en ĉi tiu kazo mi estas vokanta la funkcio rand, kiu kiel vi 693 00:34:40,659 --> 00:34:42,790 povus atendi generas hazarda nombro. 694 00:34:42,790 --> 00:34:46,889 "Vi alrulis," kaj ĝi tuj kalkuli iuj hazardaj nombraj, mod 6 + 695 00:34:46,889 --> 00:34:47,389 1. 696 00:34:47,389 --> 00:34:49,989 Por ke donos min nombro en la gamo de 1 ĝis 6. 697 00:34:49,989 --> 00:34:53,040 >> Memoru ke mod 6 donus min nombro en la intervalo de 0 ĝis 5, 698 00:34:53,040 --> 00:34:56,630 sed se mi simulante ĵetkubon ruloj, kiu estas kion mi faras ĉi tie, 699 00:34:56,630 --> 00:35:00,040 Mi ne volas ĉi tiuj ĵetkuboj iri de 0 5 Mi volas ĵetkuboj kiuj iras de 1 al 6. 700 00:35:00,040 --> 00:35:02,800 Kaj tiel tio estas maniero akiri Mi en la gamo de 1 ĝis 6. 701 00:35:02,800 --> 00:35:04,720 Mi faras ĉi dufoje. 702 00:35:04,720 --> 00:35:08,630 Do ŝajne mi ruliĝante du ĵetkuboj en tiu programo. 703 00:35:08,630 --> 00:35:15,210 >> Do mi devos purigi mian ekranon, kaj mi faros php dice1.php. 704 00:35:15,210 --> 00:35:16,640 Vi alrulis 4 kaj 2. 705 00:35:16,640 --> 00:35:19,156 Kaj se mi kuros la programon denove, vi alrulis 5 kaj 5. 706 00:35:19,156 --> 00:35:21,780 Do ĉiufoje mi kuri la programon, Mi ricevas malsamajn nombrojn, 707 00:35:21,780 --> 00:35:24,280 ĉar ĉiufoje mi fari Do, estas startanta super. 708 00:35:24,280 --> 00:35:27,250 Ĝi tuj generi novan aro de hazardaj nombroj por mi. 709 00:35:27,250 --> 00:35:29,790 >> Do se estas kutimitaj kurante programoj de C, 710 00:35:29,790 --> 00:35:32,520 ni kutime tajpante ./ la nomon de programo, ĉu ne? 711 00:35:32,520 --> 00:35:35,090 Tiel estas kiel ni faris ĉiuj de niaj programoj en C ĝis nun. 712 00:35:35,090 --> 00:35:37,555 Ni povas fari tion en PHP same aldonante ion nomatan 713 00:35:37,555 --> 00:35:40,026 a shebang la supron de nia PHP-dosiero. 714 00:35:40,026 --> 00:35:41,400 Mi scias ĝin estas afabla de stulta vorto. 715 00:35:41,400 --> 00:35:44,540 Ĝi estas mallongigo de hash bang. 716 00:35:44,540 --> 00:35:46,300 Tio estas la unuaj du karakteroj tie. 717 00:35:46,300 --> 00:35:50,030 Memoru ni nomas ekkrion punkto ofte krako en komputiko. 718 00:35:50,030 --> 00:35:51,690 Ĝi ankaŭ eble estos por akra krako. 719 00:35:51,690 --> 00:35:53,273 Ekzistas paro manieroj interpreti ĝin. 720 00:35:53,273 --> 00:35:57,320 Sed estas esence speciala speco de ordonos ke la PHP interpretisto 721 00:35:57,320 --> 00:36:00,160 komprenas kiel, ho, mi volas vi ekzekuti tiu programo, 722 00:36:00,160 --> 00:36:05,250 kiu estas ŝajne / uzanto / bin / php, kiu estas reale kie la PHP interpretisto 723 00:36:05,250 --> 00:36:08,590 specife vivas sur nia sistemo. 724 00:36:08,590 --> 00:36:12,530 Do it's-- kio okazas ĉi tie estas la interpretisto komprenas, ho, 725 00:36:12,530 --> 00:36:17,270 Mi ŝajne supozis uzi en tiu programo por kuri ĉi tiu dosiero. 726 00:36:17,270 --> 00:36:20,010 Kaj tiel permesas salti super la ŝtupo 727 00:36:20,010 --> 00:36:22,979 devi diri php something.php. 728 00:36:22,979 --> 00:36:25,020 Ekzistas unu alia kaptaĵo tie, kio estas ke se ni 729 00:36:25,020 --> 00:36:27,320 volas nia programoj labori kiel atendis, ni 730 00:36:27,320 --> 00:36:30,220 bezonas fari ion nomatan dosiero permeson ŝanĝo. 731 00:36:30,220 --> 00:36:33,380 Kaj ni vidos go-- kaj parolas iom iom pli pri dosiero permeson ŝanĝoj 732 00:36:33,380 --> 00:36:37,550 en nia vídeo sur MVC, sed sufiĉas diru ke ĉi tio estas kion vi devas fari 733 00:36:37,550 --> 00:36:42,760 por fari vian .php dosierojn plenumebla. 734 00:36:42,760 --> 00:36:49,330 Do ni rigardu tiun kiel nia fina ekzemplo super en CS50 IDE. 735 00:36:49,330 --> 00:36:53,910 >> Do jen en IDE mi havas du dosierojn en tiu PHP dosierujo kiuj aperas ne esti 736 00:36:53,910 --> 00:36:55,310 nomata .php. 737 00:36:55,310 --> 00:36:58,170 Mi havas funkcion nomita add-- Mi havas dosieron nomatan add3 738 00:36:58,170 --> 00:37:00,650 kaj dosiero nomata dice2. 739 00:37:00,650 --> 00:37:03,680 Do ni prenu rapidan rigardi kaj malfermu add3. 740 00:37:03,680 --> 00:37:08,300 Kaj kiel vi povas vidi, komence de mia dosiero mi havas ĉi shebang, dekstra? 741 00:37:08,300 --> 00:37:11,420 Ĉi hash markon ekkrion punkto. 742 00:37:11,420 --> 00:37:15,115 Nun, vi ankaŭ eble rimarkas ke ial, 743 00:37:15,115 --> 00:37:16,990 Mi ne havas ajnan sintakso elstarigante plu, 744 00:37:16,990 --> 00:37:20,198 kaj jen, kion mi aludis al pli frua, kio estis ke se mi ne enoficigas mian dosieron 745 00:37:20,198 --> 00:37:23,040 Php, mi ne havas la profito de sintakso reliefigante anymore. 746 00:37:23,040 --> 00:37:26,220 Ĉi tiu dosiero estas simple nomita add3. 747 00:37:26,220 --> 00:37:30,960 Por ke mi povas kuri ĝin poste kun ./ add3 kaj ne ./ add3.php. 748 00:37:30,960 --> 00:37:33,680 >> Do la reason-- ĝi estas ankoraŭ bone, ĝi estas ankoraŭ valida PHP, 749 00:37:33,680 --> 00:37:37,000 sed ĝi ne estas sintakso elstarigita, ĉar ĉi dosiero ne estas nomita something.php. 750 00:37:37,000 --> 00:37:41,580 Tio estas la sola reala diferenco tie, plus la shebang. 751 00:37:41,580 --> 00:37:45,170 Do ni vidu kio okazas kiam Mi provas kaj ruli tiun programon. 752 00:37:45,170 --> 00:37:50,780 ./ Add3, samkiel mi farus kun C. Bash. 753 00:37:50,780 --> 00:37:53,190 ./ Add3 permeson neita. 754 00:37:53,190 --> 00:37:55,390 Jen kion vi tuj ĉu vi forgesas 755 00:37:55,390 --> 00:37:59,280 uzi la chmod komando ŝanĝi la permesojn de la dosiero. 756 00:37:59,280 --> 00:38:03,845 >> Kiel ĝi rezultas, regula PHP dosieroj povas ne nur esti ekzekutita. 757 00:38:03,845 --> 00:38:06,970 Ili povas esti interpretita, sed ni estas fari ion iom malsama ĉi tie. 758 00:38:06,970 --> 00:38:07,761 Ni ekzekuti ĝin. 759 00:38:07,761 --> 00:38:12,970 Kaj tial mi devas aldoni la permeson de ekzekuto, chmod a + x al add3. 760 00:38:12,970 --> 00:38:15,680 Tiam mi povos diri ./ add3. 761 00:38:15,680 --> 00:38:16,860 Bonvolu doni al mi kelkajn. 762 00:38:16,860 --> 00:38:18,060 5, 6. 763 00:38:18,060 --> 00:38:20,490 La sumo de ĉi tiuj du nombroj estas 11. 764 00:38:20,490 --> 00:38:26,530 >> Simile, mi jam chmoded dice2, do mi povas simple tajpi ./ dice2, 765 00:38:26,530 --> 00:38:31,260 vi alrulis 1 kaj a 1, vi alrulis 5 kaj 4, kaj tiel plu. 766 00:38:31,260 --> 00:38:33,680 >> Do jen preskaux la ideo de PHP sintakso, dekstra? 767 00:38:33,680 --> 00:38:35,221 Estas multe por trairi, mi scias. 768 00:38:35,221 --> 00:38:39,160 Sed espereble vi vidis nun ke PHP ne vere tiel malsama de C 769 00:38:39,160 --> 00:38:43,670 kaj vere donas al ni la eblon preni aĵojn muesca aŭ du. 770 00:38:43,670 --> 00:38:48,230 Ni ne vere devas maltrankvili tro multe about-- ni ne vere 771 00:38:48,230 --> 00:38:51,605 devas maltrankviligi tro multe pri la malalta nivelo detaloj ni 772 00:38:51,605 --> 00:38:52,980 devis maltrankviligi kun C, dekstra? 773 00:38:52,980 --> 00:38:56,170 Ni povas koncentri sur la pli altaj nivelo aĵoj ke PHP 774 00:38:56,170 --> 00:39:01,090 permesas nin fari kaj preni por donita ke ĝi funkcios por ni. 775 00:39:01,090 --> 00:39:04,350 Do ĝi donas al ni la eblon nun, transitioning de C al PHP, 776 00:39:04,350 --> 00:39:08,280 fari programojn kiuj estas multe pli kompleksa kaj eble multe pli fortikaj. 777 00:39:08,280 --> 00:39:13,070 >> Do mi esperas vin havas amuzan laborista kun PHP, kaj mi estas Doug Lloyd. 778 00:39:13,070 --> 00:39:15,050 Jen CS50. 779 00:39:15,050 --> 00:39:17,637