1 00:00:00,000 --> 00:00:05,340 2 00:00:05,340 --> 00:00:07,370 >> DOUG LLOYD: Så vi har gjort en hel del arbete i C, 3 00:00:07,370 --> 00:00:09,536 och C är en riktigt cool språk eftersom det ger dig 4 00:00:09,536 --> 00:00:12,840 förmågan att dyka verkligen låg nivå i dina program. 5 00:00:12,840 --> 00:00:16,810 Vi får göra saker som verkligen minuten som manipulera 6 00:00:16,810 --> 00:00:18,800 enskilda byte minne. 7 00:00:18,800 --> 00:00:21,420 Minns att pekare verkligen tillåter oss att flexibilitet. 8 00:00:21,420 --> 00:00:25,260 >> Men behöver vi alltid ha att finkorniga detaljnivå 9 00:00:25,260 --> 00:00:26,820 i våra program? 10 00:00:26,820 --> 00:00:28,210 Förmodligen inte, eller hur? 11 00:00:28,210 --> 00:00:30,376 Och om vi ska ha en kompromiss mellan att vara 12 00:00:30,376 --> 00:00:32,911 kunna göra riktigt, riktigt minuten saker och riktigt, riktigt 13 00:00:32,911 --> 00:00:35,910 stora saker som vi inte behöver tänka om vi inte måste införa 14 00:00:35,910 --> 00:00:40,290 dessa riktigt stora idéer förekommande de är redan byggt in oss, 15 00:00:40,290 --> 00:00:43,980 i allmänhet för att bygga stora program eller stora projekt, 16 00:00:43,980 --> 00:00:49,130 vi förmodligen kommer att missta sig på sidan att ha mer språk grejer inbyggd 17 00:00:49,130 --> 00:00:51,300 för oss, istället för att ha låg nivå grejer. 18 00:00:51,300 --> 00:00:53,970 Och det är där PHP verkligen kommer in. 19 00:00:53,970 --> 00:00:58,200 >> Nu, en av orsakerna att vi lär PHP i CS50 20 00:00:58,200 --> 00:01:01,020 är att det är starkt inspirerad av C. Och i själva verket, enligt min mening, 21 00:01:01,020 --> 00:01:05,140 Det finns egentligen två ursprungsspråk som 22 00:01:05,140 --> 00:01:08,200 är mycket vanliga nuförtiden. 23 00:01:08,200 --> 00:01:10,110 C och LISP. 24 00:01:10,110 --> 00:01:13,280 Och de är ursprungsspråk eftersom alla andra moderna programmering 25 00:01:13,280 --> 00:01:17,380 språk som har utvecklats sedan dess inspireras 26 00:01:17,380 --> 00:01:20,330 genom en eller den andra syntaktiskt. 27 00:01:20,330 --> 00:01:26,160 PHP är mycket lik syntaktiskt C, medan språk som Scheme 28 00:01:26,160 --> 00:01:27,900 till exempel, som Du kanske har hört talas om, 29 00:01:27,900 --> 00:01:32,070 är starkt inspirerad av ett språk kallas LISP, vilket är en äldre språk. 30 00:01:32,070 --> 00:01:34,220 >> Så anledningen till att vi lär PHP i CS50 är att 31 00:01:34,220 --> 00:01:37,730 genom att veta C såsom i grunden som du gör på denna punkt, 32 00:01:37,730 --> 00:01:41,280 plocka upp PHP, vilket ger dig förmåga att göra mycket högre nivå saker 33 00:01:41,280 --> 00:01:44,710 än C gör, är inte att mycket av ett hinder, 34 00:01:44,710 --> 00:01:48,230 eftersom du redan har grundidé syntaxen. 35 00:01:48,230 --> 00:01:50,590 C har funnits i nästan 45 år på denna punkt. 36 00:01:50,590 --> 00:01:52,780 PHP har funnits i cirka 20 år. 37 00:01:52,780 --> 00:01:57,080 Och i att 25 år däremellan, programmerare 38 00:01:57,080 --> 00:02:01,540 fastställt att de skulle mycket hellre ha förmåga högre nivå, 39 00:02:01,540 --> 00:02:04,970 och misstag och kamp av de 20 åren däremellan 40 00:02:04,970 --> 00:02:08,210 ledde till PHP och andra moderna språk. 41 00:02:08,210 --> 00:02:11,039 >> PHP ett stort utbud av språk för programvara 42 00:02:11,039 --> 00:02:14,042 att allow-- för programvara that-- där du 43 00:02:14,042 --> 00:02:16,250 måste göra saker som i C är faktiskt komplicerat. 44 00:02:16,250 --> 00:02:18,480 Så till exempel, arbetar med strängar i C 45 00:02:18,480 --> 00:02:21,709 är mycket komplicerad, eftersom som vi vet, strängar i C 46 00:02:21,709 --> 00:02:23,250 i verkligheten bara uppsättningar av tecken. 47 00:02:23,250 --> 00:02:25,230 Det är inte en inbyggd datatyp. 48 00:02:25,230 --> 00:02:28,220 Eller kanske mer fundamentalt, något som vi inte ens omfatta C, 49 00:02:28,220 --> 00:02:30,360 vad händer om du behöver göra vissa datornätverk? 50 00:02:30,360 --> 00:02:30,860 Okej? 51 00:02:30,860 --> 00:02:34,920 >> C har förmågan att göra det, men det är så svårbegripliga och så svårt att faktiskt göra. 52 00:02:34,920 --> 00:02:37,580 Skulle det inte vara trevligt om språket hade en inbyggd, enkelt sätt 53 00:02:37,580 --> 00:02:38,910 att genomföra nätverk? 54 00:02:38,910 --> 00:02:43,420 Och PHP är ett språk som gör att eller underlättar att ganska lite mer. 55 00:02:43,420 --> 00:02:47,740 Som jag sa, är PHP mycket starkt inspirerad genom C. Syntaxen är mycket lika. 56 00:02:47,740 --> 00:02:51,760 Och så ska det förhoppningsvis göra Övergången från en till den andra 57 00:02:51,760 --> 00:02:54,710 lite mjukare än vissa andra språk kan vara. 58 00:02:54,710 --> 00:02:58,800 >> Att börja skriva PHP, bara öppna upp en fil med .php filändelsen. 59 00:02:58,800 --> 00:03:00,670 Tekniskt sett är detta inte faktiskt krävs, 60 00:03:00,670 --> 00:03:04,495 men om du vill saker som syntax belyser i IDE, så den typen 61 00:03:04,495 --> 00:03:07,620 namn, eller variabla namn, funktioner, du vet, nyckelorden för språket 62 00:03:07,620 --> 00:03:10,090 markeras i en specifik färg, du vanligtvis 63 00:03:10,090 --> 00:03:14,020 vill namnge dina filer med en viss filändelse. 64 00:03:14,020 --> 00:03:18,430 Så vi har namngett vår fil med en .php förlängning, men då också med PHP, 65 00:03:18,430 --> 00:03:23,310 alla PHP-koden vi skriver i det fil måste inneslutas i dessa PHP 66 00:03:23,310 --> 00:03:25,190 avgränsare som vi ser här på skärmen. 67 00:03:25,190 --> 00:03:27,910 Fästvinkel? Php att starta. 68 00:03:27,910 --> 00:03:30,860 Sedan skriver vi alla våra PHP kod som vi vill ha i mellan. 69 00:03:30,860 --> 00:03:32,260 Och då ? 70 00:03:32,260 --> 00:03:34,710 vinkelparentes att stänga. 71 00:03:34,710 --> 00:03:37,170 >> Om vi ​​inte gör det, då vad som kommer att hända? 72 00:03:37,170 --> 00:03:38,170 Det kommer inte att krascha. 73 00:03:38,170 --> 00:03:39,410 Det kommer inte att verkligen förstöra vårt program. 74 00:03:39,410 --> 00:03:41,440 Men det kommer inte att ha den effekt som vi vill ha. 75 00:03:41,440 --> 00:03:44,540 Vad kommer att hända, egentligen, är att när vi försöker köra det här programmet, 76 00:03:44,540 --> 00:03:50,330 allt inte mellan dessa avgränsare kommer att skrivas ut ordagrant. 77 00:03:50,330 --> 00:03:52,210 Det kommer inte att faktiskt köra koden, 78 00:03:52,210 --> 00:03:56,010 det kommer att bara skriva ut ordagrant. 79 00:03:56,010 --> 00:03:57,320 >> Nu varför är fallet? 80 00:03:57,320 --> 00:04:00,416 Så C är vad som är känt som ett kompilerat språk. 81 00:04:00,416 --> 00:04:03,040 Du är förmodligen bekant med steget att göra dina program, 82 00:04:03,040 --> 00:04:07,820 vrida .c filer och .h filer i en enda körbar med make, 83 00:04:07,820 --> 00:04:11,130 särskilt genom Klang som vår kompilator. 84 00:04:11,130 --> 00:04:13,030 PHP, dock inte har denna motsvarande. 85 00:04:13,030 --> 00:04:15,600 PHP är vad som kallas en tolkat språk. 86 00:04:15,600 --> 00:04:16,760 Och vad betyder det? 87 00:04:16,760 --> 00:04:20,680 >> Tja, innebär det att vi inte behöver konvertera vår källkod till nollor och ettor 88 00:04:20,680 --> 00:04:21,470 i förväg. 89 00:04:21,470 --> 00:04:23,900 Snarare finns det ett program, som också kallas 90 00:04:23,900 --> 00:04:29,771 PHP, som förstår PHP och kan sorts göra det i farten. 91 00:04:29,771 --> 00:04:32,520 Det är inte riktigt helt exakt, men det är en ganska bra liknelse 92 00:04:32,520 --> 00:04:33,760 om vad som händer. 93 00:04:33,760 --> 00:04:37,230 Det är att tolka dem nollor och ettor i farten. 94 00:04:37,230 --> 00:04:40,160 Och så om den inte vet hur du kan bearbeta något, 95 00:04:40,160 --> 00:04:42,800 om det inte vet hur man processen PHP, du förmodligen 96 00:04:42,800 --> 00:04:44,680 ville lägga texten i det, eller hur? 97 00:04:44,680 --> 00:04:48,960 >> Du ville förmodligen sätta koden i där, även om det inte mellan PHP-- 98 00:04:48,960 --> 00:04:50,035 PHP avgränsare. 99 00:04:50,035 --> 00:04:51,910 Men-- så det inte kommer för att radera det åt dig, 100 00:04:51,910 --> 00:04:53,576 det är bara att gå till grunden kasta det. 101 00:04:53,576 --> 00:04:55,550 Så det kommer att skriva ut den ut till skärmen. 102 00:04:55,550 --> 00:04:57,150 >> Det verkar som om det är en dålig sak, men det är faktiskt 103 00:04:57,150 --> 00:04:58,220 kommer att bli en riktigt bra sak, som vi ska 104 00:04:58,220 --> 00:05:00,390 se när vi talar om PHP webbutveckling, 105 00:05:00,390 --> 00:05:04,010 eftersom det innebär att vi kan blanda PHP och HTML. 106 00:05:04,010 --> 00:05:06,640 Vi kan använda dem tillsammans för att skapa en mer dynamisk webbsida. 107 00:05:06,640 --> 00:05:10,650 Men mer om det i video på PHP webbutveckling. 108 00:05:10,650 --> 00:05:12,021 >> Så vad är syntaxen för PHP? 109 00:05:12,021 --> 00:05:13,520 Det är vad den här videon handlar om. 110 00:05:13,520 --> 00:05:14,850 Låt oss prata om det. 111 00:05:14,850 --> 00:05:16,490 >> Så för att börja, variabler. 112 00:05:16,490 --> 00:05:18,030 PHP variabler existerar. 113 00:05:18,030 --> 00:05:20,067 Det finns bara två stora skillnader från C. 114 00:05:20,067 --> 00:05:21,900 Den första är att det finns ingen typ specifikation. 115 00:05:21,900 --> 00:05:24,245 Vi behöver inte säga int, röding, flöte, allt det där. 116 00:05:24,245 --> 00:05:25,620 Vi behöver inte göra det längre. 117 00:05:25,620 --> 00:05:26,810 PHP är ett modernt språk. 118 00:05:26,810 --> 00:05:28,910 Det kan räkna ut vad du är försöker göra eller ge bästa 119 00:05:28,910 --> 00:05:30,451 gissa vad du försöker göra. 120 00:05:30,451 --> 00:05:31,700 Så det är ganska trevligt. 121 00:05:31,700 --> 00:05:35,330 >> Den andra saken är att alla variabel namn måste börja med ett dollartecken. 122 00:05:35,330 --> 00:05:36,940 Det är bara något att vänja sig. 123 00:05:36,940 --> 00:05:39,496 Det är lite konstigt, eftersom det är så att PHP kan förstå 124 00:05:39,496 --> 00:05:40,870 Vad är en variabel och vad som inte. 125 00:05:40,870 --> 00:05:43,340 Så varje variabelnamn börjar med ett dollartecken. 126 00:05:43,340 --> 00:05:46,884 Så i C kan vi säga något så här, int x = 54. 127 00:05:46,884 --> 00:05:48,550 Vi behöver inte göra det längre i PHP. 128 00:05:48,550 --> 00:05:52,540 Vi kan bara säga $ x = 54. 129 00:05:52,540 --> 00:05:55,920 Och vi skulle kunna säga, till exempel, i C, om vi hade pund-inkluderat CS50 .h 130 00:05:55,920 --> 00:06:00,314 header fil, kan vi säga string frasen = "Detta är CS50." 131 00:06:00,314 --> 00:06:01,980 Vi behöver inte göra det i PHP, men. 132 00:06:01,980 --> 00:06:04,865 Vi kan bara säga $ fras = "Detta är CS50." 133 00:06:04,865 --> 00:06:08,760 Och i själva verket är sträng nu en inbyggd datatyp i PHP, 134 00:06:08,760 --> 00:06:10,950 eller snarare PHP förstår vad en sträng är. 135 00:06:10,950 --> 00:06:15,612 Det är skild från en array tecken som det är i C. 136 00:06:15,612 --> 00:06:17,570 Alla dina favorit villkorliga uttalanden från C 137 00:06:17,570 --> 00:06:19,520 finns fortfarande tillgängliga för dig att använda. 138 00:06:19,520 --> 00:06:21,140 Så ingen stor övergång där. 139 00:06:21,140 --> 00:06:23,400 Vi kan säga-- vi kan få om uttalanden som detta. 140 00:06:23,400 --> 00:06:28,210 om $ y 43, eller $ z = 15. 141 00:06:28,210 --> 00:06:29,690 Så det är ganska enkelt. 142 00:06:29,690 --> 00:06:31,980 Vi kan ha om och annat. 143 00:06:31,980 --> 00:06:34,210 Vi kan ha om och else if. 144 00:06:34,210 --> 00:06:36,430 >> Och lägg märke till något ganska trevligt här, och detta 145 00:06:36,430 --> 00:06:39,620 är en slags ett av dem fördelarna med PHP kontra C, meddelande 146 00:06:39,620 --> 00:06:41,510 vilken funktion vi inte använder här? 147 00:06:41,510 --> 00:06:47,737 Vi använder == för att jämföra en variabel, $ name, till en sträng. 148 00:06:47,737 --> 00:06:49,070 Vi kunde inte göra det i C, eller hur? 149 00:06:49,070 --> 00:06:53,200 Vi var tvungna att använda en funktion som kallas StrComp eller StrEndComp eller någon 150 00:06:53,200 --> 00:06:54,840 av dess närstående kusiner. 151 00:06:54,840 --> 00:06:56,980 >> Och så redan ser vi dessa fördelar. 152 00:06:56,980 --> 00:07:00,930 Vi behöver inte göra något som dum eller kanske intuitiv 153 00:07:00,930 --> 00:07:03,540 som kallar en funktion som kallas StrComp om jag bara vill testa 154 00:07:03,540 --> 00:07:05,237 om ett värde är lika med en sträng. 155 00:07:05,237 --> 00:07:07,820 Jag kunde bara använda lika jämlikar, som om jag kunde göra något annat. 156 00:07:07,820 --> 00:07:09,560 Så det är en fördel. 157 00:07:09,560 --> 00:07:13,350 >> Ibland, förresten, kanske du se annars om som ett ord, ElseIf. 158 00:07:13,350 --> 00:07:14,910 Och det är OK i PHP samt. 159 00:07:14,910 --> 00:07:17,020 Så ibland kan du se det. 160 00:07:17,020 --> 00:07:17,790 Det är inte ett stavfel. 161 00:07:17,790 --> 00:07:21,830 PHP faktiskt förstår elseif. 162 00:07:21,830 --> 00:07:23,980 Jag vet inte varför de beslutat att genomföra det, 163 00:07:23,980 --> 00:07:28,220 men som vi har sett många gånger hela vår video hittills, 164 00:07:28,220 --> 00:07:30,460 Vi programmerare älska det om vi kan göra saker snabbt, 165 00:07:30,460 --> 00:07:33,660 så att bli av med det utrymmet är uppenbarligen en stor fördel. 166 00:07:33,660 --> 00:07:34,800 >> Så det är om och elseif. 167 00:07:34,800 --> 00:07:37,540 Vi har också ternära operatören, minns frågetecken kolon, 168 00:07:37,540 --> 00:07:43,262 för riktigt kortform om annat eller villkorad förgrening. 169 00:07:43,262 --> 00:07:45,470 Och tydligen, i detta, vad vi försöker göra här 170 00:07:45,470 --> 00:07:49,720 är tilldela variabeln $ brev antingen sant eller falskt, 171 00:07:49,720 --> 00:07:54,110 beroende på om $ var är en bokstav. 172 00:07:54,110 --> 00:07:57,320 Så det här är ganska lik isalpha att vi är bekant med från C. 173 00:07:57,320 --> 00:07:59,010 Detta är typ av motvärdet i PHP. 174 00:07:59,010 --> 00:08:01,550 Funktionen är tydligen kallas ctype_alpha, 175 00:08:01,550 --> 00:08:03,450 men det är hur vi gör det i PHP. 176 00:08:03,450 --> 00:08:08,560 Så allt detta kommer att bli vill säga om $ var är ett brev, är $ brev sant. 177 00:08:08,560 --> 00:08:13,820 Om $ var inte ett brev, $ brevet är falskt. 178 00:08:13,820 --> 00:08:15,820 >> Vi har också switch uttalanden fortfarande. 179 00:08:15,820 --> 00:08:17,870 Vi minns dem från C samt. 180 00:08:17,870 --> 00:08:22,480 Högst upp där, det är hur vi gör något som få int eller få sträng. 181 00:08:22,480 --> 00:08:23,845 Så PHP har som inbyggd. 182 00:08:23,845 --> 00:08:25,470 Vi behöver inte CS50 biblioteket längre. 183 00:08:25,470 --> 00:08:27,237 Vi kan bara använda funktionen readline. 184 00:08:27,237 --> 00:08:29,820 Vad det kommer att göra är att skriva ut ut budskapet, "Din statliga, 185 00:08:29,820 --> 00:08:33,820 please "och sedan blinkar snabbt väntar på användaren att mata in 186 00:08:33,820 --> 00:08:34,739 lite information. 187 00:08:34,739 --> 00:08:36,530 Nu märker vad vi kan göra med omkopplare. 188 00:08:36,530 --> 00:08:39,105 Om du har använt det tidigare, Du kanske minns att switch 189 00:08:39,105 --> 00:08:44,960 begränsas ganska mycket till heltal och tecken, men nu kan vi använda strängar. 190 00:08:44,960 --> 00:08:50,190 Och i själva verket switch uttalande i PHP är ganska lite mer flexibel 191 00:08:50,190 --> 00:08:54,880 än sin kusin från C. 192 00:08:54,880 --> 00:08:55,380 Loops. 193 00:08:55,380 --> 00:08:58,130 Precis som villkors, alla dina gamla favoriter finns kvar. 194 00:08:58,130 --> 00:09:00,740 Vi har medan slingor som räknas 1-100 i detta fall. 195 00:09:00,740 --> 00:09:03,940 Vi har att göra medan slingor som räknas från 1 till 100, 196 00:09:03,940 --> 00:09:06,200 och vi har för slingor som räknas från 1 till 100. 197 00:09:06,200 --> 00:09:07,220 Så ingen big språng där. 198 00:09:07,220 --> 00:09:09,360 Syntaxen är ganska mycket exakt samma, 199 00:09:09,360 --> 00:09:11,760 utom nu vi använder dollartecken variabel i stället 200 00:09:11,760 --> 00:09:17,260 att förklara heltalsvariabler eller något liknande för våra diskar. 201 00:09:17,260 --> 00:09:20,090 >> Här är där det blir en mycket bättre än C, dock. 202 00:09:20,090 --> 00:09:21,020 Matriser. 203 00:09:21,020 --> 00:09:23,020 Så minns när vi var talar om C, i syfte 204 00:09:23,020 --> 00:09:25,560 för oss att växa och krympa uppsättningar av information 205 00:09:25,560 --> 00:09:28,310 vi behövde för att sortera för fallissemang denna idé av en länkad lista, 206 00:09:28,310 --> 00:09:30,780 eftersom C arrayer fixerades i storlek. 207 00:09:30,780 --> 00:09:31,800 Vi kunde inte krympa dem. 208 00:09:31,800 --> 00:09:32,930 Vi kunde inte odlar dem. 209 00:09:32,930 --> 00:09:36,074 Vi var tvungna att omfördela minne och göra allt detta vansinne 210 00:09:36,074 --> 00:09:38,490 eller använd länkade listor, som ta upp ganska lite mer utrymme. 211 00:09:38,490 --> 00:09:41,590 Men i PHP, matriser är inte fast i storlek längre. 212 00:09:41,590 --> 00:09:43,240 De kan växa och de kan krympa. 213 00:09:43,240 --> 00:09:46,660 Så återigen, dessa 20 år som fanns mellan den första utgåvan av C 214 00:09:46,660 --> 00:09:49,440 och den första utgåvan PHP, vi beslutat att, du vet, 215 00:09:49,440 --> 00:09:51,670 det skulle vara riktigt bra om vi kunde göra det här. 216 00:09:51,670 --> 00:09:54,100 Och så vi genomfört detta. 217 00:09:54,100 --> 00:09:58,040 >> Så PHP arrayer inte är fasta i storlek, och eftersom PHP inte riktigt 218 00:09:58,040 --> 00:10:03,090 har programmerare front-vända föreställningar om slag, 219 00:10:03,090 --> 00:10:05,110 vi kan blanda datatyper i våra matriser också. 220 00:10:05,110 --> 00:10:08,100 Så vi behöver inte ens använda alla heltal eller alla flytande punkter, 221 00:10:08,100 --> 00:10:12,826 vi kan ha en blandning av alla olika slag i en och samma matris. 222 00:10:12,826 --> 00:10:14,700 Förklara en array är ganska enkelt. 223 00:10:14,700 --> 00:10:16,116 Det är precis som alla andra variabler. 224 00:10:16,116 --> 00:10:20,020 $ nums = array (1, 2, 3, 4), arrayen är en funktion 225 00:10:20,020 --> 00:10:22,760 som är inbyggt i PHP som kommer att skapa en array för dig. 226 00:10:22,760 --> 00:10:28,315 Detta skapar en array med fyra värden, siffror i det här fallet, som kallas $ nums. 227 00:10:28,315 --> 00:10:29,940 Och det finns mer än ett sätt att göra det. 228 00:10:29,940 --> 00:10:32,420 Och vi kommer att ser detta mycket i PHP. 229 00:10:32,420 --> 00:10:36,380 PHP har utvecklats av många olika människor och växer och växer och växer. 230 00:10:36,380 --> 00:10:40,050 Det är oftast inte bara två eller tre sätt att göra något i PHP, 231 00:10:40,050 --> 00:10:42,170 det finns oftast som 10 eller 20. 232 00:10:42,170 --> 00:10:45,300 Här är bara en annan vanlig sättet att deklarera en array. 233 00:10:45,300 --> 00:10:48,310 $ nums = klammer 1, 2, 3, 4. 234 00:10:48,310 --> 00:10:53,170 Så det här är en slags liknar C vinkel br-- klammerparentes notation, snarare. $ - 235 00:10:53,170 --> 00:10:58,525 eller det skulle vara int nums kvadrat konsoler är lika lockigt stag 1, 2, 3, 4. 236 00:10:58,525 --> 00:11:02,710 I PHP är det $ nums = square konsoler 1, 2, 3, 4. 237 00:11:02,710 --> 00:11:08,920 Men båda dessa exempel här ge mig en matris med fyra i detta fall heltal. 238 00:11:08,920 --> 00:11:10,920 >> Vad gör jag om jag vill att slå något på nu? 239 00:11:10,920 --> 00:11:14,760 Jag kan väl bara säga $ nums 4, som igen, vi fortfarande räknar från 0 här 240 00:11:14,760 --> 00:11:17,800 i PHP, skulle vara den femte element i gruppen. 241 00:11:17,800 --> 00:11:18,990 Jag kan bara säga att. 242 00:11:18,990 --> 00:11:22,860 Jag tänker inte drabbas av en seg fel, eftersom min array är bara 243 00:11:22,860 --> 00:11:24,337 kommer att växa för att rymma det. 244 00:11:24,337 --> 00:11:25,420 Det är ganska trevligt, eller hur? 245 00:11:25,420 --> 00:11:28,400 Och i själva verket inte ens behöver jag ange var jag vill uttrycka det. 246 00:11:28,400 --> 00:11:31,220 Jag kan bara säga detta och bara tack rätt till slutet, 247 00:11:31,220 --> 00:11:34,099 eller jag kunde till och med bara säger $ nums 20 eller 1000. 248 00:11:34,099 --> 00:11:35,140 Det spelar egentligen ingen roll. 249 00:11:35,140 --> 00:11:38,330 Det är fortfarande bara kommer att tack rätt till slutet. 250 00:11:38,330 --> 00:11:41,490 >> Så jag kan växa, och as-- vi är inte kommer att täcka det här, 251 00:11:41,490 --> 00:11:45,360 men jag kan skarva eller remsor element av arrayen också, 252 00:11:45,360 --> 00:11:50,064 och matrisen kommer att krympa för att rymma som nu saknas eller tomrum. 253 00:11:50,064 --> 00:11:52,230 Det finns ett annat sätt att slå något på en array, 254 00:11:52,230 --> 00:11:54,330 vilket är en funktion som kallas array_push. 255 00:11:54,330 --> 00:11:57,860 Så återigen, bara denna idé om att vara kunna göra saker många olika sätt. 256 00:11:57,860 --> 00:12:01,950 Så vi har sett tre olika sätt nu att slå ett annat element på en matris. 257 00:12:01,950 --> 00:12:06,900 Så detta läggs ett annat element till slutet av $ nums arrayen. 258 00:12:06,900 --> 00:12:08,340 Och vi kan blanda ihop våra datatyper. 259 00:12:08,340 --> 00:12:13,110 Så jag kunde ha en rad inte 1, 2, 3, 4, men en, riktigt, 3, 4, 260 00:12:13,110 --> 00:12:16,420 där sant är en Boolean, och sedan om jag vill tack på ett annat element 261 00:12:16,420 --> 00:12:20,860 till den array, kanske en sträng, strängen "fem" Jag kunde göra det. 262 00:12:20,860 --> 00:12:26,110 Och nu min samling skulle vara ett sant, 3, 4, fem. 263 00:12:26,110 --> 00:12:28,640 Ordet fem, inte heltalet 5. 264 00:12:28,640 --> 00:12:31,270 Så en stor flexibilitet där. 265 00:12:31,270 --> 00:12:33,290 >> Flexibiliteten blir ännu bättre, men, 266 00:12:33,290 --> 00:12:37,530 eftersom PHP har stöd för något kallas en associativ array. 267 00:12:37,530 --> 00:12:40,660 Och vi slags vagt talade om associativa arrayer i C 268 00:12:40,660 --> 00:12:44,740 inom ramen för hashtabeller, eftersom vad associativa arrayer är verkligen allt 269 00:12:44,740 --> 00:12:48,950 om gör nyckel värde par avbildningar. 270 00:12:48,950 --> 00:12:53,410 Och i detta fall, den keys-- om Vi är bekant med arrayer från C, 271 00:12:53,410 --> 00:12:55,440 knapparna är indexnummer. 272 00:12:55,440 --> 00:12:57,530 0, 1, 2, 3. 273 00:12:57,530 --> 00:13:03,070 Och värden är vad vi finner att array 0, array 1, array 2, och så vidare. 274 00:13:03,070 --> 00:13:06,310 Så knapparna är index, och värdena är 275 00:13:06,310 --> 00:13:10,060 vad som finns i den arrayen plats, specificeras av detta index. 276 00:13:10,060 --> 00:13:15,130 >> Men i PHP, vi har inte att göra detta begreppet matris 0, array 1, array 2 277 00:13:15,130 --> 00:13:15,830 längre. 278 00:13:15,830 --> 00:13:21,025 Vi kan nu använda faktiska ord att kartlägga nycklar till värden. 279 00:13:21,025 --> 00:13:22,650 Och så jag kunde säga något sånt här. 280 00:13:22,650 --> 00:13:26,710 Jag skulle kunna skapa en array med hjälp av klammer syntax som följer. 281 00:13:26,710 --> 00:13:30,685 $ pizzor = hakparentes "ost" och sedan 282 00:13:30,685 --> 00:13:37,210 denna typ av dubbelpilen notation, 8.99 "pepperoni," pil 10.99-- 9,99, 283 00:13:37,210 --> 00:13:37,880 och så vidare. 284 00:13:37,880 --> 00:13:39,060 Och så vad som händer här? 285 00:13:39,060 --> 00:13:41,040 Vad jag faktiskt gör? 286 00:13:41,040 --> 00:13:43,990 Jag skapar viktiga värde par avbildningar. 287 00:13:43,990 --> 00:13:49,060 Så istället för att säga, till exempel, pizzor 0, delarna 1, pizzor 2, 288 00:13:49,060 --> 00:13:52,350 Jag kan nu säga pizzor ost, pizza pepperoni, 289 00:13:52,350 --> 00:13:55,120 och refererar till värdena i samband med dem. 290 00:13:55,120 --> 00:13:56,970 >> Så här är våra nycklar i grönt. 291 00:13:56,970 --> 00:13:59,870 Ost, pepperoni, grönsak, buffalo chicken. 292 00:13:59,870 --> 00:14:04,200 Här är pilen som gör denna nyckelvärde paret kartläggning. 293 00:14:04,200 --> 00:14:07,420 Och så här är värdena på den arrayen plats. 294 00:14:07,420 --> 00:14:10,330 Så det är som att säga array 0 är lika med 8,99. 295 00:14:10,330 --> 00:14:11,720 Nyckeln är 0. 296 00:14:11,720 --> 00:14:13,600 Värdet är 8,99. 297 00:14:13,600 --> 00:14:19,370 Jag kan nu säga array ost, eller i detta fall pizzor ost, är ost nyckeln, 298 00:14:19,370 --> 00:14:23,340 och vad jag hittar på pizzor ost är 8,99. 299 00:14:23,340 --> 00:14:25,540 Det är det värde som jag hittar det. 300 00:14:25,540 --> 00:14:28,124 >> Så jag kan säga saker som. $ pizzaost = 7,99. 301 00:14:28,124 --> 00:14:29,040 Säga att jag har en försäljning. 302 00:14:29,040 --> 00:14:31,750 Jag vill dis-- Jag vill släppa priset på ost pizza. 303 00:14:31,750 --> 00:14:35,620 Eller jag kan använda vegetabiliska pizza som en del av ett tillstånd, 304 00:14:35,620 --> 00:14:39,990 eller jag kan lägga till ett nytt element i min array, precis som jag kunde göra tidigare. 305 00:14:39,990 --> 00:14:44,680 Jag kan lägga till ett nytt element i detta associativ array med knappen "bacon" 306 00:14:44,680 --> 00:14:49,250 och värdet 13,49. 307 00:14:49,250 --> 00:14:53,820 >> Men denna typ av inför ett problem, om man tänker på det för en sekund. 308 00:14:53,820 --> 00:14:55,721 Hur skulle vi iterera igenom denna uppsättning? 309 00:14:55,721 --> 00:14:56,220 Höger? 310 00:14:56,220 --> 00:14:59,820 I C, skulle vi bara ha en for-loop, typiskt, att 311 00:14:59,820 --> 00:15:03,650 skulle löpa från 0 till storleken på matrisen minus ett. 312 00:15:03,650 --> 00:15:08,060 Uppsättningen har n element i på den giltiga index är 0 till n minus ett. 313 00:15:08,060 --> 00:15:11,530 Så vi kunde använda en for-loop till stega igenom varje enskilt element. 314 00:15:11,530 --> 00:15:13,530 >> Men det är inte riktigt fallet längre, eller hur? 315 00:15:13,530 --> 00:15:17,360 Nu när vi har nyckelvärde paret avbildningar där nycklarna är ord, 316 00:15:17,360 --> 00:15:19,970 hur vi iterera över alla ord? 317 00:15:19,970 --> 00:15:22,420 Tja, lyckligtvis, har PHP ett sätt att hantera detta också, 318 00:15:22,420 --> 00:15:24,580 och så vi ska hoppa tillbaka att öglor för en andra 319 00:15:24,580 --> 00:15:30,780 att införa fjärdedel slags slinga som existerar i PHP kallas en foreach slinga. 320 00:15:30,780 --> 00:15:34,430 Och vad en foreach loop gör är det är i princip samma idé. 321 00:15:34,430 --> 00:15:36,060 Du kan använda den för någon form av matris. 322 00:15:36,060 --> 00:15:38,100 Men det är i grund och botten samma idé som en for-loop, 323 00:15:38,100 --> 00:15:40,750 utom i stället för att använda indexnummer, du bara 324 00:15:40,750 --> 00:15:45,830 har denna konstiga syntax där du ringer varje enskilt element 325 00:15:45,830 --> 00:15:47,550 ett namn för tillämpningen av denna slinga. 326 00:15:47,550 --> 00:15:49,258 >> Så i detta fall, foreach ($ array som $ key). 327 00:15:49,258 --> 00:15:52,900 328 00:15:52,900 --> 00:15:56,450 I grund och botten, eftersom den kommentaren anteckningar, inne i nämnda foreach slinga, 329 00:15:56,450 --> 00:16:00,466 det kommer att gå över varenda elementet i $ matris, som typiskt är 330 00:16:00,466 --> 00:16:03,340 kommer att bli en associativ array, men kan verkligen vara någon form av matris 331 00:16:03,340 --> 00:16:05,419 som du vill ha i PHP. 332 00:16:05,419 --> 00:16:07,210 Och varje gång i en for-loop som du kanske 333 00:16:07,210 --> 00:16:13,780 har sagt $ array hakparenteser $ i, kan du bara säga $ key. 334 00:16:13,780 --> 00:16:22,340 Så att $ key blir ett alias för varje index för din PHP associativ array, 335 00:16:22,340 --> 00:16:23,710 och så att du kan använda det så. 336 00:16:23,710 --> 00:16:25,897 >> Så till exempel, vi har nu fått våra pizzor array. 337 00:16:25,897 --> 00:16:27,730 Jag har typ av stoppade det i hörnet där 338 00:16:27,730 --> 00:16:31,080 så att vi kan använda den för att göra en snabb exempel. 339 00:16:31,080 --> 00:16:36,420 Om jag säger foreach ($ pizzor som $ pizza), ja, vad som händer? 340 00:16:36,420 --> 00:16:42,400 Tja, jag kommer att iterera igenom varje enda element i arrayen $ pizzor, 341 00:16:42,400 --> 00:16:46,670 och på så sätt kommer jag att ringa varje element, när jag är inne 342 00:16:46,670 --> 00:16:49,400 i kroppen av den for-loop, $ pizza. 343 00:16:49,400 --> 00:16:52,440 >> Så det är en slags stand-in, minns, att $ pizza 344 00:16:52,440 --> 00:16:59,140 är en stand-in för att säga $ pizzor hakparenteser $ i 345 00:16:59,140 --> 00:17:03,370 om vi använde en for-loop, där vi kunde gå från $ i = 0 till, i detta fall, 346 00:17:03,370 --> 00:17:06,089 $ i = 3. 347 00:17:06,089 --> 00:17:09,780 Om vi ​​inte har nyckelpar värde här, skulle detta vara elementet 0, 1, 2, 3, 348 00:17:09,780 --> 00:17:16,390 och vi skulle använda en for-loop för att gå $ pizzor 0, $ pizzor 1, $ pizzor 2, 349 00:17:16,390 --> 00:17:17,750 $ pizzor 3. 350 00:17:17,750 --> 00:17:23,130 Så nu bara $ pizza ersätta för att enskilda nyckel. 351 00:17:23,130 --> 00:17:25,630 >> Så vad detta kommer att skriva ut? 352 00:17:25,630 --> 00:17:29,030 Jag skrivs ut $ pizza. 353 00:17:29,030 --> 00:17:35,270 Vad ska jag hitta at-- om jag skriver ut $ pizzor, $ i? 354 00:17:35,270 --> 00:17:35,770 Höger? 355 00:17:35,770 --> 00:17:38,680 Om jag ska skriva ut det i: te elementet av pizzor, 356 00:17:38,680 --> 00:17:40,070 vad ska jag skriva ut? 357 00:17:40,070 --> 00:17:42,580 Jag kommer att skriva ut värden på den platsen, eller hur? 358 00:17:42,580 --> 00:17:45,370 Som om vi gjorde detta i samband med C, 359 00:17:45,370 --> 00:17:49,786 vi brukar inte använda vår iterator variabel, int i = 0, i är mindre än 3, 360 00:17:49,786 --> 00:17:52,900 i ++, att skriva ut 0, 1, 2, 3. 361 00:17:52,900 --> 00:17:57,500 Vi skriva ut array 0, array 1, array 2, array 3. 362 00:17:57,500 --> 00:17:59,580 Och så vad detta skrivs ut är det. 363 00:17:59,580 --> 00:18:01,150 Det är en lista över priserna. 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 en snabb anteckning här. 366 00:18:06,900 --> 00:18:10,900 En foreach slingan inte nödvändigtvis skriva ut saker i ordning. 367 00:18:10,900 --> 00:18:12,770 Det är inte garanterat. 368 00:18:12,770 --> 00:18:13,550 Det brukar. 369 00:18:13,550 --> 00:18:17,667 Det är oftast baserat på den ordning vilka element läggs till arrayen, 370 00:18:17,667 --> 00:18:18,750 så bara ha detta i åtanke. 371 00:18:18,750 --> 00:18:20,830 Det kanske inte är i ordning. 372 00:18:20,830 --> 00:18:23,930 Men en foreach slingan kommer iterera över varje enskilt element 373 00:18:23,930 --> 00:18:25,060 av matrisen i fråga. 374 00:18:25,060 --> 00:18:27,980 I detta fall, återigen, att matrisen är $ pizzor. 375 00:18:27,980 --> 00:18:32,920 >> Jag kan ändra syntaxen, men om Jag vill ha både nyckeln och värdet. 376 00:18:32,920 --> 00:18:37,179 Istället för att säga $ pizzor som $ pizza, kan jag säga detta. 377 00:18:37,179 --> 00:18:39,470 Och om man tittar på vad jag har markeras med grönt här, 378 00:18:39,470 --> 00:18:42,130 det ser ut som ett nyckelvärde paret kartläggning. 379 00:18:42,130 --> 00:18:45,980 Och så om du-- även om du inte är helt säker på vad det kommer att göra, 380 00:18:45,980 --> 00:18:49,300 du kan nog gissa att $ topping går 381 00:18:49,300 --> 00:18:53,800 att vara nyckeln i detta fall och $ priset kommer att vara det värde. 382 00:18:53,800 --> 00:18:59,200 Så jag ersätter nu varje element på $ pizzor som ett nyckelvärde paret, 383 00:18:59,200 --> 00:19:03,900 och nu kan jag hänvisa till nyckeln och värdet, vilket kanske väl till pass, 384 00:19:03,900 --> 00:19:05,590 exempelvis enligt följande. 385 00:19:05,590 --> 00:19:10,170 >> "En hel" - det är en hel del utskrift pågår här-- "En hel" 386 00:19:10,170 --> 00:19:17,300 toppade "pizza kostar $" pris och sedan Jag skriver ut en period och ett bakvänt snedstreck n. 387 00:19:17,300 --> 00:19:23,420 Så nu, meddelande igen jag har tillgång till en nyckel, $ toppning och ett värde, $ pris. 388 00:19:23,420 --> 00:19:26,647 Så kan du gissa vad det här kommer att skriva ut? 389 00:19:26,647 --> 00:19:29,480 Det finns en hel del tryckta uttalanden, men det finns bara en backslash n, 390 00:19:29,480 --> 00:19:33,410 så det kommer att skriva ut något på en entire-- på en enda rad kod. 391 00:19:33,410 --> 00:19:36,965 >> Om jag kan hänvisa till nyckeln och värdet, då nu, 392 00:19:36,965 --> 00:19:39,090 istället för att bara kunna att skriva ut de priser, 393 00:19:39,090 --> 00:19:41,330 Jag kan skriva ut ungefär så här. 394 00:19:41,330 --> 00:19:43,780 "En hel ost pizza kostar $ 8,99." 395 00:19:43,780 --> 00:19:47,150 Och nu är jag använder alla keys-- ost, pepperoni, grönsaker, 396 00:19:47,150 --> 00:19:49,640 buffel chicken-- och värdena. 397 00:19:49,640 --> 00:19:53,980 8,99, 9,99, 10,99, 11,99 Så det är bara ett annat sätt 398 00:19:53,980 --> 00:19:57,840 att göra en foreach loop som i stället för bara ger dig tillgång till de värderingar, 399 00:19:57,840 --> 00:20:02,950 det ger bara du-- det ger dig tillgång till nycklar och värden. 400 00:20:02,950 --> 00:20:04,411 >> Så skrivs ut information. 401 00:20:04,411 --> 00:20:07,410 Jag har redan gjort det ett par olika sätt, kanske du har märkt. 402 00:20:07,410 --> 00:20:11,080 De två funktioner som vi har i första hand sett är trycket och eko. 403 00:20:11,080 --> 00:20:14,380 Och för ganska mycket allt väsentligt och ändamål, de är exakt samma. 404 00:20:14,380 --> 00:20:17,130 They're-- det finns en mycket subtil skillnad det är inte ens värt 405 00:20:17,130 --> 00:20:21,130 att komma in, men i princip överallt du kan använda trycket som du kan förmodligen använda 406 00:20:21,130 --> 00:20:22,370 eko också. 407 00:20:22,370 --> 00:20:23,610 >> Och det är inte de enda två. 408 00:20:23,610 --> 00:20:26,970 PHP har en massa olika sätt att skriva ut saker, 409 00:20:26,970 --> 00:20:30,520 och det har också olika sätt att integrera variabler i mitten av strängen. 410 00:20:30,520 --> 00:20:32,860 Så minns från C, gör du minns vilken funktion 411 00:20:32,860 --> 00:20:37,580 vi kan använda för att ersätta variabler i saker som vi vill skriva ut? 412 00:20:37,580 --> 00:20:40,160 Du använder förmodligen detta fungera en hel del. 413 00:20:40,160 --> 00:20:42,290 printf, eller hur? 414 00:20:42,290 --> 00:20:45,290 Så det här är vad vi hade tidigare inne av ramen för vår foreach loop. 415 00:20:45,290 --> 00:20:48,000 Vi hade dessa fem separata färg uttalanden, 416 00:20:48,000 --> 00:20:50,330 eftersom det var den enda sätt jag verkligen kände vid den tidpunkten 417 00:20:50,330 --> 00:20:52,450 hur du skriver ut meddelanden. 418 00:20:52,450 --> 00:20:59,560 Jag visste inte hur man ska integrera variabeln $ toppade i min PHP-kod. 419 00:20:59,560 --> 00:21:03,700 Tja, om jag bara tagit en vild gissning, printf, det faktiskt skulle ha fungerat. 420 00:21:03,700 --> 00:21:08,980 printf är en funktion som jag kan använda i PHP, precis som jag kan använda den i C. 421 00:21:08,980 --> 00:21:11,880 >> Och så något liknande detta, printf, igen, vi är bekant med det. 422 00:21:11,880 --> 00:21:16,420 Den första% s ersätts med värdet av $ toppning. 423 00:21:16,420 --> 00:21:19,700 Den andra% s ersätts med värdet av $ pris. 424 00:21:19,700 --> 00:21:22,630 Och så jag interpellating, som ligger bara ett fint sätt 425 00:21:22,630 --> 00:21:25,400 att säga att jag fastnar i variabler till den platsen. 426 00:21:25,400 --> 00:21:31,000 Så jag koppla in $ toppning där röd% s är och $ pris där den blå% s 427 00:21:31,000 --> 00:21:36,060 är, och då skulle jag få ut budskapet, "En hel ost pizza kostar $ 8,99." 428 00:21:36,060 --> 00:21:37,750 >> Inte det enda sättet jag kan göra det, men. 429 00:21:37,750 --> 00:21:39,760 Kanske skulle jag vilja använda den här metoden. 430 00:21:39,760 --> 00:21:44,890 Detta är faktiskt vad som är vanligast kallas variabel interpellations. 431 00:21:44,890 --> 00:21:45,690 Jag kan använda ett eko. 432 00:21:45,690 --> 00:21:47,737 Jag skulle kunna använda en utskrift också, som vi får se. 433 00:21:47,737 --> 00:21:48,820 Men vad som händer här? 434 00:21:48,820 --> 00:21:51,520 >> Först av allt, jag måste fly dollartecken. 435 00:21:51,520 --> 00:21:55,140 Eftersom minns, när vi var faktiskt skriva ut priserna på pizzor, 436 00:21:55,140 --> 00:21:59,370 Jag var faktiskt formatera dem som monetära siffror med ett dollartecken. 437 00:21:59,370 --> 00:22:05,635 Men vi använder dollartecken också att representera variabelnamn i PHP, 438 00:22:05,635 --> 00:22:08,010 särskilt när jag är användning av denna metod av lockigt 439 00:22:08,010 --> 00:22:10,040 stag variabel interpellation metod, jag behöver 440 00:22:10,040 --> 00:22:13,490 fly min dollartecken så det inte tror att jag talar om en variabel. 441 00:22:13,490 --> 00:22:16,920 Det kommer att faktiskt, bokstavligen ut ett dollartecken. 442 00:22:16,920 --> 00:22:19,530 >> Så slags analogize den till vad du ser i slutet där. 443 00:22:19,530 --> 00:22:22,832 Det gör faktiskt inte print backslash n, eller hur? 444 00:22:22,832 --> 00:22:24,290 Den skriver ut ett nyradstecken. 445 00:22:24,290 --> 00:22:26,750 Detta är-- det kommer inte att print backslash dollartecken, 446 00:22:26,750 --> 00:22:30,130 det kommer att skriva ut bara ett dollartecken tecken. 447 00:22:30,130 --> 00:22:30,640 Samma idé. 448 00:22:30,640 --> 00:22:32,760 Escape-sekvenser, vad dessa saker kallas. 449 00:22:32,760 --> 00:22:37,080 >> Men märker att jag inte gör någon form av% s ersättningar, 450 00:22:37,080 --> 00:22:40,050 Jag bara bokstavligen plugga i dessa variabler. 451 00:22:40,050 --> 00:22:45,110 Och så i this-- vad som skulle hända här är att värdet på $ topping-- igen, 452 00:22:45,110 --> 00:22:48,390 bara hålla med vad vi har varit talar om så far-- ost skulle få 453 00:22:48,390 --> 00:22:49,720 inkopplad där. 454 00:22:49,720 --> 00:22:54,780 Och $ priset skulle vara vad som helst värde är på pizzor, hakparenteser, ost, 455 00:22:54,780 --> 00:22:56,270 vilket var 8,99. 456 00:22:56,270 --> 00:23:01,860 Och så skulle detta också skriva ut "En hel ost pizza kostar $ 8,99." 457 00:23:01,860 --> 00:23:05,160 Och som jag sa, jag kunde använda ut här i stället för eko, 458 00:23:05,160 --> 00:23:08,040 och funktionaliteten vara ganska mycket exakt samma. 459 00:23:08,040 --> 00:23:09,660 Det skulle skriva ut samma sak. 460 00:23:09,660 --> 00:23:12,680 >> Det finns ett annat sätt att göra det, och detta är en annan fördel 461 00:23:12,680 --> 00:23:14,710 PHP arbetar med strängar. 462 00:23:14,710 --> 00:23:17,130 Vi kan göra strängsammanfogning. 463 00:23:17,130 --> 00:23:19,660 Vi kunde göra detta i C också, genom att använda en funktion som kallas strcat, 464 00:23:19,660 --> 00:23:21,180 men återigen, vi var tvungna att Ring separata funktioner. 465 00:23:21,180 --> 00:23:22,640 Det var hela den här röran att göra. 466 00:23:22,640 --> 00:23:24,590 Vi var tvungna att pound-inkluderar string.h. 467 00:23:24,590 --> 00:23:25,780 Det var en produktion, eller hur? 468 00:23:25,780 --> 00:23:30,070 Men nu kan jag bara använda den här punktoperatorn att sammanfoga strängar tillsammans. 469 00:23:30,070 --> 00:23:34,910 >> Så jag sammanlänka "En hel" och då oavsett värdet på $ topping är, 470 00:23:34,910 --> 00:23:38,860 och sedan en annan sträng "pizza kostar $" 471 00:23:38,860 --> 00:23:42,340 och sedan sammanfoga vad värdet på $ priset, 472 00:23:42,340 --> 00:23:45,670 och sedan i slutet jag tacking på perioden backslash n. 473 00:23:45,670 --> 00:23:47,926 Och så detta skulle också skriva ut "En hel" - igen, 474 00:23:47,926 --> 00:23:50,550 Om vi ​​pratar om den första del av detta pizzor array-- 475 00:23:50,550 --> 00:23:54,710 "En hel ost pizza kostar $ 8,99." 476 00:23:54,710 --> 00:24:01,260 Period, omvänt snedstreck n, återigen, med de $ Taklagsfest och $ pris substituerande 477 00:24:01,260 --> 00:24:06,580 för vad vi hade som anges i vår foreach slinga som den viktigaste värdeparet kartläggning. 478 00:24:06,580 --> 00:24:08,050 >> PHP kan hantera funktioner. 479 00:24:08,050 --> 00:24:11,250 Funktioner var typ av integrerad del C, som vi såg. 480 00:24:11,250 --> 00:24:14,870 Liksom variabler, behöver vi inte specificera returtyp av funktionen, 481 00:24:14,870 --> 00:24:16,350 eftersom det spelar egentligen ingen roll. 482 00:24:16,350 --> 00:24:18,660 Och vi inte ange datatyper av några parametrar, 483 00:24:18,660 --> 00:24:21,410 eftersom de inte riktigt materia, som vi har sett i PHP. 484 00:24:21,410 --> 00:24:24,510 Varje funktion införs med nyckelordet function. 485 00:24:24,510 --> 00:24:27,920 Det är så vi meddela PHP att vad vi pratar om är en funktion. 486 00:24:27,920 --> 00:24:29,720 >> Och vi behöver inte itu med huvud alls, 487 00:24:29,720 --> 00:24:33,690 eftersom tolken, PHP tolk, arbetar från topp till botten, 488 00:24:33,690 --> 00:24:34,190 oavsett. 489 00:24:34,190 --> 00:24:35,640 Om det ser du kan göra ett funktionsanrop, det ska 490 00:24:35,640 --> 00:24:37,850 gå hitta funktionsanrop, även om det kommer senare. 491 00:24:37,850 --> 00:24:40,360 Men det kommer att läsa uppifrån botten, så vi behöver inte ange, 492 00:24:40,360 --> 00:24:41,500 här är där du börjar. 493 00:24:41,500 --> 00:24:46,700 Du börjar på rad 1 i din PHP och arbeta ner därifrån. 494 00:24:46,700 --> 00:24:49,690 >> Så här är hur vi skulle skapa en funktion som kallas hard_square. 495 00:24:49,690 --> 00:24:54,100 Det tar tydligen en parameter, som jag ringer $ x. 496 00:24:54,100 --> 00:24:58,424 Denna funktion är komplicerat bara att illustrera olika saker. 497 00:24:58,424 --> 00:24:59,590 Vi har fortfarande returvärden. 498 00:24:59,590 --> 00:25:00,870 Jag använder en for-loop här. 499 00:25:00,870 --> 00:25:04,970 Men det är i princip bara, vad detta uppgår till bara $ x gånger $ x. 500 00:25:04,970 --> 00:25:10,520 Vad jag egentligen gör är att bara lägga x till 0 x gånger eller $ x till noll $ x gånger. 501 00:25:10,520 --> 00:25:15,850 Men det är ett effektivt sätt exakt samma som att multiplicera $ x gånger $ x. 502 00:25:15,850 --> 00:25:18,700 Jag kan fortfarande returnera ett värde, i det här fallet $ result, 503 00:25:18,700 --> 00:25:22,060 och jag har gjort en funktion i PHP. 504 00:25:22,060 --> 00:25:24,160 >> Här är hur du kan använda den i sitt sammanhang. 505 00:25:24,160 --> 00:25:26,020 Så kanske jag inne i någon PHP-fil. 506 00:25:26,020 --> 00:25:29,240 Lägg märke i blått där som Jag har använt min PHP skiljetecken, 507 00:25:29,240 --> 00:25:31,010 vinkelparentes frågetecken php. 508 00:25:31,010 --> 00:25:35,180 Mellan de är alla PHP som jag vill skriva. 509 00:25:35,180 --> 00:25:37,840 Så jag tydligen ska get-- Jag kommer att uppmana användaren 510 00:25:37,840 --> 00:25:41,550 att ge mig ett nummer, butik som variabel, butik i den variabeln $ x, 511 00:25:41,550 --> 00:25:43,320 vad de gav mig. 512 00:25:43,320 --> 00:25:48,590 Då kommer jag att upprepa hard_square av detta värde, 513 00:25:48,590 --> 00:25:50,370 och uppenbarligen kommer att slå på en ny rad 514 00:25:50,370 --> 00:25:53,590 liksom, och sedan senare jag definiera funktionen hard_square så 515 00:25:53,590 --> 00:25:55,550 att när jag gör ringa för att hard_square, 516 00:25:55,550 --> 00:25:58,160 Det vet vad jag pratar om. 517 00:25:58,160 --> 00:26:00,705 >> Nu kunde jag också göra något som det här. 518 00:26:00,705 --> 00:26:02,050 Detta är något annorlunda. 519 00:26:02,050 --> 00:26:04,190 Det är nästan exakt detsamma som vad vi såg tidigare, 520 00:26:04,190 --> 00:26:08,400 utom i stället för att säga just $ x där som den parameter som hard_square, 521 00:26:08,400 --> 00:26:11,730 Jag säger $ x = 10. 522 00:26:11,730 --> 00:26:14,330 Så detta är ett exempel på defensiv programmering, 523 00:26:14,330 --> 00:26:17,070 vakta dina program mot skadliga användare. 524 00:26:17,070 --> 00:26:20,020 >> Detta är ett sätt att göra något fel kontrollera att vi inte riktigt 525 00:26:20,020 --> 00:26:24,670 har som ett alternativ i C. Vi kunde aldrig ange standardvärdet för något. 526 00:26:24,670 --> 00:26:27,010 Vi hade alltid att kontrollera huruvida, till exempel, 527 00:26:27,010 --> 00:26:30,820 om vi gjorde ett anrop till getString, var det mest korrekt om omedelbart efter att vi 528 00:26:30,820 --> 00:26:33,300 kontrolleras att vi kontrollerat huruvida strängen 529 00:26:33,300 --> 00:26:35,504 att användaren gav oss är inte lika med noll, 530 00:26:35,504 --> 00:26:37,920 eftersom vi inte vill starta arbetar med en tom sträng. 531 00:26:37,920 --> 00:26:39,670 >> Här, är detta ett sätt att skydda sig mot det. 532 00:26:39,670 --> 00:26:43,480 Om användaren inte ger oss något på något sätt, vad ska vi göra? 533 00:26:43,480 --> 00:26:46,080 Tja, vi ska bara säga vad de inte ge oss, 534 00:26:46,080 --> 00:26:47,705 Vi kommer bara att plugga in 10 istället. 535 00:26:47,705 --> 00:26:52,030 Så om de inte ge oss ett värde, bara använda 10 som standard. Och så här, 536 00:26:52,030 --> 00:26:53,940 märker att jag gör Ett samtal till hard_square, 537 00:26:53,940 --> 00:26:55,980 men det finns ingen snabb för användaren, eller hur? 538 00:26:55,980 --> 00:26:57,540 Jag bara gör en tom samtal. 539 00:26:57,540 --> 00:27:00,860 >> Men min funktion hard_square förväntar sig en parameter. 540 00:27:00,860 --> 00:27:02,222 Vad detta kommer att skriva ut? 541 00:27:02,222 --> 00:27:03,680 Det kommer att skriva ut 100, eller hur? 542 00:27:03,680 --> 00:27:05,720 Eftersom användaren inte ge mig något. 543 00:27:05,720 --> 00:27:08,970 Och så jag ska bara anta att 10-- 10 är standardvärdet. 544 00:27:08,970 --> 00:27:13,760 Och så detta skulle skriva ut ut 100 på en egen rad. 545 00:27:13,760 --> 00:27:16,390 >> PHP-filer behöver inte bara vara en enda fil. 546 00:27:16,390 --> 00:27:19,480 Du kan kombinera flera filer tillsammans, precis som du kan i C. Vägen 547 00:27:19,480 --> 00:27:24,330 Vi gjorde det i C var typiskt att göra en #include att få header-filer drog. 548 00:27:24,330 --> 00:27:26,180 Vi gör inte det i PHP. 549 00:27:26,180 --> 00:27:29,110 Vi gör något som kallas require_once. 550 00:27:29,110 --> 00:27:33,360 Och så finns det här hela sak, vad är detta __dir__? 551 00:27:33,360 --> 00:27:36,510 Det är bara en speciell variabel, eller special konstant, 552 00:27:36,510 --> 00:27:39,030 verkligen anger vad det din aktuella katalogen är. 553 00:27:39,030 --> 00:27:41,320 Och så det kommer att se ut i den aktuella katalogen 554 00:27:41,320 --> 00:27:44,900 för en fil som heter cs50.php i detta exempel här, 555 00:27:44,900 --> 00:27:50,490 och det kommer att hålla filen på toppen av din PHP-program, 556 00:27:50,490 --> 00:27:56,980 förutsatt att du sätter behöver när linjen på toppen av din PHP-fil. 557 00:27:56,980 --> 00:28:01,474 >> Så PHP används främst, men inte uteslutande används, 558 00:28:01,474 --> 00:28:03,140 som ett språk för webbaserad programmering. 559 00:28:03,140 --> 00:28:05,270 Det är verkligen hur det kom att bli. 560 00:28:05,270 --> 00:28:06,980 Men det är en fullständig språk, som vi har sett. 561 00:28:06,980 --> 00:28:10,105 Vi har sett ganska mycket allt att det kan göra detta är liknande till C, 562 00:28:10,105 --> 00:28:13,290 och det kan göra en fan av mycket mer än så. 563 00:28:13,290 --> 00:28:16,950 >> Men eftersom det är en hel språk och vi kan göra kommandoraden programmering i det. 564 00:28:16,950 --> 00:28:18,630 Vi kan köra kommandoraden program. 565 00:28:18,630 --> 00:28:22,580 Allt som krävs för att köra ett kommando line program som är skriven i PHP 566 00:28:22,580 --> 00:28:24,260 är att du har en PHP tolk. 567 00:28:24,260 --> 00:28:27,460 Så det är typ av analogt med med en kompilator på ditt system 568 00:28:27,460 --> 00:28:31,100 Om du vill kompilera din C-kod att förvandla det till körbara filer. 569 00:28:31,100 --> 00:28:33,810 Du måste ha en PHP tolk som finns på ditt system 570 00:28:33,810 --> 00:28:37,330 så att du kan tolka PHP-filer. 571 00:28:37,330 --> 00:28:40,370 >> Förutsatt att du gör, och vanligtvis denna tolk kallas PHP, 572 00:28:40,370 --> 00:28:44,300 och det är oftast levereras med de flesta nerladdningar eller installationer av PHP 573 00:28:44,300 --> 00:28:47,430 att du kan få på nätet, och säkert namnet på PHP tolken 574 00:28:47,430 --> 00:28:49,550 Vi har i CS50, IDE. 575 00:28:49,550 --> 00:28:51,819 Allt du behöver göra är att skriva php-fil. 576 00:28:51,819 --> 00:28:53,610 Och vad ditt program kommer att göra är att det är 577 00:28:53,610 --> 00:28:55,360 kommer att gå igenom tolken, är det 578 00:28:55,360 --> 00:28:58,040 kommer att ignorera allt som är inte mellan ifråga mark-- 579 00:28:58,040 --> 00:29:03,160 eller vinkelparentes frågetecken php, PHP avgränsare, och skriva ut den, 580 00:29:03,160 --> 00:29:07,660 och det kommer att tolka och verkställa kod insidan av PHP avgränsare. 581 00:29:07,660 --> 00:29:12,850 >> Så låt oss pop över till CS50 IDE och Ta en titt på ett par PHP-filer, 582 00:29:12,850 --> 00:29:19,850 kör ett par PHP-filer, i kommandoradsgränssnitt för CS50 IDE. 583 00:29:19,850 --> 00:29:22,100 Så här är vi i CS50 IDE, och jag har tagit mig friheten 584 00:29:22,100 --> 00:29:25,800 att öppna en fil som heter hello1.php. 585 00:29:25,800 --> 00:29:29,920 Och tydligen innehållet i denna fil är bara PHP avgränsare där, 586 00:29:29,920 --> 00:29:32,220 och däremellan, echo ("Hej, världen"). 587 00:29:32,220 --> 00:29:34,710 Detta är en ganska enkel PHP-program. 588 00:29:34,710 --> 00:29:37,670 Jag kommer bara att rulla ner till min terminalfönster här, 589 00:29:37,670 --> 00:29:44,320 och jag kommer att skriva php hello1.php, tryck enter. 590 00:29:44,320 --> 00:29:44,950 Hej världen. 591 00:29:44,950 --> 00:29:48,110 Det är förmodligen vad vi var förväntar sig att göra, eller hur? 592 00:29:48,110 --> 00:29:51,140 >> Låt oss gå upp och ta en annan tittar på ett program. 593 00:29:51,140 --> 00:29:52,924 hello2.php. 594 00:29:52,924 --> 00:29:55,090 Ungefär samma sak, inte mycket som pågår här. 595 00:29:55,090 --> 00:29:57,190 Den här gången, men jag kommer att uppmana användaren att ge mig sitt namn. 596 00:29:57,190 --> 00:29:59,290 Jag använder den readline funktionen igen. 597 00:29:59,290 --> 00:30:01,340 $ name = readline. 598 00:30:01,340 --> 00:30:03,070 Det är uppmaningen: "Vad heter du?" 599 00:30:03,070 --> 00:30:04,880 >> Tydligen jag utskrift det på en egen rad. 600 00:30:04,880 --> 00:30:07,220 Och sedan, så raden nedanför som kommer att vara snabb 601 00:30:07,220 --> 00:30:08,750 där användaren kan ange sitt namn. 602 00:30:08,750 --> 00:30:12,030 Och sedan använder jag lite variabel interpellation här på rad 3 603 00:30:12,030 --> 00:30:14,780 att skriva ut "Hej" och oavsett användaren skriver. 604 00:30:14,780 --> 00:30:22,040 Så det här är analogt med att säga, hej, kommatecken,% s om vi använde printf i C. 605 00:30:22,040 --> 00:30:24,910 >> Så låt oss gå och tolka detta program. 606 00:30:24,910 --> 00:30:27,400 Så återigen, jag bläddra ner till min terminalfönster. 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 Vad heter du? 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 Jag har också en annan fil som heter hello3.php. 613 00:30:39,440 --> 00:30:42,850 Jag kommer att rensa skärm med Kontroll L, 614 00:30:42,850 --> 00:30:46,210 och jag kommer att köra det. 615 00:30:46,210 --> 00:30:47,640 Vad heter du? 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å beteendet är identisk med hello2.php, men varför är det hello3.php? 619 00:30:56,540 --> 00:30:58,040 >> Tja, här är skillnaden. 620 00:30:58,040 --> 00:31:00,620 I detta fall, tillkännagivande att på rad 1 här, 621 00:31:00,620 --> 00:31:04,270 Jag har något som inte mellan PHP avgränsare. 622 00:31:04,270 --> 00:31:07,760 Jag bara skriver ut out-- eller jag just skrev, "Vad heter du?" 623 00:31:07,760 --> 00:31:12,060 När PHP tolken ser detta, det har ingen aning om hur man ska tolka det som PHP, 624 00:31:12,060 --> 00:31:15,060 och så i stället för att misslyckas, det bara att spotta ut. 625 00:31:15,060 --> 00:31:19,010 >> Så märker på rad 3 nu, min uppmaning till readline, det finns ingen snabb längre. 626 00:31:19,010 --> 00:31:21,750 Jag bara faktiskt går att-- när PHP tolken ser detta, 627 00:31:21,750 --> 00:31:23,400 det kommer att skriva ut "Vad heter du?" 628 00:31:23,400 --> 00:31:25,941 Då ser, oh, OK, here's-- allt annat kommer att vara 629 00:31:25,941 --> 00:31:29,970 tolkas som PHP, så det är därför det fungerar. 630 00:31:29,970 --> 00:31:34,990 Jag behöver inte nödvändigtvis föranleda användaren att-- insida readline, 631 00:31:34,990 --> 00:31:37,490 Jag kan bara ha det utanför av PHP avgränsare 632 00:31:37,490 --> 00:31:41,490 och tillåta tolken att bara skriva ut den för mig. 633 00:31:41,490 --> 00:31:45,364 >> Så du behöver inte egentligen bara ha att ha en uppsättning PHP avgränsare 634 00:31:45,364 --> 00:31:46,030 i ditt program. 635 00:31:46,030 --> 00:31:49,887 Du kan faktiskt ha flera av dem, öppna och stänga dem efter behov. 636 00:31:49,887 --> 00:31:51,720 Så låt oss ta en titt på ett par program 637 00:31:51,720 --> 00:31:55,070 i CS50 IDE där vi illustrerar denna idé om att ha 638 00:31:55,070 --> 00:31:58,376 flera uppsättningar av avgränsade PHP. 639 00:31:58,376 --> 00:32:02,010 >> OK, så jag har öppnat en fil här kallad add1.php. 640 00:32:02,010 --> 00:32:03,390 Och lägg märke till vad som händer här. 641 00:32:03,390 --> 00:32:08,077 Precis som tidigare, har jag en enda PHP uppsättning avgränsare. 642 00:32:08,077 --> 00:32:10,660 Jag kommer att skriva ut meddelande, "Var snäll och ge mig ett nummer." 643 00:32:10,660 --> 00:32:13,394 Då kommer jag att läsa en linje och förvara den i variabeln $ num1. 644 00:32:13,394 --> 00:32:14,810 Då kommer jag att skriva ut igen. 645 00:32:14,810 --> 00:32:16,310 Ge mig ett andra nummer. 646 00:32:16,310 --> 00:32:20,450 Läs en linje från användaren, lagra vad de skrev in i $ num2. 647 00:32:20,450 --> 00:32:23,980 Lägg ihop dem och lagra den resultera i en variabel som heter $ summa, 648 00:32:23,980 --> 00:32:26,180 och sedan skriva ut, "The summan av dessa två tal 649 00:32:26,180 --> 00:32:29,254 är "och sedan INTERPELLERA där variabeln $ summan. 650 00:32:29,254 --> 00:32:31,170 Så låt oss bara köra detta genom tolken 651 00:32:31,170 --> 00:32:33,720 för att bekräfta att detta är vad vi förväntar oss. 652 00:32:33,720 --> 00:32:37,540 php add1.php. 653 00:32:37,540 --> 00:32:38,665 Kan du ge mig ett nummer, 3. 654 00:32:38,665 --> 00:32:40,410 Kan du ge mig ett andra nummer, 4. 655 00:32:40,410 --> 00:32:43,370 Summan av dessa två siffror är 7. 656 00:32:43,370 --> 00:32:45,030 Det är tre plus 4. 657 00:32:45,030 --> 00:32:45,530 OK? 658 00:32:45,530 --> 00:32:47,770 Så inget hemskt fint där. 659 00:32:47,770 --> 00:32:51,080 >> Och nu ska vi öppna upp add2.php. 660 00:32:51,080 --> 00:32:54,460 Här har jag ett par PHP avgränsade uppsättningar där, eller hur? 661 00:32:54,460 --> 00:32:59,107 Lines 1, 3-- ledningarna 1 och 3 har ingen PHP avgränsare. 662 00:32:59,107 --> 00:33:00,940 Så när tolken ser dem, det är bara 663 00:33:00,940 --> 00:33:03,220 kommer att spotta ut exakt vad jag har skrivit det. 664 00:33:03,220 --> 00:33:05,011 Så det är där jag gör alla mina uppmaning. 665 00:33:05,011 --> 00:33:11,220 På linje 2 och 4, ser vi mycket bekant $? php slags avgränsare, 666 00:33:11,220 --> 00:33:15,210 så dessa två linjer är kommer att exekvera som PHP. 667 00:33:15,210 --> 00:33:18,270 Och sedan på rad 5, jag har denna konstig sak här, eller hur? 668 00:33:18,270 --> 00:33:20,480 Vinkelbeslaget frågetecken likhetstecken. 669 00:33:20,480 --> 00:33:22,660 Jag ska även zooma in en lite längre. 670 00:33:22,660 --> 00:33:29,270 Du kan se det här är vad jag talar om just där, denna $? =. 671 00:33:29,270 --> 00:33:33,420 >> Det visar sig att det är så vanligt att anledningen till att vi öppnar upp en uppsättning PHP 672 00:33:33,420 --> 00:33:36,055 avgränsare är att skriva ut ett värde. 673 00:33:36,055 --> 00:33:37,430 Och det är allt vi ska göra. 674 00:33:37,430 --> 00:33:39,220 Men det finns även en förkortning för det. 675 00:33:39,220 --> 00:33:46,490 $? = Är PHP förkortning för att säga ungefär $? php echo summan 676 00:33:46,490 --> 00:33:48,350 av num1 och num2. 677 00:33:48,350 --> 00:33:51,900 Så det här är bara en annan förkortning för det. 678 00:33:51,900 --> 00:33:55,550 >> Så om jag kör det här programmet, php add2.php. 679 00:33:55,550 --> 00:33:57,530 Jag ska zooma ner lite. 680 00:33:57,530 --> 00:33:59,000 Kan du ge mig ett nummer, 4. 681 00:33:59,000 --> 00:34:00,350 Kan du ge mig ett andra nummer. 682 00:34:00,350 --> 00:34:04,650 Och eftersom jag inte riktigt bryr sig om datatyper i PHP, kan jag säga 4.8. 683 00:34:04,650 --> 00:34:07,160 Summan av dessa två siffror är 8,8. 684 00:34:07,160 --> 00:34:10,179 Denna funktion fungerar ganska mycket exakt samma som vi skulle förvänta oss, 685 00:34:10,179 --> 00:34:10,989 också. 686 00:34:10,989 --> 00:34:13,114 Och jag har en mer öppen upp här kallas dice.php. 687 00:34:13,114 --> 00:34:25,625 688 00:34:25,625 --> 00:34:26,250 Försök detta igen. 689 00:34:26,250 --> 00:34:29,429 690 00:34:29,429 --> 00:34:33,280 Jag har ett mer här kallas dice1.php, som också, se, 691 00:34:33,280 --> 00:34:37,440 har den vinkelparentes fråga markera likhetstecken notation där, 692 00:34:37,440 --> 00:34:40,659 men märker att i detta fall är jag anropa funktionen rand, som när du 693 00:34:40,659 --> 00:34:42,790 kan förvänta sig genererar ett slumptal. 694 00:34:42,790 --> 00:34:46,889 "Du rullade en", och det kommer att beräkna några slumptal, mod 6 + 695 00:34:46,889 --> 00:34:47,389 1. 696 00:34:47,389 --> 00:34:49,989 Så det ska ge mig nummer inom området från en till sex. 697 00:34:49,989 --> 00:34:53,040 >> Kom ihåg att mod 6 skulle ge mig ett nummer i området från 0 till 5, 698 00:34:53,040 --> 00:34:56,630 men om jag simulera tärningskast, vilket är vad jag gör här, 699 00:34:56,630 --> 00:35:00,040 Jag vill inte att dessa tärningar att gå från 0 till 5, jag vill tärningar som går från 1 till 6. 700 00:35:00,040 --> 00:35:02,800 Och så detta är ett sätt att få mig i intervallet 1 till sex. 701 00:35:02,800 --> 00:35:04,720 Jag gör detta två gånger. 702 00:35:04,720 --> 00:35:08,630 Så tydligen jag rullar två tärningar i detta program. 703 00:35:08,630 --> 00:35:15,210 >> Så jag ska rensa skärmen, och jag kommer att göra php dice1.php. 704 00:35:15,210 --> 00:35:16,640 Du rullade en 4 och en 2. 705 00:35:16,640 --> 00:35:19,156 Och om jag kör programmet igen, rullade en 5 och 5. 706 00:35:19,156 --> 00:35:21,780 Så varje gång jag kör programmet, Jag får olika nummer, 707 00:35:21,780 --> 00:35:24,280 eftersom varje gång jag gör så, det börja om. 708 00:35:24,280 --> 00:35:27,250 Det kommer att skapa en ny uppsättning av slumptal för mig. 709 00:35:27,250 --> 00:35:29,790 >> Så om vi är vana vid köra program från C, 710 00:35:29,790 --> 00:35:32,520 vi är vana vid att skriva ./ den namn på ett program, eller hur? 711 00:35:32,520 --> 00:35:35,090 Det är så vi har gjort allt av våra program i C hittills. 712 00:35:35,090 --> 00:35:37,555 Vi kan göra detta i PHP samt genom att lägga till något som kallas 713 00:35:37,555 --> 00:35:40,026 en shebang till toppen av vår PHP-fil. 714 00:35:40,026 --> 00:35:41,400 Jag vet att det är typ av en dum ord. 715 00:35:41,400 --> 00:35:44,540 Det är kort för hash bang. 716 00:35:44,540 --> 00:35:46,300 Det är de två första tecknen där. 717 00:35:46,300 --> 00:35:50,030 Kom ihåg att vi kallar utropstecken ofta en smäll i datavetenskap. 718 00:35:50,030 --> 00:35:51,690 Det kan också vara för skarp smäll. 719 00:35:51,690 --> 00:35:53,273 Det finns ett par olika sätt att tolka det. 720 00:35:53,273 --> 00:35:57,320 Men det är i princip en speciell sorts av befaller att PHP tolken 721 00:35:57,320 --> 00:36:00,160 förstår som, åh, jag vill du kör programmet 722 00:36:00,160 --> 00:36:05,250 som är tydligen / användare / bin / php, som är faktiskt där PHP tolken 723 00:36:05,250 --> 00:36:08,590 specifikt bor i vårt system. 724 00:36:08,590 --> 00:36:12,530 Så it's-- vad som händer här är tolken förstår, oh, 725 00:36:12,530 --> 00:36:17,270 Jag uppenbarligen tänkt att använda i detta program för att köra den här filen. 726 00:36:17,270 --> 00:36:20,010 Och så kan du att hoppa över steget 727 00:36:20,010 --> 00:36:22,979 att behöva säga php something.php. 728 00:36:22,979 --> 00:36:25,020 Det finns en annan fångst här, vilket är att om vi 729 00:36:25,020 --> 00:36:27,320 vill att våra program till fungerar som förväntat, vi 730 00:36:27,320 --> 00:36:30,220 behöver göra något som kallas en fil tillstånd förändring. 731 00:36:30,220 --> 00:36:33,380 Och vi kommer go-- och vi pratar lite bitars mer om fil tillstånd förändringar 732 00:36:33,380 --> 00:36:37,550 i vår video på MVC, men det räcker att säga att detta är vad du behöver göra 733 00:36:37,550 --> 00:36:42,760 för att göra din php filer körbar. 734 00:36:42,760 --> 00:36:49,330 Så låt oss ta en titt på detta som vårt sista exempel över i CS50 IDE. 735 00:36:49,330 --> 00:36:53,910 >> Så här i IDE Jag har två filer i detta PHP katalog som inte verkar vara 736 00:36:53,910 --> 00:36:55,310 kallas .php. 737 00:36:55,310 --> 00:36:58,170 Jag har en funktion som kallas add-- Jag har en fil som heter ADD3 738 00:36:58,170 --> 00:37:00,650 och en fil som heter dice2. 739 00:37:00,650 --> 00:37:03,680 Så låt oss ta en snabb ser och öppna upp ADD3. 740 00:37:03,680 --> 00:37:08,300 Och som ni kan se i början av min fil jag har denna shebang, eller hur? 741 00:37:08,300 --> 00:37:11,420 Denna hash märke utropstecken. 742 00:37:11,420 --> 00:37:15,115 Nu ska du också kanske märke som av någon anledning, 743 00:37:15,115 --> 00:37:16,990 Jag har inte någon syntax belyser längre, 744 00:37:16,990 --> 00:37:20,198 och det är vad jag hänvisade till tidigare, vilket var att om jag inte nämna min fil 745 00:37:20,198 --> 00:37:23,040 .php, jag har inte förmånen av syntax highlighting längre. 746 00:37:23,040 --> 00:37:26,220 Denna fil kallas bara ADD3. 747 00:37:26,220 --> 00:37:30,960 Så att jag kan köra det senare med ./ ADD3 och inte ./ add3.php. 748 00:37:30,960 --> 00:37:33,680 >> Så reason-- det är fortfarande bra, det är fortfarande giltigt PHP, 749 00:37:33,680 --> 00:37:37,000 men det är inte syntax markerat, eftersom den här filen kallas inte something.php. 750 00:37:37,000 --> 00:37:41,580 Det är den enda verkliga skillnaden här, plus Shebang. 751 00:37:41,580 --> 00:37:45,170 Så låt oss se vad som händer när Jag försöker och kör detta program. 752 00:37:45,170 --> 00:37:50,780 ./ ADD3, precis som jag gör med C. Bash. 753 00:37:50,780 --> 00:37:53,190 ./ ADD3 tillstånd förnekas. 754 00:37:53,190 --> 00:37:55,390 Detta är vad du tänker för att se om du glömmer 755 00:37:55,390 --> 00:37:59,280 att använda kommandot chmod för att ändra behörigheterna för filen. 756 00:37:59,280 --> 00:38:03,845 >> Som det visar sig, vanlig PHP filer kan inte bara utföras. 757 00:38:03,845 --> 00:38:06,970 De kan tolkas, men vi är göra något lite annorlunda här. 758 00:38:06,970 --> 00:38:07,761 Vi utför det. 759 00:38:07,761 --> 00:38:12,970 Och så jag måste lägga tillstånd om verkställighet, chmod a + x ADD3. 760 00:38:12,970 --> 00:38:15,680 Då kan jag säga ./ ADD3. 761 00:38:15,680 --> 00:38:16,860 Kan du ge mig ett nummer. 762 00:38:16,860 --> 00:38:18,060 5, 6. 763 00:38:18,060 --> 00:38:20,490 Summan av dessa två siffror är 11. 764 00:38:20,490 --> 00:38:26,530 >> På samma sätt har jag redan chmoded dice2, så jag kan bara skriva ./ dice2, 765 00:38:26,530 --> 00:38:31,260 du rullade en en och en 1, du rullade en 5 och 4, och så vidare. 766 00:38:31,260 --> 00:38:33,680 >> Så det är ganska mycket Idén om ett PHP syntax, eller hur? 767 00:38:33,680 --> 00:38:35,221 Det finns en hel del att få igenom, jag vet. 768 00:38:35,221 --> 00:38:39,160 Men förhoppningsvis du har sett nu att PHP är egentligen inte så annorlunda från C 769 00:38:39,160 --> 00:38:43,670 och verkligen ger oss möjlighet att ta saker upp ett hack eller två. 770 00:38:43,670 --> 00:38:48,230 Vi behöver verkligen inte oroa dig för mycket about-- vi egentligen inte 771 00:38:48,230 --> 00:38:51,605 oroa sig alltför mycket om detaljerna låg nivå vi 772 00:38:51,605 --> 00:38:52,980 behövt oroa med C, eller hur? 773 00:38:52,980 --> 00:38:56,170 Vi kan fokusera på högre nivå saker som PHP 774 00:38:56,170 --> 00:39:01,090 tillåter oss att göra och att ta för givet att det kommer att fungera för oss. 775 00:39:01,090 --> 00:39:04,350 Så det ger oss möjlighet nu, övergår från C till PHP, 776 00:39:04,350 --> 00:39:08,280 att göra program som är mycket mer komplex och kanske mycket mer robust. 777 00:39:08,280 --> 00:39:13,070 >> Så jag hoppas att ni har kul arbets med PHP, och jag är Doug Lloyd. 778 00:39:13,070 --> 00:39:15,050 Detta är CS50. 779 00:39:15,050 --> 00:39:17,637