1 00:00:00,000 --> 00:00:05,340 2 00:00:05,340 --> 00:00:07,370 >> DOUG LLOYD: Dus we hebben veel gedaan van het werk in C, 3 00:00:07,370 --> 00:00:09,536 en C is een echt cool taal, want het geeft je 4 00:00:09,536 --> 00:00:12,840 de mogelijkheid om echt te duiken lage niveau in uw programma's. 5 00:00:12,840 --> 00:00:16,810 We krijgen om dingen te doen als echt minuut als het manipuleren 6 00:00:16,810 --> 00:00:18,800 individuele bytes van het geheugen. 7 00:00:18,800 --> 00:00:21,420 Bedenk dat echt pointers laat ons dat flexibiliteit. 8 00:00:21,420 --> 00:00:25,260 >> Maar moeten we altijd hebben dat fijnkorrelig niveau van detail 9 00:00:25,260 --> 00:00:26,820 in onze programma's? 10 00:00:26,820 --> 00:00:28,210 Waarschijnlijk niet, toch? 11 00:00:28,210 --> 00:00:30,376 En als we gaan te hebben een trade-off tussen het zijn 12 00:00:30,376 --> 00:00:32,911 in staat om echt te doen, echt minute dingen en echt, echt 13 00:00:32,911 --> 00:00:35,910 grote dingen die we niet hoeven te denken over, we hebben niet te implementeren 14 00:00:35,910 --> 00:00:40,290 deze echt grote ideeën als ze zijn al ingebouwd voor ons, 15 00:00:40,290 --> 00:00:43,980 algemeen voor het bouwen van grote programma's of grote projecten, 16 00:00:43,980 --> 00:00:49,130 we waarschijnlijk gaan om het zekere voor het van het hebben van meer taal dingen gebouwd in 17 00:00:49,130 --> 00:00:51,300 voor ons, in plaats van de low-level stuff. 18 00:00:51,300 --> 00:00:53,970 En dat is waar PHP komt echt in. 19 00:00:53,970 --> 00:00:58,200 >> Nu, een van de redenen dat we leren PHP in CS50 20 00:00:58,200 --> 00:01:01,020 is dat het zwaar geïnspireerd door C. En in feite, naar mijn mening, 21 00:01:01,020 --> 00:01:05,140 Er zijn eigenlijk twee voorlopercellen talen die 22 00:01:05,140 --> 00:01:08,200 zijn zeer vaak tegenwoordig. 23 00:01:08,200 --> 00:01:10,110 C en LISP. 24 00:01:10,110 --> 00:01:13,280 En ze zijn voorlopercellen talen omdat elke andere moderne programmering 25 00:01:13,280 --> 00:01:17,380 taal die heeft ontwikkeld sindsdien is geïnspireerd 26 00:01:17,380 --> 00:01:20,330 één of ander syntactisch. 27 00:01:20,330 --> 00:01:26,160 PHP is zeer vergelijkbaar syntactisch C, terwijl talen zoals Scheme, 28 00:01:26,160 --> 00:01:27,900 bijvoorbeeld, dat Je hebt misschien gehoord van, 29 00:01:27,900 --> 00:01:32,070 is zwaar geïnspireerd door een taal genaamd LISP, dat is een oudere taal. 30 00:01:32,070 --> 00:01:34,220 >> Dus de reden dat we leren PHP in CS50 is dat, 31 00:01:34,220 --> 00:01:37,730 door te weten C als fundamenteel als jij op dit punt, 32 00:01:37,730 --> 00:01:41,280 oppakken van PHP, die u geeft vermogen om veel hogere dingen 33 00:01:41,280 --> 00:01:44,710 dan C doet, is niet dat veel van een hindernis, 34 00:01:44,710 --> 00:01:48,230 omdat je al de basisidee van de syntax. 35 00:01:48,230 --> 00:01:50,590 C is al bijna 45 jaar op dit punt. 36 00:01:50,590 --> 00:01:52,780 PHP is al ongeveer 20 jaar. 37 00:01:52,780 --> 00:01:57,080 En in die 25 jaar ertussen, programmeurs 38 00:01:57,080 --> 00:02:01,540 vastgesteld dat ze zou veel liever hoger niveau vaardigheden, 39 00:02:01,540 --> 00:02:04,970 en de fouten en de strijd van de 20 tussenliggende jaren 40 00:02:04,970 --> 00:02:08,210 leidde tot PHP en andere moderne talen. 41 00:02:08,210 --> 00:02:11,039 >> PHP is een grote keuze aan taal voor software 42 00:02:11,039 --> 00:02:14,042 dat allow-- voor software dat-- waar u 43 00:02:14,042 --> 00:02:16,250 nodig hebt om dingen te doen die in C zijn eigenlijk ingewikkeld. 44 00:02:16,250 --> 00:02:18,480 Dus bijvoorbeeld, werken met strijkers in C 45 00:02:18,480 --> 00:02:21,709 is zeer gecompliceerd, omdat zoals we weten, strings in C 46 00:02:21,709 --> 00:02:23,250 zijn eigenlijk alleen maar arrays van karakters. 47 00:02:23,250 --> 00:02:25,230 Het is niet een ingebouwd type data. 48 00:02:25,230 --> 00:02:28,220 Of misschien meer fundamenteel, iets wat we niet eens dekken in C, 49 00:02:28,220 --> 00:02:30,360 wat als je moet doen sommige computernetwerken? 50 00:02:30,360 --> 00:02:30,860 Prima? 51 00:02:30,860 --> 00:02:34,920 >> C heeft de mogelijkheid om het te doen, maar het is zo geheimzinnige en zo moeilijk om daadwerkelijk te doen. 52 00:02:34,920 --> 00:02:37,580 Zou het niet mooi zijn als de taal had een ingebouwde, eenvoudige manier 53 00:02:37,580 --> 00:02:38,910 te implementeren netwerken? 54 00:02:38,910 --> 00:02:43,420 En PHP is een taal die die maakt, of vergemakkelijkt dat, heel wat meer. 55 00:02:43,420 --> 00:02:47,740 Zoals ik al zei, PHP is zeer zwaar geïnspireerd door C. De syntax is zeer vergelijkbaar. 56 00:02:47,740 --> 00:02:51,760 En dus moet het hopelijk de overgang van de ene naar de andere 57 00:02:51,760 --> 00:02:54,710 een beetje zachter dan sommige andere talen kunnen zijn. 58 00:02:54,710 --> 00:02:58,800 >> Om te beginnen met het schrijven van PHP, gewoon open te stellen een bestand met de .php extensie. 59 00:02:58,800 --> 00:03:00,670 Technisch is dit niet daadwerkelijk benodigde, 60 00:03:00,670 --> 00:03:04,495 maar als je dingen als syntax wil markeren in IDE, zodat het type 61 00:03:04,495 --> 00:03:07,620 namen, of variabele namen, functies, je weet wel, de sleutelwoorden van de taal 62 00:03:07,620 --> 00:03:10,090 worden gemarkeerd in een specifieke kleur, je over het algemeen 63 00:03:10,090 --> 00:03:14,020 wilt u uw bestanden met een naam een bepaald bestand extensie. 64 00:03:14,020 --> 00:03:18,430 Dus hebben we onze bestand met de naam met een .php uitbreiding, maar dan ook met PHP, 65 00:03:18,430 --> 00:03:23,310 alle PHP-code die we schrijven in dat bestand moet worden ingesloten in deze PHP 66 00:03:23,310 --> 00:03:25,190 afbakeningen die we zien hier op het scherm. 67 00:03:25,190 --> 00:03:27,910 Hoekijzer? Php te beginnen. 68 00:03:27,910 --> 00:03:30,860 Dan schrijven we al onze PHP code die we willen in tussen. 69 00:03:30,860 --> 00:03:32,260 En dan ? 70 00:03:32,260 --> 00:03:34,710 hoekijzer te sluiten. 71 00:03:34,710 --> 00:03:37,170 >> Als we dit niet doen, dan wat gaat er gebeuren? 72 00:03:37,170 --> 00:03:38,170 Het gaat niet om te crashen. 73 00:03:38,170 --> 00:03:39,410 Het gaat niet aan echt verpesten ons programma. 74 00:03:39,410 --> 00:03:41,440 Maar het is niet van plan te hebben het effect dat we willen. 75 00:03:41,440 --> 00:03:44,540 Wat er gaat gebeuren, echt, is dat wanneer wij proberen en draaien dit programma, 76 00:03:44,540 --> 00:03:50,330 niet alles tussen deze scheidingstekens zal letterlijk worden afgedrukt. 77 00:03:50,330 --> 00:03:52,210 Het gaat niet aan de code daadwerkelijk uit te voeren, 78 00:03:52,210 --> 00:03:56,010 het gaat gewoon print het letterlijk uit. 79 00:03:56,010 --> 00:03:57,320 >> Waarom is het geval? 80 00:03:57,320 --> 00:04:00,416 Dus C is wat bekend als een gecompileerde taal. 81 00:04:00,416 --> 00:04:03,040 Je bent waarschijnlijk bekend met de stap van het maken van uw programma's, 82 00:04:03,040 --> 00:04:07,820 het draaien van de .c bestanden en .h bestanden in een enkel uitvoerbaar met make, 83 00:04:07,820 --> 00:04:11,130 met name het gebruik Clang als onze compiler. 84 00:04:11,130 --> 00:04:13,030 PHP, hoewel, niet hebben dit equivalent. 85 00:04:13,030 --> 00:04:15,600 PHP is wat een heet geïnterpreteerde taal. 86 00:04:15,600 --> 00:04:16,760 En wat betekent dat? 87 00:04:16,760 --> 00:04:20,680 >> Nou, het betekent dat we niet hoeven te zetten onze broncode van nullen en enen 88 00:04:20,680 --> 00:04:21,470 vooraf. 89 00:04:21,470 --> 00:04:23,900 Integendeel, er is een programma, die ook wel 90 00:04:23,900 --> 00:04:29,771 PHP, dat PHP en begrijpt kan soort van maken op de vlieg. 91 00:04:29,771 --> 00:04:32,520 Dat is niet echt precies klopt, maar het is een vrij goede analogie 92 00:04:32,520 --> 00:04:33,760 van wat er gebeurt. 93 00:04:33,760 --> 00:04:37,230 Het is de interpretatie van die nullen en enen op de vlieg. 94 00:04:37,230 --> 00:04:40,160 En dus als het niet weet hoe iets te verwerken, 95 00:04:40,160 --> 00:04:42,800 als het niet weet hoe proces PHP, je waarschijnlijk 96 00:04:42,800 --> 00:04:44,680 wilde dat de tekst daar te zetten, toch? 97 00:04:44,680 --> 00:04:48,960 >> Je wilde waarschijnlijk om de code in te zetten daar, zelfs als het niet tussen PHP-- 98 00:04:48,960 --> 00:04:50,035 de PHP scheidingstekens. 99 00:04:50,035 --> 00:04:51,910 Maar-- dus gaat het niet om het voor u te verwijderen, 100 00:04:51,910 --> 00:04:53,576 het is gewoon om in principe gooi hem weg. 101 00:04:53,576 --> 00:04:55,550 Dus het gaat om af te drukken het uit aan het scherm. 102 00:04:55,550 --> 00:04:57,150 >> Dit lijkt het een slecht ding, maar eigenlijk is het 103 00:04:57,150 --> 00:04:58,220 gaan een echt goede zaak, want we zullen 104 00:04:58,220 --> 00:05:00,390 zien als we praten over PHP web development, 105 00:05:00,390 --> 00:05:04,010 omdat het betekent dat we kunnen tussenwerpen PHP en HTML. 106 00:05:04,010 --> 00:05:06,640 We kunnen ze samen gebruiken om het creëren van een meer dynamische webpagina. 107 00:05:06,640 --> 00:05:10,650 Maar meer daarover in de video op PHP web development. 108 00:05:10,650 --> 00:05:12,021 >> Dus wat is de syntax van PHP? 109 00:05:12,021 --> 00:05:13,520 Dat is wat deze video is alles over. 110 00:05:13,520 --> 00:05:14,850 Laten we erover praten. 111 00:05:14,850 --> 00:05:16,490 >> Dus om te beginnen, variabelen. 112 00:05:16,490 --> 00:05:18,030 PHP variabelen bestaan. 113 00:05:18,030 --> 00:05:20,067 Er zijn slechts twee grote verschillen C. 114 00:05:20,067 --> 00:05:21,900 De eerste is dat er geen soort specificatie. 115 00:05:21,900 --> 00:05:24,245 We hoeven niet te zeggen int, char, vlotter, al dat spul. 116 00:05:24,245 --> 00:05:25,620 We hoeven niet dat niet meer te doen. 117 00:05:25,620 --> 00:05:26,810 PHP is een moderne taal. 118 00:05:26,810 --> 00:05:28,910 Het kan uitzoeken wat je bent proberen te doen of een beste 119 00:05:28,910 --> 00:05:30,451 raden naar wat je probeert te doen. 120 00:05:30,451 --> 00:05:31,700 Dus dat is vrij aardig. 121 00:05:31,700 --> 00:05:35,330 >> Het andere ding is dat alle variabele namen moeten beginnen met een dollarteken. 122 00:05:35,330 --> 00:05:36,940 Dat is gewoon iets om te wennen aan. 123 00:05:36,940 --> 00:05:39,496 Het is een beetje raar, omdat het is zo dat PHP kan begrijpen 124 00:05:39,496 --> 00:05:40,870 wat een variabele is en wat niet. 125 00:05:40,870 --> 00:05:43,340 Dus elke variabele begint met een dollarteken. 126 00:05:43,340 --> 00:05:46,884 Dus in C kunnen we iets te zeggen als dit, int x = 54. 127 00:05:46,884 --> 00:05:48,550 We hoeven niet meer te doen in PHP. 128 00:05:48,550 --> 00:05:52,540 We kunnen alleen maar zeggen dat $ x = 54. 129 00:05:52,540 --> 00:05:55,920 En we kunnen zeggen, bijvoorbeeld in C, als we hadden pond inbegrepen de CS50 .h 130 00:05:55,920 --> 00:06:00,314 header-bestand, zouden we kunnen zeggen snaar zin = "Dit is CS50." 131 00:06:00,314 --> 00:06:01,980 We hoeven niet om dat te doen in PHP, dat wel. 132 00:06:01,980 --> 00:06:04,865 We kunnen alleen maar zeggen $ zin = "Dit is CS50." 133 00:06:04,865 --> 00:06:08,760 En inderdaad, koord nu een ingebouwde data type in PHP, 134 00:06:08,760 --> 00:06:10,950 of liever PHP begrijpt wat een string is. 135 00:06:10,950 --> 00:06:15,612 Het is gescheiden van een matrix tekens zoals het is in C. 136 00:06:15,612 --> 00:06:17,570 Al uw favoriete voorwaardelijke verklaringen van C 137 00:06:17,570 --> 00:06:19,520 zijn nog beschikbaar voor u om te gebruiken. 138 00:06:19,520 --> 00:06:21,140 Dus geen grote overgang daar. 139 00:06:21,140 --> 00:06:23,400 We kunnen say-- we kunnen hebben Als uitspraken als deze. 140 00:06:23,400 --> 00:06:28,210 Als $ y 43, of $ z = 15. 141 00:06:28,210 --> 00:06:29,690 Dus dat is vrij eenvoudig. 142 00:06:29,690 --> 00:06:31,980 We kunnen hebben indien en anders. 143 00:06:31,980 --> 00:06:34,210 We kunnen indien en anders als te hebben. 144 00:06:34,210 --> 00:06:36,430 >> En merk iets hier vrij aardig, en dit 145 00:06:36,430 --> 00:06:39,620 is een soort van een van die voordelen van PHP versus C, bericht 146 00:06:39,620 --> 00:06:41,510 welke functie we hier niet gebruiken? 147 00:06:41,510 --> 00:06:47,737 We gebruiken == om te vergelijken een variabele $ naam, naar een string. 148 00:06:47,737 --> 00:06:49,070 We konden dat niet doen in C, toch? 149 00:06:49,070 --> 00:06:53,200 We moesten een functie genaamd gebruiken StrComp of StrEndComp of 150 00:06:53,200 --> 00:06:54,840 van verwante neven. 151 00:06:54,840 --> 00:06:56,980 >> En zo al zien we deze voordelen. 152 00:06:56,980 --> 00:07:00,930 We hoeven niet om iets te doen zo dom of misschien wel intuïtief 153 00:07:00,930 --> 00:07:03,540 als bel een functie genaamd StrComp als ik wil gewoon om te testen 154 00:07:03,540 --> 00:07:05,237 of een waarde gelijk aan een string. 155 00:07:05,237 --> 00:07:07,820 Ik kon gewoon gebruik maken van gelijk gelijken, alsof ik kon niets anders doen. 156 00:07:07,820 --> 00:07:09,560 Dus er is een voordeel. 157 00:07:09,560 --> 00:07:13,350 >> Soms, door de manier, zou je zie anders als één woord, elseif. 158 00:07:13,350 --> 00:07:14,910 En dat is OK in PHP ook. 159 00:07:14,910 --> 00:07:17,020 Dus soms zie je misschien dat. 160 00:07:17,020 --> 00:07:17,790 Het is geen typfout. 161 00:07:17,790 --> 00:07:21,830 PHP begrijpt eigenlijk elseif. 162 00:07:21,830 --> 00:07:23,980 Ik weet niet waarom ze besloten om dat, 163 00:07:23,980 --> 00:07:28,220 maar zoals we al vele malen gezien gedurende onze video's tot nu toe, 164 00:07:28,220 --> 00:07:30,460 we programmeurs vinden het geweldig als We kunnen dingen snel te doen, 165 00:07:30,460 --> 00:07:33,660 dus het wegwerken van die ruimte is blijkbaar een groot voordeel. 166 00:07:33,660 --> 00:07:34,800 >> Dus dat is indien en elseif. 167 00:07:34,800 --> 00:07:37,540 We hebben ook de ternaire operator, recall vraagteken colon, 168 00:07:37,540 --> 00:07:43,262 voor heel korte vorm als anders of voorwaardelijke vertakking. 169 00:07:43,262 --> 00:07:45,470 En blijkbaar deze, wat we proberen te doen hier 170 00:07:45,470 --> 00:07:49,720 is toe te wijzen aan de variabele $ brief waar of onwaar, 171 00:07:49,720 --> 00:07:54,110 naargelang $ var is een alfabetisch teken. 172 00:07:54,110 --> 00:07:57,320 Dus dit is redelijk vergelijkbaar met isAlpha dat we kennen van C. 173 00:07:57,320 --> 00:07:59,010 Dit is een soort van het equivalent in PHP. 174 00:07:59,010 --> 00:08:01,550 De functie is blijkbaar genaamd ctype_alpha, 175 00:08:01,550 --> 00:08:03,450 maar dat is hoe we het doen in PHP. 176 00:08:03,450 --> 00:08:08,560 Dus dit alles gaat worden is, indien $ var is een brief, $ brief is waar. 177 00:08:08,560 --> 00:08:13,820 Als $ var is niet een brief, $ brief is vals. 178 00:08:13,820 --> 00:08:15,820 >> We hebben ook een switch statements nog steeds. 179 00:08:15,820 --> 00:08:17,870 We herinneren die uit C ook. 180 00:08:17,870 --> 00:08:22,480 Op de top is er, dat is hoe we het doen iets als get int of je string. 181 00:08:22,480 --> 00:08:23,845 Zodat PHP heeft die ingebouwd. 182 00:08:23,845 --> 00:08:25,470 We niet de CS50 bibliotheek meer nodig. 183 00:08:25,470 --> 00:08:27,237 We kunnen gewoon gebruik maken van de functie readline. 184 00:08:27,237 --> 00:08:29,820 Wat dat gaat doen is druk de boodschap: "Uw staat, 185 00:08:29,820 --> 00:08:33,820 alsjeblieft, "en dan knipperen prompt wachten tot de gebruiker invoeren 186 00:08:33,820 --> 00:08:34,739 wat informatie. 187 00:08:34,739 --> 00:08:36,530 Let nu op wat anders we kunnen doen met schakelaar. 188 00:08:36,530 --> 00:08:39,105 Als je het al eerder hebt gebruikt, je kan die schakelaar herinneren 189 00:08:39,105 --> 00:08:44,960 is vrij veel beperkt tot gehele getallen en karakters, maar nu kunnen we strings gebruiken. 190 00:08:44,960 --> 00:08:50,190 En in feite is de switch statement in PHP is een stuk flexibeler 191 00:08:50,190 --> 00:08:54,880 dan zijn neef van C. 192 00:08:54,880 --> 00:08:55,380 Loops. 193 00:08:55,380 --> 00:08:58,130 Net als voorwaardelijke, al je oude favorieten zijn er nog steeds. 194 00:08:58,130 --> 00:09:00,740 We hebben tijdens lussen die tellen vanaf 1 tot 100 in dit geval. 195 00:09:00,740 --> 00:09:03,940 We hebben doen terwijl loops die tellen 1-100, 196 00:09:03,940 --> 00:09:06,200 en we hebben voor lussen die tellen 1-100. 197 00:09:06,200 --> 00:09:07,220 Dus geen grote sprong daar. 198 00:09:07,220 --> 00:09:09,360 De syntax is vrij veel precies hetzelfde, 199 00:09:09,360 --> 00:09:11,760 behalve wij nu gebruiken dollarteken variabele plaats 200 00:09:11,760 --> 00:09:17,260 verklaren integer variabelen of zoiets voor onze balies. 201 00:09:17,260 --> 00:09:20,090 >> Hier is waar dingen een veel beter dan C, dat wel. 202 00:09:20,090 --> 00:09:21,020 Arrays. 203 00:09:21,020 --> 00:09:23,020 Zo herinner toen we over C, teneinde 204 00:09:23,020 --> 00:09:25,560 voor ons om te groeien en krimpen sets van de informatie, 205 00:09:25,560 --> 00:09:28,310 we nodig hadden om te sorteren van wanbetaling dit idee van een gekoppelde lijst, 206 00:09:28,310 --> 00:09:30,780 omdat C arrays werden vastgesteld in grootte. 207 00:09:30,780 --> 00:09:31,800 We konden ze niet krimpen. 208 00:09:31,800 --> 00:09:32,930 We kunnen ze niet groeien. 209 00:09:32,930 --> 00:09:36,074 We moesten geheugen herverdelen en al deze waanzin 210 00:09:36,074 --> 00:09:38,490 of gebruik maken van gelinkte lijsten, die nemen heel wat meer ruimte. 211 00:09:38,490 --> 00:09:41,590 Maar in PHP, arrays zijn niet meer in omvang vast. 212 00:09:41,590 --> 00:09:43,240 Ze kunnen groeien en kunnen krimpen. 213 00:09:43,240 --> 00:09:46,660 Dus nogmaals, deze 20 jaar die bestonden tussen de eerste release van C 214 00:09:46,660 --> 00:09:49,440 en de eerste release van PHP, hebben we besloten dat, weet je, 215 00:09:49,440 --> 00:09:51,670 Het zou echt geweldig zijn als we konden doen. 216 00:09:51,670 --> 00:09:54,100 En dus hebben we geïmplementeerd dit. 217 00:09:54,100 --> 00:09:58,040 >> Dus PHP arrays zijn niet vastgesteld grootte, en omdat PHP niet echt 218 00:09:58,040 --> 00:10:03,090 hebben programmeur front-facing noties van soorten, 219 00:10:03,090 --> 00:10:05,110 kunnen we data types te mengen in onze arrays, ook. 220 00:10:05,110 --> 00:10:08,100 Dus we hebben niet eens alle gebruiken integers of alle zwevende punten, 221 00:10:08,100 --> 00:10:12,826 kunnen we een combinatie van allemaal verschillende soorten in een matrix. 222 00:10:12,826 --> 00:10:14,700 Het uitroepen van een array is vrij eenvoudig. 223 00:10:14,700 --> 00:10:16,116 Het is net als elke andere variabele. 224 00:10:16,116 --> 00:10:20,020 $ nums = array (1, 2, 3, 4), array een functie 225 00:10:20,020 --> 00:10:22,760 die is ingebouwd in PHP dat zal een reeks voor u maken. 226 00:10:22,760 --> 00:10:28,315 Hierdoor ontstaat een serie van vier waarden, getallen in dit geval heet $ nums. 227 00:10:28,315 --> 00:10:29,940 En er is meer dan één manier om het te doen. 228 00:10:29,940 --> 00:10:32,420 En we gaan zien dit veel in PHP. 229 00:10:32,420 --> 00:10:36,380 PHP is ontwikkeld door verschillende mensen en groeit en groeit en groeit. 230 00:10:36,380 --> 00:10:40,050 Er is meestal niet slechts twee of drie manieren om iets te doen in PHP, 231 00:10:40,050 --> 00:10:42,170 er is meestal als 10 of 20. 232 00:10:42,170 --> 00:10:45,300 Hier is gewoon een andere gemeenschappelijke manier om een ​​array te verklaren. 233 00:10:45,300 --> 00:10:48,310 $ nums = square bracket 1, 2, 3, 4. 234 00:10:48,310 --> 00:10:53,170 Dus dit soort vergelijkbaar C's angle br-- accolade notatie plaats. $ - 235 00:10:53,170 --> 00:10:58,525 of het zou int nums vierkant haakjes geeft accolade 1, 2, 3, 4. 236 00:10:58,525 --> 00:11:02,710 In PHP is het $ nums = square beugels 1, 2, 3, 4. 237 00:11:02,710 --> 00:11:08,920 Maar beide voorbeelden geef me een reeks van vier in dit geval integers. 238 00:11:08,920 --> 00:11:10,920 >> Wat als ik iets wil overstag op dit moment? 239 00:11:10,920 --> 00:11:14,760 Nou ik kan alleen maar zeggen $ nums 4, die nogmaals, we nog steeds rekenen vanaf 0 hier 240 00:11:14,760 --> 00:11:17,800 in PHP, zou de vijfde zijn element van de array. 241 00:11:17,800 --> 00:11:18,990 Ik kan alleen maar zeggen. 242 00:11:18,990 --> 00:11:22,860 Ik ga niet naar een seg lijden fout, omdat mijn array is gewoon 243 00:11:22,860 --> 00:11:24,337 gaan groeien om tegemoet dat. 244 00:11:24,337 --> 00:11:25,420 Dat is erg mooi, toch? 245 00:11:25,420 --> 00:11:28,400 En in feite, ik weet niet eens nodig om aangeven waar ik wil om het te zetten. 246 00:11:28,400 --> 00:11:31,220 Ik kan dit en gewoon maar zeggen tack het juist op tot het einde, 247 00:11:31,220 --> 00:11:34,099 of ik kon zelfs alleen zeggen $ nums 20 of 1000. 248 00:11:34,099 --> 00:11:35,140 Het maakt eigenlijk niet uit. 249 00:11:35,140 --> 00:11:38,330 Het is nog steeds gewoon om tack het juist op tot het einde. 250 00:11:38,330 --> 00:11:41,490 >> Dus ik kan groeien, en as-- we zijn niet van plan om het te bedekken hier, 251 00:11:41,490 --> 00:11:45,360 maar ik kan splitsen of strippen elementen uit de serie zo goed, 252 00:11:45,360 --> 00:11:50,064 en de serie zal krimpen om tegemoet die nu ontbrekende of lege ruimte. 253 00:11:50,064 --> 00:11:52,230 Er is een andere manier om overstag iets op een matrix, 254 00:11:52,230 --> 00:11:54,330 die een functie genaamd array_push. 255 00:11:54,330 --> 00:11:57,860 Dus nogmaals, alleen dit idee van in staat om dingen te doen veel verschillende manieren. 256 00:11:57,860 --> 00:12:01,950 Dus we hebben gezien op drie verschillende manieren nu een ander element tack op een array. 257 00:12:01,950 --> 00:12:06,900 Dus dit voegt een ander element aan het einde van de $ nums array. 258 00:12:06,900 --> 00:12:08,340 En we kunnen mengen onze data types. 259 00:12:08,340 --> 00:12:13,110 Dus kon ik een array van niet 1, 2, 3, 4, maar 1, waar, 3, 4, 260 00:12:13,110 --> 00:12:16,420 waar de ware is een Boolean, en dan als ik wil Tack op een ander element 261 00:12:16,420 --> 00:12:20,860 die matrix, misschien een koord, de string "vijf," Ik kon dat doen. 262 00:12:20,860 --> 00:12:26,110 En nu is mijn serie zou 1 zijn, waar, 3, 4, vijf. 263 00:12:26,110 --> 00:12:28,640 Het woord vijf, niet het gehele getal 5. 264 00:12:28,640 --> 00:12:31,270 Dus veel flexibiliteit daar. 265 00:12:31,270 --> 00:12:33,290 >> De flexibiliteit krijgt nog beter, hoewel, 266 00:12:33,290 --> 00:12:37,530 omdat PHP heeft ondersteuning voor iets riep een associatieve array. 267 00:12:37,530 --> 00:12:40,660 En wij soort van vaag gepraat ongeveer associatieve arrays in C 268 00:12:40,660 --> 00:12:44,740 in de context van hash tabellen, omdat wat associatieve arrays zijn echt allemaal 269 00:12:44,740 --> 00:12:48,950 over het maken van belangrijke waarde paar mappings. 270 00:12:48,950 --> 00:12:53,410 En in dit geval, indien de keys-- We zijn bekend met arrays uit C, 271 00:12:53,410 --> 00:12:55,440 de toetsen zijn kengetallen. 272 00:12:55,440 --> 00:12:57,530 0, 1, 2, 3. 273 00:12:57,530 --> 00:13:03,070 En de waarden wat we zien dat matrix 0, matrix 1, array 2, enzovoort. 274 00:13:03,070 --> 00:13:06,310 Dus de toetsen indexen, en de waarden 275 00:13:06,310 --> 00:13:10,060 wat er in die array locatie, gespecificeerd door die index. 276 00:13:10,060 --> 00:13:15,130 >> Maar in PHP, hoeven we niet om dit te doen notie van de array 0, 1-array, array 2 277 00:13:15,130 --> 00:13:15,830 meer. 278 00:13:15,830 --> 00:13:21,025 We kunnen nu gebruik maken van de werkelijke woorden om sleutels in kaart waarden. 279 00:13:21,025 --> 00:13:22,650 En dus kon ik zoiets zeggen. 280 00:13:22,650 --> 00:13:26,710 Ik kon een array maken met de square bracket syntax als volgt. 281 00:13:26,710 --> 00:13:30,685 $ pizza = vierkant haakje "kaas" en dan 282 00:13:30,685 --> 00:13:37,210 dit soort dubbele pijl notatie, 8,99, "pepperoni," pijl 10.99-- 9,99, 283 00:13:37,210 --> 00:13:37,880 enzovoort. 284 00:13:37,880 --> 00:13:39,060 En dus wat is hier aan de hand? 285 00:13:39,060 --> 00:13:41,040 Wat ben ik eigenlijk mee bezig? 286 00:13:41,040 --> 00:13:43,990 Ik ben het creëren van belangrijke waarde paar mappings. 287 00:13:43,990 --> 00:13:49,060 Dus in plaats van te zeggen, bijvoorbeeld, pizza's 0, 1 pieces, pizza's 2, 288 00:13:49,060 --> 00:13:52,350 Ik kan nu zeggen pizza kaas, pepperoni pizza, 289 00:13:52,350 --> 00:13:55,120 en verwijzen naar de waarden in verband met hen. 290 00:13:55,120 --> 00:13:56,970 >> Dus hier zijn onze sleutels in het groen. 291 00:13:56,970 --> 00:13:59,870 Kaas, pepperoni, groente, buffalo kip. 292 00:13:59,870 --> 00:14:04,200 Hier is de pijl die maakt Deze toets waardepaar mapping. 293 00:14:04,200 --> 00:14:07,420 En dan zijn hier de waarden op die array locatie. 294 00:14:07,420 --> 00:14:10,330 Dus het is als zeggen scala 0 is gelijk aan 8,99. 295 00:14:10,330 --> 00:14:11,720 De sleutel is 0. 296 00:14:11,720 --> 00:14:13,600 De waarde is 8,99. 297 00:14:13,600 --> 00:14:19,370 Ik kan nu zeggen scala kaas, of in dit geval pizza kaas, kaas is de sleutel, 298 00:14:19,370 --> 00:14:23,340 en wat ik vind op pizza kaas is 8,99. 299 00:14:23,340 --> 00:14:25,540 Dat is de waarde die ik daar te vinden. 300 00:14:25,540 --> 00:14:28,124 >> Dus ik kan zeggen dingen willen. $ pizza kaas = 7,99. 301 00:14:28,124 --> 00:14:29,040 Zeggen dat ik met een verkoop. 302 00:14:29,040 --> 00:14:31,750 Ik wil dis-- ik wil laten vallen de prijs van de kaas pizza. 303 00:14:31,750 --> 00:14:35,620 Of ik kan de groente gebruiken pizza als onderdeel van een aandoening, 304 00:14:35,620 --> 00:14:39,990 of ik kan een nieuw element toe te voegen aan mijn array, net zoals ik eerder kunnen doen. 305 00:14:39,990 --> 00:14:44,680 Ik kan een nieuw element toe te voegen aan deze associatieve array met de sleutel "bacon" 306 00:14:44,680 --> 00:14:49,250 en de waarde 13,49. 307 00:14:49,250 --> 00:14:53,820 >> Maar dit soort wordt een probleem, Als je erover nadenkt voor een tweede. 308 00:14:53,820 --> 00:14:55,721 Hoe zouden we doorlopen deze serie? 309 00:14:55,721 --> 00:14:56,220 Rechts? 310 00:14:56,220 --> 00:14:59,820 In C, zouden we gewoon een lus, kenmerkend, dat 311 00:14:59,820 --> 00:15:03,650 zou lopen van 0 tot de grootte van de matrix minus 1. 312 00:15:03,650 --> 00:15:08,060 De array heeft n elementen in op de geldige indexen n 0 tot 1 min. 313 00:15:08,060 --> 00:15:11,530 Dus we konden gebruik maken van een lus aan stap door elk element. 314 00:15:11,530 --> 00:15:13,530 >> Maar dat is niet echt meer het geval, toch? 315 00:15:13,530 --> 00:15:17,360 Nu waar we belangrijke waarde paar mappings wanneer de toetsen woorden, 316 00:15:17,360 --> 00:15:19,970 hoe kunnen we itereren over alle woorden? 317 00:15:19,970 --> 00:15:22,420 Nou, gelukkig, PHP heeft een manier om te gaan met deze, 318 00:15:22,420 --> 00:15:24,580 en dus zullen we terug te springen met lussen voor een tweede 319 00:15:24,580 --> 00:15:30,780 een vierde soort lus te introduceren die bestaat in PHP heet een foreach lus. 320 00:15:30,780 --> 00:15:34,430 En wat een foreach lus doet is het is eigenlijk hetzelfde idee. 321 00:15:34,430 --> 00:15:36,060 Je kunt het gebruiken voor elk soort array. 322 00:15:36,060 --> 00:15:38,100 Maar het is eigenlijk de hetzelfde idee als een lus, 323 00:15:38,100 --> 00:15:40,750 behalve in plaats van kengetallen, je gewoon 324 00:15:40,750 --> 00:15:45,830 hebben deze vreemde syntax, waar je elk element noemen 325 00:15:45,830 --> 00:15:47,550 een naam voor de doeleinden van deze lus. 326 00:15:47,550 --> 00:15:49,258 >> Dus in dit geval, foreach ($ array $ key). 327 00:15:49,258 --> 00:15:52,900 328 00:15:52,900 --> 00:15:56,450 Kortom, als die opmerking notities, binnenkant van dat foreach loop, 329 00:15:56,450 --> 00:16:00,466 het zal gaan over elke element van $ array, die typisch 330 00:16:00,466 --> 00:16:03,340 naar een associatieve array, maar kan echt elke vorm van array 331 00:16:03,340 --> 00:16:05,419 die u in PHP. 332 00:16:05,419 --> 00:16:07,210 En elke keer dat er in een lus je misschien 333 00:16:07,210 --> 00:16:13,780 hebben gezegd $ scala vierkante haakjes $ i, kon je gewoon zeggen $ sleutel. 334 00:16:13,780 --> 00:16:22,340 Zodat $ sleutel wordt een alias voor elke index van uw PHP associatieve array, 335 00:16:22,340 --> 00:16:23,710 en zo kun je het gebruiken als dat. 336 00:16:23,710 --> 00:16:25,897 >> Dus bijvoorbeeld, we hebben nu hebben onze pizza's array. 337 00:16:25,897 --> 00:16:27,730 Ik heb soort stopte het in de hoek 338 00:16:27,730 --> 00:16:31,080 zodat we het kunnen gebruiken om snel een voorbeeld te doen. 339 00:16:31,080 --> 00:16:36,420 Als ik zeg foreach ($ pizza's $ pizza), goed, wat gebeurt er? 340 00:16:36,420 --> 00:16:42,400 Nou, ik ga doorlopen elke enkel element van de array $ pizza, 341 00:16:42,400 --> 00:16:46,670 en door dat te doen, ik ga om te bellen elk element, als ik binnen 342 00:16:46,670 --> 00:16:49,400 van het lichaam van die lus, $ pizza. 343 00:16:49,400 --> 00:16:52,440 >> Dus dat is een soort van een stand-in, herinneren, dat $ pizza 344 00:16:52,440 --> 00:16:59,140 is een stand-in voor het zeggen $ pizza vierkante haken $ i 345 00:16:59,140 --> 00:17:03,370 als we met behulp van een lus, waar we kunnen gaan van $ i = 0, in dit geval, 346 00:17:03,370 --> 00:17:06,089 $ i = 3. 347 00:17:06,089 --> 00:17:09,780 Als we geen belangrijke waarde paren hadden Hier, zou dit element 0, 1, 2, 3 zijn, 348 00:17:09,780 --> 00:17:16,390 en we zouden gebruik maken van een lus om te gaan $ 0 pizza, pizza's $ 1, $ 2 pizza's, 349 00:17:16,390 --> 00:17:17,750 $ 3 pizza's. 350 00:17:17,750 --> 00:17:23,130 Dus nu maar $ pizza is het vervangen voor die persoon sleutel. 351 00:17:23,130 --> 00:17:25,630 >> Dus wat gaat dit uit te printen? 352 00:17:25,630 --> 00:17:29,030 Ik ben het afdrukken van $ pizza. 353 00:17:29,030 --> 00:17:35,270 Wat ga ik at-- vinden als ik uitprinten $ pizza, $ i? 354 00:17:35,270 --> 00:17:35,770 Rechts? 355 00:17:35,770 --> 00:17:38,680 Als ik ga om uit te printen het ide element van pizza, 356 00:17:38,680 --> 00:17:40,070 wat ga ik om af te drukken? 357 00:17:40,070 --> 00:17:42,580 Ik ga uitprinten waarden op die locatie, toch? 358 00:17:42,580 --> 00:17:45,370 Alsof we deden dit in de context van C, 359 00:17:45,370 --> 00:17:49,786 we meestal niet gebruiken onze iterator variabele int i = 0, i kleiner is dan 3, 360 00:17:49,786 --> 00:17:52,900 i ++, uitprinten 0, 1, 2, 3. 361 00:17:52,900 --> 00:17:57,500 We printen serie 0, serie 1, serie 2, array 3. 362 00:17:57,500 --> 00:17:59,580 En dus wat dit drukt is dit. 363 00:17:59,580 --> 00:18:01,150 Het is de lijst van de prijzen. 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 een snelle nota hier. 366 00:18:06,900 --> 00:18:10,900 Een foreach lus niet noodzakelijkerwijs printen dingen in orde. 367 00:18:10,900 --> 00:18:12,770 Het is niet gegarandeerd. 368 00:18:12,770 --> 00:18:13,550 Het doet meestal. 369 00:18:13,550 --> 00:18:17,667 Het is meestal gebaseerd op de volgorde welke elementen worden toegevoegd aan de matrix, 370 00:18:17,667 --> 00:18:18,750 dus gewoon rekening mee houden. 371 00:18:18,750 --> 00:18:20,830 Het is misschien niet in orde. 372 00:18:20,830 --> 00:18:23,930 Maar een foreach lus zal herhalen over elk element 373 00:18:23,930 --> 00:18:25,060 van de matrix betrokken. 374 00:18:25,060 --> 00:18:27,980 In dit geval weer, dat array $ pizza's. 375 00:18:27,980 --> 00:18:32,920 >> Ik kan de syntax veranderen, hoewel, als Ik wil zowel de sleutel en de waarde. 376 00:18:32,920 --> 00:18:37,179 In plaats van te zeggen $ pizza als $ pizza, kan ik dit zeggen. 377 00:18:37,179 --> 00:18:39,470 En als je kijkt naar wat ik heb in het groen hier, 378 00:18:39,470 --> 00:18:42,130 het ziet eruit als een belangrijke waarde paar mapping. 379 00:18:42,130 --> 00:18:45,980 En dus als u-- zelfs als je niet helemaal zeker wat het gaat doen, 380 00:18:45,980 --> 00:18:49,300 U kunt wel raden dat $ topping gaat 381 00:18:49,300 --> 00:18:53,800 de sleutel in dit geval en $ prijs gaat naar de waarde. 382 00:18:53,800 --> 00:18:59,200 Dus ik ben te vervangen nu elk element van $ pizza als sleutelwaarde paren, 383 00:18:59,200 --> 00:19:03,900 en nu kan ik verwijzen naar de sleutel en de waarde, die zou goed van pas, 384 00:19:03,900 --> 00:19:05,590 bijvoorbeeld, als volgt. 385 00:19:05,590 --> 00:19:10,170 >> "Geheel" - dit is een veel afdrukken gaande hier-- "Een hele" 386 00:19:10,170 --> 00:19:17,300 topping "pizza kost $" prijs, en vervolgens Print ik een periode en een backslash n. 387 00:19:17,300 --> 00:19:23,420 Dus nu, bericht ik weer toegang hebben tot een sleutel, $ topping, en een waarde, $ prijs. 388 00:19:23,420 --> 00:19:26,647 Dus je kunt raden wat dit gaat uit te printen? 389 00:19:26,647 --> 00:19:29,480 Er is veel druk verklaringen, maar er is slechts één backslash n, 390 00:19:29,480 --> 00:19:33,410 dus het gaat om iets op te drukken een entire-- op een enkele regel code. 391 00:19:33,410 --> 00:19:36,965 >> Als ik kan verwijzen naar de sleutel en de waarde dan nu, 392 00:19:36,965 --> 00:19:39,090 in plaats van alleen te kunnen uitprinten van de prijzen, 393 00:19:39,090 --> 00:19:41,330 Ik kan uitprinten iets als dit. 394 00:19:41,330 --> 00:19:43,780 "Een hele kaas pizza kost $ 8,99." 395 00:19:43,780 --> 00:19:47,150 En nu ben ik met behulp van alle van de keys-- kaas, pepperoni, groente, 396 00:19:47,150 --> 00:19:49,640 buffels chicken-- en de waarden. 397 00:19:49,640 --> 00:19:53,980 8.99, 9.99, 10.99, 11.99 So dat is gewoon een andere manier 398 00:19:53,980 --> 00:19:57,840 een foreach lus doen dat in plaats van alleen het geven u toegang tot de waarden, 399 00:19:57,840 --> 00:20:02,950 het geeft gewoon u-- het geeft toegang tot de sleutels en de waarden. 400 00:20:02,950 --> 00:20:04,411 >> Dus het afdrukken van informatie. 401 00:20:04,411 --> 00:20:07,410 Ik heb het al gedaan een paar verschillende manieren, zou u zijn opgevallen. 402 00:20:07,410 --> 00:20:11,080 De twee functies we hebben in de eerste plaats gezien zijn print en echo. 403 00:20:11,080 --> 00:20:14,380 En voor vrijwel alle opzichten doeleinden, ze zijn precies hetzelfde. 404 00:20:14,380 --> 00:20:17,130 They're-- er is een zeer subtiele het verschil is dat niet eens de moeite waard 405 00:20:17,130 --> 00:20:21,130 krijgen in, maar in principe overal u kunt afdrukken gebruiken kunt u waarschijnlijk gebruik maken van 406 00:20:21,130 --> 00:20:22,370 echo ook. 407 00:20:22,370 --> 00:20:23,610 >> En dat is niet de enige twee. 408 00:20:23,610 --> 00:20:26,970 PHP heeft veel verschillende manieren om dingen uit te printen, 409 00:20:26,970 --> 00:20:30,520 en het heeft ook manieren integreren variabelen in het midden van de string. 410 00:20:30,520 --> 00:20:32,860 Zo herinneren van C, heb je herinneren welke functie 411 00:20:32,860 --> 00:20:37,580 we kunnen gebruiken om variabelen te vervangen in de dingen die we willen om uit te printen? 412 00:20:37,580 --> 00:20:40,160 U gebruikt waarschijnlijk deze functioneert heel veel. 413 00:20:40,160 --> 00:20:42,290 printf, toch? 414 00:20:42,290 --> 00:20:45,290 Dus dit is wat we eerder binnen hadden de context van onze foreach lus. 415 00:20:45,290 --> 00:20:48,000 We hadden deze vijf aparte afdrukken verklaringen, 416 00:20:48,000 --> 00:20:50,330 want dat was de enige zoals ik echt wist op het moment 417 00:20:50,330 --> 00:20:52,450 hoe te printen berichten. 418 00:20:52,450 --> 00:20:59,560 Ik wist niet hoe het te integreren variabele $ topping in mijn PHP-code. 419 00:20:59,560 --> 00:21:03,700 Nou, als ik een wilde gok net genomen, printf, het zou eigenlijk hebben gewerkt. 420 00:21:03,700 --> 00:21:08,980 printf is een functie die ik kan gebruiken in PHP, net zoals ik het kan gebruiken in C. 421 00:21:08,980 --> 00:21:11,880 >> En zo iets als dit, printf, nogmaals, we zijn vertrouwd met dat. 422 00:21:11,880 --> 00:21:16,420 De eerste% s wordt vervangen de waarde van $ topping. 423 00:21:16,420 --> 00:21:19,700 De tweede% s wordt vervangen met de waarde van $ prijs. 424 00:21:19,700 --> 00:21:22,630 En dus ik ben interpellating, dat is gewoon een mooie manier 425 00:21:22,630 --> 00:21:25,400 te zeggen dat ik het steken van de variabelen in die locatie. 426 00:21:25,400 --> 00:21:31,000 Dus ik ben het aansluiten van $ topping waar de rood% s is en $ prijs waar de blauwe% s 427 00:21:31,000 --> 00:21:36,060 is, en dan zou ik de boodschap, "Een hele kaas pizza kost $ 8,99." 428 00:21:36,060 --> 00:21:37,750 >> Niet de enige manier waarop ik het kan doen, dat wel. 429 00:21:37,750 --> 00:21:39,760 Misschien zou ik deze methode gebruiken. 430 00:21:39,760 --> 00:21:44,890 Dit is eigenlijk wat het meest voorkomende genaamd variabele interpellatie. 431 00:21:44,890 --> 00:21:45,690 Ik kan gebruik maken van een echo. 432 00:21:45,690 --> 00:21:47,737 Ik kon een afdruk te gebruiken, zoals we zullen zien. 433 00:21:47,737 --> 00:21:48,820 Maar wat is hier aan de hand? 434 00:21:48,820 --> 00:21:51,520 >> Allereerst moet ik ontsnappen aan de dollarteken. 435 00:21:51,520 --> 00:21:55,140 Want vergeet niet, toen we eigenlijk waren afdrukken van de prijzen van de pizza's, 436 00:21:55,140 --> 00:21:59,370 Ik was hen daadwerkelijk formatteren als monetaire cijfers met een dollarteken. 437 00:21:59,370 --> 00:22:05,635 Maar we gebruiken dollartekens ook variabele namen vertegenwoordigen in PHP, 438 00:22:05,635 --> 00:22:08,010 en in het bijzonder als ik ben deze methode van het gekrulde 439 00:22:08,010 --> 00:22:10,040 brace variabele interpellatie methode, moet ik 440 00:22:10,040 --> 00:22:13,490 mijn dollarteken ontsnappen, zodat het niet denk dat ik heb het over een variabele. 441 00:22:13,490 --> 00:22:16,920 Het gaat eigenlijk, letterlijk afdrukken van een dollarteken. 442 00:22:16,920 --> 00:22:19,530 >> Dus soort analogize aan wat je ziet op het einde daar. 443 00:22:19,530 --> 00:22:22,832 Het maakt eigenlijk niet afdrukken backslash n, toch? 444 00:22:22,832 --> 00:22:24,290 Het drukt een nieuwe lijn karakter. 445 00:22:24,290 --> 00:22:26,750 Dit is-- het is niet van plan om afdruk backslash dollarteken, 446 00:22:26,750 --> 00:22:30,130 het gaat gewoon uit te printen een dollarteken karakter. 447 00:22:30,130 --> 00:22:30,640 Hetzelfde idee. 448 00:22:30,640 --> 00:22:32,760 Escape sequences, wat deze dingen worden genoemd. 449 00:22:32,760 --> 00:22:37,080 >> Maar merken dat ik niet te doen een soort van% s substituties, 450 00:22:37,080 --> 00:22:40,050 Ik ben gewoon letterlijk inpluggen in deze variabelen. 451 00:22:40,050 --> 00:22:45,110 En zo in dit-- wat hier zou gebeuren is dat de waarde van $ topping-- weer, 452 00:22:45,110 --> 00:22:48,390 gewoon houden met wat we geweest over dus far-- kaas zou krijgen 453 00:22:48,390 --> 00:22:49,720 ingeplugd daar. 454 00:22:49,720 --> 00:22:54,780 En $ prijs zou zijn wat de waarde is op pizza's, haken, kaas, 455 00:22:54,780 --> 00:22:56,270 die was 8,99. 456 00:22:56,270 --> 00:23:01,860 En dus zou dit ook uit te printen "Een hele kaas pizza kost $ 8,99." 457 00:23:01,860 --> 00:23:05,160 En zoals ik al zei, kon ik gebruik printen hier in plaats van echo, 458 00:23:05,160 --> 00:23:08,040 en de functionaliteit vrijwel precies hetzelfde. 459 00:23:08,040 --> 00:23:09,660 Het zou hetzelfde uitprinten. 460 00:23:09,660 --> 00:23:12,680 >> Er is een andere manier om het te doen, en dit is een ander voordeel 461 00:23:12,680 --> 00:23:14,710 van PHP werken met strijkers. 462 00:23:14,710 --> 00:23:17,130 We kunnen tekenreekssamenvoegingsoperator doen. 463 00:23:17,130 --> 00:23:19,660 We kunnen dit in C, ook met behulp van een functie genaamd strcat, 464 00:23:19,660 --> 00:23:21,180 maar nogmaals, we hadden noemen gescheiden functies. 465 00:23:21,180 --> 00:23:22,640 Het was deze hele rotzooi te doen. 466 00:23:22,640 --> 00:23:24,590 We moesten pound-onder string.h. 467 00:23:24,590 --> 00:23:25,780 Het was een productie, toch? 468 00:23:25,780 --> 00:23:30,070 Maar nu kan ik gewoon gebruik maken van deze puntoperator strings samen aaneen te schakelen. 469 00:23:30,070 --> 00:23:34,910 >> Dus ik ben het aaneenschakelen "Een hele" en dan is ongeacht de waarde van $ topping is, 470 00:23:34,910 --> 00:23:38,860 en dan nog een tekenreeks "pizza kost $" 471 00:23:38,860 --> 00:23:42,340 en dan aaneenschakelen wat de waarde van $ prijs is, 472 00:23:42,340 --> 00:23:45,670 en dan aan het einde ben ik overstag gaan op periode backslash n. 473 00:23:45,670 --> 00:23:47,926 En dus zou dit ook print "Een hele" - nogmaals, 474 00:23:47,926 --> 00:23:50,550 Als we praten over de eerste element van die pizza array-- 475 00:23:50,550 --> 00:23:54,710 "Een hele kaas pizza kost $ 8,99." 476 00:23:54,710 --> 00:24:01,260 Periode backslash n, opnieuw, met de $ topping en $ prijs vervangende 477 00:24:01,260 --> 00:24:06,580 voor wat we in onze foreach had opgegeven lus als de belangrijkste waarde paar mapping. 478 00:24:06,580 --> 00:24:08,050 >> PHP kan functies uit te voeren. 479 00:24:08,050 --> 00:24:11,250 Functies waren soort integraal onderdeel C, zoals we zagen. 480 00:24:11,250 --> 00:24:14,870 Zoals variabelen, hoeven we niet te geef de return type van de functie, 481 00:24:14,870 --> 00:24:16,350 want het maakt eigenlijk niet uit. 482 00:24:16,350 --> 00:24:18,660 En we niet opgeeft de data types van parameters, 483 00:24:18,660 --> 00:24:21,410 omdat ze niet echt materie, zoals we hebben gezien in PHP. 484 00:24:21,410 --> 00:24:24,510 Elke functie wordt ingebracht met de functie trefwoord. 485 00:24:24,510 --> 00:24:27,920 Dat is hoe we aangeven dat PHP waar we het over hebben is een functie. 486 00:24:27,920 --> 00:24:29,720 >> En we hoeven niet te omgaan met de belangrijkste helemaal niet, 487 00:24:29,720 --> 00:24:33,690 omdat de tolk, de PHP tolk, werken van boven naar beneden, 488 00:24:33,690 --> 00:24:34,190 ongeacht. 489 00:24:34,190 --> 00:24:35,640 Als het ziet je kunt maken een functie-oproep, het zal 490 00:24:35,640 --> 00:24:37,850 gaan de functie oproep vinden, zelfs als het komt later. 491 00:24:37,850 --> 00:24:40,360 Maar het gaat om te lezen van boven naar onderkant, dus we hoeven niet aan te geven, 492 00:24:40,360 --> 00:24:41,500 hier is waar je begint. 493 00:24:41,500 --> 00:24:46,700 Je begint op lijn 1 van uw PHP en werken van daar. 494 00:24:46,700 --> 00:24:49,690 >> Dus hier is hoe we zouden creëren een functie genaamd hard_square. 495 00:24:49,690 --> 00:24:54,100 Het duurt blijkbaar een parameter, die ik bel $ x. 496 00:24:54,100 --> 00:24:58,424 Deze functie is gewoon ingewikkeld naar verschillende dingen te illustreren. 497 00:24:58,424 --> 00:24:59,590 We hebben nog steeds de terugkeer waarden. 498 00:24:59,590 --> 00:25:00,870 Ik ben met behulp van een lus hier. 499 00:25:00,870 --> 00:25:04,970 Maar het is eigenlijk gewoon, wat dit bedraagt ​​slechts $ x maal $ x. 500 00:25:04,970 --> 00:25:10,520 Wat ik eigenlijk aan het doen is gewoon toe te voegen x 0 x keer of $ x nul $ x maal. 501 00:25:10,520 --> 00:25:15,850 Maar het is precies effectief hetzelfde als $ x maal $ x vermenigvuldigen. 502 00:25:15,850 --> 00:25:18,700 Ik kan nog steeds een waarde terug, in dit geval $ result, 503 00:25:18,700 --> 00:25:22,060 en ik heb een functie in PHP gemaakt. 504 00:25:22,060 --> 00:25:24,160 >> Hier is hoe je het zou kunnen gebruiken in de context. 505 00:25:24,160 --> 00:25:26,020 Dus misschien ben ik de binnenkant van een aantal PHP-bestand. 506 00:25:26,020 --> 00:25:29,240 Bericht in blauw daar dat Ik heb mijn PHP scheidingstekens gebruikt, 507 00:25:29,240 --> 00:25:31,010 hoekijzer vraagteken php. 508 00:25:31,010 --> 00:25:35,180 Daartussen zijn allemaal PHP, dat ik wil schrijven. 509 00:25:35,180 --> 00:25:37,840 Dus ik ben blijkbaar ga get-- Ik ga naar de gebruiker gevraagd 510 00:25:37,840 --> 00:25:41,550 om me een nummer, winkel die variabele, op te slaan in de variabele $ x, 511 00:25:41,550 --> 00:25:43,320 wat ze me gaf. 512 00:25:43,320 --> 00:25:48,590 Dan ga ik echo hard_square van die waarde, 513 00:25:48,590 --> 00:25:50,370 en blijkbaar gaan overstag op een nieuwe regel 514 00:25:50,370 --> 00:25:53,590 als goed, en dan later zal ik definiëren de functie zo hard_square 515 00:25:53,590 --> 00:25:55,550 dat wanneer ik de bellen om hard_square, 516 00:25:55,550 --> 00:25:58,160 het weet wat ik het over heb. 517 00:25:58,160 --> 00:26:00,705 >> Nu, ik zou ook kunnen doen iets zoals dit. 518 00:26:00,705 --> 00:26:02,050 Dit is iets anders. 519 00:26:02,050 --> 00:26:04,190 Het is precies de bijna hetzelfde als wat we eerder zagen, 520 00:26:04,190 --> 00:26:08,400 behalve in plaats van te zeggen slechts $ x er als parameter om hard_square, 521 00:26:08,400 --> 00:26:11,730 Ik zeg $ x = 10. 522 00:26:11,730 --> 00:26:14,330 Dit is dus een voorbeeld van defensief programmeren, 523 00:26:14,330 --> 00:26:17,070 bewaken van uw programma's tegen kwaadwillende gebruikers. 524 00:26:17,070 --> 00:26:20,020 >> Dit is een manier om een ​​fout te doen controleren dat we niet echt 525 00:26:20,020 --> 00:26:24,670 hebben als een optie in C. We kunnen nooit geef de standaard waarde van iets. 526 00:26:24,670 --> 00:26:27,010 We hadden altijd te controleren of de, bijvoorbeeld, 527 00:26:27,010 --> 00:26:30,820 Als we een oproep om GetString, het was meest geschikte als onmiddellijk nadat we 528 00:26:30,820 --> 00:26:33,300 gecontroleerd dat, we ingecheckt of het koord 529 00:26:33,300 --> 00:26:35,504 dat de gebruiker gaf ons is niet gelijk aan nul, 530 00:26:35,504 --> 00:26:37,920 omdat we niet willen beginnen werken met een null string. 531 00:26:37,920 --> 00:26:39,670 >> Hier is dit een manier om te waken tegen. 532 00:26:39,670 --> 00:26:43,480 Als de gebruiker geen ons iets een of andere manier, wat gaan we doen? 533 00:26:43,480 --> 00:26:46,080 Nou, we zullen gewoon zeggen wat ze niet geven ons, 534 00:26:46,080 --> 00:26:47,705 we gaan gewoon aan te sluiten op de 10 plaats. 535 00:26:47,705 --> 00:26:52,030 Dus als ze niet geven ons een waarde, gewoon gebruik maken van 10 standaard. En dus even, 536 00:26:52,030 --> 00:26:53,940 merken dat ik maak een oproep tot hard_square, 537 00:26:53,940 --> 00:26:55,980 maar er is geen prompt aan de gebruiker, toch? 538 00:26:55,980 --> 00:26:57,540 Ik ben gewoon het maken van een lege oproep. 539 00:26:57,540 --> 00:27:00,860 >> Maar mijn functie hard_square verwacht een parameter. 540 00:27:00,860 --> 00:27:02,222 Wat gaat dit uit te printen? 541 00:27:02,222 --> 00:27:03,680 Het gaat om afdrukken 100, toch? 542 00:27:03,680 --> 00:27:05,720 Doordat de gebruiker niet geef me iets. 543 00:27:05,720 --> 00:27:08,970 En dus ben ik gewoon te veronderstellen dat 10-- 10 is de standaard waarde. 544 00:27:08,970 --> 00:27:13,760 En dus dit zou printen uit 100 op zijn eigen lijn. 545 00:27:13,760 --> 00:27:16,390 >> PHP-bestanden niet hoeft te zijn slechts een enkel bestand. 546 00:27:16,390 --> 00:27:19,480 U kunt meerdere bestanden combineren, net zoals je kunt in C. De manier 547 00:27:19,480 --> 00:27:24,330 We deden dat in C was typisch voor een te doen # include om header-bestanden getrokken. 548 00:27:24,330 --> 00:27:26,180 We doen dat niet in PHP. 549 00:27:26,180 --> 00:27:29,110 Wij doen iets genaamd require_once. 550 00:27:29,110 --> 00:27:33,360 En dan is er dit hele ding, wat is dit __dir__? 551 00:27:33,360 --> 00:27:36,510 Dat is gewoon een speciale variabele of speciale constant, 552 00:27:36,510 --> 00:27:39,030 echt, die aangeeft wat je huidige directory is. 553 00:27:39,030 --> 00:27:41,320 En dus het gaat om te kijken in je huidige directory 554 00:27:41,320 --> 00:27:44,900 naar een bestand genaamd cs50.php Hier in dit voorbeeld 555 00:27:44,900 --> 00:27:50,490 en het gaat om dat bestand te plakken aan de bovenkant van uw PHP-programma, 556 00:27:50,490 --> 00:27:56,980 ervan uitgaande dat je het nodig zodra lijn aan de bovenkant van uw PHP-bestand. 557 00:27:56,980 --> 00:28:01,474 >> Dus PHP wordt voornamelijk gebruikt, maar niet uitsluitend, 558 00:28:01,474 --> 00:28:03,140 als een taal voor web-based programmering. 559 00:28:03,140 --> 00:28:05,270 Dat is echt hoe het kwam te zijn. 560 00:28:05,270 --> 00:28:06,980 Maar het is een volledig taal, zoals we hebben gezien. 561 00:28:06,980 --> 00:28:10,105 We hebben vrijwel alle dingen gezien dat kan doen lijken op C zijn, 562 00:28:10,105 --> 00:28:13,290 en het kan een deurklink van doen veel meer dan dat. 563 00:28:13,290 --> 00:28:16,950 >> Maar omdat het een volledige taal en we kan commandoregel programmeren in. 564 00:28:16,950 --> 00:28:18,630 We kunnen command line programma's te draaien. 565 00:28:18,630 --> 00:28:22,580 Alles wat nodig is om een ​​opdracht uit te voeren line programma dat is geschreven in PHP 566 00:28:22,580 --> 00:28:24,260 is dat u een PHP-interpreter. 567 00:28:24,260 --> 00:28:27,460 Dus het is een soort van analoog aan het hebben van een compiler op uw systeem 568 00:28:27,460 --> 00:28:31,100 Als u wilt uw C-code te compileren om te zetten in uitvoerbare bestanden. 569 00:28:31,100 --> 00:28:33,810 Je nodig hebt om een ​​PHP-tolk die bestaat op uw systeem 570 00:28:33,810 --> 00:28:37,330 zodat je kunt PHP-bestanden interpreteren. 571 00:28:37,330 --> 00:28:40,370 >> Ervan uitgaande dat je, en meestal Deze tolk wordt genoemd PHP, 572 00:28:40,370 --> 00:28:44,300 en het is meestal gebundeld met de meeste downloads of installaties van PHP 573 00:28:44,300 --> 00:28:47,430 die je online kunt krijgen, en zeker de naam van de PHP-tolk 574 00:28:47,430 --> 00:28:49,550 we hebben in CS50, IDE. 575 00:28:49,550 --> 00:28:51,819 Alles wat je doet is het type php bestand. 576 00:28:51,819 --> 00:28:53,610 En wat uw programma's gaan doen is het 577 00:28:53,610 --> 00:28:55,360 gaan lopen door de tolk, het is 578 00:28:55,360 --> 00:28:58,040 ga alles dat is te negeren niet in tussen vraag mark-- 579 00:28:58,040 --> 00:29:03,160 of, hoekijzer vraagteken php, de PHP afbakeningen, en print het uit, 580 00:29:03,160 --> 00:29:07,660 en het zal interpreteren en uitvoeren van de code binnenkant van uw PHP afbakeningen. 581 00:29:07,660 --> 00:29:12,850 >> Dus laten we pop naar CS50 IDE en eens een kijkje op een paar van de PHP-bestanden, 582 00:29:12,850 --> 00:29:19,850 draaien van een paar PHP bestanden, in command line interface van CS50 IDE. 583 00:29:19,850 --> 00:29:22,100 Dus hier zijn we in CS50 IDE, en ik heb de vrijheid genomen 584 00:29:22,100 --> 00:29:25,800 van het openen van een bestand genaamd hello1.php. 585 00:29:25,800 --> 00:29:29,920 En blijkbaar, de inhoud van deze bestand zijn gewoon de PHP scheidingstekens daar, 586 00:29:29,920 --> 00:29:32,220 en tussen, echo ("hello, world"). 587 00:29:32,220 --> 00:29:34,710 Dit is een vrij eenvoudig PHP-programma. 588 00:29:34,710 --> 00:29:37,670 Ik ga gewoon naar beneden scrollen hier mijn terminal venster, 589 00:29:37,670 --> 00:29:44,320 en ik ga php typen hello1.php, druk op enter. 590 00:29:44,320 --> 00:29:44,950 Hallo Wereld. 591 00:29:44,950 --> 00:29:48,110 Dat is waarschijnlijk wat we waren verwacht dat het doen, toch? 592 00:29:48,110 --> 00:29:51,140 >> Laten we gaan en neem een andere kijk op het programma. 593 00:29:51,140 --> 00:29:52,924 hello2.php. 594 00:29:52,924 --> 00:29:55,090 Vrijwel hetzelfde, niet veel aan de hand. 595 00:29:55,090 --> 00:29:57,190 Deze keer, hoewel, ik ga om te vragen de gebruiker om mij hun namen te geven. 596 00:29:57,190 --> 00:29:59,290 Ik gebruik dat readline functie opnieuw. 597 00:29:59,290 --> 00:30:01,340 $ naam = readline. 598 00:30:01,340 --> 00:30:03,070 Dat is de prompt: "Wat is uw naam?" 599 00:30:03,070 --> 00:30:04,880 >> Blijkbaar ben ik afdrukken het op zijn eigen lijn. 600 00:30:04,880 --> 00:30:07,220 En dan, zodat de regel onder dat zal de prompt 601 00:30:07,220 --> 00:30:08,750 waar de gebruiker kan hun naam in te voeren. 602 00:30:08,750 --> 00:30:12,030 En dan ben ik met behulp van een beetje variabele interpellatie hier op lijn 3 603 00:30:12,030 --> 00:30:14,780 uitprinten "Hello" en wat de gebruiker typt. 604 00:30:14,780 --> 00:30:22,040 Dus dit is analoog aan te zeggen, Hello, komma,% s als we met behulp van printf in C. 605 00:30:22,040 --> 00:30:24,910 >> Dus laten we gaan en dit programma te interpreteren. 606 00:30:24,910 --> 00:30:27,400 Dus nogmaals, ik zal naar beneden scrollen mijn terminal venster. 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 Hoe heet je? 610 00:30:33,820 --> 00:30:35,490 Doug. 611 00:30:35,490 --> 00:30:36,526 Hallo, Doug. 612 00:30:36,526 --> 00:30:39,440 Ik heb ook een andere bestand genaamd hello3.php. 613 00:30:39,440 --> 00:30:42,850 Ik ga duidelijk mijn scherm met Control L, 614 00:30:42,850 --> 00:30:46,210 en ik ga uit te voeren die. 615 00:30:46,210 --> 00:30:47,640 Hoe heet je? 616 00:30:47,640 --> 00:30:49,020 Doug. 617 00:30:49,020 --> 00:30:49,780 Hallo, Doug. 618 00:30:49,780 --> 00:30:56,540 Dus het gedrag identiek aan hello2.php, maar waarom is het hello3.php? 619 00:30:56,540 --> 00:30:58,040 >> Nou, hier is het verschil. 620 00:30:58,040 --> 00:31:00,620 In dit geval, bericht die op lijn 1 hier, 621 00:31:00,620 --> 00:31:04,270 Ik heb iets dat niet tussen de PHP scheidingstekens. 622 00:31:04,270 --> 00:31:07,760 Ik ben gewoon afdrukken out-- of I alleen getypt, "Wat is uw naam?" 623 00:31:07,760 --> 00:31:12,060 Wanneer de PHP-interpreter ziet dit, het heeft geen idee hoe het te interpreteren als PHP, 624 00:31:12,060 --> 00:31:15,060 en dus in plaats van het niet, het is gewoon om het uit te spugen. 625 00:31:15,060 --> 00:31:19,010 >> Zo merkt op lijn 3 nu, mijn oproep aan Readline, is er geen aanwijzing meer. 626 00:31:19,010 --> 00:31:21,750 Ik ben gewoon echt gaan to-- wanneer de PHP-interpreter dit ziet, 627 00:31:21,750 --> 00:31:23,400 het gaat om uit te printen "Hoe heet je?" 628 00:31:23,400 --> 00:31:25,941 Dan ziet het, oh, OK, here's-- alles anders gaat worden 629 00:31:25,941 --> 00:31:29,970 geïnterpreteerd als PHP, dus dat is de reden waarom dit werkt. 630 00:31:29,970 --> 00:31:34,990 Ik hoef niet per se prompt de gebruiker to-- binnenkant van readline, 631 00:31:34,990 --> 00:31:37,490 Ik kan net buiten het hebben van de PHP begrenzers 632 00:31:37,490 --> 00:31:41,490 en laat de tolk gewoon print het uit voor mij. 633 00:31:41,490 --> 00:31:45,364 >> Zodat je eigenlijk niet alleen een set van PHP afbakeningen hebben 634 00:31:45,364 --> 00:31:46,030 in uw programma. 635 00:31:46,030 --> 00:31:49,887 Je kunt eigenlijk hebben een aantal van hen, openen en te sluiten indien nodig. 636 00:31:49,887 --> 00:31:51,720 Dus laten we eens een kijkje nemen een paar programma 637 00:31:51,720 --> 00:31:55,070 in CS50 IDE waar we illustreren dit idee van het hebben van 638 00:31:55,070 --> 00:31:58,376 meerdere sets gescheiden PHP. 639 00:31:58,376 --> 00:32:02,010 >> OK, dus ik heb een bestand geopend hier genoemd add1.php. 640 00:32:02,010 --> 00:32:03,390 En let op wat hier gebeurt. 641 00:32:03,390 --> 00:32:08,077 Net als voorheen, ik heb een enkele PHP set van afbakeningen. 642 00:32:08,077 --> 00:32:10,660 Ik ga uitprinten bericht "Geef me een nummer." 643 00:32:10,660 --> 00:32:13,394 Dan ga ik een lijn te lezen en opslaan in de variabele $ num1. 644 00:32:13,394 --> 00:32:14,810 Dan ga ik weer uit om af te drukken. 645 00:32:14,810 --> 00:32:16,310 Geef me een tweede nummer. 646 00:32:16,310 --> 00:32:20,450 Lees een lijn van de gebruiker, op te slaan wat ze getypt in op $ num2. 647 00:32:20,450 --> 00:32:23,980 Voeg ze samen en op te slaan die resulteren in een variabele genaamd $ sum, 648 00:32:23,980 --> 00:32:26,180 en vervolgens afdrukken, "The som van deze twee getallen 649 00:32:26,180 --> 00:32:29,254 is, "en dan interpelleren daar de variabele $ som. 650 00:32:29,254 --> 00:32:31,170 Dus laten we gewoon deze run door middel van de tolk 651 00:32:31,170 --> 00:32:33,720 om te bevestigen dat dit is wat we verwachten. 652 00:32:33,720 --> 00:32:37,540 php add1.php. 653 00:32:37,540 --> 00:32:38,665 Geef me een nummer 3. 654 00:32:38,665 --> 00:32:40,410 Geef me een tweede nummer, 4. 655 00:32:40,410 --> 00:32:43,370 De som van deze twee getallen is 7. 656 00:32:43,370 --> 00:32:45,030 Dat is 3 plus 4. 657 00:32:45,030 --> 00:32:45,530 OK? 658 00:32:45,530 --> 00:32:47,770 Dus niets vreselijk bijzonders daar. 659 00:32:47,770 --> 00:32:51,080 >> En laten we nu openstellen add2.php. 660 00:32:51,080 --> 00:32:54,460 Hier heb ik een paar PHP kreeg gescheiden sets daar, toch? 661 00:32:54,460 --> 00:32:59,107 Lijnen 1, 3-- lijnen 1 en 3 hebben geen PHP scheidingstekens. 662 00:32:59,107 --> 00:33:00,940 Dus toen de tolk ziet hen, het is gewoon 663 00:33:00,940 --> 00:33:03,220 gaat om precies uit te spugen wat ik daar heb getypt. 664 00:33:03,220 --> 00:33:05,011 Dus dat is waar ik ben al mijn gevraagd te doen. 665 00:33:05,011 --> 00:33:11,220 Op de lijnen 2 en 4 zien we de zeer vertrouwd $? php soort van afbakeningen, 666 00:33:11,220 --> 00:33:15,210 dus die twee lijnen zijn gaan voeren als PHP. 667 00:33:15,210 --> 00:33:18,270 En dan op lijn 5, heb ik dit raar ding hier, toch? 668 00:33:18,270 --> 00:33:20,480 Deze hoek beugel vraagteken gelijk-teken. 669 00:33:20,480 --> 00:33:22,660 Ik zal zelfs een beetje verder in te zoomen. 670 00:33:22,660 --> 00:33:29,270 U kunt zien dit is wat ik ben over daar, dit $? =. 671 00:33:29,270 --> 00:33:33,420 >> Het blijkt dat het zo gewoon dat de reden dat we het openstellen van een set van PHP 672 00:33:33,420 --> 00:33:36,055 scheidingstekens is het afdrukken van een waarde. 673 00:33:36,055 --> 00:33:37,430 En dat is alles wat we gaan doen. 674 00:33:37,430 --> 00:33:39,220 Maar er is zelfs steno voor. 675 00:33:39,220 --> 00:33:46,490 $? = Is PHP afkorting voor te zeggen iets van $? php echo de som 676 00:33:46,490 --> 00:33:48,350 van num1 en num2. 677 00:33:48,350 --> 00:33:51,900 Dus dit is gewoon een andere afkorting voor dat. 678 00:33:51,900 --> 00:33:55,550 >> Dus als ik zonder dit programma, php add2.php. 679 00:33:55,550 --> 00:33:57,530 Ik ga naar beneden te zoomen een beetje. 680 00:33:57,530 --> 00:33:59,000 Geef me een nummer, 4. 681 00:33:59,000 --> 00:34:00,350 Geef me een tweede nummer. 682 00:34:00,350 --> 00:34:04,650 En aangezien ik niet echt zorgen over datatypes in PHP, kan ik zeggen 4,8. 683 00:34:04,650 --> 00:34:07,160 De som van deze twee getallen is 8,8. 684 00:34:07,160 --> 00:34:10,179 Deze functie gedraagt ​​zich vrijwel precies hetzelfde als we verwachten, 685 00:34:10,179 --> 00:34:10,989 ook. 686 00:34:10,989 --> 00:34:13,114 En ik heb nog een geopend hier genoemd dice.php. 687 00:34:13,114 --> 00:34:25,625 688 00:34:25,625 --> 00:34:26,250 Probeer deze weer. 689 00:34:26,250 --> 00:34:29,429 690 00:34:29,429 --> 00:34:33,280 Ik heb nog een hier genoemd dice1.php, die ook te zien, 691 00:34:33,280 --> 00:34:37,440 heeft die vraag hoekijzer markeren isgelijkteken notatie daar, 692 00:34:37,440 --> 00:34:40,659 maar merken dat ik in dit geval ben aanroepen van de functie rand, zoals die u 693 00:34:40,659 --> 00:34:42,790 zou verwachten genereert een willekeurig getal. 694 00:34:42,790 --> 00:34:46,889 "Je rolde een," en het gaat om berekenen van een willekeurig getal, mod 6 + 695 00:34:46,889 --> 00:34:47,389 1. 696 00:34:47,389 --> 00:34:49,989 Dus dat zal me nummer geven in het traject van 1-6. 697 00:34:49,989 --> 00:34:53,040 >> Vergeet niet dat mod 6 zou me een getal in het traject van 0 tot 5, 698 00:34:53,040 --> 00:34:56,630 maar als ik dobbelstenen rollen simuleren, dat is wat ik hier doe, 699 00:34:56,630 --> 00:35:00,040 Ik wil niet dat deze dobbelstenen te gaan van 0 tot 5, wil dobbelstenen die gaan van 1 tot 6. 700 00:35:00,040 --> 00:35:02,800 En dus dit is een manier om me in het bereik van 1-6. 701 00:35:02,800 --> 00:35:04,720 Ik doe dit twee keer te doen. 702 00:35:04,720 --> 00:35:08,630 Dus blijkbaar ben ik rollend twee dobbelstenen in dit programma. 703 00:35:08,630 --> 00:35:15,210 >> Dus ik zal mijn scherm te wissen, en ik zal php dice1.php doen. 704 00:35:15,210 --> 00:35:16,640 Je rolde een 4 en een 2. 705 00:35:16,640 --> 00:35:19,156 En als ik zonder het programma nogmaals, u rolde een 5 en een 5. 706 00:35:19,156 --> 00:35:21,780 Dus elke keer als ik het programma uitvoert, Ik krijg verschillende nummers, 707 00:35:21,780 --> 00:35:24,280 want elke keer als ik doe ja, het is beginnen. 708 00:35:24,280 --> 00:35:27,250 Het gaat om een ​​nieuwe te genereren set van willekeurige getallen voor mij. 709 00:35:27,250 --> 00:35:29,790 >> Dus als we gewend zijn lopende programma's van C, 710 00:35:29,790 --> 00:35:32,520 We zijn gewend aan het typen van de ./ de naam van een programma, toch? 711 00:35:32,520 --> 00:35:35,090 Dat is hoe we allemaal hebben gedaan van onze programma's in C zo ver. 712 00:35:35,090 --> 00:35:37,555 We kunnen dit doen in PHP en door iets toe te voegen genoemd 713 00:35:37,555 --> 00:35:40,026 een keet aan de top van onze PHP-bestand. 714 00:35:40,026 --> 00:35:41,400 Ik weet dat het een soort van een dom woord. 715 00:35:41,400 --> 00:35:44,540 Het is kort voor hash knal. 716 00:35:44,540 --> 00:35:46,300 Dat is de eerste twee karakters zijn. 717 00:35:46,300 --> 00:35:50,030 Vergeet niet dat we uitroepteken noemen vaak een knal in de informatica. 718 00:35:50,030 --> 00:35:51,690 Ook zou kunnen worden voor scherpe knal. 719 00:35:51,690 --> 00:35:53,273 Er zijn een paar manieren om het te interpreteren. 720 00:35:53,273 --> 00:35:57,320 Maar het is in feite een speciaal soort van bevelen dat de PHP-tolk 721 00:35:57,320 --> 00:36:00,160 begrijpt als, oh, ik wil u dit programma uit te voeren, 722 00:36:00,160 --> 00:36:05,250 die blijkbaar / user / bin / php, die is eigenlijk waar de PHP-tolk 723 00:36:05,250 --> 00:36:08,590 specifiek woont op ons systeem. 724 00:36:08,590 --> 00:36:12,530 Dus it's-- wat er hier gebeurt is de tolk begrijpt, oh, 725 00:36:12,530 --> 00:36:17,270 Ik ben blijkbaar de bedoeling om te gebruiken in dit programma om dit bestand uit te voeren. 726 00:36:17,270 --> 00:36:20,010 En zo kunt u over te slaan de stap 727 00:36:20,010 --> 00:36:22,979 van het hebben van php something.php zeggen. 728 00:36:22,979 --> 00:36:25,020 Er is nog een andere vangst Hier, namelijk dat als we 729 00:36:25,020 --> 00:36:27,320 willen dat onze programma's zoals verwacht, we 730 00:36:27,320 --> 00:36:30,220 moet iets genaamd doen bestandstoegang verandering. 731 00:36:30,220 --> 00:36:33,380 En we zullen gaan-- en we praten een beetje iets meer over bestand toestemming veranderingen 732 00:36:33,380 --> 00:36:37,550 in onze video op MVC, maar volstaat het om zeggen dat dit is wat je moet doen 733 00:36:37,550 --> 00:36:42,760 om uw .php bestanden uitvoerbaar. 734 00:36:42,760 --> 00:36:49,330 Dus laten we eens kijken naar dit als onze laatste voorbeeld dan in CS50 IDE. 735 00:36:49,330 --> 00:36:53,910 >> Dus hier in IDE Ik heb twee bestanden in deze PHP directory die niet lijken te zijn 736 00:36:53,910 --> 00:36:55,310 genaamd .php. 737 00:36:55,310 --> 00:36:58,170 Ik heb een functie genaamd add-- Ik heb een bestand genaamd ADD3 738 00:36:58,170 --> 00:37:00,650 en een bestand genaamd Dice2. 739 00:37:00,650 --> 00:37:03,680 Dus laten we eens een snelle kijk en open ADD3. 740 00:37:03,680 --> 00:37:08,300 En zoals je kunt zien, in het begin van mijn bestand heb ik dit keet, toch? 741 00:37:08,300 --> 00:37:11,420 Dit hekje uitroepteken. 742 00:37:11,420 --> 00:37:15,115 Nu zult u ook misschien merkt dat andere reden, 743 00:37:15,115 --> 00:37:16,990 Ik heb geen syntaxis de nadruk meer, 744 00:37:16,990 --> 00:37:20,198 en dit is wat ik eerder gezinspeeld, dat was dat als ik niet mijn dossier te noemen 745 00:37:20,198 --> 00:37:23,040 php, ik heb niet het voordeel hebben van syntax highlighting meer. 746 00:37:23,040 --> 00:37:26,220 Dit bestand is net gebeld ADD3. 747 00:37:26,220 --> 00:37:30,960 Zodat ik kan het later op te voeren met ./ ADD3 en niet ./ add3.php. 748 00:37:30,960 --> 00:37:33,680 >> Dus de reason-- het is nog steeds prima, het is nog steeds geldig PHP, 749 00:37:33,680 --> 00:37:37,000 maar het is niet syntax gemarkeerd, omdat Dit bestand wordt niet genoemd something.php. 750 00:37:37,000 --> 00:37:41,580 Dat is het enige echte verschil hier, plus de keet. 751 00:37:41,580 --> 00:37:45,170 Dus laten we zien wat er gebeurt als Ik probeer en run dit programma. 752 00:37:45,170 --> 00:37:50,780 ./ ADD3, net zoals ik dat zou doen met C. Bash. 753 00:37:50,780 --> 00:37:53,190 ./ ADD3 toestemming geweigerd. 754 00:37:53,190 --> 00:37:55,390 Dit is wat je gaat om te zien als je vergeet 755 00:37:55,390 --> 00:37:59,280 naar het chmod commando gebruiken om te veranderen de permissies van het bestand. 756 00:37:59,280 --> 00:38:03,845 >> Zo blijkt, regelmatige PHP bestanden kunnen gewoon niet worden uitgevoerd. 757 00:38:03,845 --> 00:38:06,970 Ze kunnen worden geïnterpreteerd, maar we zijn iets anders hier doen. 758 00:38:06,970 --> 00:38:07,761 We zijn het uitvoeren van het. 759 00:38:07,761 --> 00:38:12,970 En dus ik moet toestemming voegen van executie, chmod a + x om ADD3. 760 00:38:12,970 --> 00:38:15,680 Dan kan ik ./ ADD3 zeggen. 761 00:38:15,680 --> 00:38:16,860 Geef me een nummer. 762 00:38:16,860 --> 00:38:18,060 5, 6. 763 00:38:18,060 --> 00:38:20,490 De som van deze twee getallen is 11. 764 00:38:20,490 --> 00:38:26,530 >> Ook heb ik al chmoded Dice2, dus ik kan enkel type ./ Dice2, 765 00:38:26,530 --> 00:38:31,260 je rolde een 1 en een 1, u rolde 5 en 4, enzovoorts. 766 00:38:31,260 --> 00:38:33,680 >> Dus dat is vrij veel het idee van een PHP-syntax, toch? 767 00:38:33,680 --> 00:38:35,221 Er is veel om door te komen, ik weet het. 768 00:38:35,221 --> 00:38:39,160 Maar hopelijk heb je nu gezien dat PHP is niet echt anders C 769 00:38:39,160 --> 00:38:43,670 en echt geeft ons de mogelijkheid om dingen te nemen een inkeping of twee. 770 00:38:43,670 --> 00:38:48,230 We niet echt zorgen te maken teveel about-- we niet echt 771 00:38:48,230 --> 00:38:51,605 al te veel zorgen over te maken de low-level details die we 772 00:38:51,605 --> 00:38:52,980 moest zorgen over te maken met C, toch? 773 00:38:52,980 --> 00:38:56,170 We kunnen richten op het hogere level spul dat PHP 774 00:38:56,170 --> 00:39:01,090 stelt ons in staat om te doen en te nemen voor vanzelfsprekend dat het zal werken voor ons. 775 00:39:01,090 --> 00:39:04,350 Dus het geeft ons de mogelijkheid nu, de overgang van C naar PHP, 776 00:39:04,350 --> 00:39:08,280 programma's die veel meer zijn te maken complex en misschien veel robuuster. 777 00:39:08,280 --> 00:39:13,070 >> Dus ik hoop dat jullie veel plezier werken met PHP, en ik ben Doug Lloyd. 778 00:39:13,070 --> 00:39:15,050 Dit is CS50. 779 00:39:15,050 --> 00:39:17,637