1 00:00:00,000 --> 00:00:05,340 2 00:00:05,340 --> 00:00:07,370 >> DOUG LLOYD: Så vi har gjort mye arbeid i C, 3 00:00:07,370 --> 00:00:09,536 og C er en veldig kul språk fordi det gir deg 4 00:00:09,536 --> 00:00:12,840 evnen til å dykke virkelig lavt nivå i programmene dine. 5 00:00:12,840 --> 00:00:16,810 Vi kommer til å gjøre ting som virkelig minutt som manipulerer 6 00:00:16,810 --> 00:00:18,800 individuelle byte minne. 7 00:00:18,800 --> 00:00:21,420 Recall at pekere virkelig tillate oss at fleksibilitet. 8 00:00:21,420 --> 00:00:25,260 >> Men trenger vi alltid å ha at finkornet detaljnivå 9 00:00:25,260 --> 00:00:26,820 i våre programmer? 10 00:00:26,820 --> 00:00:28,210 Sannsynligvis ikke, ikke sant? 11 00:00:28,210 --> 00:00:30,376 Og hvis vi skal ha en avveining mellom å være 12 00:00:30,376 --> 00:00:32,911 stand til å gjøre virkelig, virkelig minutt ting og virkelig, virkelig 13 00:00:32,911 --> 00:00:35,910 store ting som vi ikke trenger å tenke om, har vi ikke å implementere 14 00:00:35,910 --> 00:00:40,290 disse virkelig store ideer hvis de er allerede innebygd for oss, 15 00:00:40,290 --> 00:00:43,980 generelt for å bygge store programmer eller store prosjekter, 16 00:00:43,980 --> 00:00:49,130 vi sannsynligvis kommer til å feile på siden av å ha flere språk ting bygget i 17 00:00:49,130 --> 00:00:51,300 for oss, i stedet for å lavnivå ting. 18 00:00:51,300 --> 00:00:53,970 Og det er der PHP egentlig kommer inn. 19 00:00:53,970 --> 00:00:58,200 >> Nå er en av grunnene at vi lærer PHP i CS50 20 00:00:58,200 --> 00:01:01,020 er at det er tungt inspirert av C. Og faktisk, etter min mening, 21 00:01:01,020 --> 00:01:05,140 Det er egentlig to progenitor språk som 22 00:01:05,140 --> 00:01:08,200 er veldig vanlig nå til dags. 23 00:01:08,200 --> 00:01:10,110 C og LISP. 24 00:01:10,110 --> 00:01:13,280 Og de er progenitor språk fordi alle andre moderne programmerings 25 00:01:13,280 --> 00:01:17,380 språk som har utviklet siden da er inspirert 26 00:01:17,380 --> 00:01:20,330 ved den ene eller den annen syntaktisk. 27 00:01:20,330 --> 00:01:26,160 PHP er veldig lik syntaktisk til C, mens språk som Scheme, 28 00:01:26,160 --> 00:01:27,900 for eksempel, hvilke du kanskje har hørt om, 29 00:01:27,900 --> 00:01:32,070 er sterkt inspirert av et språk kalt LISP, som er en eldre språk. 30 00:01:32,070 --> 00:01:34,220 >> Så grunnen til at vi lærer PHP i CS50 er at, 31 00:01:34,220 --> 00:01:37,730 ved å kjenne C som fundamentalt som du gjør på dette punktet, 32 00:01:37,730 --> 00:01:41,280 plukke opp PHP, som gir deg evnen til å gjøre mye høyere nivå ting 33 00:01:41,280 --> 00:01:44,710 enn C gjør, er ikke at mye av et hinder, 34 00:01:44,710 --> 00:01:48,230 fordi du allerede har grunnleggende idé om syntaks. 35 00:01:48,230 --> 00:01:50,590 C har eksistert i nesten 45 år på dette punktet. 36 00:01:50,590 --> 00:01:52,780 PHP har eksistert i ca 20 år. 37 00:01:52,780 --> 00:01:57,080 Og ved at 25 år i mellom, programmerere 38 00:01:57,080 --> 00:02:01,540 bestemt at de ville mye heller ha høyere nivå evner, 39 00:02:01,540 --> 00:02:04,970 og feilene og kamper av de 20 årene i mellom 40 00:02:04,970 --> 00:02:08,210 førte til PHP og andre moderne språk. 41 00:02:08,210 --> 00:02:11,039 >> PHP er et stort utvalg av språk for programvare 42 00:02:11,039 --> 00:02:14,042 som allow-- for programvare at-- hvor du 43 00:02:14,042 --> 00:02:16,250 trenger å gjøre ting som i C er faktisk komplisert. 44 00:02:16,250 --> 00:02:18,480 Så for eksempel, jobber med strykere i C 45 00:02:18,480 --> 00:02:21,709 er meget komplisert, fordi som vi vet, strykere i C 46 00:02:21,709 --> 00:02:23,250 er egentlig bare matriser av tegn. 47 00:02:23,250 --> 00:02:25,230 Det er ikke et innebygd datatype. 48 00:02:25,230 --> 00:02:28,220 Eller kanskje mer fundamentalt, noe vi ikke selv dekke i C, 49 00:02:28,220 --> 00:02:30,360 hva om du trenger å gjøre noen datanettverk? 50 00:02:30,360 --> 00:02:30,860 Greit? 51 00:02:30,860 --> 00:02:34,920 >> C har evnen til å gjøre det, men det er så uforståelige og så vanskelig å faktisk gjøre. 52 00:02:34,920 --> 00:02:37,580 Ville det ikke være fint om språk hadde en innebygget, lett vei 53 00:02:37,580 --> 00:02:38,910 å gjennomføre nettverk? 54 00:02:38,910 --> 00:02:43,420 Og PHP er et språk som gjør det, eller letter det, ganske mye mer. 55 00:02:43,420 --> 00:02:47,740 Som jeg sa, er PHP veldig tungt inspirert av C. Syntaksen er veldig lik. 56 00:02:47,740 --> 00:02:51,760 Og så det skal forhåpentligvis gjøre Overgangen fra den ene til den annen 57 00:02:51,760 --> 00:02:54,710 litt mykere enn noen andre språk kan være. 58 00:02:54,710 --> 00:02:58,800 >> For å begynne å skrive PHP, bare åpne opp en fil med php filtypen. 59 00:02:58,800 --> 00:03:00,670 Teknisk er dette ikke faktisk nødvendig, 60 00:03:00,670 --> 00:03:04,495 men hvis du vil ha ting som syntaks utheving i IDE, så denne typen 61 00:03:04,495 --> 00:03:07,620 navn eller variabelnavn, funksjoner, du vet, søkeordene i språket 62 00:03:07,620 --> 00:03:10,090 er uthevet i en bestemt farge, du vanligvis 63 00:03:10,090 --> 00:03:14,020 ønsker å navngi filene dine med en bestemt filtype. 64 00:03:14,020 --> 00:03:18,430 Så vi har kalt vår fil med en .php forlengelse, men da også med PHP, 65 00:03:18,430 --> 00:03:23,310 alle PHP-koden vi skriver i denne filen må være omsluttet av disse PHP 66 00:03:23,310 --> 00:03:25,190 skilletegn som vi ser her på skjermen. 67 00:03:25,190 --> 00:03:27,910 Vinkelbrakett? Php å starte. 68 00:03:27,910 --> 00:03:30,860 Så skriver vi alle våre PHP kode som vi ønsker i mellom. 69 00:03:30,860 --> 00:03:32,260 Og så ? 70 00:03:32,260 --> 00:03:34,710 vinkel brakett for å lukke. 71 00:03:34,710 --> 00:03:37,170 >> Hvis vi ikke gjør dette, så hva kommer til å skje? 72 00:03:37,170 --> 00:03:38,170 Det kommer ikke til å krasje. 73 00:03:38,170 --> 00:03:39,410 Det kommer ikke til å virkelig ødelegge vårt program. 74 00:03:39,410 --> 00:03:41,440 Men det er ikke til å ha effekten som vi ønsker. 75 00:03:41,440 --> 00:03:44,540 Hva kommer til å skje, egentlig, er at når vi prøver og kjøre dette programmet, 76 00:03:44,540 --> 00:03:50,330 alt ikke mellom disse skilletegn kommer til å bli skrevet ut ordrett. 77 00:03:50,330 --> 00:03:52,210 Det kommer ikke til å faktisk utføre koden, 78 00:03:52,210 --> 00:03:56,010 det kommer til å like skrive det ut ordrett. 79 00:03:56,010 --> 00:03:57,320 >> Nå hvorfor er det slik? 80 00:03:57,320 --> 00:04:00,416 Så C er det som er kjent som et kompilert språk. 81 00:04:00,416 --> 00:04:03,040 Du er sikkert kjent med det skritt å lage programmene dine, 82 00:04:03,040 --> 00:04:07,820 snu .c filer og .h filer i en enkelt kjørbar med make, 83 00:04:07,820 --> 00:04:11,130 særlig hjelp Clang som vår kompilator. 84 00:04:11,130 --> 00:04:13,030 PHP, skjønt, ikke har denne tilsvarende. 85 00:04:13,030 --> 00:04:15,600 PHP er det som kalles en tolket språk. 86 00:04:15,600 --> 00:04:16,760 Og hva betyr det? 87 00:04:16,760 --> 00:04:20,680 >> Vel, det betyr at vi ikke trenger å konvertere vår kildekoden til nuller og enere 88 00:04:20,680 --> 00:04:21,470 på forhånd. 89 00:04:21,470 --> 00:04:23,900 Snarere er det et program, som også kalles 90 00:04:23,900 --> 00:04:29,771 PHP, som forstår PHP og kan liksom gjøre det på sparket. 91 00:04:29,771 --> 00:04:32,520 Det er egentlig ikke helt nøyaktig, men det er en ganske god analogi 92 00:04:32,520 --> 00:04:33,760 av hva som skjer. 93 00:04:33,760 --> 00:04:37,230 Det er å tolke de nuller og enere på fly. 94 00:04:37,230 --> 00:04:40,160 Og så hvis den ikke vet hvordan å behandle noe, 95 00:04:40,160 --> 00:04:42,800 hvis den ikke vet hvordan de skal prosessen PHP, har du sannsynligvis 96 00:04:42,800 --> 00:04:44,680 ønsket å sette denne teksten i det, ikke sant? 97 00:04:44,680 --> 00:04:48,960 >> Du har sannsynligvis ønsket å sette inn koden i der, selv om det ikke er mellom PHP-- 98 00:04:48,960 --> 00:04:50,035 PHP skilletegn. 99 00:04:50,035 --> 00:04:51,910 Men-- så det ikke kommer for å slette den for deg, 100 00:04:51,910 --> 00:04:53,576 det er bare kommer til utgangspunktet forkaste det. 101 00:04:53,576 --> 00:04:55,550 Så det kommer til å skrive ut det ut til skjermen. 102 00:04:55,550 --> 00:04:57,150 >> Dette virker som det er en dårlig ting, men egentlig er det 103 00:04:57,150 --> 00:04:58,220 kommer til å bli en virkelig god ting, som vi vil 104 00:04:58,220 --> 00:05:00,390 se når vi snakker om PHP webutvikling, 105 00:05:00,390 --> 00:05:04,010 fordi det betyr at vi kan flette PHP og HTML. 106 00:05:04,010 --> 00:05:06,640 Vi kan bruke dem sammen for å skape en mer dynamisk nettside. 107 00:05:06,640 --> 00:05:10,650 Men mer om det i video på PHP webutvikling. 108 00:05:10,650 --> 00:05:12,021 >> Så hva er syntaksen til PHP? 109 00:05:12,021 --> 00:05:13,520 Det er det denne videoen handler om. 110 00:05:13,520 --> 00:05:14,850 La oss snakke om det. 111 00:05:14,850 --> 00:05:16,490 >> Så for å starte opp, variabler. 112 00:05:16,490 --> 00:05:18,030 PHP variabler eksisterer. 113 00:05:18,030 --> 00:05:20,067 Det er bare to store forskjeller fra C. 114 00:05:20,067 --> 00:05:21,900 Den første er at det er ingen type Specifier. 115 00:05:21,900 --> 00:05:24,245 Vi trenger ikke å si int, røye, float, alt det der. 116 00:05:24,245 --> 00:05:25,620 Vi trenger ikke å gjøre det lenger. 117 00:05:25,620 --> 00:05:26,810 PHP er et moderne språk. 118 00:05:26,810 --> 00:05:28,910 Den kan finne ut hva du er prøver å gjøre eller lage en best 119 00:05:28,910 --> 00:05:30,451 gjette på hva du prøver å gjøre. 120 00:05:30,451 --> 00:05:31,700 Så det er ganske fin. 121 00:05:31,700 --> 00:05:35,330 >> Den andre tingen er at alle variable Navnene må starte med et dollartegn. 122 00:05:35,330 --> 00:05:36,940 Det er bare noe å venne seg til. 123 00:05:36,940 --> 00:05:39,496 Det er litt rart, fordi det er slik at PHP kan forstå 124 00:05:39,496 --> 00:05:40,870 hva er en variabel og hva som ikke. 125 00:05:40,870 --> 00:05:43,340 Så hver variabelnavn starter med et dollartegn. 126 00:05:43,340 --> 00:05:46,884 Så i C kan vi si noe som dette, int x = 54. 127 00:05:46,884 --> 00:05:48,550 Vi trenger ikke å gjøre det lenger i PHP. 128 00:05:48,550 --> 00:05:52,540 Vi kan bare si $ x = 54. 129 00:05:52,540 --> 00:05:55,920 Og vi kunne si, for eksempel i C, hvis vi hadde pund-inkluderte CS50 .h 130 00:05:55,920 --> 00:06:00,314 header fil, vi kunne si string setning = "Dette er CS50." 131 00:06:00,314 --> 00:06:01,980 Vi trenger ikke å gjøre det i PHP, though. 132 00:06:01,980 --> 00:06:04,865 Vi kan bare si $ frase = "Dette er CS50." 133 00:06:04,865 --> 00:06:08,760 Og faktisk, er streng nå en innebygd datatype i PHP, 134 00:06:08,760 --> 00:06:10,950 eller snarere PHP forstår hva en streng er. 135 00:06:10,950 --> 00:06:15,612 Det er atskilt fra en rekke tegn som det er i C. 136 00:06:15,612 --> 00:06:17,570 All din favoritt betinget utsagn fra C 137 00:06:17,570 --> 00:06:19,520 er fortsatt tilgjengelig for deg å bruke. 138 00:06:19,520 --> 00:06:21,140 Så ingen stor overgang der. 139 00:06:21,140 --> 00:06:23,400 Vi kan say-- vi kan ha hvis utsagn som dette. 140 00:06:23,400 --> 00:06:28,210 Hvis $ y 43, eller $ z = 15. 141 00:06:28,210 --> 00:06:29,690 Så det er ganske grei. 142 00:06:29,690 --> 00:06:31,980 Vi kan ha hvis og annet. 143 00:06:31,980 --> 00:06:34,210 Vi kan ha hvis og annet hvis. 144 00:06:34,210 --> 00:06:36,430 >> Og legg merke til noe ganske fint her, og dette 145 00:06:36,430 --> 00:06:39,620 er liksom en av dem Fordelene med PHP versus C, varsel 146 00:06:39,620 --> 00:06:41,510 hvilken funksjon vi ikke bruker her? 147 00:06:41,510 --> 00:06:47,737 Vi bruker == sammenligne en variabel, $ navn, til en streng. 148 00:06:47,737 --> 00:06:49,070 Vi kunne ikke gjøre det i C, ikke sant? 149 00:06:49,070 --> 00:06:53,200 Vi måtte bruke en funksjon som heter StrComp eller StrEndComp eller noen 150 00:06:53,200 --> 00:06:54,840 av dens relaterte fettere. 151 00:06:54,840 --> 00:06:56,980 >> Og så allerede ser vi disse fordelene. 152 00:06:56,980 --> 00:07:00,930 Vi trenger ikke å gjøre noe som dum eller kanskje unintuitive 153 00:07:00,930 --> 00:07:03,540 som kaller en funksjon kalt StrComp hvis jeg bare ønsker å teste 154 00:07:03,540 --> 00:07:05,237 hvorvidt en verdi som tilsvarer en streng. 155 00:07:05,237 --> 00:07:07,820 Jeg kunne bare bruke lik likemenn, at jeg kunne gjøre noe annet. 156 00:07:07,820 --> 00:07:09,560 Så det er en fordel. 157 00:07:09,560 --> 00:07:13,350 >> Noen ganger, forresten, kanskje du se annet hvis som ett ord, ElseIf. 158 00:07:13,350 --> 00:07:14,910 Og det er OK i PHP også. 159 00:07:14,910 --> 00:07:17,020 Så noen ganger kan du se det. 160 00:07:17,020 --> 00:07:17,790 Det er ikke en skrivefeil. 161 00:07:17,790 --> 00:07:21,830 PHP faktisk forstår ElseIf. 162 00:07:21,830 --> 00:07:23,980 Jeg vet ikke hvorfor de besluttet å gjennomføre det, 163 00:07:23,980 --> 00:07:28,220 men som vi har sett mange ganger gjennom våre videoer så langt, 164 00:07:28,220 --> 00:07:30,460 vi programmerere elske det hvis vi kan gjøre ting raskt, 165 00:07:30,460 --> 00:07:33,660 så å bli kvitt det plass er tilsynelatende en stor fordel. 166 00:07:33,660 --> 00:07:34,800 >> Så det er om og ElseIf. 167 00:07:34,800 --> 00:07:37,540 Vi har også trefoldig operatør, tilbakekalling spørsmålstegn tykktarm, 168 00:07:37,540 --> 00:07:43,262 for veldig kort dersom annet eller betinget forgrening. 169 00:07:43,262 --> 00:07:45,470 Og tilsynelatende, i dette, hva vi prøver å gjøre her 170 00:07:45,470 --> 00:07:49,720 er tilordne variabelen $ brev enten sant eller usant, 171 00:07:49,720 --> 00:07:54,110 avhengig av om $ var er en bokstav. 172 00:07:54,110 --> 00:07:57,320 Så dette er ganske lik isalpha at vi er kjent med fra C. 173 00:07:57,320 --> 00:07:59,010 Dette er liksom tilsvarende i PHP. 174 00:07:59,010 --> 00:08:01,550 Funksjonen er tilsynelatende kalt ctype_alpha, 175 00:08:01,550 --> 00:08:03,450 men det er hvordan vi gjør det i PHP. 176 00:08:03,450 --> 00:08:08,560 Så alt dette kommer til å være det, hvis $ var er et brev, er $ brev sant. 177 00:08:08,560 --> 00:08:13,820 Hvis $ var ikke et brev, $ brevet er falskt. 178 00:08:13,820 --> 00:08:15,820 >> Vi har også bryter uttalelser fortsatt. 179 00:08:15,820 --> 00:08:17,870 Vi husker de fra C også. 180 00:08:17,870 --> 00:08:22,480 På toppen er det, det er hvordan vi gjør noe som get int eller få streng. 181 00:08:22,480 --> 00:08:23,845 Så PHP har den innebygget. 182 00:08:23,845 --> 00:08:25,470 Vi trenger ikke CS50 biblioteket lenger. 183 00:08:25,470 --> 00:08:27,237 Vi kan bare bruke funksjonen readline. 184 00:08:27,237 --> 00:08:29,820 Hva som kommer til å gjøre er å skrive ut ut meldingen "Din tilstand, 185 00:08:29,820 --> 00:08:33,820 please "og deretter blinkende teksten venter for brukeren å legge inn 186 00:08:33,820 --> 00:08:34,739 litt informasjon. 187 00:08:34,739 --> 00:08:36,530 Nå merke til hva annet vi kan gjøre med bryteren. 188 00:08:36,530 --> 00:08:39,105 Hvis du har brukt det før, du husker kanskje at bryteren 189 00:08:39,105 --> 00:08:44,960 er begrenset ganske mye til heltall og tegn, men nå kan vi bruke strenger. 190 00:08:44,960 --> 00:08:50,190 Og faktisk, bryter uttalelse i PHP er ganske mye mer fleksibelt 191 00:08:50,190 --> 00:08:54,880 enn sin fetter fra C. 192 00:08:54,880 --> 00:08:55,380 Loops. 193 00:08:55,380 --> 00:08:58,130 Akkurat som conditionals, alle dine gamle favoritter er der fortsatt. 194 00:08:58,130 --> 00:09:00,740 Vi har mens løkker som teller fra 1 til 100 i dette tilfellet. 195 00:09:00,740 --> 00:09:03,940 Vi har å gjøre mens sløyfer som teller fra 1 til 100, 196 00:09:03,940 --> 00:09:06,200 og vi har for sløyfer som teller fra 1 til 100. 197 00:09:06,200 --> 00:09:07,220 Så ingen store spranget der. 198 00:09:07,220 --> 00:09:09,360 Syntaksen er ganske mye nøyaktig det samme, 199 00:09:09,360 --> 00:09:11,760 bortsett fra nå vi bruker dollartegn variabel i stedet 200 00:09:11,760 --> 00:09:17,260 erklære heltallsvariabler eller noe sånt for våre skranker. 201 00:09:17,260 --> 00:09:20,090 >> Her er der ting blir mye bedre enn C, skjønt. 202 00:09:20,090 --> 00:09:21,020 Arrays. 203 00:09:21,020 --> 00:09:23,020 Så husker da vi var snakker om C, for 204 00:09:23,020 --> 00:09:25,560 for oss å vokse og krympe sett av informasjon, 205 00:09:25,560 --> 00:09:28,310 vi trengte for å sortere for mislighold til denne ideen om en lenket liste, 206 00:09:28,310 --> 00:09:30,780 fordi C arrays ble fikset i størrelse. 207 00:09:30,780 --> 00:09:31,800 Vi kunne ikke krympe dem. 208 00:09:31,800 --> 00:09:32,930 Vi kunne ikke dyrke dem. 209 00:09:32,930 --> 00:09:36,074 Vi måtte omfordele minne og gjøre all denne galskapen 210 00:09:36,074 --> 00:09:38,490 eller bruk lenkede lister, som ta opp ganske mye mer plass. 211 00:09:38,490 --> 00:09:41,590 Men i PHP, arrays er ikke løst i størrelse lenger. 212 00:09:41,590 --> 00:09:43,240 De kan vokse, og de kan krympe. 213 00:09:43,240 --> 00:09:46,660 Så igjen, disse 20 årene som eksisterte mellom den første utgivelsen av C 214 00:09:46,660 --> 00:09:49,440 og den første utgivelsen PHP, vi bestemte oss for det, vet du, 215 00:09:49,440 --> 00:09:51,670 det ville være veldig stor hvis vi kunne gjøre dette. 216 00:09:51,670 --> 00:09:54,100 Og så vi implementert dette. 217 00:09:54,100 --> 00:09:58,040 >> Så PHP arrays ikke er løst i størrelse, og fordi PHP egentlig ikke 218 00:09:58,040 --> 00:10:03,090 har programmerer mot fronten forestillinger om typer, 219 00:10:03,090 --> 00:10:05,110 vi kan blande datatyper i våre matriser også. 220 00:10:05,110 --> 00:10:08,100 Så vi trenger ikke engang å bruke alle heltall eller alle flytende poeng, 221 00:10:08,100 --> 00:10:12,826 vi kan ha en blanding av alle forskjellige typer i en enkelt rekke. 222 00:10:12,826 --> 00:10:14,700 Erklærte en matrise er ganske grei. 223 00:10:14,700 --> 00:10:16,116 Det er akkurat som alle andre variable. 224 00:10:16,116 --> 00:10:20,020 $ nums = matrise (1, 2, 3, 4), matrisen er en funksjon 225 00:10:20,020 --> 00:10:22,760 som er innebygd i PHP som vil skape en matrise for deg. 226 00:10:22,760 --> 00:10:28,315 Dette skaper en matrise av fire verdier, Tallene i dette tilfelle kalles $ nums. 227 00:10:28,315 --> 00:10:29,940 Og det er mer enn én måte å gjøre det. 228 00:10:29,940 --> 00:10:32,420 Og vi kommer til å ser dette mye i PHP. 229 00:10:32,420 --> 00:10:36,380 PHP er utviklet av mange forskjellige mennesker og vokser og vokser og vokser. 230 00:10:36,380 --> 00:10:40,050 Det er vanligvis ikke bare to eller tre måter å gjøre noe i PHP, 231 00:10:40,050 --> 00:10:42,170 er det vanligvis som 10 eller 20. 232 00:10:42,170 --> 00:10:45,300 Her er bare en annen vanlig måte å erklære en matrise. 233 00:10:45,300 --> 00:10:48,310 $ nums = hakeparentes 1, 2, 3, 4. 234 00:10:48,310 --> 00:10:53,170 Så dette er liksom lik C vinkel br-- klammeparentes notasjon, heller. $ - 235 00:10:53,170 --> 00:10:58,525 eller ville det være int nums torget parentes tilsvarer krøllete brace 1, 2, 3, 4. 236 00:10:58,525 --> 00:11:02,710 I PHP er det $ nums = torget braketter en, to, tre, fire. 237 00:11:02,710 --> 00:11:08,920 Men begge disse eksemplene her gi meg en rekke på fire i dette tilfellet heltall. 238 00:11:08,920 --> 00:11:10,920 >> Hva om jeg ønsker å tråkle noe på nå? 239 00:11:10,920 --> 00:11:14,760 Vel jeg kan bare si $ nums 4, som igjen, er vi fremdeles telle fra 0 her 240 00:11:14,760 --> 00:11:17,800 i PHP, ville være den femte element i matrisen. 241 00:11:17,800 --> 00:11:18,990 Jeg kan bare si det. 242 00:11:18,990 --> 00:11:22,860 Jeg kommer ikke til å lide en SEG utsette, fordi min matrise er bare 243 00:11:22,860 --> 00:11:24,337 kommer til å vokse for å imøtekomme det. 244 00:11:24,337 --> 00:11:25,420 Det er ganske fin, ikke sant? 245 00:11:25,420 --> 00:11:28,400 Og faktisk, jeg trenger ikke engang å spesifisere hvor jeg ønsker å sette den. 246 00:11:28,400 --> 00:11:31,220 Jeg kan bare si dette, og bare Hev den rett videre til enden, 247 00:11:31,220 --> 00:11:34,099 eller jeg kunne selv bare si $ nums 20 eller 1000. 248 00:11:34,099 --> 00:11:35,140 Det spiller egentlig ingen rolle. 249 00:11:35,140 --> 00:11:38,330 Det er fortsatt bare kommer til å Hev den rett på til slutten. 250 00:11:38,330 --> 00:11:41,490 >> Så jeg kan vokse, og as-- vi er ikke kommer til å dekke det inn her, 251 00:11:41,490 --> 00:11:45,360 men jeg kan spleise eller stripe elementene som kommer ut av matrisen, så vel 252 00:11:45,360 --> 00:11:50,064 og rekken vil krympe for å imøtekomme som nå mangler eller tomrom. 253 00:11:50,064 --> 00:11:52,230 Det er en annen måte å tråkle noe på en matrise, 254 00:11:52,230 --> 00:11:54,330 som er en funksjon som kalles array_push. 255 00:11:54,330 --> 00:11:57,860 Så igjen, bare denne ideen om å være stand til å gjøre ting mange forskjellige måter. 256 00:11:57,860 --> 00:12:01,950 Så vi har sett tre forskjellige måter nå å tråkle et annet element på en matrise. 257 00:12:01,950 --> 00:12:06,900 Så dette legger et annet element til enden av $ nums matrisen. 258 00:12:06,900 --> 00:12:08,340 Og vi kan blande opp våre datatyper. 259 00:12:08,340 --> 00:12:13,110 Så jeg kunne ha en rekke ikke 1, 2, 3, 4, men 1, sann, 3, 4, 260 00:12:13,110 --> 00:12:16,420 hvor sant er en boolsk, og deretter hvis jeg ønsker å tråkle på et annet element 261 00:12:16,420 --> 00:12:20,860 til den oppstillingen, kanskje en streng, strengen "fem," jeg kunne gjøre det. 262 00:12:20,860 --> 00:12:26,110 Og nå er min matrise ville være 1, sann, tre, fire, fem. 263 00:12:26,110 --> 00:12:28,640 Ordet fem, ikke heltallet 5. 264 00:12:28,640 --> 00:12:31,270 Så stor fleksibilitet der. 265 00:12:31,270 --> 00:12:33,290 >> Fleksibiliteten blir enda bedre, skjønt, 266 00:12:33,290 --> 00:12:37,530 fordi PHP har støtte for noe kalles en assosiativ array. 267 00:12:37,530 --> 00:12:40,660 Og vi slags vagt snakket om assosiative arrays i C 268 00:12:40,660 --> 00:12:44,740 i sammenheng med nøkkeltabeller, fordi hva assosiative matriser er egentlig alt 269 00:12:44,740 --> 00:12:48,950 om gjør nøkkelen valuta pair kartlegginger. 270 00:12:48,950 --> 00:12:53,410 Og i dette tilfellet, hvis keys-- Vi er kjent med arrays fra C, 271 00:12:53,410 --> 00:12:55,440 tastene er indeksnumrene. 272 00:12:55,440 --> 00:12:57,530 0, 1, 2, 3. 273 00:12:57,530 --> 00:13:03,070 Og verdiene er det vi finner at matrise 0, array 1, array 2, og så videre. 274 00:13:03,070 --> 00:13:06,310 Så tastene er indekser, og verdiene 275 00:13:06,310 --> 00:13:10,060 det som er i den oppstillingen sted, spesifisert av at indeksen. 276 00:13:10,060 --> 00:13:15,130 >> Men i PHP, trenger vi ikke å gjøre dette oppfatningen av matrise 0, array 1, array 2 277 00:13:15,130 --> 00:13:15,830 lenger. 278 00:13:15,830 --> 00:13:21,025 Vi kan nå bruke faktiske ordene å kartlegge nøkler til verdier. 279 00:13:21,025 --> 00:13:22,650 Og så jeg kunne si noe sånt som dette. 280 00:13:22,650 --> 00:13:26,710 Jeg kunne lage en matrise med hakeparentes syntaks som følger. 281 00:13:26,710 --> 00:13:30,685 $ pizza = hakeparentes "ost" og deretter 282 00:13:30,685 --> 00:13:37,210 denne typen dobbeltpilen notasjon, 8.99, "pepperoni," pil 10.99-- 9,99, 283 00:13:37,210 --> 00:13:37,880 og så videre. 284 00:13:37,880 --> 00:13:39,060 Og så hva skjer her? 285 00:13:39,060 --> 00:13:41,040 Hva er det jeg faktisk gjør? 286 00:13:41,040 --> 00:13:43,990 Jeg oppretter nøkkelverdi pair kartlegginger. 287 00:13:43,990 --> 00:13:49,060 Så i stedet for å si, for eksempel, pizzaer 0, biter 1, pizza 2, 288 00:13:49,060 --> 00:13:52,350 Jeg kan nå si pizza ost, pizza pepperoni, 289 00:13:52,350 --> 00:13:55,120 og henviser til verdiene forbundet med dem. 290 00:13:55,120 --> 00:13:56,970 >> Så her er våre nøkler i grønt. 291 00:13:56,970 --> 00:13:59,870 Ost, pepperoni, grønnsak, bøffel kylling. 292 00:13:59,870 --> 00:14:04,200 Her er en pil som gjør dette nøkkelverdi paret kartlegging. 293 00:14:04,200 --> 00:14:07,420 Og så her er verdiene på denne matrisen sted. 294 00:14:07,420 --> 00:14:10,330 Så det er som å si matrise 0 tilsvarer 8,99. 295 00:14:10,330 --> 00:14:11,720 Nøkkelen er 0. 296 00:14:11,720 --> 00:14:13,600 Verdien er 8.99. 297 00:14:13,600 --> 00:14:19,370 Jeg kan nå si matrise ost, eller i dette tilfellet pizza ost, ost er nøkkelen, 298 00:14:19,370 --> 00:14:23,340 og hva jeg finner på pizza ost er 8.99. 299 00:14:23,340 --> 00:14:25,540 Det er den verdien som jeg finner der. 300 00:14:25,540 --> 00:14:28,124 >> Så jeg kan si ting liker. $ pizza ost = 7,99. 301 00:14:28,124 --> 00:14:29,040 Sier jeg har et salg. 302 00:14:29,040 --> 00:14:31,750 Jeg ønsker dis-- jeg ønsker å slippe prisen av osten pizza. 303 00:14:31,750 --> 00:14:35,620 Eller jeg kan bruke vegetabilsk pizza som en del av en tilstand, 304 00:14:35,620 --> 00:14:39,990 eller jeg kan legge til et nytt element til min array, akkurat som jeg kunne gjøre tidligere. 305 00:14:39,990 --> 00:14:44,680 Jeg kan legge til et nytt element til dette assosiativ array med nøkkelen "bacon" 306 00:14:44,680 --> 00:14:49,250 og verdien 13,49. 307 00:14:49,250 --> 00:14:53,820 >> Men denne type innfører et problem, hvis du tror på det et sekund. 308 00:14:53,820 --> 00:14:55,721 Hvordan ville vi iterere gjennom denne array? 309 00:14:55,721 --> 00:14:56,220 Høyre? 310 00:14:56,220 --> 00:14:59,820 I C, ville vi bare ha en for loop typisk at 311 00:14:59,820 --> 00:15:03,650 ville kjøre fra 0 til størrelsen på matrisen minus en. 312 00:15:03,650 --> 00:15:08,060 Matrisen har n elementer i på, gyldige indekser er 0 til n minus en. 313 00:15:08,060 --> 00:15:11,530 Slik at vi kunne bruke en for løkke til gå gjennom hvert enkelt element. 314 00:15:11,530 --> 00:15:13,530 >> Men det er egentlig ikke tilfelle lenger, ikke sant? 315 00:15:13,530 --> 00:15:17,360 Nå hvor vi har nøkkelverdi pair kartlegginger hvor tastene er ord, 316 00:15:17,360 --> 00:15:19,970 hvordan skal vi iterere over alle ordene? 317 00:15:19,970 --> 00:15:22,420 Vel, heldigvis, har PHP en måte å håndtere dette også, 318 00:15:22,420 --> 00:15:24,580 og så skal vi hoppe tilbake til looper for en andre 319 00:15:24,580 --> 00:15:30,780 å innføre en fjerde slags løkke som eksisterer i PHP kalles en foreach loop. 320 00:15:30,780 --> 00:15:34,430 Og hva en foreach løkke gjør er det er i utgangspunktet den samme ideen. 321 00:15:34,430 --> 00:15:36,060 Du kan bruke den for noen form for array. 322 00:15:36,060 --> 00:15:38,100 Men det er i utgangspunktet den samme ideen som en for loop, 323 00:15:38,100 --> 00:15:40,750 bortsett fra i stedet for å bruke indekstall, du bare 324 00:15:40,750 --> 00:15:45,830 har denne rare syntaks der du ringe hver enkelt element 325 00:15:45,830 --> 00:15:47,550 et navn for formålene i denne sløyfen. 326 00:15:47,550 --> 00:15:49,258 >> Slik at i dette tilfellet, foreach ($ matrise som $ key). 327 00:15:49,258 --> 00:15:52,900 328 00:15:52,900 --> 00:15:56,450 I utgangspunktet, så at kommentaren notater, innsiden av at foreach loop, 329 00:15:56,450 --> 00:16:00,466 det kommer til å gå over hver enkelt element i matrisen $, noe som er typisk 330 00:16:00,466 --> 00:16:03,340 kommer til å bli en assosiativ array, men kan virkelig være noen form for matrise 331 00:16:03,340 --> 00:16:05,419 at du vil ha i PHP. 332 00:16:05,419 --> 00:16:07,210 Og hver gang at i en for loop du kanskje 333 00:16:07,210 --> 00:16:13,780 har sagt $ array-klammer $ i, kan du bare si $ nøkkel. 334 00:16:13,780 --> 00:16:22,340 Slik at $ tast blir et alias for hver indeks av PHP assosiative array, 335 00:16:22,340 --> 00:16:23,710 og slik at du kan bruke det sånn. 336 00:16:23,710 --> 00:16:25,897 >> Så for eksempel, har vi nå fikk vår pizza array. 337 00:16:25,897 --> 00:16:27,730 Jeg har på en måte gjemt det inn i hjørnet der 338 00:16:27,730 --> 00:16:31,080 slik at vi kan bruke den til å gjøre en rask eksempel. 339 00:16:31,080 --> 00:16:36,420 Hvis jeg sier foreach ($ pizza som $ pizza), vel, hva skjer? 340 00:16:36,420 --> 00:16:42,400 Vel, jeg kommer til å iterere gjennom hver enkelt element i matrisen $ pizza, 341 00:16:42,400 --> 00:16:46,670 og på den måten, jeg kommer til å ringe hvert element, når jeg er inne 342 00:16:46,670 --> 00:16:49,400 av kroppen av det for sløyfen, $ pizza. 343 00:16:49,400 --> 00:16:52,440 >> Så det er på en måte en stand-in, husker, at $ pizza 344 00:16:52,440 --> 00:16:59,140 er en stand-in for å si $ pizza klammer $ i 345 00:16:59,140 --> 00:17:03,370 hvis vi bruker en for loop, der vi kan gå fra $ i = 0 til i dette tilfellet 346 00:17:03,370 --> 00:17:06,089 $ i = 3. 347 00:17:06,089 --> 00:17:09,780 Hvis vi ikke hadde nøkkel verdi par her, vil dette være elementet 0, 1, 2, 3, 348 00:17:09,780 --> 00:17:16,390 og vi vil bruke en for loop å gå $ pizzaer 0, $ pizza 1, $ pizza 2, 349 00:17:16,390 --> 00:17:17,750 $ pizzaer 3. 350 00:17:17,750 --> 00:17:23,130 Så nå bare $ pizza vikarierer for den enkelte tast. 351 00:17:23,130 --> 00:17:25,630 >> Så hva dette kommer til å skrive ut? 352 00:17:25,630 --> 00:17:29,030 Jeg skriver ut $ pizza. 353 00:17:29,030 --> 00:17:35,270 Hva skal jeg finne at-- hvis jeg skriver ut $ pizza, $ jeg? 354 00:17:35,270 --> 00:17:35,770 Høyre? 355 00:17:35,770 --> 00:17:38,680 Hvis jeg kommer til å skrive ut den ed element av pizza, 356 00:17:38,680 --> 00:17:40,070 hva skal jeg skrive? 357 00:17:40,070 --> 00:17:42,580 Jeg kommer til å skrive ut verdier ved denne plasseringen, ikke sant? 358 00:17:42,580 --> 00:17:45,370 Som om vi gjorde dette i sammenheng med C, 359 00:17:45,370 --> 00:17:49,786 vi vanligvis ikke bruker vår iterator variabel, int i = 0, i er mindre enn 3, 360 00:17:49,786 --> 00:17:52,900 i ++, for å skrive ut 0, 1, 2, 3. 361 00:17:52,900 --> 00:17:57,500 Vi skriver ut matrisen 0, matrise en, array 2, array tre. 362 00:17:57,500 --> 00:17:59,580 Og så hva dette skrives ut er denne. 363 00:17:59,580 --> 00:18:01,150 Det er en liste over priser. 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 >> Nå en rask kommentar her. 366 00:18:06,900 --> 00:18:10,900 En foreach løkke ikke nødvendigvis skrive ut ting i orden. 367 00:18:10,900 --> 00:18:12,770 Det er ikke garantert. 368 00:18:12,770 --> 00:18:13,550 Det gjør vanligvis. 369 00:18:13,550 --> 00:18:17,667 Det er vanligvis basert på rekkefølgen hvilke elementer legges til matrisen, 370 00:18:17,667 --> 00:18:18,750 så bare bærer det i tankene. 371 00:18:18,750 --> 00:18:20,830 Det kan ikke være i orden. 372 00:18:20,830 --> 00:18:23,930 Men en foreach løkke vil reagere over hver enkelt element 373 00:18:23,930 --> 00:18:25,060 av tabellen gjelder. 374 00:18:25,060 --> 00:18:27,980 I dette tilfelle igjen, denne matrisen er $ pizza. 375 00:18:27,980 --> 00:18:32,920 >> Jeg kan endre syntaksen, men hvis Jeg ønsker både nøkkelen og verdien. 376 00:18:32,920 --> 00:18:37,179 I stedet for å si $ pizza som $ pizza, kan jeg si dette. 377 00:18:37,179 --> 00:18:39,470 Og hvis du ser på hva jeg har uthevet i grønt her, 378 00:18:39,470 --> 00:18:42,130 det ser ut som en sentral verdi par kartlegging. 379 00:18:42,130 --> 00:18:45,980 Og så hvis you-- selv om du ikke er helt sikker på hva det kommer til å gjøre, 380 00:18:45,980 --> 00:18:49,300 du kan sikkert gjette at $ topping kommer 381 00:18:49,300 --> 00:18:53,800 å være nøkkelen i denne saken og $ prisen skal være verdien. 382 00:18:53,800 --> 00:18:59,200 Så jeg erstatte nå hvert element fra $ pizza som en viktig verdi-par, 383 00:18:59,200 --> 00:19:03,900 og nå kan jeg referere til nøkkelen og verdien, som kanskje godt med, 384 00:19:03,900 --> 00:19:05,590 for eksempel som følger. 385 00:19:05,590 --> 00:19:10,170 >> "En hel" - dette er mye av utskrift skjer her-- "En hel" 386 00:19:10,170 --> 00:19:17,300 topping "pizza koster $" pris, og deretter Jeg skrive ut en periode og en backslash n. 387 00:19:17,300 --> 00:19:23,420 Så nå, varsel igjen har jeg tilgang til en nøkkel, $ pålegg, og en verdi, $ pris. 388 00:19:23,420 --> 00:19:26,647 Så kan du gjette hva dette kommer til å skrive ut? 389 00:19:26,647 --> 00:19:29,480 Det er mye av trykte uttalelser, men det er bare en backslash n, 390 00:19:29,480 --> 00:19:33,410 så det kommer til å skrive ut noe på en entire-- på en eneste linje med kode. 391 00:19:33,410 --> 00:19:36,965 >> Hvis jeg kan referere til nøkkelen og verdien, da nå, 392 00:19:36,965 --> 00:19:39,090 i stedet for bare å være i stand for å skrive ut prisene, 393 00:19:39,090 --> 00:19:41,330 Jeg kan skrive ut noe sånt som dette. 394 00:19:41,330 --> 00:19:43,780 "En hel ost pizza koster $ 8.99." 395 00:19:43,780 --> 00:19:47,150 Og nå bruker jeg all keys-- ost, pepperoni, grønnsaker, 396 00:19:47,150 --> 00:19:49,640 buffalo chicken-- og verdiene. 397 00:19:49,640 --> 00:19:53,980 8.99, 9.99, 10.99, 11.99 So det er bare en annen måte 398 00:19:53,980 --> 00:19:57,840 å gjøre en foreach løkke at i stedet for bare å gi deg tilgang til verdiene, 399 00:19:57,840 --> 00:20:02,950 det bare gir you-- det gir deg tilgang til nøkler og verdier. 400 00:20:02,950 --> 00:20:04,411 >> Så skrive ut informasjon. 401 00:20:04,411 --> 00:20:07,410 Jeg har allerede gjort det et par forskjellige måter, har du kanskje lagt merke til. 402 00:20:07,410 --> 00:20:11,080 De to funksjonene vi har først og fremst sett er print og ekko. 403 00:20:11,080 --> 00:20:14,380 Og for ganske mye alle praktiske og formål, de er akkurat det samme. 404 00:20:14,380 --> 00:20:17,130 They're-- det er en veldig subtil forskjell det er ikke engang verdt 405 00:20:17,130 --> 00:20:21,130 får inn, men i utgangspunktet overalt du kan bruke utskrifts du kan sikkert bruke 406 00:20:21,130 --> 00:20:22,370 ekko i tillegg. 407 00:20:22,370 --> 00:20:23,610 >> Og det er ikke bare to. 408 00:20:23,610 --> 00:20:26,970 PHP har mye forskjellig måter å skrive ut ting ut, 409 00:20:26,970 --> 00:20:30,520 og det har også måter å integrere variabler i midten av strengen. 410 00:20:30,520 --> 00:20:32,860 Så husker fra C, gjør du huske hvilken funksjon 411 00:20:32,860 --> 00:20:37,580 vi kan bruke til å erstatte variabler inn i ting vi ønsker å skrive ut? 412 00:20:37,580 --> 00:20:40,160 Du har sannsynligvis bruke denne fungere ganske mye. 413 00:20:40,160 --> 00:20:42,290 printf, ikke sant? 414 00:20:42,290 --> 00:20:45,290 Så dette er hva vi hadde før innsiden i forbindelse med vår foreach løkke. 415 00:20:45,290 --> 00:20:48,000 Vi hadde disse fem separate utskrifts uttalelser, 416 00:20:48,000 --> 00:20:50,330 fordi det var den eneste Slik jeg egentlig visste på den tiden 417 00:20:50,330 --> 00:20:52,450 hvordan du skriver ut meldinger. 418 00:20:52,450 --> 00:20:59,560 Jeg visste ikke hvordan du kan integrere variabelen $ topping inn i min PHP kode. 419 00:20:59,560 --> 00:21:03,700 Vel, hvis jeg bare tatt en vill gjetning, printf, det faktisk ville ha fungert. 420 00:21:03,700 --> 00:21:08,980 printf er en funksjon som jeg kan bruke i PHP, akkurat som jeg kan bruke den i C. 421 00:21:08,980 --> 00:21:11,880 >> Og så noe som dette, printf, igjen, vi er kjent med det. 422 00:21:11,880 --> 00:21:16,420 Den første% s erstattes med verdien av $ pålegg. 423 00:21:16,420 --> 00:21:19,700 Den andre% s erstattes med verdien av $ pris. 424 00:21:19,700 --> 00:21:22,630 Og så jeg interpellating, som er bare en fancy måte 425 00:21:22,630 --> 00:21:25,400 si jeg stikker den variabler i denne plasseringen. 426 00:21:25,400 --> 00:21:31,000 Så jeg plugge inn $ topping der rød% s er og $ pris hvor den blå% s 427 00:21:31,000 --> 00:21:36,060 er, og da ville jeg får meldingen, "En hel ost pizza koster $ 8.99." 428 00:21:36,060 --> 00:21:37,750 >> Ikke den eneste måten jeg kan gjøre det, though. 429 00:21:37,750 --> 00:21:39,760 Kanskje jeg ønsker å bruke denne metoden. 430 00:21:39,760 --> 00:21:44,890 Dette er faktisk det som er mest vanlig kalt variabel interpellasjonen. 431 00:21:44,890 --> 00:21:45,690 Jeg kan bruke et ekko. 432 00:21:45,690 --> 00:21:47,737 Jeg kunne bruke en print også, så vi får se. 433 00:21:47,737 --> 00:21:48,820 Men hva som skjer her? 434 00:21:48,820 --> 00:21:51,520 >> Først av alt, jeg må unnslippe dollartegn. 435 00:21:51,520 --> 00:21:55,140 Fordi husk, når vi var faktisk skrive ut prisene på pizza, 436 00:21:55,140 --> 00:21:59,370 Jeg var faktisk å formatere dem som monetære tallene med et dollartegn. 437 00:21:59,370 --> 00:22:05,635 Men vi bruker dollartegn også å representere variabelnavn i PHP, 438 00:22:05,635 --> 00:22:08,010 og spesielt når jeg er ved hjelp av denne fremgangsmåten ifølge den krøllete 439 00:22:08,010 --> 00:22:10,040 brace variabel interpellasjon metoden, må jeg 440 00:22:10,040 --> 00:22:13,490 å unnslippe min dollartegn så det gjør ikke tror jeg snakker om en variabel. 441 00:22:13,490 --> 00:22:16,920 Det kommer til å faktisk, bokstavelig talt skrive ut et dollartegn. 442 00:22:16,920 --> 00:22:19,530 >> Så liksom analogize det til det du ser på slutten der. 443 00:22:19,530 --> 00:22:22,832 Det gjør faktisk ikke print backslash n, ikke sant? 444 00:22:22,832 --> 00:22:24,290 Den skriver ut en ny linje karakter. 445 00:22:24,290 --> 00:22:26,750 Dette er-- det er ikke til å print backslash dollartegn, 446 00:22:26,750 --> 00:22:30,130 det kommer til å skrive ut bare et dollartegn karakter. 447 00:22:30,130 --> 00:22:30,640 Samme ideen. 448 00:22:30,640 --> 00:22:32,760 Escape-sekvenser, hva disse tingene kalles. 449 00:22:32,760 --> 00:22:37,080 >> Men merker at jeg ikke gjør noen form for% s erstatninger, 450 00:22:37,080 --> 00:22:40,050 Jeg bare bokstavelig plugge i disse variablene. 451 00:22:40,050 --> 00:22:45,110 Og så i dette-- hva som ville skje her er at verdien av $ topping-- igjen 452 00:22:45,110 --> 00:22:48,390 bare tråd med det vi har vært snakker om så far-- ost ville få 453 00:22:48,390 --> 00:22:49,720 plugget inn der. 454 00:22:49,720 --> 00:22:54,780 Og $ prisen ville bli hva verdien er på pizza, klammer, ost, 455 00:22:54,780 --> 00:22:56,270 som var 8.99. 456 00:22:56,270 --> 00:23:01,860 Og så dette ville også skrive ut "En hel ost pizza koster $ 8.99." 457 00:23:01,860 --> 00:23:05,160 Og som jeg sa, jeg kunne bruke skrive ut her i stedet for ekko, 458 00:23:05,160 --> 00:23:08,040 og funksjonaliteten være ganske mye akkurat det samme. 459 00:23:08,040 --> 00:23:09,660 Det ville skrive ut det samme. 460 00:23:09,660 --> 00:23:12,680 >> Det er en annen måte å gjøre det, og dette er en annen fordel 461 00:23:12,680 --> 00:23:14,710 av PHP arbeider med strenger. 462 00:23:14,710 --> 00:23:17,130 Vi kan gjøre streng sammensetning. 463 00:23:17,130 --> 00:23:19,660 Vi kan gjøre dette i C, også, ved hjelp av en funksjon kalt strcat, 464 00:23:19,660 --> 00:23:21,180 men igjen, vi måtte kalle separate funksjoner. 465 00:23:21,180 --> 00:23:22,640 Det var hele dette rotet til å gjøre. 466 00:23:22,640 --> 00:23:24,590 Vi måtte pund-inkludere string.h. 467 00:23:24,590 --> 00:23:25,780 Det var en forestilling, ikke sant? 468 00:23:25,780 --> 00:23:30,070 Men nå kan jeg bare bruke denne dot operatør å sette sammen strenger sammen. 469 00:23:30,070 --> 00:23:34,910 >> Så jeg sette sammen "En hel" og så uansett verdi av $ topping er, 470 00:23:34,910 --> 00:23:38,860 og deretter en annen streng, "pizza koster $" 471 00:23:38,860 --> 00:23:42,340 og deretter sette sammen uansett verdi av $ pris er, 472 00:23:42,340 --> 00:23:45,670 og deretter helt på slutten jeg er vinne på perioden backslash n. 473 00:23:45,670 --> 00:23:47,926 Og så ville dette også skrive ut "En hel" - igjen, 474 00:23:47,926 --> 00:23:50,550 hvis vi snakker om den første element av at pizza array-- 475 00:23:50,550 --> 00:23:54,710 "En hel ost pizza koster $ 8.99." 476 00:23:54,710 --> 00:24:01,260 Periode, backslash n, igjen, med den $ topping og $ pris substituerende 477 00:24:01,260 --> 00:24:06,580 for hva vi hadde spesifisert i vår foreach sløyfe som nøkkelen verdi-par kartlegging. 478 00:24:06,580 --> 00:24:08,050 >> PHP kan håndtere funksjoner. 479 00:24:08,050 --> 00:24:11,250 Funksjonene var liksom integrert til C, som vi så. 480 00:24:11,250 --> 00:24:14,870 Som variabler, trenger vi ikke å spesifisere retur type funksjon, 481 00:24:14,870 --> 00:24:16,350 fordi det spiller egentlig ingen rolle. 482 00:24:16,350 --> 00:24:18,660 Og vi ikke angir datatyper av noen parametre, 483 00:24:18,660 --> 00:24:21,410 fordi de egentlig ikke saken, som vi har sett i PHP. 484 00:24:21,410 --> 00:24:24,510 Hver funksjon er innført med funksjonen søkeordet. 485 00:24:24,510 --> 00:24:27,920 Det er slik vi viser til PHP som hva vi snakker om er en funksjon. 486 00:24:27,920 --> 00:24:29,720 >> Og vi trenger ikke å avtale med hoved i det hele tatt, 487 00:24:29,720 --> 00:24:33,690 fordi tolken, PHP tolk, arbeider fra topp til bunn, 488 00:24:33,690 --> 00:24:34,190 uansett. 489 00:24:34,190 --> 00:24:35,640 Hvis det ser du kan gjøre et funksjonskall, det vil 490 00:24:35,640 --> 00:24:37,850 gå finne funksjonen samtalen, selv om det kommer senere. 491 00:24:37,850 --> 00:24:40,360 Men det kommer til å lese fra topp til bunn, slik at vi ikke trenger å spesifisere, 492 00:24:40,360 --> 00:24:41,500 her er der du starter. 493 00:24:41,500 --> 00:24:46,700 Du starter på linje 1 av din PHP og arbeid ned derfra. 494 00:24:46,700 --> 00:24:49,690 >> Så her er hvordan vi ville skape en funksjon som heter hard_square. 495 00:24:49,690 --> 00:24:54,100 Det tar tydeligvis en parameter, som jeg ringer $ x. 496 00:24:54,100 --> 00:24:58,424 Denne funksjonen er komplisert bare for å illustrere ulike ting. 497 00:24:58,424 --> 00:24:59,590 Vi har fortsatt returverdier. 498 00:24:59,590 --> 00:25:00,870 Jeg bruker en for loop her. 499 00:25:00,870 --> 00:25:04,970 Men det er i utgangspunktet bare, hva dette beløper seg til kun $ x ganger $ x. 500 00:25:04,970 --> 00:25:10,520 Det jeg egentlig gjør er bare å legge x 0 x ganger eller $ x null $ x ganger. 501 00:25:10,520 --> 00:25:15,850 Men det er effektivt nøyaktig samme som å multiplisere $ x ganger $ x. 502 00:25:15,850 --> 00:25:18,700 Jeg kan fortsatt returnere en verdi, i dette tilfellet $ resultat 503 00:25:18,700 --> 00:25:22,060 og jeg har laget en funksjon i PHP. 504 00:25:22,060 --> 00:25:24,160 >> Her er hvordan du kan bruke det i sammenheng. 505 00:25:24,160 --> 00:25:26,020 Så kanskje jeg er inne på noen PHP-fil. 506 00:25:26,020 --> 00:25:29,240 Legg merke i blått der som Jeg har brukt mine PHP skilletegn, 507 00:25:29,240 --> 00:25:31,010 vinkelbrakett spørsmålstegn php. 508 00:25:31,010 --> 00:25:35,180 Mellom disse er alle PHP som jeg ønsker å skrive. 509 00:25:35,180 --> 00:25:37,840 Så jeg tilsynelatende kommer til å get-- Jeg kommer til å spørre brukeren 510 00:25:37,840 --> 00:25:41,550 å gi meg et nummer, butikk som variabel, butikk i den variabelen $ x, 511 00:25:41,550 --> 00:25:43,320 hva de ga meg. 512 00:25:43,320 --> 00:25:48,590 Så jeg kommer til å ekko hard_square av denne verdien, 513 00:25:48,590 --> 00:25:50,370 og tilsynelatende kommer å tråkle på en ny linje 514 00:25:50,370 --> 00:25:53,590 også, og så senere skal jeg definere funksjonen hard_square så 515 00:25:53,590 --> 00:25:55,550 at når jeg gjør det ringe til hard_square, 516 00:25:55,550 --> 00:25:58,160 den vet hva jeg snakker om. 517 00:25:58,160 --> 00:26:00,705 >> Nå kunne jeg også gjøre noe sånt som dette. 518 00:26:00,705 --> 00:26:02,050 Dette er litt annerledes. 519 00:26:02,050 --> 00:26:04,190 Det er nesten nøyaktig det samme som det vi så før, 520 00:26:04,190 --> 00:26:08,400 bortsett fra i stedet for å si bare $ x der som parameter til hard_square, 521 00:26:08,400 --> 00:26:11,730 Jeg sier $ x = 10. 522 00:26:11,730 --> 00:26:14,330 Så dette er et eksempel på defensive programmering, 523 00:26:14,330 --> 00:26:17,070 vokter programmene dine mot ondsinnede brukere. 524 00:26:17,070 --> 00:26:20,020 >> Dette er en måte å gjøre noen feil sjekker at vi gjorde egentlig ikke 525 00:26:20,020 --> 00:26:24,670 har som et alternativ i C. Vi kunne aldri angi standardverdien av noe. 526 00:26:24,670 --> 00:26:27,010 Vi måtte alltid sjekke hvorvidt, for eksempel, 527 00:26:27,010 --> 00:26:30,820 hvis vi har gjort et kall til GetString, det var mest riktig hvis umiddelbart etter at vi 528 00:26:30,820 --> 00:26:33,300 sjekket det, sjekket vi om strengen 529 00:26:33,300 --> 00:26:35,504 at brukeren ga oss ikke er lik null, 530 00:26:35,504 --> 00:26:37,920 fordi vi ikke ønsker å starte arbeider med en null streng. 531 00:26:37,920 --> 00:26:39,670 >> Her, dette er en måte å gardere seg mot det. 532 00:26:39,670 --> 00:26:43,480 Hvis brukeren ikke gir oss noe liksom, hva skal vi gjøre? 533 00:26:43,480 --> 00:26:46,080 Vel, vil vi bare si hva de ikke gir oss, 534 00:26:46,080 --> 00:26:47,705 vi bare kommer til å plugge i 10 i stedet. 535 00:26:47,705 --> 00:26:52,030 Så hvis de ikke gi oss en verdi, bare bruke 10 som standard. Og så her, 536 00:26:52,030 --> 00:26:53,940 Legg merke til at jeg gjør Et kall til hard_square, 537 00:26:53,940 --> 00:26:55,980 men det er ingen rask til brukeren, ikke sant? 538 00:26:55,980 --> 00:26:57,540 Jeg bare gjør en tom samtale. 539 00:26:57,540 --> 00:27:00,860 >> Men min funksjon hard_square forventer en parameter. 540 00:27:00,860 --> 00:27:02,222 Hva dette kommer til å skrive ut? 541 00:27:02,222 --> 00:27:03,680 Det kommer til å skrive ut 100, ikke sant? 542 00:27:03,680 --> 00:27:05,720 Fordi brukeren ikke gi meg noe. 543 00:27:05,720 --> 00:27:08,970 Og så jeg bare kommer til å anta at 10-- 10 er standardverdien. 544 00:27:08,970 --> 00:27:13,760 Og så dette ville skrive ut ut 100 på sin egen linje. 545 00:27:13,760 --> 00:27:16,390 >> PHP-filer trenger ikke å være bare en enkelt fil. 546 00:27:16,390 --> 00:27:19,480 Du kan kombinere flere filer sammen, akkurat som du kan i C. måte 547 00:27:19,480 --> 00:27:24,330 Vi gjorde det i C var typisk å gjøre en # include å få header filer trakk. 548 00:27:24,330 --> 00:27:26,180 Vi gjør ikke det i PHP. 549 00:27:26,180 --> 00:27:29,110 Vi gjør noe som kalles require_once. 550 00:27:29,110 --> 00:27:33,360 Og så er det dette hele ting, hva er dette __dir__? 551 00:27:33,360 --> 00:27:36,510 Det er bare en spesiell variabel, eller spesielle konstant, 552 00:27:36,510 --> 00:27:39,030 virkelig, presiserer at det din nåværende katalog er. 553 00:27:39,030 --> 00:27:41,320 Og så det kommer til å se i den gjeldende katalogen 554 00:27:41,320 --> 00:27:44,900 for en fil som heter cs50.php i dette eksemplet her, 555 00:27:44,900 --> 00:27:50,490 og det kommer til å holde fast på at filen på toppen av PHP-programmet, 556 00:27:50,490 --> 00:27:56,980 forutsatt at du legger kreve gang linje på toppen av PHP-filen. 557 00:27:56,980 --> 00:28:01,474 >> Så PHP brukes primært, men ikke utelukkende, 558 00:28:01,474 --> 00:28:03,140 som et språk for web-basert programmering. 559 00:28:03,140 --> 00:28:05,270 Det er egentlig hvordan det kom til å være. 560 00:28:05,270 --> 00:28:06,980 Men det er en full språk, som vi har sett. 561 00:28:06,980 --> 00:28:10,105 Vi har sett stort sett alle de tingene at den kan gjøre det er lik C, 562 00:28:10,105 --> 00:28:13,290 og det kan gjøre en pokker for mye mer enn det. 563 00:28:13,290 --> 00:28:16,950 >> Men fordi det er en full språk og vi kan gjøre kommandolinjen programmering i den. 564 00:28:16,950 --> 00:28:18,630 Vi kan kjøre kommandolinjeprogrammer. 565 00:28:18,630 --> 00:28:22,580 Alt som kreves for å kjøre en kommando linjen program som er skrevet i PHP 566 00:28:22,580 --> 00:28:24,260 er at du har en PHP tolk. 567 00:28:24,260 --> 00:28:27,460 Så det er liksom analogt til ha en kompilator på systemet 568 00:28:27,460 --> 00:28:31,100 Hvis du ønsker å kompilere C-kode å slå den inn i kjørbare filer. 569 00:28:31,100 --> 00:28:33,810 Du må ha en PHP tolk som finnes på systemet ditt 570 00:28:33,810 --> 00:28:37,330 slik at du kan tolke PHP-filer. 571 00:28:37,330 --> 00:28:40,370 >> Antar du gjør, og vanligvis dette tolk kalles PHP, 572 00:28:40,370 --> 00:28:44,300 og det er som regel sammen med de fleste nedlastinger eller installasjoner av PHP 573 00:28:44,300 --> 00:28:47,430 at du kan komme på nett, og sikkert navnet på PHP tolk 574 00:28:47,430 --> 00:28:49,550 vi har i CS50, IDE. 575 00:28:49,550 --> 00:28:51,819 Alt du gjør er å skrive php fil. 576 00:28:51,819 --> 00:28:53,610 Og hva programmets kommer til å gjøre er det er 577 00:28:53,610 --> 00:28:55,360 kommer til å kjøre gjennom tolken, er det 578 00:28:55,360 --> 00:28:58,040 kommer til å ignorere alt som er ikke i mellom spørsmålet mark-- 579 00:28:58,040 --> 00:29:03,160 eller, vinkelbrakett spørsmålstegn php, PHP skilletegn, og skrive det ut, 580 00:29:03,160 --> 00:29:07,660 og det vil tolke og utføre kode innsiden av PHP skilletegn. 581 00:29:07,660 --> 00:29:12,850 >> Så la oss pop over til CS50 IDE og ta en titt på et par av PHP-filer, 582 00:29:12,850 --> 00:29:19,850 kjører et par PHP-filer, i kommandolinje-grensesnitt for CS50 IDE. 583 00:29:19,850 --> 00:29:22,100 Så her er vi i CS50 IDE, og jeg har tatt meg den frihet 584 00:29:22,100 --> 00:29:25,800 for å åpne en fil som heter hello1.php. 585 00:29:25,800 --> 00:29:29,920 Og tilsynelatende, innholdet i denne fil er bare PHP skilletegn der, 586 00:29:29,920 --> 00:29:32,220 og i mellom, echo ("Hei, verden"). 587 00:29:32,220 --> 00:29:34,710 Dette er en ganske enkel PHP program. 588 00:29:34,710 --> 00:29:37,670 Jeg skal bare bla nedover til min terminal-vinduet her, 589 00:29:37,670 --> 00:29:44,320 og jeg kommer til å skrive php hello1.php, trykk enter. 590 00:29:44,320 --> 00:29:44,950 Hallo verden. 591 00:29:44,950 --> 00:29:48,110 Det er nok det vi var forventer det skal gjøre, ikke sant? 592 00:29:48,110 --> 00:29:51,140 >> La oss gå opp og ta annet se på et program. 593 00:29:51,140 --> 00:29:52,924 hello2.php. 594 00:29:52,924 --> 00:29:55,090 Ganske mye det samme, Ikke mye som skjer her. 595 00:29:55,090 --> 00:29:57,190 Denne gangen, men jeg kommer til å be brukeren til å gi meg navnene deres. 596 00:29:57,190 --> 00:29:59,290 Jeg bruker som readline funksjonen igjen. 597 00:29:59,290 --> 00:30:01,340 $ name = readline. 598 00:30:01,340 --> 00:30:03,070 Det er spørsmål, "Hva heter du?" 599 00:30:03,070 --> 00:30:04,880 >> Tilsynelatende er jeg utskrift det på en egen linje. 600 00:30:04,880 --> 00:30:07,220 Og så, slik at linjen nedenfor som vil være rask 601 00:30:07,220 --> 00:30:08,750 der brukeren kan skrive navnet sitt. 602 00:30:08,750 --> 00:30:12,030 Og så bruker jeg en liten bit av variabel interpellasjon her på linje 3 603 00:30:12,030 --> 00:30:14,780 å skrive ut "Hello" og hva brukeren taster. 604 00:30:14,780 --> 00:30:22,040 Så dette er analog til å si: Hei, komma,% s hvis vi bruker printf i C. 605 00:30:22,040 --> 00:30:24,910 >> Så la oss gå og tolke dette programmet. 606 00:30:24,910 --> 00:30:27,400 Så igjen, vil jeg ruller nedover til min terminal-vinduet. 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 Hva er ditt navn? 610 00:30:33,820 --> 00:30:35,490 Doug. 611 00:30:35,490 --> 00:30:36,526 Hei, Doug. 612 00:30:36,526 --> 00:30:39,440 Jeg har også en annen fil som heter hello3.php. 613 00:30:39,440 --> 00:30:42,850 Jeg kommer til å fjerne min skjerm med kontroll L, 614 00:30:42,850 --> 00:30:46,210 og jeg kommer til å gjennomføre det. 615 00:30:46,210 --> 00:30:47,640 Hva er ditt navn? 616 00:30:47,640 --> 00:30:49,020 Doug. 617 00:30:49,020 --> 00:30:49,780 Hei, Doug. 618 00:30:49,780 --> 00:30:56,540 Slik at virkemåten er identisk hello2.php, men hvorfor er det hello3.php? 619 00:30:56,540 --> 00:30:58,040 >> Vel, her er forskjellen. 620 00:30:58,040 --> 00:31:00,620 I dette tilfellet varsel at på en linje her, 621 00:31:00,620 --> 00:31:04,270 Jeg har noe som ikke er mellom PHP skilletegn. 622 00:31:04,270 --> 00:31:07,760 Jeg bare skriver out-- eller jeg bare skrev: "Hva heter du?" 623 00:31:07,760 --> 00:31:12,060 Når PHP-tolken ser dette, det har ingen anelse om hvordan du skal tolke det som PHP, 624 00:31:12,060 --> 00:31:15,060 og så i stedet for å mislykkes, det bare kommer til å spytte det ut. 625 00:31:15,060 --> 00:31:19,010 >> Så oppdager on line 3 nå, mitt kall til readline, det er ingen rask lenger. 626 00:31:19,010 --> 00:31:21,750 Jeg bare faktisk kommer to-- når PHP tolk ser dette, 627 00:31:21,750 --> 00:31:23,400 det kommer til å skrive ut "Hva er ditt navn?" 628 00:31:23,400 --> 00:31:25,941 Så det ser, oh, OK, here's-- alt annet kommer til å være 629 00:31:25,941 --> 00:31:29,970 tolket som PHP, så det er derfor dette fungerer. 630 00:31:29,970 --> 00:31:34,990 Jeg trenger ikke å nødvendigvis spørre brukeren to-- innsiden av readline, 631 00:31:34,990 --> 00:31:37,490 Jeg kan bare ha det utenfor av PHP skilletegn 632 00:31:37,490 --> 00:31:41,490 og tillate tolken å bare skrive det ut for meg. 633 00:31:41,490 --> 00:31:45,364 >> Så du trenger faktisk ikke bare har å ha ett sett med PHP skilletegn 634 00:31:45,364 --> 00:31:46,030 i programmet. 635 00:31:46,030 --> 00:31:49,887 Du kan faktisk ha flere av dem, å åpne og lukke dem etter behov. 636 00:31:49,887 --> 00:31:51,720 Så la oss ta en titt på et par programmer 637 00:31:51,720 --> 00:31:55,070 i CS50 IDE hvor vi illustrere denne ideen om å ha 638 00:31:55,070 --> 00:31:58,376 flere sett med avgrenset PHP. 639 00:31:58,376 --> 00:32:02,010 >> OK, så jeg har åpnet en fil her kalt add1.php. 640 00:32:02,010 --> 00:32:03,390 Og legg merke til hva som skjer her. 641 00:32:03,390 --> 00:32:08,077 Akkurat som før, jeg har en enkelt PHP satt av skilletegn. 642 00:32:08,077 --> 00:32:10,660 Jeg kommer til å skrive ut meldingen "Vennligst gi meg et tall." 643 00:32:10,660 --> 00:32:13,394 Så jeg kommer til å lese en linje og lagre den i variabelen $ num1. 644 00:32:13,394 --> 00:32:14,810 Så jeg kommer til å skrive ut på nytt. 645 00:32:14,810 --> 00:32:16,310 Gi meg et annet nummer. 646 00:32:16,310 --> 00:32:20,450 Les en linje fra brukeren, butikk hva de skrev i in $ num2. 647 00:32:20,450 --> 00:32:23,980 Legg dem sammen og lagre som resultere i en variabel kalt $ sum, 648 00:32:23,980 --> 00:32:26,180 og deretter skrive ut, "The Summen av disse to tallene 649 00:32:26,180 --> 00:32:29,254 er ", og deretter interpellate der variabelen $ sum. 650 00:32:29,254 --> 00:32:31,170 Så la oss bare kjøre denne gjennom tolk 651 00:32:31,170 --> 00:32:33,720 for å bekrefte at dette er hva vi forventer. 652 00:32:33,720 --> 00:32:37,540 php add1.php. 653 00:32:37,540 --> 00:32:38,665 Vennligst gi meg et nummer, tre. 654 00:32:38,665 --> 00:32:40,410 Vennligst gi meg et nytt nummer, fire. 655 00:32:40,410 --> 00:32:43,370 Summen av disse to tallene er syv. 656 00:32:43,370 --> 00:32:45,030 Det er tre pluss fire. 657 00:32:45,030 --> 00:32:45,530 OK? 658 00:32:45,530 --> 00:32:47,770 Så ikke noe veldig fancy der. 659 00:32:47,770 --> 00:32:51,080 >> Og nå kan vi åpne opp add2.php. 660 00:32:51,080 --> 00:32:54,460 Her har jeg fått et par PHP avgrenset sett det, ikke sant? 661 00:32:54,460 --> 00:32:59,107 Linje 1, 3-- linje 1 og 3 har ingen PHP skilletegn. 662 00:32:59,107 --> 00:33:00,940 Så når tolken ser dem, det er bare 663 00:33:00,940 --> 00:33:03,220 kommer til å spytte ut nøyaktig det jeg har skrevet der. 664 00:33:03,220 --> 00:33:05,011 Så det er der jeg er gjør alle mine spørsmål. 665 00:33:05,011 --> 00:33:11,220 På linjene 2 og 4, ser vi veldig kjent $? php slags skilletegn, 666 00:33:11,220 --> 00:33:15,210 slik at disse to linjene er kommer til å kjøre som PHP. 667 00:33:15,210 --> 00:33:18,270 Og så på linje 5, jeg har dette rare ting her, ikke sant? 668 00:33:18,270 --> 00:33:20,480 Denne vinkelparentes spørsmålstegn likhetstegn. 669 00:33:20,480 --> 00:33:22,660 Jeg vil også zoome inn litt lenger. 670 00:33:22,660 --> 00:33:29,270 Du kan se dette er hva jeg er snakker om rett der, dette $? =. 671 00:33:29,270 --> 00:33:33,420 >> Det viser seg at det er så vanlig at grunnen til at vi åpner opp et sett med PHP 672 00:33:33,420 --> 00:33:36,055 skilletegn er å skrive ut en verdi. 673 00:33:36,055 --> 00:33:37,430 Og det er alt vi kommer til å gjøre. 674 00:33:37,430 --> 00:33:39,220 Men det er enda forkortelse for det. 675 00:33:39,220 --> 00:33:46,490 $? = Er PHP stenografi for å si noe sånt som $? php echo summen 676 00:33:46,490 --> 00:33:48,350 av num1 og num2. 677 00:33:48,350 --> 00:33:51,900 Så dette er bare en annen forkortelse for det. 678 00:33:51,900 --> 00:33:55,550 >> Så hvis jeg kjører dette programmet, php add2.php. 679 00:33:55,550 --> 00:33:57,530 Jeg skal zoome ned litt. 680 00:33:57,530 --> 00:33:59,000 Vennligst gi meg et nummer, fire. 681 00:33:59,000 --> 00:34:00,350 Vennligst gi meg et annet nummer. 682 00:34:00,350 --> 00:34:04,650 Og siden jeg egentlig ikke bryr seg om datatyper i PHP, kan jeg si 4.8. 683 00:34:04,650 --> 00:34:07,160 Summen av disse to tall er 8,8. 684 00:34:07,160 --> 00:34:10,179 At funksjonen oppfører seg ganske mye akkurat det samme som vi forventer, 685 00:34:10,179 --> 00:34:10,989 også. 686 00:34:10,989 --> 00:34:13,114 Og jeg har en mer åpnet opp her kalles dice.php. 687 00:34:13,114 --> 00:34:25,625 688 00:34:25,625 --> 00:34:26,250 Prøve dette igjen. 689 00:34:26,250 --> 00:34:29,429 690 00:34:29,429 --> 00:34:33,280 Jeg har en mer her kalt dice1.php, som også ser, 691 00:34:33,280 --> 00:34:37,440 har den vinkelen brakett spørsmålet markere likhetstegn notasjon i det, 692 00:34:37,440 --> 00:34:40,659 men merker at i dette tilfellet er jeg kaller funksjonen rand, som du 693 00:34:40,659 --> 00:34:42,790 kunne forvente genererer et tilfeldig nummer. 694 00:34:42,790 --> 00:34:46,889 "Du rullet en", og det kommer til å beregne noen tilfeldige tall, mod 6 + 695 00:34:46,889 --> 00:34:47,389 1. 696 00:34:47,389 --> 00:34:49,989 Så det vil gi meg nummeret i området fra 1 til 6. 697 00:34:49,989 --> 00:34:53,040 >> Husk at mod 6 ville gi meg et tall i området fra 0 til 5, 698 00:34:53,040 --> 00:34:56,630 men hvis jeg simulere terningkast, som er hva jeg gjør her, 699 00:34:56,630 --> 00:35:00,040 Jeg ønsker ikke disse terningene for å gå fra 0 til 5, jeg ønsker terninger som går fra 1 til 6. 700 00:35:00,040 --> 00:35:02,800 Og så dette er en måte å få meg i området fra 1 til 6. 701 00:35:02,800 --> 00:35:04,720 Jeg gjør dette to ganger. 702 00:35:04,720 --> 00:35:08,630 Så tilsynelatende jeg rulle to terninger i dette programmet. 703 00:35:08,630 --> 00:35:15,210 >> Så jeg skal tømme skjermen min, og jeg skal gjøre php dice1.php. 704 00:35:15,210 --> 00:35:16,640 Du rullet en 4 og 2. 705 00:35:16,640 --> 00:35:19,156 Og hvis jeg kjører programmet igjen, rullet du en 5 og en 5. 706 00:35:19,156 --> 00:35:21,780 Så hver gang jeg kjører programmet, Jeg får forskjellige tall, 707 00:35:21,780 --> 00:35:24,280 fordi hver gang jeg gjør Så det å begynne på nytt. 708 00:35:24,280 --> 00:35:27,250 Det kommer til å generere en ny sett av tilfeldige tall for meg. 709 00:35:27,250 --> 00:35:29,790 >> Så hvis vi er vant til kjørende programmer fra C, 710 00:35:29,790 --> 00:35:32,520 vi er vant til å skrive ./ den navnet på et program, ikke sant? 711 00:35:32,520 --> 00:35:35,090 Det er slik vi har gjort alt av våre programmer i C så langt. 712 00:35:35,090 --> 00:35:37,555 Vi kan gjøre dette i PHP samt ved å legge til noe som kalles 713 00:35:37,555 --> 00:35:40,026 en shebang til toppen av vår PHP-fil. 714 00:35:40,026 --> 00:35:41,400 Jeg vet det er slags et dumt ord. 715 00:35:41,400 --> 00:35:44,540 Det er en forkortelse for hash bang. 716 00:35:44,540 --> 00:35:46,300 Det er de to første tegnene der. 717 00:35:46,300 --> 00:35:50,030 Husk vi kaller utropstegn ofte en smell i informatikk. 718 00:35:50,030 --> 00:35:51,690 Det kan også være for skarpt smell. 719 00:35:51,690 --> 00:35:53,273 Det er et par måter å tolke det. 720 00:35:53,273 --> 00:35:57,320 Men det er i utgangspunktet en spesiell form av kommandoen som PHP tolk 721 00:35:57,320 --> 00:36:00,160 forstår som, oh, jeg vil ha du gjennomføre dette programmet, 722 00:36:00,160 --> 00:36:05,250 som er tilsynelatende / user / bin / php, som er faktisk der PHP tolk 723 00:36:05,250 --> 00:36:08,590 spesielt lever videre vårt system. 724 00:36:08,590 --> 00:36:12,530 Så it's-- hva som skjer her er tolken forstår, oh, 725 00:36:12,530 --> 00:36:17,270 Jeg tydeligvis ment å bruke i dette programmet for å kjøre denne filen. 726 00:36:17,270 --> 00:36:20,010 Og så det tillater deg å hoppe over trinnet 727 00:36:20,010 --> 00:36:22,979 for å måtte si php something.php. 728 00:36:22,979 --> 00:36:25,020 Det er en annen fangst her, som er at hvis vi 729 00:36:25,020 --> 00:36:27,320 ønsker at våre programmer til fungerer som forventet, vi 730 00:36:27,320 --> 00:36:30,220 trenger å gjøre noe som kalles en fil tillatelse endring. 731 00:36:30,220 --> 00:36:33,380 Og vi vil Vær så god og vi snakker litt litt mer om fil tillatelse endringer 732 00:36:33,380 --> 00:36:37,550 i vår video på MVC, men nok det å si at dette er det du trenger å gjøre 733 00:36:37,550 --> 00:36:42,760 for å gjøre din .php filer kjørbar. 734 00:36:42,760 --> 00:36:49,330 Så la oss ta en titt på dette som vårt siste eksempel over i CS50 IDE. 735 00:36:49,330 --> 00:36:53,910 >> Så her i IDE har jeg to filer i dette Katalog PHP som synes ikke å være 736 00:36:53,910 --> 00:36:55,310 kalt php. 737 00:36:55,310 --> 00:36:58,170 Jeg har en funksjon som heter add-- Jeg har en fil som heter add3 738 00:36:58,170 --> 00:37:00,650 og en fil som heter dice2. 739 00:37:00,650 --> 00:37:03,680 Så la oss ta en rask se og åpne opp add3. 740 00:37:03,680 --> 00:37:08,300 Og som du kan se, i begynnelsen av filen min jeg har denne shebang, ikke sant? 741 00:37:08,300 --> 00:37:11,420 Denne hash mark utropstegn. 742 00:37:11,420 --> 00:37:15,115 Nå, vil du også kanskje Legg merke til at en eller annen grunn, 743 00:37:15,115 --> 00:37:16,990 Jeg har ikke noen syntaks utheving lenger, 744 00:37:16,990 --> 00:37:20,198 og dette er hva jeg antydet tidligere, som var at hvis jeg ikke nevne min fil 745 00:37:20,198 --> 00:37:23,040 Php, jeg har ikke den fordelen av syntax highlighting lenger. 746 00:37:23,040 --> 00:37:26,220 Denne filen er bare kalt add3. 747 00:37:26,220 --> 00:37:30,960 Slik at jeg kan kjøre den senere med ./ add3 og ikke ./ add3.php. 748 00:37:30,960 --> 00:37:33,680 >> Så reason-- det er fortsatt fint, det er fortsatt gyldig PHP, 749 00:37:33,680 --> 00:37:37,000 men det er ikke syntaks markert, fordi denne filen er ikke kalt something.php. 750 00:37:37,000 --> 00:37:41,580 Det er den eneste reelle forskjellen her, pluss shebang. 751 00:37:41,580 --> 00:37:45,170 Så la oss se hva som skjer når Jeg prøver og kjøre dette programmet. 752 00:37:45,170 --> 00:37:50,780 ./ Add3, akkurat som jeg ville gjort med C. Bash. 753 00:37:50,780 --> 00:37:53,190 ./ Add3 tillatelse nektes. 754 00:37:53,190 --> 00:37:55,390 Dette er hva du skal for å se om du har glemt 755 00:37:55,390 --> 00:37:59,280 å bruke kommandoen chmod til å endre tillatelsene for filen. 756 00:37:59,280 --> 00:38:03,845 >> Som det viser seg, vanlig PHP filer kan ikke bare bli henrettet. 757 00:38:03,845 --> 00:38:06,970 De kan tolkes, men vi er å gjøre noe litt annerledes her. 758 00:38:06,970 --> 00:38:07,761 Vi utfører det. 759 00:38:07,761 --> 00:38:12,970 Og så jeg må legge tillatelse henrettelses, chmod a + x til add3. 760 00:38:12,970 --> 00:38:15,680 Da kan jeg si ./ add3. 761 00:38:15,680 --> 00:38:16,860 Vennligst gi meg et nummer. 762 00:38:16,860 --> 00:38:18,060 5, 6. 763 00:38:18,060 --> 00:38:20,490 Summen av disse to tallene er 11. 764 00:38:20,490 --> 00:38:26,530 >> Tilsvarende har jeg allerede CHMODet dice2, så jeg kan bare skrive ./ dice2, 765 00:38:26,530 --> 00:38:31,260 du rullet en 1 og en 1, du rullet 5 og 4, og så videre. 766 00:38:31,260 --> 00:38:33,680 >> Så det er ganske mye Ideen om en PHP syntaks, ikke sant? 767 00:38:33,680 --> 00:38:35,221 Det er mye å komme gjennom, jeg vet. 768 00:38:35,221 --> 00:38:39,160 Men forhåpentligvis du har sett nå at PHP er egentlig ikke så forskjellig fra C 769 00:38:39,160 --> 00:38:43,670 og virkelig gir oss muligheten å ta ting opp et hakk eller to. 770 00:38:43,670 --> 00:38:48,230 Vi har egentlig ikke trenger å bekymre deg for mye om-- vi egentlig ikke 771 00:38:48,230 --> 00:38:51,605 trenger å bekymre deg for mye om lavnivå detaljer vi 772 00:38:51,605 --> 00:38:52,980 måtte bekymre seg med C, ikke sant? 773 00:38:52,980 --> 00:38:56,170 Vi kan fokusere på høyere nivå ting som PHP 774 00:38:56,170 --> 00:39:01,090 tillater oss å gjøre og å ta for gitt at det vil fungere for oss. 775 00:39:01,090 --> 00:39:04,350 Så det gir oss muligheten til nå, overgangen fra C til PHP, 776 00:39:04,350 --> 00:39:08,280 å lage programmer som er mye mer kompleks og kanskje mye mer robust. 777 00:39:08,280 --> 00:39:13,070 >> Så jeg håper du har det gøy arbeids med PHP, og jeg er Doug Lloyd. 778 00:39:13,070 --> 00:39:15,050 Dette er CS50. 779 00:39:15,050 --> 00:39:17,637