1 00:00:00,000 --> 00:00:05,340 2 00:00:05,340 --> 00:00:07,370 >> DOUG LLOYD: Så vi har gjort et stort arbejde i C, 3 00:00:07,370 --> 00:00:09,536 og C er en virkelig cool sprog, fordi det giver dig 4 00:00:09,536 --> 00:00:12,840 evnen til at dykke virkelig lavt niveau i dine programmer. 5 00:00:12,840 --> 00:00:16,810 Vi får at gøre ting, som virkelig minut som manipulere 6 00:00:16,810 --> 00:00:18,800 individuelle bytes af hukommelse. 7 00:00:18,800 --> 00:00:21,420 Husk på, at pointere virkelig tillade os, at fleksibilitet. 8 00:00:21,420 --> 00:00:25,260 >> Men gør vi altid nødt til at have at finkornet detaljeringsgrad 9 00:00:25,260 --> 00:00:26,820 i vores programmer? 10 00:00:26,820 --> 00:00:28,210 Sandsynligvis ikke, vel? 11 00:00:28,210 --> 00:00:30,376 Og hvis vi er nødt til en afvejning mellem at være 12 00:00:30,376 --> 00:00:32,911 stand til at gøre rigtig, rigtig minut ting og virkelig, virkelig 13 00:00:32,911 --> 00:00:35,910 store ting, som vi ikke behøver at tænke omkring, behøver vi ikke at gennemføre 14 00:00:35,910 --> 00:00:40,290 disse virkelig store ideer, hvis de er allerede bygget i for os, 15 00:00:40,290 --> 00:00:43,980 generelt til opbygning store programmer eller store projekter, 16 00:00:43,980 --> 00:00:49,130 vi sandsynligvis kommer til at fejle på siden for at have flere sprog ting bygget i 17 00:00:49,130 --> 00:00:51,300 for os, i stedet for at på lavt niveau kram. 18 00:00:51,300 --> 00:00:53,970 Og det er her, PHP virkelig kommer i. 19 00:00:53,970 --> 00:00:58,200 >> Nu en af ​​grundene at vi lærer PHP i CS50 20 00:00:58,200 --> 00:01:01,020 er, at det er stærkt inspireret af C. Og i virkeligheden, efter min mening, 21 00:01:01,020 --> 00:01:05,140 Der er virkelig to progenitor sprog, 22 00:01:05,140 --> 00:01:08,200 er meget almindelig i dag. 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 sprog fordi hver anden moderne programmering 25 00:01:13,280 --> 00:01:17,380 sprog, har udviklet Siden da er inspireret 26 00:01:17,380 --> 00:01:20,330 af den ene eller anden syntaktisk. 27 00:01:20,330 --> 00:01:26,160 PHP er meget ens syntaktisk til C, mens sprog som Scheme 28 00:01:26,160 --> 00:01:27,900 for eksempel, som du måske har hørt om, 29 00:01:27,900 --> 00:01:32,070 er stærkt inspireret af et sprog kaldet LISP, som er en ældre sprog. 30 00:01:32,070 --> 00:01:34,220 >> Så årsagen til at vi underviser PHP i CS50 er, 31 00:01:34,220 --> 00:01:37,730 ved at kende C som fundamentalt som du gør på dette tidspunkt, 32 00:01:37,730 --> 00:01:41,280 optagning PHP, som giver dig evne til at gøre meget højere ting niveau 33 00:01:41,280 --> 00:01:44,710 end C gør, er ikke at meget af en forhindring, 34 00:01:44,710 --> 00:01:48,230 fordi du allerede har Grundideen af ​​syntaksen. 35 00:01:48,230 --> 00:01:50,590 C har været rundt i næsten 45 år på dette tidspunkt. 36 00:01:50,590 --> 00:01:52,780 PHP har eksisteret i omkring 20 år. 37 00:01:52,780 --> 00:01:57,080 Og i den 25 år i mellem, programmører 38 00:01:57,080 --> 00:02:01,540 besluttet, at de ville meget hellere have højere niveau evner, 39 00:02:01,540 --> 00:02:04,970 og de fejl og kampe af de 20 år i mellem 40 00:02:04,970 --> 00:02:08,210 førte til PHP og andre moderne sprog. 41 00:02:08,210 --> 00:02:11,039 >> PHP er et stort udvalg af sprog til software 42 00:02:11,039 --> 00:02:14,042 at allow-- for software at-- hvor du 43 00:02:14,042 --> 00:02:16,250 nødt til at gøre ting, som i C er faktisk kompliceret. 44 00:02:16,250 --> 00:02:18,480 Så for eksempel, der arbejder med strenge i C 45 00:02:18,480 --> 00:02:21,709 er meget kompliceret, fordi som vi ved, strenge i C 46 00:02:21,709 --> 00:02:23,250 i virkeligheden kun arrays af tegn. 47 00:02:23,250 --> 00:02:25,230 Det er ikke en indbygget datatype. 48 00:02:25,230 --> 00:02:28,220 Eller måske mere grundlæggende, noget vi ikke engang dække i C, 49 00:02:28,220 --> 00:02:30,360 hvad nu hvis du skal gøre nogle computernetværk? 50 00:02:30,360 --> 00:02:30,860 Okay? 51 00:02:30,860 --> 00:02:34,920 >> C har evnen til at gøre det, men det er så mystiske og så svært at rent faktisk gør. 52 00:02:34,920 --> 00:02:37,580 Ville det ikke være rart, hvis det sprog havde en indbygget, nem måde 53 00:02:37,580 --> 00:02:38,910 at gennemføre netværk? 54 00:02:38,910 --> 00:02:43,420 Og PHP er et sprog, der gør det, eller letter, at en hel del mere. 55 00:02:43,420 --> 00:02:47,740 Som jeg sagde, PHP er meget stærkt inspireret ved C. Syntaksen er meget ens. 56 00:02:47,740 --> 00:02:51,760 Og så skulle det forhåbentlig gøre det overgangen fra den ene til den anden 57 00:02:51,760 --> 00:02:54,710 lidt blødere end nogle andre sprog kan være. 58 00:02:54,710 --> 00:02:58,800 >> For at begynde at skrive PHP, bare åbne op en fil med php fil forlængelse. 59 00:02:58,800 --> 00:03:00,670 Teknisk er det ikke faktisk kræves, 60 00:03:00,670 --> 00:03:04,495 men hvis du vil ting som syntaks fremhæver i IDE, så denne type 61 00:03:04,495 --> 00:03:07,620 navne eller variable navne, funktioner, du ved, de søgeord i sproget 62 00:03:07,620 --> 00:03:10,090 er fremhævet i en bestemt farve, du generelt 63 00:03:10,090 --> 00:03:14,020 ønsker at navngive dine filer med en bestemt fil forlængelse. 64 00:03:14,020 --> 00:03:18,430 Så har vi navngivet vores fil med en .php forlængelse, men så også med PHP, 65 00:03:18,430 --> 00:03:23,310 al den PHP kode vi skriver i, at fil skal være indesluttet i disse PHP 66 00:03:23,310 --> 00:03:25,190 afgrænsere, som vi ser her på skærmen. 67 00:03:25,190 --> 00:03:27,910 Vinkel beslag? Php til at starte. 68 00:03:27,910 --> 00:03:30,860 Så vi skriver alle vores PHP kode, som vi ønsker i mellem. 69 00:03:30,860 --> 00:03:32,260 Og så ? 70 00:03:32,260 --> 00:03:34,710 vinkel beslag til at lukke. 71 00:03:34,710 --> 00:03:37,170 >> Hvis vi ikke gør det, så hvad der kommer til at ske? 72 00:03:37,170 --> 00:03:38,170 Det kommer ikke til at gå ned. 73 00:03:38,170 --> 00:03:39,410 Det kommer ikke til at virkelig ødelægge vores program. 74 00:03:39,410 --> 00:03:41,440 Men det kommer ikke til at have den virkning, at vi ønsker. 75 00:03:41,440 --> 00:03:44,540 Hvad vil der ske, virkelig, er at når vi prøver og køre dette program, 76 00:03:44,540 --> 00:03:50,330 alt ikke mellem disse afgrænsere vil blive udskrevet ordret. 77 00:03:50,330 --> 00:03:52,210 Det kommer ikke til at faktisk udføre koden, 78 00:03:52,210 --> 00:03:56,010 det vil bare printe den ud ordret. 79 00:03:56,010 --> 00:03:57,320 >> Nu hvorfor det er tilfældet? 80 00:03:57,320 --> 00:04:00,416 Så C er hvad der er kendt som en kompileret sprog. 81 00:04:00,416 --> 00:04:03,040 Du er sikkert bekendt med det trin gøre dine programmer, 82 00:04:03,040 --> 00:04:07,820 dreje .c filer og .H filer i en enkelt eksekverbar med fabrikat, 83 00:04:07,820 --> 00:04:11,130 især ved hjælp af Klang som vores compiler. 84 00:04:11,130 --> 00:04:13,030 PHP, dog ikke har denne tilsvarende. 85 00:04:13,030 --> 00:04:15,600 PHP er, hvad der kaldes en fortolket sprog. 86 00:04:15,600 --> 00:04:16,760 Og hvad betyder det? 87 00:04:16,760 --> 00:04:20,680 >> Tja, det betyder at vi ikke behøver at konvertere vores kildekode til nuller og ettaller 88 00:04:20,680 --> 00:04:21,470 på forhånd. 89 00:04:21,470 --> 00:04:23,900 Snarere er der et program, som også kaldes 90 00:04:23,900 --> 00:04:29,771 PHP, der forstår PHP og kan slags gøre det på farten. 91 00:04:29,771 --> 00:04:32,520 Det er ikke rigtig præcis nøjagtig, men det er en temmelig god analogi 92 00:04:32,520 --> 00:04:33,760 af, hvad der sker. 93 00:04:33,760 --> 00:04:37,230 Det fortolke dem nuller og ettaller i farten. 94 00:04:37,230 --> 00:04:40,160 Og så hvis det ikke kender hvordan man behandler noget, 95 00:04:40,160 --> 00:04:42,800 hvis det ikke ved, hvordan man proces PHP, har du sandsynligvis 96 00:04:42,800 --> 00:04:44,680 ønskede at sætte denne tekst derinde, ikke? 97 00:04:44,680 --> 00:04:48,960 >> Du har sikkert ønskede at sætte koden i der, selv om det ikke er mellem PHP-- 98 00:04:48,960 --> 00:04:50,035 PHP afgrænsere. 99 00:04:50,035 --> 00:04:51,910 Men-- så det kommer ikke til at slette det for dig, 100 00:04:51,910 --> 00:04:53,576 det bare at gå til stort set kassere det. 101 00:04:53,576 --> 00:04:55,550 Så det kommer til at udskrive det ud til skærmen. 102 00:04:55,550 --> 00:04:57,150 >> Dette virker som det er en dårlig ting, men faktisk er det 103 00:04:57,150 --> 00:04:58,220 kommer til at være en rigtig god ting, som vi får 104 00:04:58,220 --> 00:05:00,390 se, når vi taler om PHP web udvikling, 105 00:05:00,390 --> 00:05:04,010 fordi det betyder, vi kan intersperse PHP og HTML. 106 00:05:04,010 --> 00:05:06,640 Vi kan bruge dem sammen til skabe en mere dynamisk webside. 107 00:05:06,640 --> 00:05:10,650 Men mere om det i video på PHP webudvikling. 108 00:05:10,650 --> 00:05:12,021 >> Så hvad er syntaksen for PHP? 109 00:05:12,021 --> 00:05:13,520 Det er, hvad denne video handler om. 110 00:05:13,520 --> 00:05:14,850 Lad os tale om det. 111 00:05:14,850 --> 00:05:16,490 >> Så for at starte ud, variabler. 112 00:05:16,490 --> 00:05:18,030 Eksisterer PHP variabler. 113 00:05:18,030 --> 00:05:20,067 Der er blot to store forskelle fra C. 114 00:05:20,067 --> 00:05:21,900 Den første er, at der er ingen type anvisning. 115 00:05:21,900 --> 00:05:24,245 Vi behøver ikke at sige int, char, float, alt det der. 116 00:05:24,245 --> 00:05:25,620 Vi behøver ikke at gøre det længere. 117 00:05:25,620 --> 00:05:26,810 PHP er et moderne sprog. 118 00:05:26,810 --> 00:05:28,910 Det kan regne ud, hvad du er forsøger at gøre eller lave en bedst 119 00:05:28,910 --> 00:05:30,451 gætte på, hvad du forsøger at gøre. 120 00:05:30,451 --> 00:05:31,700 Så det er ret nice. 121 00:05:31,700 --> 00:05:35,330 >> Den anden ting er, at alle variable navne nødt til at starte med et dollartegn. 122 00:05:35,330 --> 00:05:36,940 Det er bare noget at vænne sig til. 123 00:05:36,940 --> 00:05:39,496 Det er lidt underligt, fordi det er så at PHP kan forstå 124 00:05:39,496 --> 00:05:40,870 hvad er en variabel og hvad der 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 vi måske sige noget som dette, int x = 54. 127 00:05:46,884 --> 00:05:48,550 Vi behøver ikke at gøre det længere i PHP. 128 00:05:48,550 --> 00:05:52,540 Vi kan bare sige $ x = 54. 129 00:05:52,540 --> 00:05:55,920 Og vi kunne sige, for eksempel i C, hvis vi havde pund-omfattede CS50 .h 130 00:05:55,920 --> 00:06:00,314 header-fil, kunne vi sige string sætning = "Dette er CS50." 131 00:06:00,314 --> 00:06:01,980 Vi behøver ikke at gøre det i PHP, selv om. 132 00:06:01,980 --> 00:06:04,865 Vi kan bare sige $ sætning = "Dette er CS50." 133 00:06:04,865 --> 00:06:08,760 Og i virkeligheden, streng er nu en indbygget datatype i PHP, 134 00:06:08,760 --> 00:06:10,950 eller rettere PHP forstår hvad en streng er. 135 00:06:10,950 --> 00:06:15,612 Det er adskilt fra et array tegn, som det er i C. 136 00:06:15,612 --> 00:06:17,570 Alle dine favorit betingede udsagn fra C 137 00:06:17,570 --> 00:06:19,520 er stadig tilgængelige for dig at bruge. 138 00:06:19,520 --> 00:06:21,140 Så ingen store overgang der. 139 00:06:21,140 --> 00:06:23,400 Vi kan say-- vi kan have hvis udsagn 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 temmelig ligetil. 142 00:06:29,690 --> 00:06:31,980 Vi kan have, hvis og andet. 143 00:06:31,980 --> 00:06:34,210 Vi kan have, hvis og andet, hvis. 144 00:06:34,210 --> 00:06:36,430 >> Og bemærker noget ret nice her, og dette 145 00:06:36,430 --> 00:06:39,620 er slags en af ​​dem Fordele ved PHP versus C, varsel 146 00:06:39,620 --> 00:06:41,510 hvilken funktion vi ikke bruge her? 147 00:06:41,510 --> 00:06:47,737 Vi bruger == at sammenligne en variabel, $ navn, til en streng. 148 00:06:47,737 --> 00:06:49,070 Vi kunne ikke gøre det i C, ikke? 149 00:06:49,070 --> 00:06:53,200 Vi var nødt til at bruge en funktion kaldet StrComp eller StrEndComp eller 150 00:06:53,200 --> 00:06:54,840 sine tilknyttede fætre. 151 00:06:54,840 --> 00:06:56,980 >> Og så allerede vi ser disse fordele. 152 00:06:56,980 --> 00:07:00,930 Vi behøver ikke at gøre noget så dum eller måske unintuitive 153 00:07:00,930 --> 00:07:03,540 som kalder en funktion kaldet StrComp hvis jeg bare ønsker at teste 154 00:07:03,540 --> 00:07:05,237 om en værdi er lig med en streng. 155 00:07:05,237 --> 00:07:07,820 Jeg kunne bare bruge lig ligemænd, ligesom jeg kunne gøre noget andet. 156 00:07:07,820 --> 00:07:09,560 Så der er en fordel. 157 00:07:09,560 --> 00:07:13,350 >> Nogle gange, ved den måde, kan du se ellers hvis i ét ord, ElseIf. 158 00:07:13,350 --> 00:07:14,910 Og det er OK i PHP så godt. 159 00:07:14,910 --> 00:07:17,020 Så nogle gange er du måske se det. 160 00:07:17,020 --> 00:07:17,790 Det er ikke en stavefejl. 161 00:07:17,790 --> 00:07:21,830 PHP faktisk forstår elseif. 162 00:07:21,830 --> 00:07:23,980 Jeg ved ikke, hvorfor de besluttet at gennemføre det, 163 00:07:23,980 --> 00:07:28,220 men som vi har set mange gange hele vores videoer hidtil, 164 00:07:28,220 --> 00:07:30,460 vi programmører elske det, hvis vi kan gøre tingene hurtigt, 165 00:07:30,460 --> 00:07:33,660 så at komme af, at rummet er tilsyneladende en stor fordel. 166 00:07:33,660 --> 00:07:34,800 >> Så det er hvis og elseif. 167 00:07:34,800 --> 00:07:37,540 Vi har også den ternære operatør, tilbagekaldelse spørgsmålstegn colon, 168 00:07:37,540 --> 00:07:43,262 efter virkelig korte formular, hvis ellers eller betinget forgrening. 169 00:07:43,262 --> 00:07:45,470 Og tilsyneladende, i denne, hvad vi prøver at gøre her 170 00:07:45,470 --> 00:07:49,720 er tildele variabel $ brev enten sand eller falsk, 171 00:07:49,720 --> 00:07:54,110 afhængigt af om $ var er en alfabetisk karakter. 172 00:07:54,110 --> 00:07:57,320 Så dette er temmelig ligner isalpha at vi er bekendt med fra C. 173 00:07:57,320 --> 00:07:59,010 Det er en slags modværdien i PHP. 174 00:07:59,010 --> 00:08:01,550 Funktionen er tilsyneladende kaldet ctype_alpha, 175 00:08:01,550 --> 00:08:03,450 men det er hvordan vi gør det i PHP. 176 00:08:03,450 --> 00:08:08,560 Så alt dette vil være er, hvis $ var er et brev, $ brev er sandt. 177 00:08:08,560 --> 00:08:13,820 Hvis $ var ikke et brev, $ brev er falsk. 178 00:08:13,820 --> 00:08:15,820 >> Vi har også switch udsagn stadig. 179 00:08:15,820 --> 00:08:17,870 Vi husker dem fra C så godt. 180 00:08:17,870 --> 00:08:22,480 På toppen er der, det er, hvordan vi gør noget lignende get int eller få streng. 181 00:08:22,480 --> 00:08:23,845 Så PHP har der indbygget. 182 00:08:23,845 --> 00:08:25,470 Vi har ikke brug for CS50 biblioteket længere. 183 00:08:25,470 --> 00:08:27,237 Vi kan bare bruge funktionen readline. 184 00:08:27,237 --> 00:08:29,820 Hvad det kommer til at gøre, er at udskrive et budskab, "Din tilstand, 185 00:08:29,820 --> 00:08:33,820 please, "og derefter blinkende prompt og venter på at brugeren indtaster 186 00:08:33,820 --> 00:08:34,739 nogle oplysninger. 187 00:08:34,739 --> 00:08:36,530 Nu opdager, hvad der ellers vi kan gøre med kontakt. 188 00:08:36,530 --> 00:08:39,105 Hvis du har brugt det før, kan du huske, at kontakten 189 00:08:39,105 --> 00:08:44,960 er begrænset temmelig meget for heltal og tegn, men nu kan vi bruge strenge. 190 00:08:44,960 --> 00:08:50,190 Og i virkeligheden, switch-statementet i PHP er ganske lidt mere fleksibel 191 00:08:50,190 --> 00:08:54,880 end dens fætter fra C. 192 00:08:54,880 --> 00:08:55,380 Loops. 193 00:08:55,380 --> 00:08:58,130 Ligesom betingede, alle dine gamle favoritter er der stadig. 194 00:08:58,130 --> 00:09:00,740 Vi har mens sløjfer, der tæller fra 1 til 100 i dette tilfælde. 195 00:09:00,740 --> 00:09:03,940 Vi har gøre, mens løkker der tæller fra 1 til 100, 196 00:09:03,940 --> 00:09:06,200 og vi har efter sløjfer at tælle fra 1 til 100. 197 00:09:06,200 --> 00:09:07,220 Så ingen store spring der. 198 00:09:07,220 --> 00:09:09,360 Syntaksen er temmelig meget nøjagtig det samme, 199 00:09:09,360 --> 00:09:11,760 undtagen nu vi bruger dollar tegn variabel i stedet 200 00:09:11,760 --> 00:09:17,260 erklære heltalsvariabler eller sådan noget for vores tællere. 201 00:09:17,260 --> 00:09:20,090 >> Her er hvor tingene bliver en meget bedre end C, selv om. 202 00:09:20,090 --> 00:09:21,020 Arrays. 203 00:09:21,020 --> 00:09:23,020 Så husker, da vi var taler om C, med henblik på 204 00:09:23,020 --> 00:09:25,560 for os at vokse og skrumpe sæt af oplysninger, 205 00:09:25,560 --> 00:09:28,310 vi havde brug for at sortere for misligholdelse til denne idé om en linket liste, 206 00:09:28,310 --> 00:09:30,780 fordi C-arrays blev fastsat i størrelse. 207 00:09:30,780 --> 00:09:31,800 Vi kunne ikke skrumpe 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 var nødt til at omfordele hukommelse og gøre alt dette vanvid 210 00:09:36,074 --> 00:09:38,490 eller bruge hægtede lister, som tage op ganske lidt mere plads. 211 00:09:38,490 --> 00:09:41,590 Men i PHP, arrays er ikke fast i størrelse længere. 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å igen, disse 20 år, der eksisterede mellem den første udgave af C 214 00:09:46,660 --> 00:09:49,440 og den første udgivelse PHP, besluttede vi, at du ved, 215 00:09:49,440 --> 00:09:51,670 det ville være virkelig stor hvis vi kunne gøre dette. 216 00:09:51,670 --> 00:09:54,100 Og så vi implementeret dette. 217 00:09:54,100 --> 00:09:58,040 >> Så PHP arrays er ikke fast i størrelse, og fordi PHP ikke rigtig 218 00:09:58,040 --> 00:10:03,090 have programmør fremadvendte forestillinger om typer, 219 00:10:03,090 --> 00:10:05,110 Vi kan blande datatyper i vores arrays, også. 220 00:10:05,110 --> 00:10:08,100 Så vi behøver ikke engang at bruge alle heltal eller alle flydende punkter, 221 00:10:08,100 --> 00:10:12,826 Vi kan have en blanding af alle forskellige former i et enkelt array. 222 00:10:12,826 --> 00:10:14,700 Erklære et array er temmelig ligetil. 223 00:10:14,700 --> 00:10:16,116 Det er ligesom enhver anden variabel. 224 00:10:16,116 --> 00:10:20,020 $ nums = array (1, 2, 3, 4), matrix er en funktion 225 00:10:20,020 --> 00:10:22,760 der er indbygget i PHP, der vil skabe en række for dig. 226 00:10:22,760 --> 00:10:28,315 Dette skaber et array af fire værdier, numre i dette tilfælde kaldet $ nums. 227 00:10:28,315 --> 00:10:29,940 Og der er mere end én måde at gøre det. 228 00:10:29,940 --> 00:10:32,420 Og vi kommer til at ser dette meget i PHP. 229 00:10:32,420 --> 00:10:36,380 PHP er blevet udviklet af mange forskellige mennesker og vokser og vokser og vokser. 230 00:10:36,380 --> 00:10:40,050 Der er normalt ikke bare to eller tre måder at gøre noget i PHP, 231 00:10:40,050 --> 00:10:42,170 der er normalt ligesom 10 eller 20. 232 00:10:42,170 --> 00:10:45,300 Her er bare en anden almindelig måde at erklære et array. 233 00:10:45,300 --> 00:10:48,310 $ nums = firkantede beslag 1, 2, 3, 4. 234 00:10:48,310 --> 00:10:53,170 Så dette er slags ligner C vinkel br-- krøllet tandbøjle notation, snarere. $ - 235 00:10:53,170 --> 00:10:58,525 eller det ville være int nums firkantet parentes lig krøllet Brace 1, 2, 3, 4. 236 00:10:58,525 --> 00:11:02,710 I PHP er det $ nums = firkantet beslag 1, 2, 3, 4. 237 00:11:02,710 --> 00:11:08,920 Men begge disse eksempler her give mig et array af fire i dette tilfælde heltal. 238 00:11:08,920 --> 00:11:10,920 >> Hvad hvis jeg ønsker at hæfte noget på nu? 239 00:11:10,920 --> 00:11:14,760 Jamen jeg kan bare sige $ nums 4, som igen, er vi stadig tælle fra 0 her 240 00:11:14,760 --> 00:11:17,800 i PHP, ville være den femte element i arrayet. 241 00:11:17,800 --> 00:11:18,990 Jeg kan bare sige det. 242 00:11:18,990 --> 00:11:22,860 Jeg har ikke tænkt mig at lide et seg fejl, fordi min array er bare 243 00:11:22,860 --> 00:11:24,337 kommer til at vokse til at rumme det. 244 00:11:24,337 --> 00:11:25,420 Det er ret nice, ikke? 245 00:11:25,420 --> 00:11:28,400 Og i virkeligheden, jeg behøver ikke engang at angive, hvor jeg ønsker at sige det. 246 00:11:28,400 --> 00:11:31,220 Jeg kan blot sige dette og blot tack det lige på til slutningen, 247 00:11:31,220 --> 00:11:34,099 eller jeg kunne bare sige $ nums 20 eller 1.000. 248 00:11:34,099 --> 00:11:35,140 Det gør ikke rigtig noget. 249 00:11:35,140 --> 00:11:38,330 Det er stadig bare at tack det lige til det sidste. 250 00:11:38,330 --> 00:11:41,490 >> Så jeg kan vokse, og as-- vi er ikke kommer til at dække det ind her, 251 00:11:41,490 --> 00:11:45,360 men jeg kan splejse eller strimler elementer ud af array'et samt, 252 00:11:45,360 --> 00:11:50,064 og arrayet vil skrumpe til at rumme at nu mangler eller tom plads. 253 00:11:50,064 --> 00:11:52,230 Der er en anden måde at hæfte noget på et array, 254 00:11:52,230 --> 00:11:54,330 som er en funktion kaldet array_push. 255 00:11:54,330 --> 00:11:57,860 Så igen, bare denne idé om at være stand til at gøre ting mange forskellige måder. 256 00:11:57,860 --> 00:12:01,950 Så vi har set tre forskellige måder nu at hæfte et andet element på et array. 257 00:12:01,950 --> 00:12:06,900 Så dette tilføjer et andet element til slutningen af ​​$ nums array. 258 00:12:06,900 --> 00:12:08,340 Og vi kan blande vores datatyper. 259 00:12:08,340 --> 00:12:13,110 Så jeg kunne have en vifte af ikke 1, 2, 3, 4, men 1, sandt, 3, 4, 260 00:12:13,110 --> 00:12:16,420 hvor sandt er en boolesk, og derefter hvis jeg ønsker at hæfte på et andet element 261 00:12:16,420 --> 00:12:20,860 til den opstilling, måske en streng, strengen "fem", jeg kunne gøre det. 262 00:12:20,860 --> 00:12:26,110 Og nu er min matrix ville være 1, sand, 3, 4, fem. 263 00:12:26,110 --> 00:12:28,640 Ordet fem, ikke det hele tal 5. 264 00:12:28,640 --> 00:12:31,270 Så en masse fleksibilitet der. 265 00:12:31,270 --> 00:12:33,290 >> Fleksibiliteten får endnu bedre, selv om, 266 00:12:33,290 --> 00:12:37,530 fordi PHP understøtter noget kaldet et associativt array. 267 00:12:37,530 --> 00:12:40,660 Og vi slags vagt talte om associative arrays i C 268 00:12:40,660 --> 00:12:44,740 i forbindelse med hash-tabeller, fordi hvad associative arrays er virkelig alle 269 00:12:44,740 --> 00:12:48,950 om gør nøgle værdi par tilknytninger. 270 00:12:48,950 --> 00:12:53,410 Og i dette tilfælde, det keys-- hvis Vi er bekendt med arrays fra C, 271 00:12:53,410 --> 00:12:55,440 tasterne er indekstal. 272 00:12:55,440 --> 00:12:57,530 0, 1, 2, 3. 273 00:12:57,530 --> 00:13:03,070 Og værdierne er, hvad vi finder, at matrix 0, 1 matrix, matrix 2, og så videre. 274 00:13:03,070 --> 00:13:06,310 Så tasterne er indekser, og værdierne er 275 00:13:06,310 --> 00:13:10,060 hvad der er i den opstilling placering, specificeret af dette indeks. 276 00:13:10,060 --> 00:13:15,130 >> Men i PHP, behøver vi ikke at gøre dette begrebet matrix 0, matrix 1, matrix 2 277 00:13:15,130 --> 00:13:15,830 længere. 278 00:13:15,830 --> 00:13:21,025 Vi kan nu bruge faktiske ord at kortlægge nøgler til værdier. 279 00:13:21,025 --> 00:13:22,650 Og så jeg kunne sige noget som dette. 280 00:13:22,650 --> 00:13:26,710 Jeg kunne skabe en række ved hjælp af firkantede beslag syntaks som følger. 281 00:13:26,710 --> 00:13:30,685 $ pizzaer = firkantet beslag "ost" og derefter 282 00:13:30,685 --> 00:13:37,210 denne form for dobbeltpilen notation, 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å hvad sker der her? 285 00:13:39,060 --> 00:13:41,040 Hvad skal jeg faktisk gør? 286 00:13:41,040 --> 00:13:43,990 Jeg skaber vigtige værdi par tilknytninger. 287 00:13:43,990 --> 00:13:49,060 Så i stedet for at sige, for eksempel, pizzaer 0, stykker 1, pizzaer 2, 288 00:13:49,060 --> 00:13:52,350 Jeg kan nu sige pizzaer ost, pizzaer pepperoni, 289 00:13:52,350 --> 00:13:55,120 og henviser til de værdier forbundet med dem. 290 00:13:55,120 --> 00:13:56,970 >> Så her er vores nøgler i grønt. 291 00:13:56,970 --> 00:13:59,870 Ost, pepperoni, grøntsager, buffalo kylling. 292 00:13:59,870 --> 00:14:04,200 Her er pilen, der gør denne nøgle værdi par kortlægning. 293 00:14:04,200 --> 00:14:07,420 Og så her er de værdier på den opstilling placering. 294 00:14:07,420 --> 00:14:10,330 Så det er ligesom at sige vifte 0 er lig med 8,99. 295 00:14:10,330 --> 00:14:11,720 Nøglen er 0. 296 00:14:11,720 --> 00:14:13,600 Værdien er 8.99. 297 00:14:13,600 --> 00:14:19,370 Jeg kan nu sige vifte ost, eller i dette tilfælde pizzaer ost, ost er nøglen, 298 00:14:19,370 --> 00:14:23,340 og hvad jeg finder på pizzaer ost er 8.99. 299 00:14:23,340 --> 00:14:25,540 Det er den værdi, som jeg finde der. 300 00:14:25,540 --> 00:14:28,124 >> Så jeg kan sige ting som. $ pizza ost = 7,99. 301 00:14:28,124 --> 00:14:29,040 Sig Jeg har et salg. 302 00:14:29,040 --> 00:14:31,750 Jeg vil dis-- jeg ønsker at tabe prisen på ost pizza. 303 00:14:31,750 --> 00:14:35,620 Eller jeg kan bruge den vegetabilske pizza som en del af en tilstand, 304 00:14:35,620 --> 00:14:39,990 eller jeg kan tilføje et nyt element til min array, ligesom jeg kunne gøre tidligere. 305 00:14:39,990 --> 00:14:44,680 Jeg kan tilføje et nyt element til denne associative array med nøglen "bacon" 306 00:14:44,680 --> 00:14:49,250 og værdien 13,49. 307 00:14:49,250 --> 00:14:53,820 >> Men denne slags indfører et problem, hvis du tænker over det et øjeblik. 308 00:14:53,820 --> 00:14:55,721 Hvordan ville vi gentage gennem dette array? 309 00:14:55,721 --> 00:14:56,220 Højre? 310 00:14:56,220 --> 00:14:59,820 I C, ville vi bare have en for loop typisk, at 311 00:14:59,820 --> 00:15:03,650 ville løbe fra 0 til størrelsen af ​​arrayet minus 1. 312 00:15:03,650 --> 00:15:08,060 Arrayet har n elementer i på den gyldige indekser er 0 til n minus 1. 313 00:15:08,060 --> 00:15:11,530 Så vi kunne bruge en for-løkke til gå gennem hver enkelt element. 314 00:15:11,530 --> 00:15:13,530 >> Men det er ikke rigtig tilfældet længere, ikke? 315 00:15:13,530 --> 00:15:17,360 Nu hvor vi har nøgleværdi par kortlægninger, hvor nøglerne er ord, 316 00:15:17,360 --> 00:15:19,970 hvordan kan vi gentage over alle ordene? 317 00:15:19,970 --> 00:15:22,420 Nå, heldigvis, PHP har en måde at håndtere dette også, 318 00:15:22,420 --> 00:15:24,580 og så vi vil hoppe tilbage løkker til en anden 319 00:15:24,580 --> 00:15:30,780 at indføre en fjerde form for løkke, findes i PHP kaldes en foreach løkke. 320 00:15:30,780 --> 00:15:34,430 Og hvad en foreach løkke gør, er det er dybest set den samme idé. 321 00:15:34,430 --> 00:15:36,060 Du kan bruge det til nogen form for array. 322 00:15:36,060 --> 00:15:38,100 Men det er dybest set den samme idé som en for-løkke, 323 00:15:38,100 --> 00:15:40,750 undtagen i stedet for at bruge indekstal, bare du 324 00:15:40,750 --> 00:15:45,830 har denne underlige syntaks, hvor du kalder hver enkelt element 325 00:15:45,830 --> 00:15:47,550 et navn for så vidt angår dette sløjfe. 326 00:15:47,550 --> 00:15:49,258 >> Så i dette tilfælde, foreach ($ array som $ key). 327 00:15:49,258 --> 00:15:52,900 328 00:15:52,900 --> 00:15:56,450 Dybest set, da denne kommentar noter indersiden af ​​denne foreach loop, 329 00:15:56,450 --> 00:16:00,466 det kommer til at gå over hver eneste element i $ array, som typisk er 330 00:16:00,466 --> 00:16:03,340 vil være et associativt array, men virkelig kan være enhver form for matrix 331 00:16:03,340 --> 00:16:05,419 som du ønsker i PHP. 332 00:16:05,419 --> 00:16:07,210 Og hver gang, at der i en for-løkke du måske 333 00:16:07,210 --> 00:16:13,780 har sagt $ array-kantede parenteser $ i, kunne du bare sige $ nøgle. 334 00:16:13,780 --> 00:16:22,340 Så $ nøgle bliver et alias for hver indeks over din PHP associative array, 335 00:16:22,340 --> 00:16:23,710 og så du kan bruge det på den måde. 336 00:16:23,710 --> 00:16:25,897 >> Så for eksempel, vi har nu fik vores pizzaer array. 337 00:16:25,897 --> 00:16:27,730 Jeg har slags gemt det i hjørnet der 338 00:16:27,730 --> 00:16:31,080 så vi kan bruge det til at gøre en hurtig eksempel. 339 00:16:31,080 --> 00:16:36,420 Hvis jeg siger foreach ($ pizzaer som $ pizza), ja, hvad sker der? 340 00:16:36,420 --> 00:16:42,400 Tja, jeg har tænkt mig at gentage gennem hver enkelt element af array $ pizzaer, 341 00:16:42,400 --> 00:16:46,670 og ved at gøre, vil jeg kalde hvert element, når jeg er inde 342 00:16:46,670 --> 00:16:49,400 af kroppen af, at der for løkke, $ pizza. 343 00:16:49,400 --> 00:16:52,440 >> Så det er en slags stand-in, tilbagekaldelse, at $ pizza 344 00:16:52,440 --> 00:16:59,140 er en stand-in for at sige $ pizzaer kantede parenteser $ i 345 00:16:59,140 --> 00:17:03,370 hvis vi bruger en for-løkke, hvor vi kunne gå fra $ i = 0 til, i dette tilfælde, 346 00:17:03,370 --> 00:17:06,089 $ i = 3. 347 00:17:06,089 --> 00:17:09,780 Hvis vi ikke havde centrale værdipar her, ville det være element 0, 1, 2, 3, 348 00:17:09,780 --> 00:17:16,390 og vi ville bruge en for-løkke til at gå $ pizzaer 0, $ pizzaer 1, $ pizzaer 2, 349 00:17:16,390 --> 00:17:17,750 $ pizzaer 3. 350 00:17:17,750 --> 00:17:23,130 Så nu bare $ pizza er at erstatte for den enkelte tast. 351 00:17:23,130 --> 00:17:25,630 >> Så hvad er dette vil udskrive? 352 00:17:25,630 --> 00:17:29,030 Jeg udskrivning ud $ pizza. 353 00:17:29,030 --> 00:17:35,270 Hvad skal jeg finde at-- hvis jeg udskrive $ pizzaer, $ jeg? 354 00:17:35,270 --> 00:17:35,770 Højre? 355 00:17:35,770 --> 00:17:38,680 Hvis jeg har tænkt mig at udskrive den i'te element af pizzaer, 356 00:17:38,680 --> 00:17:40,070 hvad skal jeg printe? 357 00:17:40,070 --> 00:17:42,580 Jeg har tænkt mig at udskrive værdier ved denne placering, ikke? 358 00:17:42,580 --> 00:17:45,370 Ligesom hvis vi lavede dette i forbindelse med C, 359 00:17:45,370 --> 00:17:49,786 vi normalt ikke bruge vores iterator variabel, int i = 0, i er mindre end 3, 360 00:17:49,786 --> 00:17:52,900 i ++, at udskrive 0, 1, 2, 3. 361 00:17:52,900 --> 00:17:57,500 Vi udskrivning ud vifte 0, matrix 1, matrix 2, 3 matrix. 362 00:17:57,500 --> 00:17:59,580 Og så, hvad dette udskriver er dette. 363 00:17:59,580 --> 00:18:01,150 Det er en liste over de 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 >> Nu er en hurtig bemærkning her. 366 00:18:06,900 --> 00:18:10,900 En foreach løkke ikke nødvendigvis udskrive tingene i orden. 367 00:18:10,900 --> 00:18:12,770 Det er ikke garanteret. 368 00:18:12,770 --> 00:18:13,550 Det gør normalt. 369 00:18:13,550 --> 00:18:17,667 Det er normalt baseret på den rækkefølge, hvilke elementer tilføjes til arrayet, 370 00:18:17,667 --> 00:18:18,750 så bare huske, på. 371 00:18:18,750 --> 00:18:20,830 Det er måske ikke være i orden. 372 00:18:20,830 --> 00:18:23,930 Men en foreach løkke vil gentage på tværs af hver eneste element 373 00:18:23,930 --> 00:18:25,060 i arrayet pågældende. 374 00:18:25,060 --> 00:18:27,980 I dette tilfælde igen, den opstilling er $ pizzaer. 375 00:18:27,980 --> 00:18:32,920 >> Jeg kan ændre syntaks, men hvis Jeg vil have både nøglen og værdien. 376 00:18:32,920 --> 00:18:37,179 I stedet for at sige $ pizzaer som $ pizza, kan jeg sige dette. 377 00:18:37,179 --> 00:18:39,470 Og hvis man ser på, hvad jeg har markeret med grønt her, 378 00:18:39,470 --> 00:18:42,130 det ligner en nøgle værdi par kortlægning. 379 00:18:42,130 --> 00:18:45,980 Og så hvis du-- selvom du ikke er helt sikker på, hvad det kommer til at gøre, 380 00:18:45,980 --> 00:18:49,300 kan du sikkert gætte at $ topping går 381 00:18:49,300 --> 00:18:53,800 at være nøglen i denne sag og $ prisen bliver værdien. 382 00:18:53,800 --> 00:18:59,200 Så jeg erstatte nu hvert element på $ pizzaer som en central værdi par, 383 00:18:59,200 --> 00:19:03,900 og nu kan jeg henvise til nøglen og værdien, som med praktisk, 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" - det er en masse udskrivning foregår her-- "En hel" 386 00:19:10,170 --> 00:19:17,300 topping "pizza koster $" pris, og derefter Jeg udskrive en periode, og en omvendt skråstreg n. 387 00:19:17,300 --> 00:19:23,420 Så nu, varsel igen jeg har adgang til en nøgle, $ topping, og en værdi, $ pris. 388 00:19:23,420 --> 00:19:26,647 Så kan du gætte, hvad denne kommer til at printe ud? 389 00:19:26,647 --> 00:19:29,480 Der er en masse print udsagn, men der er kun én backslash n, 390 00:19:29,480 --> 00:19:33,410 så det kommer til at udskrive noget på en entire-- på en enkelt linje kode. 391 00:19:33,410 --> 00:19:36,965 >> Hvis jeg kan henvise til nøglen og værdien, så nu, 392 00:19:36,965 --> 00:19:39,090 i stedet for blot at kunne at udskrive de priser, 393 00:19:39,090 --> 00:19:41,330 Jeg kan udskrive noget 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 nu jeg bruger alle de keys-- ost, pepperoni, grøntsager, 396 00:19:47,150 --> 00:19:49,640 bøfler chicken-- og værdierne. 397 00:19:49,640 --> 00:19:53,980 8,99, 9,99, 10,99, 11,99 Så det er bare en anden måde 398 00:19:53,980 --> 00:19:57,840 til at gøre en foreach løkke, der i stedet for bare at give dig adgang til de værdier, 399 00:19:57,840 --> 00:20:02,950 det bare giver du-- det giver dig adgang til nøgler og værdier. 400 00:20:02,950 --> 00:20:04,411 >> Så udskrive oplysninger. 401 00:20:04,411 --> 00:20:07,410 Jeg har allerede gjort det et par forskellige måder, du måske har bemærket. 402 00:20:07,410 --> 00:20:11,080 De to funktioner, vi har primært set er print og ekko. 403 00:20:11,080 --> 00:20:14,380 Og for stort set alle virkeligheden formål, de er nøjagtig det samme. 404 00:20:14,380 --> 00:20:17,130 They're-- der er en meget subtil forskel, der er ikke engang værd 405 00:20:17,130 --> 00:20:21,130 at komme ind, men dybest set overalt du kan bruge print du kan sikkert bruge 406 00:20:21,130 --> 00:20:22,370 echo så godt. 407 00:20:22,370 --> 00:20:23,610 >> Og det er ikke de eneste to. 408 00:20:23,610 --> 00:20:26,970 PHP har en masse forskellige måder at udskrive tingene ud, 409 00:20:26,970 --> 00:20:30,520 og det har også måder at integrere variabler ind i midten af ​​strengen. 410 00:20:30,520 --> 00:20:32,860 Så husker fra C, gør du huske, hvad funktion 411 00:20:32,860 --> 00:20:37,580 vi kan bruge til at erstatte variabler ind i ting, vi ønsker at udskrive? 412 00:20:37,580 --> 00:20:40,160 Du bruger sandsynligvis dette fungere ganske meget. 413 00:20:40,160 --> 00:20:42,290 printf, ikke? 414 00:20:42,290 --> 00:20:45,290 Så dette er, hvad vi havde før inde af baggrunden for vores foreach løkke. 415 00:20:45,290 --> 00:20:48,000 Vi havde disse fem separate print udsagn, 416 00:20:48,000 --> 00:20:50,330 fordi det var den eneste måde jeg virkelig vidste på det tidspunkt 417 00:20:50,330 --> 00:20:52,450 hvordan du udskriver ud beskeder. 418 00:20:52,450 --> 00:20:59,560 Jeg vidste ikke, hvordan man kan integrere de variabel $ topping ind i min PHP kode. 419 00:20:59,560 --> 00:21:03,700 Tja, hvis jeg bare taget et vildt gæt, printf, det rent faktisk ville have fungeret. 420 00:21:03,700 --> 00:21:08,980 printf er en funktion, som jeg kan bruge i PHP, ligesom jeg kan bruge det i C. 421 00:21:08,980 --> 00:21:11,880 >> Og så noget som dette, printf, Igen, vi er bekendt med det. 422 00:21:11,880 --> 00:21:16,420 Den første% s erstattes med værdien af ​​$ topping. 423 00:21:16,420 --> 00:21:19,700 Den anden% s erstattes med værdien af ​​$ pris. 424 00:21:19,700 --> 00:21:22,630 Og så jeg interpellating, der er bare en fancy måde 425 00:21:22,630 --> 00:21:25,400 at sige jeg stikning det variabler i denne placering. 426 00:21:25,400 --> 00:21:31,000 Så jeg tilslutte $ topping hvor rødt% s er og $ pris, hvor den blå% s 427 00:21:31,000 --> 00:21:36,060 er, og så ville jeg få budskabet, "En hel ost pizza koster $ 8,99." 428 00:21:36,060 --> 00:21:37,750 >> Ikke den eneste måde jeg kan gøre det, selv om. 429 00:21:37,750 --> 00:21:39,760 Måske skulle jeg bruge denne metode. 430 00:21:39,760 --> 00:21:44,890 Dette er faktisk, hvad der er mest almindeligt kaldes variabel interpellation. 431 00:21:44,890 --> 00:21:45,690 Jeg kan bruge et ekko. 432 00:21:45,690 --> 00:21:47,737 Jeg kunne bruge en udskrift også, som vi vil se. 433 00:21:47,737 --> 00:21:48,820 Men hvad der sker her? 434 00:21:48,820 --> 00:21:51,520 >> Først og fremmest, jeg er nødt til at undslippe dollartegn. 435 00:21:51,520 --> 00:21:55,140 Fordi huske, da vi var faktisk udskrive priserne på de pizzaer, 436 00:21:55,140 --> 00:21:59,370 Jeg var faktisk formatering dem som monetære tal med et dollartegn. 437 00:21:59,370 --> 00:22:05,635 Men vi bruger dollartegn også at repræsentere variabelnavne i PHP, 438 00:22:05,635 --> 00:22:08,010 og især når jeg er anvendelse af denne fremgangsmåde af krøllede 439 00:22:08,010 --> 00:22:10,040 tandbøjle variabel interpellation metode, jeg har brug for 440 00:22:10,040 --> 00:22:13,490 at undslippe min dollar tegn, så det ikke gør tror jeg taler om en variabel. 441 00:22:13,490 --> 00:22:16,920 Det kommer til at faktisk, bogstaveligt udskrive et dollartegn. 442 00:22:16,920 --> 00:22:19,530 >> Så slags analogize det til hvad du ser i slutningen der. 443 00:22:19,530 --> 00:22:22,832 Det gør faktisk ikke print omvendt skråstreg n, ikke? 444 00:22:22,832 --> 00:22:24,290 Det udskriver en ny linje karakter. 445 00:22:24,290 --> 00:22:26,750 Dette is-- det kommer ikke til at print omvendt skråstreg dollartegn, 446 00:22:26,750 --> 00:22:30,130 det vil udskrive bare et dollartegn karakter. 447 00:22:30,130 --> 00:22:30,640 Samme idé. 448 00:22:30,640 --> 00:22:32,760 Flygte sekvenser, hvad disse ting kaldes. 449 00:22:32,760 --> 00:22:37,080 >> Men bemærk, at jeg ikke gør nogen form for% s udskiftninger, 450 00:22:37,080 --> 00:22:40,050 Jeg er bare bogstaveligt tilslutte i disse variabler. 451 00:22:40,050 --> 00:22:45,110 Og så i denne-- hvad der ville ske her er, at værdien af ​​$ topping-- igen, 452 00:22:45,110 --> 00:22:48,390 bare tråd med, hvad vi har været taler om så far-- ost ville få 453 00:22:48,390 --> 00:22:49,720 sluttet der. 454 00:22:49,720 --> 00:22:54,780 Og $ prisen ville være, hvad værdi på pizzaer, kantede parenteser, 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å ville det også udskrive "En hel ost pizza koster $ 8,99." 457 00:23:01,860 --> 00:23:05,160 Og som jeg sagde, jeg kunne bruge udskrive her i stedet for ekko, 458 00:23:05,160 --> 00:23:08,040 og funktionaliteten være temmelig meget nøjagtig det samme. 459 00:23:08,040 --> 00:23:09,660 Det ville udskrive det samme. 460 00:23:09,660 --> 00:23:12,680 >> Der er en anden måde at gøre det, og dette er en anden fordel 461 00:23:12,680 --> 00:23:14,710 af PHP arbejder med strygere. 462 00:23:14,710 --> 00:23:17,130 Vi kan gøre strengen sammenkædning. 463 00:23:17,130 --> 00:23:19,660 Vi kunne gøre dette i C, også, ved hjælp af en funktion kaldet strcat, 464 00:23:19,660 --> 00:23:21,180 men igen, vi var nødt til at kalder adskilte funktioner. 465 00:23:21,180 --> 00:23:22,640 Det var hele dette rod at gøre. 466 00:23:22,640 --> 00:23:24,590 Vi var nødt til pund-omfatter string.h. 467 00:23:24,590 --> 00:23:25,780 Det var en produktion, ikke? 468 00:23:25,780 --> 00:23:30,070 Men nu kan jeg bare bruge denne dot operator til at sammenkæde strenge sammen. 469 00:23:30,070 --> 00:23:34,910 >> Så jeg sammenkæde "helhed" og derefter uanset værdien af ​​$ topping er, 470 00:23:34,910 --> 00:23:38,860 og derefter en anden streng, "pizza omkostninger $" 471 00:23:38,860 --> 00:23:42,340 og derefter sammenkæde uanset værdien af ​​$ prisen er, 472 00:23:42,340 --> 00:23:45,670 og derefter i slutningen jeg tacking på perioden backslash n. 473 00:23:45,670 --> 00:23:47,926 Og så dette ville også udskrive "helhed" - igen, 474 00:23:47,926 --> 00:23:50,550 hvis vi taler om den første element i denne pizzaer 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, igen, med de $ topping og $ pris substituerende 477 00:24:01,260 --> 00:24:06,580 for hvad vi havde angivet i vores foreach loop som nøglen værdi parret kortlægning. 478 00:24:06,580 --> 00:24:08,050 >> PHP kan håndtere funktioner. 479 00:24:08,050 --> 00:24:11,250 Funktioner var slags integreret til C, som vi så. 480 00:24:11,250 --> 00:24:14,870 Ligesom variabler, behøver vi ikke at angive returtypen af ​​funktionen, 481 00:24:14,870 --> 00:24:16,350 fordi det er virkelig ligegyldigt. 482 00:24:16,350 --> 00:24:18,660 Og vi har ikke specificere datatyper af nogen parametre, 483 00:24:18,660 --> 00:24:21,410 fordi de ikke rigtig sag, ligesom vi har set i PHP. 484 00:24:21,410 --> 00:24:24,510 Hver funktion indføres med funktionen nøgleordet. 485 00:24:24,510 --> 00:24:27,920 Det er, hvordan vi angiver at PHP at hvad vi taler om, er en funktion. 486 00:24:27,920 --> 00:24:29,720 >> Og vi behøver ikke at behandle vigtigste overhovedet, 487 00:24:29,720 --> 00:24:33,690 fordi tolken, PHP tolken, arbejder fra top til bund, 488 00:24:33,690 --> 00:24:34,190 uanset. 489 00:24:34,190 --> 00:24:35,640 Hvis det ser du kan gøre en funktion opkald, det vil 490 00:24:35,640 --> 00:24:37,850 gå finde den funktion opkald, selv om det kommer senere. 491 00:24:37,850 --> 00:24:40,360 Men det kommer til at læse fra top til bund, så behøver vi ikke at angive, 492 00:24:40,360 --> 00:24:41,500 her er, hvor du starter. 493 00:24:41,500 --> 00:24:46,700 Du starter på linie 1 af din PHP og arbejde ned derfra. 494 00:24:46,700 --> 00:24:49,690 >> Så her er, hvordan vi ville skabe en funktion kaldet hard_square. 495 00:24:49,690 --> 00:24:54,100 Det tager tilsyneladende en parameter, som jeg ringer $ x. 496 00:24:54,100 --> 00:24:58,424 Denne funktion er kompliceret bare at illustrere forskellige ting. 497 00:24:58,424 --> 00:24:59,590 Vi har stadig retur værdier. 498 00:24:59,590 --> 00:25:00,870 Jeg bruger en for-løkke her. 499 00:25:00,870 --> 00:25:04,970 Men det er egentlig bare, hvad det beløber sig til er kun $ x gange $ x. 500 00:25:04,970 --> 00:25:10,520 Hvad jeg faktisk gør, er blot at tilføje x til 0 x gange eller $ x til nul $ x gange. 501 00:25:10,520 --> 00:25:15,850 Men det er effektivt nøjagtig samme som at gange $ x gange $ x. 502 00:25:15,850 --> 00:25:18,700 Jeg kan stadig returnere en værdi, i dette tilfælde $ result, 503 00:25:18,700 --> 00:25:22,060 og jeg har lavet en funktion i PHP. 504 00:25:22,060 --> 00:25:24,160 >> Her er hvordan du kan bruge det i sammenhæng. 505 00:25:24,160 --> 00:25:26,020 Så måske er jeg inde i nogle PHP-fil. 506 00:25:26,020 --> 00:25:29,240 Læg mærke i blå der, at Jeg har brugt mine PHP afgrænsere, 507 00:25:29,240 --> 00:25:31,010 vinkelbeslag spørgsmålstegn php. 508 00:25:31,010 --> 00:25:35,180 Imellem disse er alle PHP, som jeg vil skrive. 509 00:25:35,180 --> 00:25:37,840 Så jeg tilsyneladende vil get-- Jeg har tænkt mig at bede brugeren 510 00:25:37,840 --> 00:25:41,550 at give mig et nummer, butik, variabel, butik i denne variabel $ x, 511 00:25:41,550 --> 00:25:43,320 uanset hvad de gav mig. 512 00:25:43,320 --> 00:25:48,590 Så jeg har tænkt mig at gentage hard_square af denne værdi, 513 00:25:48,590 --> 00:25:50,370 og tilsyneladende vil at hæfte på en ny linje 514 00:25:50,370 --> 00:25:53,590 så godt, og så senere på vil jeg definere funktionen hard_square så 515 00:25:53,590 --> 00:25:55,550 at når jeg gør ringe til hard_square, 516 00:25:55,550 --> 00:25:58,160 det ved, hvad jeg taler om. 517 00:25:58,160 --> 00:26:00,705 >> Nu kunne jeg også gøre noget som dette. 518 00:26:00,705 --> 00:26:02,050 Dette er en smule anderledes. 519 00:26:02,050 --> 00:26:04,190 Det er næsten præcis det samme som hvad vi så før, 520 00:26:04,190 --> 00:26:08,400 undtagen i stedet for at sige bare $ x der som parameter til hard_square, 521 00:26:08,400 --> 00:26:11,730 Jeg siger $ x = 10. 522 00:26:11,730 --> 00:26:14,330 Så dette er et eksempel på defensiv programmering, 523 00:26:14,330 --> 00:26:17,070 bevogtning dine programmer mod ondsindede brugere. 524 00:26:17,070 --> 00:26:20,020 >> Dette er en måde at gøre nogle fejl kontrol af, at vi ikke rigtig 525 00:26:20,020 --> 00:26:24,670 har som en mulighed i C. Vi kunne aldrig angive standardværdien for noget. 526 00:26:24,670 --> 00:26:27,010 Vi altid havde til at kontrollere om, for eksempel, 527 00:26:27,010 --> 00:26:30,820 hvis vi foretaget et kald til getString, var det mest korrekt, hvis umiddelbart efter, at vi 528 00:26:30,820 --> 00:26:33,300 kontrolleret, at, vi kontrollerede om strengen 529 00:26:33,300 --> 00:26:35,504 at brugeren gav os er ikke lig med nul, 530 00:26:35,504 --> 00:26:37,920 fordi vi ikke ønsker at starte arbejder med en null streng. 531 00:26:37,920 --> 00:26:39,670 >> Her, det er en måde at beskytte sig mod det. 532 00:26:39,670 --> 00:26:43,480 Hvis brugeren ikke giver os noget en eller anden måde, hvad skal vi gøre? 533 00:26:43,480 --> 00:26:46,080 Nå, vil vi bare sige, hvad de ikke give os, 534 00:26:46,080 --> 00:26:47,705 vi bare kommer til at tilslutte 10 i stedet. 535 00:26:47,705 --> 00:26:52,030 Så hvis de ikke give os en værdi, bare bruge 10 som standard. Og så her, 536 00:26:52,030 --> 00:26:53,940 bemærke, at jeg gør Et opkald til hard_square, 537 00:26:53,940 --> 00:26:55,980 men der er ingen prompt til brugeren, ikke? 538 00:26:55,980 --> 00:26:57,540 Jeg er bare at gøre en tom opkald. 539 00:26:57,540 --> 00:27:00,860 >> Men min funktion hard_square forventer en parameter. 540 00:27:00,860 --> 00:27:02,222 Hvad er dette vil udskrive? 541 00:27:02,222 --> 00:27:03,680 Det kommer til at udskrive 100, ikke? 542 00:27:03,680 --> 00:27:05,720 Fordi brugeren ikke giv mig noget. 543 00:27:05,720 --> 00:27:08,970 Og så er jeg bare kommer til at påtage sig at 10-- 10 er standardværdien. 544 00:27:08,970 --> 00:27:13,760 Og så det ville udskrive ud 100 på sin egen linje. 545 00:27:13,760 --> 00:27:16,390 >> PHP filer behøver ikke at være bare en enkelt fil. 546 00:27:16,390 --> 00:27:19,480 Du kan kombinere flere filer sammen, ligesom du kan i C. Den måde 547 00:27:19,480 --> 00:27:24,330 vi gjorde det i C var typisk til at gøre en # include at få header filer trak. 548 00:27:24,330 --> 00:27:26,180 Vi gør ikke det i PHP. 549 00:27:26,180 --> 00:27:29,110 Vi gør noget, der hedder require_once. 550 00:27:29,110 --> 00:27:33,360 Og så er der hele denne ting, hvad er det __dir__? 551 00:27:33,360 --> 00:27:36,510 Det er bare en speciel variabel eller særlige konstant, 552 00:27:36,510 --> 00:27:39,030 virkelig, der angiver, hvad din nuværende mappe er. 553 00:27:39,030 --> 00:27:41,320 Og så det kommer til at se i din nuværende mappe 554 00:27:41,320 --> 00:27:44,900 efter en fil kaldet cs50.php i dette eksempel her, 555 00:27:44,900 --> 00:27:50,490 og det kommer til at holde denne fil i toppen af ​​din PHP-program, 556 00:27:50,490 --> 00:27:56,980 forudsat at du sætter kræve når linje i toppen af ​​din PHP-fil. 557 00:27:56,980 --> 00:28:01,474 >> Så PHP anvendes primært, men ikke udelukkende anvendes, 558 00:28:01,474 --> 00:28:03,140 som et sprog til web-baserede programmer. 559 00:28:03,140 --> 00:28:05,270 Det er virkelig, hvordan det kom til at være. 560 00:28:05,270 --> 00:28:06,980 Men det er en fuld sprog, som vi har set. 561 00:28:06,980 --> 00:28:10,105 Vi har set stort set alle de ting at det kan gøre det der ligner C, 562 00:28:10,105 --> 00:28:13,290 og det kan gøre en pokkers af meget mere end det. 563 00:28:13,290 --> 00:28:16,950 >> Men fordi det er en fuldstændig sprog, og vi kan gøre kommandolinje programmering i det. 564 00:28:16,950 --> 00:28:18,630 Vi kan køre kommandolinjeprogrammer. 565 00:28:18,630 --> 00:28:22,580 Alle, der er påkrævet for at køre en kommando line program, der er skrevet i PHP 566 00:28:22,580 --> 00:28:24,260 er, at du har et PHP tolk. 567 00:28:24,260 --> 00:28:27,460 Så det er lidt analogt med have en compiler på dit system 568 00:28:27,460 --> 00:28:31,100 hvis du ønsker at kompilere din C-kode at gøre det til eksekverbare filer. 569 00:28:31,100 --> 00:28:33,810 Du skal have en PHP tolk der findes på dit system 570 00:28:33,810 --> 00:28:37,330 så du kan fortolke PHP-filer. 571 00:28:37,330 --> 00:28:40,370 >> Forudsat, at du gør, og som regel denne tolk kaldes PHP, 572 00:28:40,370 --> 00:28:44,300 og det er som regel følger med de fleste downloads eller installationer af PHP 573 00:28:44,300 --> 00:28:47,430 at du kan få online, og helt sikkert navnet på PHP fortolkeren 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 skal gøre er at skrive php fil. 576 00:28:51,819 --> 00:28:53,610 Og hvad din programmets kommer til at gøre, er at det er 577 00:28:53,610 --> 00:28:55,360 kommer til at løbe gennem tolken, er det 578 00:28:55,360 --> 00:28:58,040 kommer til at ignorere alt, der er ikke i mellem pågældende mark-- 579 00:28:58,040 --> 00:29:03,160 eller, vinkel beslag spørgsmålstegn php, PHP afgrænsere, og printe det ud, 580 00:29:03,160 --> 00:29:07,660 og det vil fortolke og udføre kode inde i dine PHP adskillere. 581 00:29:07,660 --> 00:29:12,850 >> Så lad os pop over til CS50 IDE og have et kig på et par af PHP-filer, 582 00:29:12,850 --> 00:29:19,850 kører et par PHP-filer, i kommandolinje interface CS50 IDE. 583 00:29:19,850 --> 00:29:22,100 Så her er vi i CS50 IDE, og jeg har taget den frihed 584 00:29:22,100 --> 00:29:25,800 for at åbne en fil kaldet hello1.php. 585 00:29:25,800 --> 00:29:29,920 Og tilsyneladende, indholdet af denne fil er blot PHP afgrænsere der, 586 00:29:29,920 --> 00:29:32,220 og i mellem, ekko ("Hej, verden"). 587 00:29:32,220 --> 00:29:34,710 Dette er en temmelig simpel PHP-program. 588 00:29:34,710 --> 00:29:37,670 Jeg bare at rulle ned til min terminalvindue her, 589 00:29:37,670 --> 00:29:44,320 og jeg har tænkt mig at skrive php hello1.php, tryk enter. 590 00:29:44,320 --> 00:29:44,950 Hej Verden. 591 00:29:44,950 --> 00:29:48,110 Det er sandsynligvis, hvad vi var forventer det at gøre, ikke? 592 00:29:48,110 --> 00:29:51,140 >> Lad os gå op og tage andet se på et program. 593 00:29:51,140 --> 00:29:52,924 hello2.php. 594 00:29:52,924 --> 00:29:55,090 Stort set de samme ting, ikke meget foregår her. 595 00:29:55,090 --> 00:29:57,190 Denne gang dog vil jeg bede brugeren til at give mig deres navne. 596 00:29:57,190 --> 00:29:59,290 Jeg bruger at readline funktion igen. 597 00:29:59,290 --> 00:30:01,340 $ name = readline. 598 00:30:01,340 --> 00:30:03,070 Det er den hurtige, "Hvad er dit navn?" 599 00:30:03,070 --> 00:30:04,880 >> Tilsyneladende er jeg udskrivning det på sin egen linje. 600 00:30:04,880 --> 00:30:07,220 Og så, så linjen nedenfor der vil være en hurtig 601 00:30:07,220 --> 00:30:08,750 hvor brugeren kan indtaste deres navn. 602 00:30:08,750 --> 00:30:12,030 Og så er jeg bruger en lille smule variabel interpellation her på linje 3 603 00:30:12,030 --> 00:30:14,780 at udskrive "Hello" og uanset brugeren skriver. 604 00:30:14,780 --> 00:30:22,040 Så dette er analog med at sige, Hej, komma,% s, hvis vi brugte printf i C. 605 00:30:22,040 --> 00:30:24,910 >> Så lad os gå og fortolke dette program. 606 00:30:24,910 --> 00:30:27,400 Så igen, vil jeg rulle ned til min terminalvindue. 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 Hvad er dit navn? 610 00:30:33,820 --> 00:30:35,490 Doug. 611 00:30:35,490 --> 00:30:36,526 Hej, Doug. 612 00:30:36,526 --> 00:30:39,440 Jeg har også en anden fil kaldet hello3.php. 613 00:30:39,440 --> 00:30:42,850 Jeg har tænkt mig at rydde min skærm med Kontrol L, 614 00:30:42,850 --> 00:30:46,210 og jeg har tænkt mig at udføre det. 615 00:30:46,210 --> 00:30:47,640 Hvad er dit navn? 616 00:30:47,640 --> 00:30:49,020 Doug. 617 00:30:49,020 --> 00:30:49,780 Hej, Doug. 618 00:30:49,780 --> 00:30:56,540 Så adfærd er identisk med hello2.php, men hvorfor er det hello3.php? 619 00:30:56,540 --> 00:30:58,040 >> Nå, her er forskellen. 620 00:30:58,040 --> 00:31:00,620 I dette tilfælde skal meddelelse at der på linje 1 her, 621 00:31:00,620 --> 00:31:04,270 Jeg har noget, der ikke er i mellem PHP skilletegn. 622 00:31:04,270 --> 00:31:07,760 Jeg er bare udskrive out-- eller jeg lige har skrevet: "Hvad er dit navn?" 623 00:31:07,760 --> 00:31:12,060 Når PHP fortolkeren ser dette, er det har ingen idé om, hvordan man skal fortolke det som PHP, 624 00:31:12,060 --> 00:31:15,060 og så i stedet for at fejle, det bare at gå at spytte det ud. 625 00:31:15,060 --> 00:31:19,010 >> Så mærke på linje 3 nu, min opfordring til readline, er der ingen hurtig længere. 626 00:31:19,010 --> 00:31:21,750 Jeg er bare faktisk går at-- når PHP fortolkeren ser dette, 627 00:31:21,750 --> 00:31:23,400 det kommer til at udskrive "Hvad er dit navn?" 628 00:31:23,400 --> 00:31:25,941 Så ser det, åh, OK, here's-- alt andet vil være 629 00:31:25,941 --> 00:31:29,970 tolkes som PHP, så det er derfor det virker. 630 00:31:29,970 --> 00:31:34,990 Jeg behøver ikke at nødvendigvis bede brugeren at-- indersiden af ​​readline, 631 00:31:34,990 --> 00:31:37,490 Jeg kan bare have det uden af PHP afgrænsere 632 00:31:37,490 --> 00:31:41,490 og tillade tolken at bare printe den ud for mig. 633 00:31:41,490 --> 00:31:45,364 >> Så du behøver ikke faktisk kun har at have et sæt af PHP adskillere 634 00:31:45,364 --> 00:31:46,030 i dit program. 635 00:31:46,030 --> 00:31:49,887 Du kan faktisk få flere af dem, åbning og lukning af dem efter behov. 636 00:31:49,887 --> 00:31:51,720 Så lad os tage et kig på et par programmer 637 00:31:51,720 --> 00:31:55,070 i CS50 IDE, hvor vi illustrere denne idé om at have 638 00:31:55,070 --> 00:31:58,376 flere sæt afgrænset PHP. 639 00:31:58,376 --> 00:32:02,010 >> OK, så jeg har åbnet en fil her kaldes add1.php. 640 00:32:02,010 --> 00:32:03,390 Og læg mærke til, hvad der sker her. 641 00:32:03,390 --> 00:32:08,077 Lige som før, jeg har en enkelt PHP sæt adskillere. 642 00:32:08,077 --> 00:32:10,660 Jeg har tænkt mig at udskrive meddelelsen "Giv mig et nummer." 643 00:32:10,660 --> 00:32:13,394 Så jeg har tænkt mig at læse en linje og gemme det i variablen $ num1. 644 00:32:13,394 --> 00:32:14,810 Så jeg har tænkt mig at udskrive igen. 645 00:32:14,810 --> 00:32:16,310 Giv mig et andet nummer. 646 00:32:16,310 --> 00:32:20,450 Læs en linje fra brugeren, butikken hvad de har skrevet i i $ num2. 647 00:32:20,450 --> 00:32:23,980 Tilføj dem sammen og opbevare, at resultere i en variabel kaldet $ sum, 648 00:32:23,980 --> 00:32:26,180 og derefter udskrive, "The Summen af ​​disse to tal 649 00:32:26,180 --> 00:32:29,254 er, "og derefter interpellate der variablen $ sum. 650 00:32:29,254 --> 00:32:31,170 Så lad os bare køre dette gennem tolken 651 00:32:31,170 --> 00:32:33,720 at bekræfte, at dette er, hvad vi forventer. 652 00:32:33,720 --> 00:32:37,540 php add1.php. 653 00:32:37,540 --> 00:32:38,665 Giv mig et nummer, 3. 654 00:32:38,665 --> 00:32:40,410 Giv mig et andet nummer, 4. 655 00:32:40,410 --> 00:32:43,370 Summen af ​​disse to tal er 7. 656 00:32:43,370 --> 00:32:45,030 Det er 3 plus 4. 657 00:32:45,030 --> 00:32:45,530 OK? 658 00:32:45,530 --> 00:32:47,770 Så noget forfærdeligt fancy der. 659 00:32:47,770 --> 00:32:51,080 >> Og lad os nu åbne op add2.php. 660 00:32:51,080 --> 00:32:54,460 Her, jeg har et par PHP afgrænset sæt der, ikke? 661 00:32:54,460 --> 00:32:59,107 Linje 1, 3-- linjerne 1 og 3 har ingen PHP afgrænsere. 662 00:32:59,107 --> 00:33:00,940 Så når tolken ser dem, er det bare 663 00:33:00,940 --> 00:33:03,220 kommer til at spytte ud af præcis hvad jeg har skrevet der. 664 00:33:03,220 --> 00:33:05,011 Så det er, hvor jeg er gør alle mine spørge. 665 00:33:05,011 --> 00:33:11,220 På linie 2 og 4, ser vi meget velkendt $? php slags afgrænsere, 666 00:33:11,220 --> 00:33:15,210 så disse to linjer er kommer til at udføre som PHP. 667 00:33:15,210 --> 00:33:18,270 Og så på linie 5, jeg har denne underlige ting lige her, lige? 668 00:33:18,270 --> 00:33:20,480 Denne vinkel beslag spørgsmålstegn lighedstegnet. 669 00:33:20,480 --> 00:33:22,660 Jeg vil endda zoome ind lidt længere. 670 00:33:22,660 --> 00:33:29,270 Du kan se, dette er, hvad jeg er taler om lige der, denne $? =. 671 00:33:29,270 --> 00:33:33,420 >> Det viser sig, at det er så almindeligt, at grunden til, at vi åbner et sæt PHP 672 00:33:33,420 --> 00:33:36,055 afgrænsere er at udskrive en værdi. 673 00:33:36,055 --> 00:33:37,430 Og det er alt, hvad vi vil gøre. 674 00:33:37,430 --> 00:33:39,220 Men der er endda stenografi for det. 675 00:33:39,220 --> 00:33:46,490 $? = Er PHP forkortelse for at sige noget som $? php echo summen 676 00:33:46,490 --> 00:33:48,350 af num1 og num2. 677 00:33:48,350 --> 00:33:51,900 Så dette er blot en anden forkortelse for det. 678 00:33:51,900 --> 00:33:55,550 >> Så hvis jeg køre dette program, php add2.php. 679 00:33:55,550 --> 00:33:57,530 Jeg vil zoome ned en lille smule. 680 00:33:57,530 --> 00:33:59,000 Giv mig et nummer, 4. 681 00:33:59,000 --> 00:34:00,350 Giv mig et andet nummer. 682 00:34:00,350 --> 00:34:04,650 Og da jeg ikke virkelig bekymrer sig om datatyper i PHP, kan jeg sige 4.8. 683 00:34:04,650 --> 00:34:07,160 Summen af ​​disse to tal er 8,8. 684 00:34:07,160 --> 00:34:10,179 Denne funktion opfører sig temmelig meget nøjagtig det samme som vi ville forvente, 685 00:34:10,179 --> 00:34:10,989 samt. 686 00:34:10,989 --> 00:34:13,114 Og jeg har endnu et åbnet heroppe kaldes dice.php. 687 00:34:13,114 --> 00:34:25,625 688 00:34:25,625 --> 00:34:26,250 Prøve dette igen. 689 00:34:26,250 --> 00:34:29,429 690 00:34:29,429 --> 00:34:33,280 Jeg har en mere her kaldes dice1.php, som også, se 691 00:34:33,280 --> 00:34:37,440 har denne vinkel beslag spørgsmål markere lighedstegn notation derinde, 692 00:34:37,440 --> 00:34:40,659 men bemærke, at jeg i dette tilfælde er kalde funktionen rand, hvilket som du 693 00:34:40,659 --> 00:34:42,790 kunne forvente genererer et tilfældigt tal. 694 00:34:42,790 --> 00:34:46,889 "Du rullede en", og det kommer til at beregne nogle tilfældige tal, mod 6 + 695 00:34:46,889 --> 00:34:47,389 1. 696 00:34:47,389 --> 00:34:49,989 Så det vil give mig nummer i området fra 1 til 6. 697 00:34:49,989 --> 00:34:53,040 >> Husk, at mod 6 ville give mig et tal i intervallet fra 0 til 5, 698 00:34:53,040 --> 00:34:56,630 men hvis jeg simulerer terninger ruller, hvilket er, hvad jeg laver her, 699 00:34:56,630 --> 00:35:00,040 Jeg ønsker ikke disse terninger at gå fra 0 til 5, jeg vil have terninger, der går fra 1 til 6. 700 00:35:00,040 --> 00:35:02,800 Og så er det en måde at få mig i området fra 1 til 6. 701 00:35:02,800 --> 00:35:04,720 Jeg gør dette to gange. 702 00:35:04,720 --> 00:35:08,630 Så tilsyneladende jeg rullende to terninger i dette program. 703 00:35:08,630 --> 00:35:15,210 >> Så jeg vil rydde min skærm, og jeg vil gøre php dice1.php. 704 00:35:15,210 --> 00:35:16,640 Du rullede en 4 og en 2. 705 00:35:16,640 --> 00:35:19,156 Og hvis jeg kører programmet igen, du rullede en 5 og en 5. 706 00:35:19,156 --> 00:35:21,780 Så hver gang jeg kører programmet, Jeg får forskellige tal, 707 00:35:21,780 --> 00:35:24,280 fordi hver gang jeg gør så, det starte forfra. 708 00:35:24,280 --> 00:35:27,250 Det kommer til at generere en ny sæt af tilfældige tal til mig. 709 00:35:27,250 --> 00:35:29,790 >> Så hvis vi er vant til kørende programmer fra C, 710 00:35:29,790 --> 00:35:32,520 vi er vant til at skrive ./ den navnet på et program, ikke? 711 00:35:32,520 --> 00:35:35,090 Det er, hvordan vi har gjort alt af vores programmer i C hidtil. 712 00:35:35,090 --> 00:35:37,555 Vi kan gøre dette i PHP såvel ved at tilføje noget, der hedder 713 00:35:37,555 --> 00:35:40,026 en shebang til toppen af ​​vores PHP-fil. 714 00:35:40,026 --> 00:35:41,400 Jeg ved, det er sådan en fjollet 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 første to tegn der. 717 00:35:46,300 --> 00:35:50,030 Husk vi kalder udråbstegn ofte et brag i datalogi. 718 00:35:50,030 --> 00:35:51,690 Det kan også være for skarp bang. 719 00:35:51,690 --> 00:35:53,273 Der er et par måder at fortolke den. 720 00:35:53,273 --> 00:35:57,320 Men det er dybest set en særlig slags af befaler, at PHP tolk 721 00:35:57,320 --> 00:36:00,160 forstår som, åh, jeg vil dig til at udføre dette program, 722 00:36:00,160 --> 00:36:05,250 som tilsyneladende / bruger / bin / php, som er faktisk hvor PHP fortolkeren 723 00:36:05,250 --> 00:36:08,590 specifikt bor på vores system. 724 00:36:08,590 --> 00:36:12,530 Så it's-- hvad sker her er tolken forstår, åh, 725 00:36:12,530 --> 00:36:17,270 Jeg tilsyneladende skulle bruge i dette program til at køre denne fil. 726 00:36:17,270 --> 00:36:20,010 Og så det giver dig at springe over trinnet 727 00:36:20,010 --> 00:36:22,979 for at skulle sige php something.php. 728 00:36:22,979 --> 00:36:25,020 Der er en anden fangst her, nemlig at hvis vi 729 00:36:25,020 --> 00:36:27,320 ønsker, at vores programmer til fungerer som forventet, vi 730 00:36:27,320 --> 00:36:30,220 nødt til at gøre noget, der hedder en fil tilladelse ændring. 731 00:36:30,220 --> 00:36:33,380 Og vi vil go-- og vi taler lidt lidt mere om fil tilladelse ændringer 732 00:36:33,380 --> 00:36:37,550 i vores video på MVC, men er det tilstrækkeligt at sige, at dette er, hvad du skal gøre 733 00:36:37,550 --> 00:36:42,760 for at gøre din php filer eksekverbare. 734 00:36:42,760 --> 00:36:49,330 Så lad os tage et kig på dette som vores endelige eksempel ovre i CS50 IDE. 735 00:36:49,330 --> 00:36:53,910 >> Så her i IDE har jeg to filer i dette PHP bibliotek, der synes ikke at være 736 00:36:53,910 --> 00:36:55,310 kaldet php. 737 00:36:55,310 --> 00:36:58,170 Jeg har en funktion kaldet add-- Jeg har en fil kaldet ADD 3 738 00:36:58,170 --> 00:37:00,650 og en fil kaldet dice2. 739 00:37:00,650 --> 00:37:03,680 Så lad os tage et hurtigt se og åbne ADD 3. 740 00:37:03,680 --> 00:37:08,300 Og som du kan se, i begyndelsen af min fil jeg har denne molevitten, ikke? 741 00:37:08,300 --> 00:37:11,420 Denne hash mærke udråbstegn. 742 00:37:11,420 --> 00:37:15,115 Nu, vil du også måske Bemærk, at en eller anden grund, 743 00:37:15,115 --> 00:37:16,990 Jeg har ikke nogen syntaks fremhæve mere, 744 00:37:16,990 --> 00:37:20,198 og det er det, jeg hentydede til tidligere, som var, at hvis jeg ikke nævne min fil 745 00:37:20,198 --> 00:37:23,040 php, jeg har ikke fordelen af syntaksfremhævning længere. 746 00:37:23,040 --> 00:37:26,220 Denne fil er blot kaldes ADD 3. 747 00:37:26,220 --> 00:37:30,960 Så jeg kan køre det senere med ./ ADD 3 og ikke ./ add3.php. 748 00:37:30,960 --> 00:37:33,680 >> Så den reason-- det stadig fint, det er stadig gyldige PHP, 749 00:37:33,680 --> 00:37:37,000 men det er ikke syntaks i fremhævet, fordi denne fil er ikke kaldt something.php. 750 00:37:37,000 --> 00:37:41,580 Det er den eneste reelle forskel her, plus molevitten. 751 00:37:41,580 --> 00:37:45,170 Så lad os se hvad der sker, når Jeg prøver og køre dette program. 752 00:37:45,170 --> 00:37:50,780 ./ ADD 3, ligesom jeg ville gøre med C. Bash. 753 00:37:50,780 --> 00:37:53,190 ./ ADD 3 tilladelse nægtet. 754 00:37:53,190 --> 00:37:55,390 Dette er, hvad du vil for at se, hvis du glemmer 755 00:37:55,390 --> 00:37:59,280 at bruge chmod-kommandoen til at ændre tilladelserne til filen. 756 00:37:59,280 --> 00:38:03,845 >> Da det viser sig, regelmæssig PHP filer kan ikke bare blive henrettet. 757 00:38:03,845 --> 00:38:06,970 De kan fortolkes, men vi er gør noget lidt anderledes her. 758 00:38:06,970 --> 00:38:07,761 Vi udfører det. 759 00:38:07,761 --> 00:38:12,970 Og så jeg har brug for at tilføje tilladelse af udførelse, chmod a + x for at ADD 3. 760 00:38:12,970 --> 00:38:15,680 Så kan jeg sige ./ ADD 3. 761 00:38:15,680 --> 00:38:16,860 Giv mig et nummer. 762 00:38:16,860 --> 00:38:18,060 5, 6. 763 00:38:18,060 --> 00:38:20,490 Summen af ​​disse to tal er 11. 764 00:38:20,490 --> 00:38:26,530 >> På samme måde har jeg allerede chmoded 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 en 5 og en 4, og så videre. 766 00:38:31,260 --> 00:38:33,680 >> Så det er stort set den idé om en PHP syntaks, ikke? 767 00:38:33,680 --> 00:38:35,221 Der er meget at komme igennem, jeg kender. 768 00:38:35,221 --> 00:38:39,160 Men forhåbentlig du har set nu, at PHP er egentlig ikke så forskellig fra C 769 00:38:39,160 --> 00:38:43,670 og virkelig giver os mulighed at tage tingene op et hak eller to. 770 00:38:43,670 --> 00:38:48,230 Vi har ikke virkelig nødt til at bekymre sig for meget om-- vi ikke rigtig 771 00:38:48,230 --> 00:38:51,605 at bekymre sig for meget om de lavt niveau detaljer vi 772 00:38:51,605 --> 00:38:52,980 måtte bekymre sig om med C, ikke? 773 00:38:52,980 --> 00:38:56,170 Vi kan fokusere på højere niveau ting, PHP 774 00:38:56,170 --> 00:39:01,090 tillader os at gøre, og for at tage til givet, at det vil arbejde for os. 775 00:39:01,090 --> 00:39:04,350 Så det giver os mulighed for nu, overgang fra C til PHP, 776 00:39:04,350 --> 00:39:08,280 at lave programmer, der er meget mere komplekse og måske en meget mere robust. 777 00:39:08,280 --> 00:39:13,070 >> Så jeg håber du har det sjovt arbejdsmiljø med PHP, og jeg er Doug Lloyd. 778 00:39:13,070 --> 00:39:15,050 Det er CS50. 779 00:39:15,050 --> 00:39:17,637