1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Avsnitt 8] [mindre bekväm] 2 00:00:02,000 --> 00:00:04,000 [Nate Hardison] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Detta är CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:11,000 >> Välkommen till vår näst sista avsnittet. 5 00:00:11,000 --> 00:00:13,000 I denna vecka ska vi prata om PHP, och sedan nästa vecka 6 00:00:13,000 --> 00:00:17,000 vi ska göra en liten recension för Quiz 1. 7 00:00:17,000 --> 00:00:20,000 Vi kommer att börja på sidan 3 av problemet ställer pack, 8 00:00:20,000 --> 00:00:28,000 och vi kommer att arbeta igenom den del av frågorna ganska snabbt. 9 00:00:28,000 --> 00:00:34,000 På sidan 3, börjar vi prata om denna skillnad mellan C och PHP 10 00:00:34,000 --> 00:00:38,000 i den meningen att PHP är ett dynamiskt skrivit språk, 11 00:00:38,000 --> 00:00:42,000 medan C statiskt skrivit, 12 00:00:42,000 --> 00:00:46,000 och har någon verkligen snabbt gjort några kodning i något som PHP 13 00:00:46,000 --> 00:00:51,000 eller Python eller Ruby innan, Javascript? 14 00:00:51,000 --> 00:00:53,000 Helt nytt? Okej. 15 00:00:53,000 --> 00:00:56,000 >> Alla dessa språk som jag nyss nämnde 16 00:00:56,000 --> 00:01:01,000 skiljer sig mycket från språk som C och C + + och Java 17 00:01:01,000 --> 00:01:04,000 i den meningen att när du deklarerar en variabel behöver du inte deklarera 18 00:01:04,000 --> 00:01:09,000 vilken typ av variabel det är, så i C vi hade fastnat med att alltid säga 19 00:01:09,000 --> 00:01:13,000 Detta kommer att bli en int variabel eller det kommer att bli en char * variabel, 20 00:01:13,000 --> 00:01:16,000 medan med PHP, med Python, med Ruby, 21 00:01:16,000 --> 00:01:20,000 med många av dessa mer moderna språk behöver du inte göra det alls. 22 00:01:20,000 --> 00:01:24,000 Du deklarerar bara din variabel, och i fallet med PHP 23 00:01:24,000 --> 00:01:28,000 förklarar du att det är en variabel genom att inleda med en $ tecken, 24 00:01:28,000 --> 00:01:35,000 och sedan den typ av variabeln bestäms av det värde det innehar, 25 00:01:35,000 --> 00:01:38,000 vilket är ganska häftigt. 26 00:01:38,000 --> 00:01:44,000 Att leka med detta lite, vi har prov PHP-kod här 27 00:01:44,000 --> 00:01:47,000 mellan början och slut-taggar. 28 00:01:47,000 --> 00:01:53,000 Vi använder denna typ av som HTML i den meningen att 29 00:01:53,000 --> 00:01:56,000 vi har dessa fästvinklarna här för att öppna och stänga. 30 00:01:56,000 --> 00:01:58,000 Du ser detta med HTML. 31 00:01:58,000 --> 00:02:03,000 Du ser samma sorts syntax med XML också. 32 00:02:03,000 --> 00:02:06,000 >> Detta indikerar början på ett PHP-block. 33 00:02:06,000 --> 00:02:09,000 Detta? Php är specifikt för PHP. 34 00:02:09,000 --> 00:02:16,000 Vi stänger allt med en?> Också. 35 00:02:16,000 --> 00:02:22,000 Vi öppnar upp en fil i vår apparaten med vad du vill. 36 00:02:22,000 --> 00:02:25,000 I detta paket står att ringa dynamic.php. 37 00:02:25,000 --> 00:02:29,000 I sanning, kan du kalla det vad du vill, men filnamnet kommer upp 38 00:02:29,000 --> 00:02:34,000 och vara viktigt senare, så kom ihåg vad du kallar det. 39 00:02:34,000 --> 00:02:36,000 Jag ska gå över till apparaten, 40 00:02:36,000 --> 00:02:43,000 och jag kommer att göra en katalog för 41 00:02:43,000 --> 00:02:48,000 § 9 Jag tror att vi är på nu. 42 00:02:48,000 --> 00:02:51,000 Och vi kommer att gå in i 9 §, 43 00:02:51,000 --> 00:02:54,000 och jag kommer att använda gedit. 44 00:02:54,000 --> 00:02:59,000 Låt oss se, gedit, och jag kommer att ringa min dynamic.php. 45 00:02:59,000 --> 00:03:03,000 Boom. 46 00:03:03,000 --> 00:03:06,000 Inom dynamic.php, eftersom detta är en PHP-fil 47 00:03:06,000 --> 00:03:09,000 och jag vill köra detta genom PHP tolken 48 00:03:09,000 --> 00:03:12,000 Jag måste börja allting med de öppna taggar, 49 00:03:12,000 --> 00:03:17,000 så jag ska börja de genast, 50 00:03:17,000 --> 00:03:23,000 ge mig lite utrymme mellan taggarna, 51 00:03:23,000 --> 00:03:26,000 och sedan poängen med denna övning var att leka med 52 00:03:26,000 --> 00:03:34,000 denna funktion som kallas getType, så getType, denna funktion här. 53 00:03:34,000 --> 00:03:38,000 >> Observera att det inte någon är understreck eller utrymme eller bindestreck eller nåt sånt 54 00:03:38,000 --> 00:03:42,000 separera de 2 ord får och skriv, bara ett ord helt och hållet. 55 00:03:42,000 --> 00:03:46,000 Men vad detta kommer att göra är om jag passerar i en variabel till getType, 56 00:03:46,000 --> 00:03:51,000 säger $ var eller $ x, 57 00:03:51,000 --> 00:03:55,000 detta kommer att berätta typ av i en felsökning format 58 00:03:55,000 --> 00:03:59,000 vad namnet av den typen är. 59 00:03:59,000 --> 00:04:03,000 Vi kommer att experimentera här. 60 00:04:03,000 --> 00:04:07,000 I synnerhet om man ser tillbaka på pset spec 61 00:04:07,000 --> 00:04:11,000 vi har några olika rader kod här. 62 00:04:11,000 --> 00:04:16,000 I den första kodraden vi initierar denna variabel, $ var, 63 00:04:16,000 --> 00:04:21,000 vara lika med 7, och sedan har vi denna printf linje 64 00:04:21,000 --> 00:04:25,000 som säger hej, är printf var tom. 65 00:04:25,000 --> 00:04:29,000 Printf är en av de många sätt vi kan skriva ut saker i PHP. 66 00:04:29,000 --> 00:04:33,000 Ofta ser du eko-funktionen används i stället för printf, 67 00:04:33,000 --> 00:04:40,000 men printf vi alla känner till att ha kodning i C för en stund. 68 00:04:40,000 --> 00:04:42,000 Vad du kan faktiskt göra är låt oss se om kopiera och klistra in fungerar. 69 00:04:42,000 --> 00:04:46,000 Jag ska ge det ett försök. 70 00:04:46,000 --> 00:04:52,000 Vi ska gå tillbaka till apparaten. 71 00:04:52,000 --> 00:05:00,000 Okej, och där vi går. 72 00:05:00,000 --> 00:05:05,000 Och avståndet är lite funky, men nu kör vi. 73 00:05:05,000 --> 00:05:08,000 Vi har den här koden i här. 74 00:05:08,000 --> 00:05:11,000 >> [Student] Är det inte bra stil till fliken det? 75 00:05:11,000 --> 00:05:13,000 Ursäkta? 76 00:05:13,000 --> 00:05:15,000 [Student] Är det vanligt att fliken det? 77 00:05:15,000 --> 00:05:21,000 Rätt, så Sam frågar om det är konvention att fliken eller inte. 78 00:05:21,000 --> 00:05:23,000 Vanligtvis ja. 79 00:05:23,000 --> 00:05:26,000 I det här fallet har jag valt att inte. 80 00:05:26,000 --> 00:05:33,000 Ärligt talat, ser du olika saker mellan olika programmerare. 81 00:05:33,000 --> 00:05:40,000 PHP används vanligtvis ofta i kombination med HTML 82 00:05:40,000 --> 00:05:45,000 och andra språk, och så ibland utskriften kommer att se lite funky 83 00:05:45,000 --> 00:05:50,000 Om du strecksatsen inom PHP start-och sluttaggar. 84 00:05:50,000 --> 00:05:53,000 Det beror egentligen. 85 00:05:53,000 --> 00:05:56,000 I detta fall kopiera och klistra inte klistra flikarna i för mig, 86 00:05:56,000 --> 00:06:02,000 men det definitivt gör, som du sa, gör det tydligare. 87 00:06:02,000 --> 00:06:06,000 Okej, om du sparar den här koden i dynamic.php 88 00:06:06,000 --> 00:06:10,000 sedan vad du kan göra är att komma ner till din terminal fönster där jag är just här nere 89 00:06:10,000 --> 00:06:17,000 i gedit, och att göra motsvarande sammanställa 90 00:06:17,000 --> 00:06:20,000 med att göra och sedan köra din kod i C 91 00:06:20,000 --> 00:06:25,000 allt du har att göra med PHP-filen är igång PHP tolken, 92 00:06:25,000 --> 00:06:30,000 vilket är ett litet program som kallas PHP, 93 00:06:30,000 --> 00:06:35,000 och argumentet du ger tolken är den fil du vill tolka. 94 00:06:35,000 --> 00:06:40,000 I det här fallet, dynamic.php. 95 00:06:40,000 --> 00:06:43,000 Hoppsan, vart jag uttrycka det? 96 00:06:43,000 --> 00:06:52,000 Åh, jag satte den i punkt 9, och här är jag. Det är därför. 97 00:06:52,000 --> 00:06:57,000 >> Nu om jag kör det igen 98 00:06:57,000 --> 00:07:02,000 Vi ser att i mitt första getType funktionsanrop 99 00:07:02,000 --> 00:07:04,000 var är ett heltal. 100 00:07:04,000 --> 00:07:12,000 I nästa var en sträng, och sedan i den tredje var en boolean. 101 00:07:12,000 --> 00:07:15,000 Det intressanta med detta är om vi bläddra tillbaka upp ser vi att 102 00:07:15,000 --> 00:07:18,000 dessa är olika typer liknande de som vi hade i C. 103 00:07:18,000 --> 00:07:22,000 Vi hade Ints i C. 104 00:07:22,000 --> 00:07:26,000 Vi sorts hade strängar i C, 105 00:07:26,000 --> 00:07:31,000 så strängar var inte en helt legit typ i den meningen att 106 00:07:31,000 --> 00:07:37,000 vår CS50 sträng var verkligen vad? 107 00:07:37,000 --> 00:07:39,000 Ursäkta? Missy? 108 00:07:39,000 --> 00:07:41,000 [Missy] Char *. 109 00:07:41,000 --> 00:07:43,000 Ja, det var det char * vi använt. 110 00:07:43,000 --> 00:07:47,000 I början av terminen var vi med sträng typ, 111 00:07:47,000 --> 00:07:52,000 men det var verkligen en char * under huven. 112 00:07:52,000 --> 00:07:58,000 Vi bara skriva definierade det, medan i PHP dessa strängar är en verklig typ. 113 00:07:58,000 --> 00:08:07,000 Det finns ingen mer av denna char * typ grejer. 114 00:08:07,000 --> 00:08:10,000 >> Du kommer att se att vi kan göra många fler saker med strängar 115 00:08:10,000 --> 00:08:14,000 mycket lättare i PHP än vi kunde i C, 116 00:08:14,000 --> 00:08:17,000 och slutligen har vi den här boolesk typ och den stora skillnaden här är att 117 00:08:17,000 --> 00:08:21,000 om vi bläddra tillbaka ner ser vi att namnet på dessa typer 118 00:08:21,000 --> 00:08:28,000 Nu heltal, sträng, och boolesk istället för int och bool, 119 00:08:28,000 --> 00:08:31,000 och som du plockar upp olika programmeringsspråk, 120 00:08:31,000 --> 00:08:36,000 antar att någon gång i ditt liv kommer du att komma i kontakt med 121 00:08:36,000 --> 00:08:40,000 olika som du kommer att märka små egenheter som denna 122 00:08:40,000 --> 00:08:44,000 där C kallar heltal Ints. 123 00:08:44,000 --> 00:08:46,000 Vissa kallar det heltal. 124 00:08:46,000 --> 00:08:51,000 Det finns andra termer som du kommer att stöta på. 125 00:08:51,000 --> 00:08:55,000 Stor int vi såg idag i SQL. 126 00:08:55,000 --> 00:08:59,000 Det finns även nummer och sedan bool, boolean, 127 00:08:59,000 --> 00:09:03,000 alla sorters skillnader där. 128 00:09:03,000 --> 00:09:07,000 >> Detta är inte särskilt intressant, men nu ska jag ge er lite tid 129 00:09:07,000 --> 00:09:13,000 Om vi ​​what ut-att arbeta igenom denna övning längst ned på sidan 3 130 00:09:13,000 --> 00:09:20,000 där den frågar vilka typer motsvarar dessa värden här i botten. 131 00:09:20,000 --> 00:09:24,000 Vi har 3,50. 132 00:09:24,000 --> 00:09:28,000 Vi har den här saken här, vilket är intressant. 133 00:09:28,000 --> 00:09:32,000 Vi har inte sett det förut, men om du har följt med i föreläsning 134 00:09:32,000 --> 00:09:35,000 du förmodligen redan vet vad det är. 135 00:09:35,000 --> 00:09:40,000 Sedan har vi detta, vilket det är typ av funky. 136 00:09:40,000 --> 00:09:42,000 Du känner igen det här. 137 00:09:42,000 --> 00:09:46,000 Vad är det i C? 138 00:09:46,000 --> 00:09:50,000 Sam? Vad skulle detta ge dig i C? 139 00:09:50,000 --> 00:09:54,000 Det skulle öppna en fil som heter dynamic.php och göra den läsbar. 140 00:09:54,000 --> 00:09:58,000 Ja, och vad skulle vara den typ av variabel som vi skulle överlåta detta till? >> Fil stjärna. 141 00:09:58,000 --> 00:10:02,000 Exakt, skulle vi ge det till en fil stjärna. 142 00:10:02,000 --> 00:10:08,000 Detta är legitimt PHP också. 143 00:10:08,000 --> 00:10:12,000 Kör det. Se vad som händer när du passerar det till getType. 144 00:10:12,000 --> 00:10:19,000 Och sedan också kolla vad null är, vad det kan vara i PHP. 145 00:10:19,000 --> 00:10:21,000 Jag ska ge er ett par minuter. 146 00:10:21,000 --> 00:10:24,000 Du kan bokstavligen kopiera och klistra in dessa värden i, 147 00:10:24,000 --> 00:10:29,000 och då ska vi göra lite slumpmässigt uppmanar er 148 00:10:29,000 --> 00:10:34,000 och se vad du har. 149 00:10:34,000 --> 00:10:36,000 >> [Student] Jag har en fråga. << Ja. 150 00:10:36,000 --> 00:10:40,000 I en av föreläsningarna David sade finns det något du kan sätta på toppen av din fil 151 00:10:40,000 --> 00:10:43,000 så att du inte behöver skriva in PHP varje gång. 152 00:10:43,000 --> 00:10:45,000 Vad var det? 153 00:10:45,000 --> 00:10:50,000 Han var antagligen talar om pundet bang, hash smäll. 154 00:10:50,000 --> 00:10:57,000 Det är ett direktiv att om du markerar filen som exekverbar 155 00:10:57,000 --> 00:11:01,000 vad den gör är när du kör filen 156 00:11:01,000 --> 00:11:06,000 det kommer att berätta skalet programmet 157 00:11:06,000 --> 00:11:12,000 att använda PHP tolken att tolka innehållet i filen. 158 00:11:12,000 --> 00:11:16,000 Frågan är vad som var denna speciella linje 159 00:11:16,000 --> 00:11:20,000 att vi skulle kunna innefatta överst på våra PHP-filer att inte behöva omfatta 160 00:11:20,000 --> 00:11:26,000 detta PHP linje eller detta PHP kommando när vi vill köra filen? 161 00:11:26,000 --> 00:11:31,000 Och du kan faktiskt göra detta med en massa olika filer. 162 00:11:31,000 --> 00:11:37,000 Jag tror att det beror på var PHP binära lagras, 163 00:11:37,000 --> 00:11:43,000 men ofta usr / bin / php är ett bra ställe att börja. 164 00:11:43,000 --> 00:11:45,000 Du kan lista ut exakt genom att gå tillbaka till din apparat 165 00:11:45,000 --> 00:11:50,000 och skriva ut vilken php. 166 00:11:50,000 --> 00:11:55,000 Den som Kommandot räknar ut när du utför binära 167 00:11:55,000 --> 00:12:01,000 eller ett kommando där motsvarande fil är. 168 00:12:01,000 --> 00:12:06,000 Detta säger mig att PHP är verkligen aliasing detta binär fil 169 00:12:06,000 --> 00:12:13,000 som lagras i usr / bin, som är där mycket av systemets binärfilerna är installerade. 170 00:12:13,000 --> 00:12:21,000 Till exempel, om jag bläddra upp till toppen, nu när jag har lagt det #! linje i här 171 00:12:21,000 --> 00:12:27,000 Jag kan rulla nedåt, och jag kan försöka köra 172 00:12:27,000 --> 00:12:35,000 dynamic.php, men jag får detta felmeddelande om tillstånd nekas, 173 00:12:35,000 --> 00:12:42,000 och vad det betyder är att den här filen för närvarande inte ger körbara behörigheter. 174 00:12:42,000 --> 00:12:46,000 Det är inte markerad som en fil som någon kan köra. 175 00:12:46,000 --> 00:12:52,000 >> När du körde göra eller klang och du fick en körbar från det 176 00:12:52,000 --> 00:12:56,000 kompilatorn var smart nog att veta att hey, jag bygger ett körbart. 177 00:12:56,000 --> 00:13:00,000 Du vill förmodligen köra det, så det skulle automatiskt konfigurera 178 00:13:00,000 --> 00:13:02,000 behörigheterna för dig. 179 00:13:02,000 --> 00:13:06,000 Detta är inte fallet, men när du skapar en vanlig fil från grunden, 180 00:13:06,000 --> 00:13:13,000 Orsaken är oftast att du inte vill ha alla filer på ditt system vara körbara, 181 00:13:13,000 --> 00:13:15,000 så du måste verkligen gå in och manuellt göra det. 182 00:13:15,000 --> 00:13:22,000 Det enklaste sättet att göra det är med kommandot chmod, 183 00:13:22,000 --> 00:13:28,000 och chmod + x säger lägger den körbara bitar 184 00:13:28,000 --> 00:13:31,000 eftersom det är den läsbiten, skriv lite och körbara bitar, 185 00:13:31,000 --> 00:13:35,000 R, W och X, 186 00:13:35,000 --> 00:13:39,000 och säger chmod + x tänds den körbara bitar 187 00:13:39,000 --> 00:13:46,000 för då filen vi anger, som i detta fall kommer att vara dynamic.php. 188 00:13:46,000 --> 00:13:49,000 >> [Student] Är det slås på för alla? 189 00:13:49,000 --> 00:13:52,000 Låt oss kolla in det här, så hur skulle jag kontrollera behörigheterna? 190 00:13:52,000 --> 00:13:54,000 Vet du hur jag skulle kontrollera behörigheterna för en fil? 191 00:13:54,000 --> 00:13:56,000 [Ohörbart elev svar] 192 00:13:56,000 --> 00:13:58,000 Förlåt? >> [Student] XSD. 193 00:13:58,000 --> 00:14:03,000 XSD ger oss filen i hackar. 194 00:14:03,000 --> 00:14:09,000 Lista alla filer,-l, kommer att visa mig alla filer i min katalog 195 00:14:09,000 --> 00:14:13,000 typ av i deras långa, verbose notering och så här ser vi att 196 00:14:13,000 --> 00:14:17,000 detta dynamic.php fil 197 00:14:17,000 --> 00:14:23,000 ändrades senast 5 november kl 16:21. 198 00:14:23,000 --> 00:14:26,000 Ägaren av denna fil jharvard. 199 00:14:26,000 --> 00:14:28,000 Det är den användare som är inloggad 200 00:14:28,000 --> 00:14:31,000 Det är användaren arbetar jag som, 201 00:14:31,000 --> 00:14:36,000 och om du är också i apparaten som du arbetar också som användare jharvard. 202 00:14:36,000 --> 00:14:38,000 Du är i studenternas gruppen, 203 00:14:38,000 --> 00:14:44,000 och det är saker som du kommer att se tillräckligt ofta. 204 00:14:44,000 --> 00:14:47,000 >> Vi kan gå in i en massa detaljer här, 205 00:14:47,000 --> 00:14:50,000 men för det mesta vad du vill titta på när du vill se 206 00:14:50,000 --> 00:14:55,000 huruvida en fil är körbar främst 207 00:14:55,000 --> 00:14:58,000 användaren som äger filen, ägaren, 208 00:14:58,000 --> 00:15:03,000 så detta jharvard, och sedan har vi 209 00:15:03,000 --> 00:15:07,000 behörighetsinställningarna bitar över här till vänster, 210 00:15:07,000 --> 00:15:13,000 och sättet att läsa detta är att den sista biten 211 00:15:13,000 --> 00:15:18,000 typiskt används för märkning huruvida eller ej, åtminstone i det här fallet 212 00:15:18,000 --> 00:15:21,000 denna sista biten kommer ofta in på annonsen för att ange 213 00:15:21,000 --> 00:15:24,000 att filen är en katalog och inte bara en vanlig fil. 214 00:15:24,000 --> 00:15:28,000 Då följande 3 bitar här 215 00:15:28,000 --> 00:15:34,000 bestämma de behörigheter som ägaren av filen har, 216 00:15:34,000 --> 00:15:38,000 så i detta fall jharvard, som ägare till filen, kan läsa och skriva denna fil, 217 00:15:38,000 --> 00:15:42,000 men det finns ett streck som säger att jharvard inte kan köra den här filen. 218 00:15:42,000 --> 00:15:46,000 De nästa 3 bitar för koncernen, så detta är studenterna gruppen, 219 00:15:46,000 --> 00:15:49,000 så om det fanns flera användare på min apparat, 220 00:15:49,000 --> 00:15:52,000 och vi hade flera användare som en del av studenternas gruppen, 221 00:15:52,000 --> 00:15:55,000 Då kan alla läsa denna fil, men de kan inte skriva det, 222 00:15:55,000 --> 00:15:59,000 och likaså alla andra, världen 223 00:15:59,000 --> 00:16:01,000 kan bara läsa den här filen. 224 00:16:01,000 --> 00:16:03,000 Det finns en bra, lång writeup om detta, 225 00:16:03,000 --> 00:16:05,000 så du kan läsa på nätet. 226 00:16:05,000 --> 00:16:10,000 I problembild spec vi går in i detta mer i detalj. 227 00:16:10,000 --> 00:16:12,000 >> [Student] Är 218 hänvisar till världen? 228 00:16:12,000 --> 00:16:17,000 Den 218 är-från toppen av mitt huvud att jag glömmer, 229 00:16:17,000 --> 00:16:20,000 men nej. 230 00:16:20,000 --> 00:16:29,000 Låt oss se. Jag blanking på det just nu. 231 00:16:29,000 --> 00:16:32,000 Tillbaka till vad vi skulle göra med detta chmod + x 232 00:16:32,000 --> 00:16:37,000 där vi ville ge dynamic.php körbara behörigheter, 233 00:16:37,000 --> 00:16:40,000 och frågan var huruvida detta skulle ge körbara behörigheter till alla 234 00:16:40,000 --> 00:16:44,000 eller bara jharvard, och vi kan se detta genom att 235 00:16:44,000 --> 00:16:48,000 köra kommandon och skriva ls-l, 236 00:16:48,000 --> 00:16:51,000 och nu ser vi att det är markerat som körbar. 237 00:16:51,000 --> 00:16:54,000 Du ser att det fanns en färgförändring. 238 00:16:54,000 --> 00:16:57,000 Nu dynamic.php listas i grönt, 239 00:16:57,000 --> 00:17:01,000 och det ser ut svaret på frågan är vad, Charlotte? 240 00:17:01,000 --> 00:17:04,000 [Charlotte] Endast jharvard. >> Endast jharvard, ja. 241 00:17:04,000 --> 00:17:08,000 >> Om vi ​​ville slå på körbara bit på för alla 242 00:17:08,000 --> 00:17:10,000 hur kan vi göra det? 243 00:17:10,000 --> 00:17:13,000 Några tankar? >> A + x? 244 00:17:13,000 --> 00:17:15,000 Ja, exakt. 245 00:17:15,000 --> 00:17:23,000 Charlotte sa att vi kan göra chmod en + x av dynamic.php, 246 00:17:23,000 --> 00:17:26,000 och nu när vi kör ls-l ser vi att körbara bitar 247 00:17:26,000 --> 00:17:30,000 är verkligen slås på för alla. 248 00:17:30,000 --> 00:17:37,000 Och du kan faktiskt göra baksidan av detta, så att du kan stänga av den för alla 249 00:17:37,000 --> 00:17:41,000 med minus. 250 00:17:41,000 --> 00:17:46,000 Nu är avstängd, och nu kan vi slå på den igen för jharvard 251 00:17:46,000 --> 00:17:52,000 så att vi verkligen kan köra det nu, 252 00:17:52,000 --> 00:17:58,000 och nu ser när vi kör koden här speciella #! längst upp, 253 00:17:58,000 --> 00:18:04,000 #! linje, sade skalet, 254 00:18:04,000 --> 00:18:08,000 berättade vår terminal hey, när denna fil körs, 255 00:18:08,000 --> 00:18:14,000 Använd / usr / bin / php att tolka den här filen 256 00:18:14,000 --> 00:18:20,000 och sedan skriva ut resultatet. 257 00:18:20,000 --> 00:18:22,000 [Ohörbart elev fråga] 258 00:18:22,000 --> 00:18:25,000 Visst, låt mig rulla tillbaka upp. Precis som här. 259 00:18:25,000 --> 00:18:36,000 Du kommer att se alla dessa direktiv börjar med denna pund och sedan utropstecken, 260 00:18:36,000 --> 00:18:39,000 ibland kallas Shebang, hash smäll. 261 00:18:39,000 --> 00:18:48,000 >> [Student] Hur kan vi köra det med PHP dynamic.php innan vi gör den körbar? 262 00:18:48,000 --> 00:18:55,000 Frågan var hur vi kan köra med PHP binära 263 00:18:55,000 --> 00:18:58,000 medan dynamic.php är inte körbar? 264 00:18:58,000 --> 00:19:01,000 Detta är super viktigt eftersom det är exakt hur 265 00:19:01,000 --> 00:19:06,000 det kommer att fungera när du skriver problembild 7. 266 00:19:06,000 --> 00:19:09,000 För det mesta PHP-filerna inte är direkt körbar. 267 00:19:09,000 --> 00:19:14,000 Det sätt som fungerar är att det är PHP binära som är körbar. 268 00:19:14,000 --> 00:19:16,000 Tolken är det som är exekveras, 269 00:19:16,000 --> 00:19:20,000 och så vad det gör är bokstavligen sörplande i hela innehållet 270 00:19:20,000 --> 00:19:25,000 vår dynamic.php fil och gå rad för rad 271 00:19:25,000 --> 00:19:29,000 och verkställande dessa kommandon, så det använder vår PHP-fil 272 00:19:29,000 --> 00:19:31,000 som en lista med instruktioner. 273 00:19:31,000 --> 00:19:36,000 Det är inte direkt köra den. 274 00:19:36,000 --> 00:19:40,000 Det är där vi säger att dessa filer tolkas vid körning. 275 00:19:40,000 --> 00:19:46,000 Det är en körning språk i stället för något som är bestämd vid kompileringen, 276 00:19:46,000 --> 00:19:49,000 inte ett kompilerat språk som C. 277 00:19:49,000 --> 00:19:54,000 >> Finns det något sätt att få ett språk körtid att agera som om det är en kompilering språk, 278 00:19:54,000 --> 00:19:58,000 som om du har alla driften görs på servern 279 00:19:58,000 --> 00:20:00,000 snarare än du vet vad jag menar? 280 00:20:00,000 --> 00:20:04,000 Ja, så frågan är 281 00:20:04,000 --> 00:20:11,000 Finns det något sätt att få körtid språk att agera mer som kompileringen typer av språk? 282 00:20:11,000 --> 00:20:18,000 Och det är, jag menar, det är ett aktivt forskningsområde för många av dessa företag. 283 00:20:18,000 --> 00:20:22,000 Jag tror att Facebook har gjort en hel del arbete med PHP 284 00:20:22,000 --> 00:20:25,000 och sammanställning ner, vilket gör det snabbare, optimera den 285 00:20:25,000 --> 00:20:29,000 eftersom deras webbplats är byggd på PHP. 286 00:20:29,000 --> 00:20:34,000 Om du har följt node.js alls, 287 00:20:34,000 --> 00:20:40,000 som är typ av ett JavaScript tolk 288 00:20:40,000 --> 00:20:44,000 att kunna köra JavaScript utanför webbläsaren, utanför din webbläsare, 289 00:20:44,000 --> 00:20:47,000 eftersom traditionellt Javascript skulle bara köra inne i Firefox eller Chrome, 290 00:20:47,000 --> 00:20:52,000 och det skulle kunna användas för att göra häftiga animationer hända på en webbsida 291 00:20:52,000 --> 00:20:55,000 och gör din webbsida dynamisk. 292 00:20:55,000 --> 00:20:59,000 Det är byggt på en hel del arbete som Google har gjort 293 00:20:59,000 --> 00:21:03,000 att göra JavaScript och C + + 294 00:21:03,000 --> 00:21:09,000 binda samman, så det finns en hel del aktivt forskning 295 00:21:09,000 --> 00:21:13,000 få dessa språk att interagera och optimera dem, 296 00:21:13,000 --> 00:21:17,000 främst eftersom så många människor kan koda i PHP och JavaScript 297 00:21:17,000 --> 00:21:19,000 eftersom det är mycket enklare. 298 00:21:19,000 --> 00:21:21,000 Det är mycket trevligare. Du har inte pekare. 299 00:21:21,000 --> 00:21:27,000 Du har inte typ flyter runt. 300 00:21:27,000 --> 00:21:31,000 De ville få fördelarna med dessa kompilering språk 301 00:21:31,000 --> 00:21:36,000 med alla typkontroll och hastigheten och den nedre minnesanvändning och allt det 302 00:21:36,000 --> 00:21:42,000 samtidigt bibehålla flexibilitet och användning av dessa nyare. 303 00:21:42,000 --> 00:21:46,000 >> Tillbaka till vår ursprungliga plan för angrepp. 304 00:21:46,000 --> 00:21:50,000 Vi har några av dessa frågor här i vårt problem set spec. 305 00:21:50,000 --> 00:21:54,000 Låt oss gå igenom dem väldigt snabbt, och vi ska gå runt i rummet. 306 00:21:54,000 --> 00:21:59,000 Charlotte, är vilken typ 3,50? 307 00:21:59,000 --> 00:22:01,000 [Charlotte] Det är en dubbel. >> Det är en dubbel. 308 00:22:01,000 --> 00:22:03,000 Jimmy, vad är det här nästa? >> En array. 309 00:22:03,000 --> 00:22:09,000 En array, fantastisk, och Jared, vad är fopen? 310 00:22:09,000 --> 00:22:11,000 [Jared] Det är en resurs. >> Det är en resurs. 311 00:22:11,000 --> 00:22:15,000 Det är typ av en ny, inte en fil stjärna, inte en fil. 312 00:22:15,000 --> 00:22:19,000 Det är en resurs är den typ i PHP, 313 00:22:19,000 --> 00:22:24,000 och jag är ledsen, Ella, är det sista noll vad? 314 00:22:24,000 --> 00:22:26,000 Null. 315 00:22:26,000 --> 00:22:28,000 Null, hur är det stavas i PHP? >> På samma sätt. 316 00:22:28,000 --> 00:22:30,000 På samma sätt, huvudstäder? >> Ja. 317 00:22:30,000 --> 00:22:33,000 Ja, okej. 318 00:22:33,000 --> 00:22:35,000 Nu kör vi, vi har en dubbel, vi har en matris, 319 00:22:35,000 --> 00:22:41,000 vi har en resurs, och sedan har vi noll. 320 00:22:41,000 --> 00:22:48,000 Låt oss se nu du sett, 321 00:22:48,000 --> 00:22:51,000 låt oss se, så nu har jag gissa vad jag också vill göra är att dra upp 322 00:22:51,000 --> 00:22:56,000 denna webbsida här, här php.net / manuell, 323 00:22:56,000 --> 00:23:01,000 så om ni kopierar det och öppna upp en webbläsare. 324 00:23:01,000 --> 00:23:07,000 Jag ska dra upp Chrome, sätta det i. 325 00:23:07,000 --> 00:23:10,000 Jag vill visa dig det här inte bara för att 326 00:23:10,000 --> 00:23:13,000 vi kan prata hela dagen om typer och allt det roliga grejer 327 00:23:13,000 --> 00:23:19,000 utan snarare för att det är PHP manual, 328 00:23:19,000 --> 00:23:23,000 och det finns en hel del PHP programmerare där ute. 329 00:23:23,000 --> 00:23:26,000 Det finns en hel del PHP-webbplatser där ute, 330 00:23:26,000 --> 00:23:31,000 och som ett resultat finns det en hel del dokumentation om PHP, 331 00:23:31,000 --> 00:23:36,000 och handboken denna php.net är ett riktigt bra ställe att gå 332 00:23:36,000 --> 00:23:43,000 när du har frågor om vad som är det bästa sättet att göra X i PHP 333 00:23:43,000 --> 00:23:45,000 eller hur ser en funktion ut? 334 00:23:45,000 --> 00:23:49,000 Bara typ av att bekanta sig med hur det ser ut eftersom 335 00:23:49,000 --> 00:23:54,000 du kommer att komma hit ofta, som lite för problem 7. 336 00:23:54,000 --> 00:23:57,000 >> Om du hamnar gör ett lärdomsprov som använder PHP 337 00:23:57,000 --> 00:24:04,000 detta kommer att vara en plats som du kommer att bli mycket väl förtrogen med. 338 00:24:04,000 --> 00:24:09,000 Ofta hur människor gör detta är att de använder Google för att söka efter platsen, 339 00:24:09,000 --> 00:24:16,000 och de använder inte sökrutan som är här uppe i övre högra, som är typ av små. 340 00:24:16,000 --> 00:24:19,000 Om du googla runt efter något att göra med PHP och du ser 341 00:24:19,000 --> 00:24:24,000 en av de manuella länkarna dyker upp du normalt kan lita på det 342 00:24:24,000 --> 00:24:31,000 som en ganska bra resurs. 343 00:24:31,000 --> 00:24:34,000 Awesome, så av dessa typer, bara av nyfikenhet, 344 00:24:34,000 --> 00:24:37,000 vilka har vi inte sett? 345 00:24:37,000 --> 00:24:40,000 Allt vi har inte sett här? 346 00:24:40,000 --> 00:24:44,000 [Student] Resurs. >> Vi såg resurs med fopen samtalet. 347 00:24:44,000 --> 00:24:48,000 [Student] Objekt. >> Objekt vi inte sett säkert. 348 00:24:48,000 --> 00:24:51,000 Återuppringning vi inte har sett. 349 00:24:51,000 --> 00:24:54,000 Det är några av dessa pseudo-typer. 350 00:24:54,000 --> 00:24:57,000 Vi definitivt bara såg heltal och dubbel. 351 00:24:57,000 --> 00:25:01,000 Vi såg några av de andra, så om vi klickar på heltal 352 00:25:01,000 --> 00:25:08,000 Vi kan se är det några andra heltal som de har här? 353 00:25:08,000 --> 00:25:11,000 Är de helt så heltal, heltal, heltal. 354 00:25:11,000 --> 00:25:14,000 Vissa språk har större heltal typer, 355 00:25:14,000 --> 00:25:23,000 som vi såg på MySQL idag var int och sedan stora int. 356 00:25:23,000 --> 00:25:25,000 Cool. 357 00:25:25,000 --> 00:25:28,000 >> Så, PHP manual. 358 00:25:28,000 --> 00:25:37,000 Låt oss gå tillbaka till vår problembild spec, och vi kommer nu rulla ner på sidan 4. 359 00:25:37,000 --> 00:25:41,000 En av de saker som händer när du får dessa språk 360 00:25:41,000 --> 00:25:49,000 som inte har denna statiska skriva, så dessa språk där man måste deklarera 361 00:25:49,000 --> 00:25:52,000 typen av en variabel på framsidan 362 00:25:52,000 --> 00:26:00,000 är att få dig fall du kan börja ha variabler av olika typer 363 00:26:00,000 --> 00:26:04,000 interagera med varandra, 364 00:26:04,000 --> 00:26:09,000 och PHP gör denna sak där man försöker göra 365 00:26:09,000 --> 00:26:13,000 vad den anser vara det mest förnuftiga att göra 366 00:26:13,000 --> 00:26:18,000 när du har 2 olika typer interagerar med varandra. 367 00:26:18,000 --> 00:26:24,000 Till exempel, om vi ser på dessa kodrader här 368 00:26:24,000 --> 00:26:29,000 Ni ser att vi har vad som händer när 369 00:26:29,000 --> 00:26:38,000 Vi försöker lägga till strängen 1 till heltalet 2. 370 00:26:38,000 --> 00:26:41,000 Vad händer om vi försöker lägga en sträng som inte är ett numeriskt värde 371 00:26:41,000 --> 00:26:48,000 utan snarare verkliga karaktärer, CS till antalet 50? 372 00:26:48,000 --> 00:26:51,000 Sedan får vi se är det något annat som händer där 373 00:26:51,000 --> 00:26:56,000 stället för att lägga en sträng till ett antal som vi lägger ett nummer till en sträng, 374 00:26:56,000 --> 00:27:00,000 och så vidare och så vidare till den punkt där vi får 375 00:27:00,000 --> 00:27:05,000 någon form av konstiga saker här där vi har 7 + sant. 376 00:27:05,000 --> 00:27:09,000 Vad sjutton betyder det? 377 00:27:09,000 --> 00:27:19,000 >> Om ni går vidare och klistra del av denna kod i din apparat. 378 00:27:19,000 --> 00:27:27,000 Du kan hålla den i dynamic.php. 379 00:27:27,000 --> 00:27:30,000 Vi får se vad som händer. 380 00:27:41,000 --> 00:27:43,000 [Student] Använd bara skriva ut, inte printf? 381 00:27:43,000 --> 00:27:52,000 Ja, så finner du att utskriften är också ett giltigt funktion för utskrift i PHP. 382 00:27:52,000 --> 00:27:54,000 Det finns många olika sätt att göra det. 383 00:27:54,000 --> 00:27:58,000 Vi får se med ett par av de exempel som senare när vi börjar prata 384 00:27:58,000 --> 00:28:02,000 om den unika problem som vi kommer att skriva 385 00:28:02,000 --> 00:28:06,000 och sedan koncentrationer problem som vi kommer att skriva 386 00:28:06,000 --> 00:28:09,000 att även om vi har fopen och fclose 387 00:28:09,000 --> 00:28:15,000 Det är ofta inte det enklaste sättet att läsa i innehållet i en fil. 388 00:28:15,000 --> 00:28:21,000 PHP har många av dessa C-liknande holdovers. 389 00:28:21,000 --> 00:28:28,000 [Student] När jag sätter i alla 6 av de saker jag bara få ett nummer som en utgång. 390 00:28:28,000 --> 00:28:36,000 [Nate H] När du sätter i alla 6 av dessa saker. 391 00:28:36,000 --> 00:28:39,000 Låt oss se är det eftersom det är möjligen- 392 00:28:39,000 --> 00:28:46,000 en sak är att dessa tryckta samtal inte avslutas i slutet med nya linjer. 393 00:28:46,000 --> 00:28:49,000 Det finns ingen ny rad mellan varje av dessa tryckta samtal, 394 00:28:49,000 --> 00:28:51,000 så kanske du får en stort antal, 395 00:28:51,000 --> 00:28:58,000 och det är egentligen bara blandning av nya linjer tecken. 396 00:28:58,000 --> 00:29:00,000 [Student] Okej, hur gör jag se- 397 00:29:00,000 --> 00:29:03,000 Nåväl, det finns en massa olika sätt. 398 00:29:03,000 --> 00:29:06,000 Du kunde manuellt lägga in en utskrift av en ny rad tecken, 399 00:29:06,000 --> 00:29:09,000 ett eko av en ny rad tecken, 400 00:29:09,000 --> 00:29:12,000 utskrift av ny rad. 401 00:29:12,000 --> 00:29:16,000 [Student] Så eko är samma sak som printf? 402 00:29:16,000 --> 00:29:21,000 >> Printf är som C printf 403 00:29:21,000 --> 00:29:24,000 där du skriver en formaterad sträng. 404 00:29:24,000 --> 00:29:32,000 Du levererar det formatsträng och alla variabler platshållare. 405 00:29:32,000 --> 00:29:39,000 Det är ofta något som inte används, 406 00:29:39,000 --> 00:29:42,000 låt oss se, en ansvarsfriskrivning, 407 00:29:42,000 --> 00:29:48,000 Jag är mindre bekant med PHP än jag med andra web språk, 408 00:29:48,000 --> 00:29:53,000 och när jag har programmerat i PHP Jag brukar inte använda printf 409 00:29:53,000 --> 00:29:59,000 eftersom jag tycker att det är snabbare att använda sträng interpolering funktioner som den har, 410 00:29:59,000 --> 00:30:04,000 som vi kommer att gå in och jag ska visa dig på bara en sekund, 411 00:30:04,000 --> 00:30:08,000 medan i C vi slags måste göra detta Hacky sak att få det att skriva ut på rätt sätt. 412 00:30:08,000 --> 00:30:16,000 Du kan faktiskt sätta variabler direkt i strängar i PHP. 413 00:30:16,000 --> 00:30:22,000 Printf är typ av alltför lång för vad jag brukar göra. Ja, Ella. 414 00:30:22,000 --> 00:30:25,000 [Ella] Generellt om du får tolka fel betyder det- 415 00:30:25,000 --> 00:30:30,000 som på C det inte berätta exakt var felet är och vad det är, 416 00:30:30,000 --> 00:30:34,000 så betyder det titta igenom hela din kod och räkna ut det? 417 00:30:34,000 --> 00:30:39,000 Det är oftast mer riktade än så. 418 00:30:39,000 --> 00:30:48,000 Jag tror i det fallet var lite utanför, 419 00:30:48,000 --> 00:30:51,000 så jag tror i så fall vi saknade ett semikolon. 420 00:30:51,000 --> 00:30:54,000 Det försökte vettigt av allt, 421 00:30:54,000 --> 00:30:57,000 så som dessa tolkade språk, är tolken ska försöka 422 00:30:57,000 --> 00:31:01,000 och gör sitt bästa för att få allt att fungera korrekt. 423 00:31:01,000 --> 00:31:04,000 >> Du kommer att se, till exempel, i JavaScript 424 00:31:04,000 --> 00:31:10,000 Du kommer ofta online uttalanden avslutas med ett kommatecken precis som de gör i PHP, 425 00:31:10,000 --> 00:31:13,000 precis som de gör i C. 426 00:31:13,000 --> 00:31:15,000 I JavaScript vissa av JavaScript tolkar 427 00:31:15,000 --> 00:31:20,000 i många av de webbläsare sätta i semikolon för dig 428 00:31:20,000 --> 00:31:23,000 Om du råkar vara saknas dem. 429 00:31:23,000 --> 00:31:29,000 De ska försöka rymma för några slarv från din sida. 430 00:31:29,000 --> 00:31:34,000 Det är där det kan vara att försöka och försöka och försöka göra saker och ting fungerar, 431 00:31:34,000 --> 00:31:36,000 och slutligen kommer det att komma till en punkt där det står okej, 432 00:31:36,000 --> 00:31:38,000 Jag kan inte göra saker och ting fungerar på ösa, och det är där du får ett radnummer 433 00:31:38,000 --> 00:31:44,000 som kan verka lite off från den exakta platsen. 434 00:31:44,000 --> 00:31:47,000 Okej, så låt oss gå igenom det här verkligen snabbt. 435 00:31:47,000 --> 00:31:50,000 Vi slutade med Ella, så låt oss gå över till Missy, 436 00:31:50,000 --> 00:31:54,000 och Missy, vad utskrift av sträng 1 plus antalet 2 ge dig? 437 00:31:54,000 --> 00:31:56,000 [Missy] 3. >> 3. 438 00:31:56,000 --> 00:31:59,000 Verkar det vettigt? Sortera på? 439 00:31:59,000 --> 00:32:02,000 Ger det dig ett nummer? Ger det dig en sträng? 440 00:32:02,000 --> 00:32:05,000 [Missy] Ett tal. >> Det är en siffra. 441 00:32:05,000 --> 00:32:09,000 Men det är att skriva ut det, så det kommer att ge dig någon form av snöre. 442 00:32:09,000 --> 00:32:12,000 >> En sak vi kan göra för att kontrollera detta 443 00:32:12,000 --> 00:32:21,000 är om vi gör $ var = 1 + 2 444 00:32:21,000 --> 00:32:28,000 och då säger vi eko av getType, 445 00:32:28,000 --> 00:32:33,000 så vi använder tredjedel sorts skriva här. 446 00:32:33,000 --> 00:32:39,000 Nu kan vi se vad som händer här. 447 00:32:39,000 --> 00:32:42,000 Här är vad vi har är att vi fick ett heltal av detta. 448 00:32:42,000 --> 00:32:45,000 Även om vi lägger denna sträng till ett tal, 449 00:32:45,000 --> 00:32:48,000 vi fick inte en sträng av det, precis som Missy sa. 450 00:32:48,000 --> 00:32:52,000 Vi fick ett heltal. 451 00:32:52,000 --> 00:32:57,000 Okej, så låt oss se, nästa upp, Kevin. 452 00:32:57,000 --> 00:32:59,000 CS + 50? >> [Kevin] 50. 453 00:32:59,000 --> 00:33:02,000 [Nate H] 50. Verkar det vettigt? 454 00:33:02,000 --> 00:33:04,000 [Kevin] Ja. 455 00:33:04,000 --> 00:33:06,000 [Nate H] Varför? Varför gör det meningsfullt för dig? 456 00:33:06,000 --> 00:33:11,000 [Kevin] Eftersom det bara är att ha strängen med noll numeriskt värde. 457 00:33:11,000 --> 00:33:16,000 Ja, bra. 458 00:33:16,000 --> 00:33:20,000 Typ av tvetydiga situationer, men det är bra att veta vad som händer. 459 00:33:20,000 --> 00:33:25,000 Stella, vad som händer härnäst med nummer 1 + string 2? 460 00:33:25,000 --> 00:33:27,000 [Stella] 3. >> 3 igen. 461 00:33:27,000 --> 00:33:30,000 Och i detta fall, får vi en sträng eller ett nummer? 462 00:33:30,000 --> 00:33:36,000 >> Låt oss ge det ett försök. 463 00:33:36,000 --> 00:33:43,000 Någon snabbare än mig få svaret? Charlotte? 464 00:33:43,000 --> 00:33:46,000 Åh, jag didn't-Okej, låt oss se, vi kommer att göra samma sak 465 00:33:46,000 --> 00:33:49,000 där vi har en rad plus en sträng, och vi kommer att upprepa den typ, 466 00:33:49,000 --> 00:33:51,000 se vad vi får. 467 00:33:51,000 --> 00:33:55,000 Vi får också ett heltal. 468 00:33:55,000 --> 00:33:58,000 Det spelar ingen roll vilken som är den sträng, som en är antalet. 469 00:33:58,000 --> 00:34:00,000 Vi kommer fortfarande att få ett heltal. 470 00:34:00,000 --> 00:34:04,000 Det kommer fortfarande att göra vad vi kan förvänta oss. 471 00:34:04,000 --> 00:34:09,000 Okej, så Sam, hur 90 + 9 flaskor öl på väggen? 472 00:34:09,000 --> 00:34:12,000 [Sam] 99. >> 99. 473 00:34:12,000 --> 00:34:15,000 Inga flaskor öl på väggen, men. 474 00:34:15,000 --> 00:34:17,000 Det ger oss lite mer information om vad som händer. 475 00:34:17,000 --> 00:34:21,000 [Sam] Om du hade skrivit 9 med bokstäver 476 00:34:21,000 --> 00:34:23,000 då skulle du ha 90, eller hur? 477 00:34:23,000 --> 00:34:26,000 [Nate H] Ja. 478 00:34:26,000 --> 00:34:30,000 Frågan var om vi hade skrivit 9 ut som N-I-N-E 479 00:34:30,000 --> 00:34:34,000 skulle vi ha fått 99 eller 90? 480 00:34:34,000 --> 00:34:38,000 Vi skulle få 90. 481 00:34:38,000 --> 00:34:42,000 Det är bokstavligen bara ute efter siffra tecken. 482 00:34:42,000 --> 00:34:46,000 Det är inte smart nog att inse antal ord och det där. Ja. 483 00:34:46,000 --> 00:34:48,000 >> [Student] Finns det något sådant som typecasting i PHP? 484 00:34:48,000 --> 00:34:54,000 Det finns, och det är precis som du skulle göra det i C. 485 00:34:54,000 --> 00:34:56,000 Vad sägs om 10/7, Charlotte? 486 00:34:56,000 --> 00:34:58,000 [Charlotte] 1,4285. 487 00:34:58,000 --> 00:35:01,000 [Nate H] Ja, så vad kan vara förvånande om det här? 488 00:35:01,000 --> 00:35:04,000 Vad skulle hända om du gjorde samma saker i C, 489 00:35:04,000 --> 00:35:06,000 om du gjorde 10/7 i C? 490 00:35:06,000 --> 00:35:08,000 [Charlotte] Det skulle bara ge dig-beroende på hur du typecasted antar jag 491 00:35:08,000 --> 00:35:12,000 Det skulle ge dig endast ett begränsat antal siffror efter decimalkommat. 492 00:35:12,000 --> 00:35:16,000 Ja, så ett begränsat antal siffror efter decimalkommat. 493 00:35:16,000 --> 00:35:21,000 Vad kan vara-skulle det ge dig några siffror efter decimalkommat? 494 00:35:21,000 --> 00:35:28,000 Ofta inte, så igen, beroende på hur du typecasting det 495 00:35:28,000 --> 00:35:31,000 Det kan eller inte kan konvertera den till ett flyttal. 496 00:35:31,000 --> 00:35:35,000 Här var det typ av trevligt att det gjorde. 497 00:35:35,000 --> 00:35:40,000 Hade vi visat dig detta tillbaka när vi började göra den här typen av saker i C 498 00:35:40,000 --> 00:35:44,000 det förmodligen skulle ha gjort lite mer känsla 499 00:35:44,000 --> 00:35:48,000 att det inte bara gå till 1. 500 00:35:48,000 --> 00:35:51,000 Och slutligen, Jamie, hur 7 + sant? 501 00:35:51,000 --> 00:35:53,000 [Jamie] 8. >> 8. 502 00:35:53,000 --> 00:35:56,000 Vad betyder det? 503 00:35:56,000 --> 00:35:58,000 Jag antar att det bara ger sann värdet 1. 504 00:35:58,000 --> 00:36:01,000 Ja. Vad händer om vi ändrar det till false? 505 00:36:01,000 --> 00:36:04,000 [Student] 7. 506 00:36:04,000 --> 00:36:09,000 Ja, så kom ihåg var vi talar om dessa binära värden, 507 00:36:09,000 --> 00:36:12,000 1 är på, 0 är avstängd? 508 00:36:12,000 --> 00:36:17,000 Nu har vi riktigt är 1, 0 falsk, 509 00:36:17,000 --> 00:36:21,000 och du kanske inte har sett detta i C-exempel som vi har gjort detta tidigare termin, 510 00:36:21,000 --> 00:36:27,000 men historiskt bool typ i C inte har varit en riktig typ, 511 00:36:27,000 --> 00:36:32,000 så att folk har använt 0 och 1 i stället för sant och falskt. 512 00:36:32,000 --> 00:36:35,000 Detta är en manifestation av detta. 513 00:36:35,000 --> 00:36:39,000 >> Okej, så en viktig del om allt detta 514 00:36:39,000 --> 00:36:41,000 är att vi har dessa olika typer. 515 00:36:41,000 --> 00:36:43,000 De kan samverka med varandra. 516 00:36:43,000 --> 00:36:49,000 De kan ofta interagera med varandra på ett sätt som är bra, som vi har sett här. 517 00:36:49,000 --> 00:36:53,000 Det är trevligt att kunna ha snöre 1 och nummer 2, lägga ihop dem och få 3. 518 00:36:53,000 --> 00:36:55,000 Som är vettigt. 519 00:36:55,000 --> 00:36:59,000 Men när du skriver webbplatser och speciellt när du bearbetar 520 00:36:59,000 --> 00:37:04,000 indata, så att du har skrivit ett webbformulär 521 00:37:04,000 --> 00:37:09,000 som samlar in information från användaren och sedan går att bearbeta den 522 00:37:09,000 --> 00:37:13,000 på baksidan slutet, på serversidan i PHP-kod 523 00:37:13,000 --> 00:37:18,000 om du förväntar värdet som användaren skrivit in och lämnas 524 00:37:18,000 --> 00:37:23,000 till formuläret för att vara ett heltal eller att vara ett flyttal eller något liknande 525 00:37:23,000 --> 00:37:29,000 måste du explicit kasta den 526 00:37:29,000 --> 00:37:34,000 och gör sedan någon typ kontroll. 527 00:37:34,000 --> 00:37:41,000 >> Du vill inte att bara förlita sig på denna typ av jonglering för att göra saker och ting fungerar, 528 00:37:41,000 --> 00:37:48,000 särskilt av säkerhetsskäl och bara för robusthet på din webbplats. 529 00:37:48,000 --> 00:37:51,000 Bara något att tänka på att när du hanterar formulärdata, 530 00:37:51,000 --> 00:37:57,000 allt som kommer i inlägget eller GET superglobals 531 00:37:57,000 --> 00:38:01,000 se till att du alltid validera den och omvandla den och typecast det. 532 00:38:01,000 --> 00:38:04,000 Och precis som vi pratade om en stund sedan att typecasting 533 00:38:04,000 --> 00:38:08,000 i PHP är exakt samma som i C, där du har parenteser 534 00:38:08,000 --> 00:38:14,000 och sedan typen. 535 00:38:14,000 --> 00:38:16,000 Kom ihåg det. 536 00:38:16,000 --> 00:38:19,000 En funktion som kommer väl till pass när du gör detta 537 00:38:19,000 --> 00:38:22,000 är att vi har använt, och det är typ av som en parentes, 538 00:38:22,000 --> 00:38:27,000 Vi har använt denna getType funktion här 539 00:38:27,000 --> 00:38:30,000 att räkna ut vilken typ av en variabel, 540 00:38:30,000 --> 00:38:37,000 och medan detta är praktiskt för felsökning och för att se vad en variabel är av typen 541 00:38:37,000 --> 00:38:42,000 du inte vill använda detta, till exempel i ett tillstånd där 542 00:38:42,000 --> 00:38:57,000 du kontrollera om getType av $ var = heltal göra något. 543 00:38:57,000 --> 00:39:01,000 Detta är dålig, dålig, dålig. 544 00:39:01,000 --> 00:39:09,000 Istället finns dessa funktioner kallas är heltal, är sträng, 545 00:39:09,000 --> 00:39:14,000 är array som du vill använda i stället, så i det här fallet 546 00:39:14,000 --> 00:39:18,000 vad jag skulle vilja göra i stället för den här killen här 547 00:39:18,000 --> 00:39:31,000 är att använda är heltal var. 548 00:39:31,000 --> 00:39:37,000 Och de är ofta kallas är is_ * i den meningen att man skulle kunna ersätta * med heltal, 549 00:39:37,000 --> 00:39:43,000 sträng, et cetera, och bara för att se riktigt snabb 550 00:39:43,000 --> 00:39:50,000 Detta är int php. 551 00:39:50,000 --> 00:39:59,000 Ser ut som du kan göra antingen är int eller finns heltal också? 552 00:39:59,000 --> 00:40:06,000 Ja, alias, så int heltal alias. 553 00:40:06,000 --> 00:40:08,000 Cool. 554 00:40:14,000 --> 00:40:17,000 >> Hur gör vi? 555 00:40:17,000 --> 00:40:20,000 Låt oss öka takten lite. 556 00:40:20,000 --> 00:40:24,000 Nu ska vi prata om arrayer, så att du kan se 557 00:40:24,000 --> 00:40:28,000 i nästa del av spec vi talar om hur arrayer i PHP 558 00:40:28,000 --> 00:40:31,000 är lite annorlunda än de är i C. 559 00:40:31,000 --> 00:40:34,000 I sanning, de är typ av en blandning av 560 00:40:34,000 --> 00:40:36,000 de matriser som du har lärt känna och älska i C 561 00:40:36,000 --> 00:40:40,000 där allt är av samma typ 562 00:40:40,000 --> 00:40:43,000 lagras i följd och intilliggande i minnet, 563 00:40:43,000 --> 00:40:46,000 och du har dessa numeriska index. 564 00:40:46,000 --> 00:40:49,000 Du har index 0, 1 index, index 2, 565 00:40:49,000 --> 00:40:53,000 och du lagra värden på dessa index. 566 00:40:53,000 --> 00:40:57,000 Du också i C, när du skrev Speller, många av er 567 00:40:57,000 --> 00:41:00,000 gjorde hash-tabell strategi, och du såg att det hade vi 568 00:41:00,000 --> 00:41:03,000 en annan typ av lagring där vi kartlägga 569 00:41:03,000 --> 00:41:07,000 en nyckel till ett värde, så när du försökte spara något i hashtabell 570 00:41:07,000 --> 00:41:11,000 var du tvungen att ange att du ville spara den med en särskild nyckel, 571 00:41:11,000 --> 00:41:17,000 och att nyckeln bestäms platsen för värdet och där det skulle lagras. 572 00:41:17,000 --> 00:41:22,000 Du har typ av fick båda dessa begrepp som händer på samma gång i en PHP-array, 573 00:41:22,000 --> 00:41:27,000 och som ett resultat, kallar vi ofta dessa associativa arrayer 574 00:41:27,000 --> 00:41:33,000 där vi associera en nyckel i ett värde. 575 00:41:33,000 --> 00:41:39,000 I nästa del vi talar om en enkel PHP-array 576 00:41:39,000 --> 00:41:45,000 där vi har nycklar a, b, och c, 577 00:41:45,000 --> 00:41:53,000 alla strängar, kartläggning av heltalen 1, 2, och 3. 578 00:41:53,000 --> 00:41:57,000 Och du kan få nycklarna av olika slag. 579 00:41:57,000 --> 00:42:00,000 >> Du kan ha vissa tangenter som är strängar, vissa nycklar som heltal. 580 00:42:00,000 --> 00:42:03,000 Du kan ha värden av olika slag. 581 00:42:03,000 --> 00:42:06,000 Du kan ha ett värde som är en sträng, ett värde som är ett heltal, 582 00:42:06,000 --> 00:42:11,000 ett värde som är ett föremål eller annan matris, till exempel, 583 00:42:11,000 --> 00:42:16,000 alla i samma Array-objekt, är vilken typ av konstigt. 584 00:42:16,000 --> 00:42:20,000 Du behöver inte ha en array som bara har fått en typ av element i den. 585 00:42:20,000 --> 00:42:26,000 Du kan ha många olika saker på gång där. 586 00:42:26,000 --> 00:42:33,000 Den andra sak att notera är att när du ser något liknande i din kod, 587 00:42:33,000 --> 00:42:38,000 som är giltig PHP att förklara en rad precis som denna, 0, 1, 2, 3, 4, 5, 588 00:42:38,000 --> 00:42:43,000 som kommer att förklara en initierad $ arr vara här arrayen. 589 00:42:43,000 --> 00:42:48,000 Men vad du faktiskt får under huven är den här typen av implicita 590 00:42:48,000 --> 00:42:55,000 generering av nycklar där vi fick 0 till 0, 1 till 1, 2 till 2, 3 till 3. 591 00:42:55,000 --> 00:42:59,000 Och det visar sig att även om du har en array som den här killen här uppe 592 00:42:59,000 --> 00:43:03,000 där du har a, b och c som tangenterna 593 00:43:03,000 --> 00:43:09,000 och då du börjar använda metoden array tryck för att börja använda denna array som en skorsten, 594 00:43:09,000 --> 00:43:12,000 så att du kan se att denna array objektet är denna matris verkligen blir överbelastad. 595 00:43:12,000 --> 00:43:15,000 Vi kan använda det som en array. Vi kan använda det som en hashtabell. 596 00:43:15,000 --> 00:43:19,000 Vi kan använda det som en stapel. 597 00:43:19,000 --> 00:43:22,000 När du börjar trycka saker på denna rad 598 00:43:22,000 --> 00:43:30,000 det första du trycker på denna kommer att vara index 0 och sedan index 1 och index 2. 599 00:43:30,000 --> 00:43:33,000 Du kan få den här typen av implicit generationen av nycklar 600 00:43:33,000 --> 00:43:38,000 om du inte anger dem explicit. 601 00:43:38,000 --> 00:43:43,000 Det sätt du anger nycklar uttryckligen naturligtvis är att använda detta fäste notation, 602 00:43:43,000 --> 00:43:48,000 som liknar arrayer utom i stället för endast tillåta 603 00:43:48,000 --> 00:43:54,000 heltal index i här, nu låter vi något. 604 00:43:54,000 --> 00:43:57,000 Om du vill att din nyckel till en sträng, skulle du ange det så här. 605 00:43:57,000 --> 00:44:06,000 Om du vill att det ska vara en int anger du den med int du vill använda. 606 00:44:06,000 --> 00:44:13,000 >> Frågor om det så här långt? 607 00:44:13,000 --> 00:44:18,000 En av de trevliga sakerna med denna idé 608 00:44:18,000 --> 00:44:26,000 är att du kan alltid bara ha ett värde som lagras med en viss nyckel. 609 00:44:26,000 --> 00:44:32,000 Om vi ​​går tillbaka till vår apparat-Låt mig ta bort en del av det här. 610 00:44:32,000 --> 00:44:47,000 Och låt oss säga att jag initiera en array som 0, 1, 2, gjort. 611 00:44:47,000 --> 00:44:55,000 Om jag vet nu att, till exempel, om jag echo $ arr [0] 612 00:44:55,000 --> 00:44:59,000 Jag kommer att få värdet 0 skrivs ut, 613 00:44:59,000 --> 00:45:05,000 och eftersom det kan alltid bara vara ett värde som lagras för en viss nyckel 614 00:45:05,000 --> 00:45:11,000 Om jag lagrar något på $ arr [0], säger en, 615 00:45:11,000 --> 00:45:16,000 då vet jag när jag echo $ arr [0] igen 616 00:45:16,000 --> 00:45:19,000 Jag tänker inte få 0 skrivas ut som tidigare. 617 00:45:19,000 --> 00:45:24,000 Jag kommer bara att få en. 618 00:45:24,000 --> 00:45:30,000 Så detta är i grunden att säga att jag inte kan ha $ arr [0] lagring 2 olika värden. 619 00:45:30,000 --> 00:45:34,000 Det kan inte lagra både 0 och strängen en, som denna bokstavligen ersätter 620 00:45:34,000 --> 00:45:38,000 vad var på $ arr [0] tidigare. 621 00:45:38,000 --> 00:45:43,000 Anledningen till att jag tar upp detta körs det, se vad som händer. 622 00:45:43,000 --> 00:45:47,000 Se här att jag fick 0 skrivas ut och sedan en här nere. 623 00:45:47,000 --> 00:45:51,000 Det finns ingen ny linje där eftersom jag var lat och inte lägga det i. 624 00:45:51,000 --> 00:45:54,000 Vad är coolt om detta är att vi kan använda detta som ett sätt 625 00:45:54,000 --> 00:46:00,000 att fånga denna idé av en uppsättning 626 00:46:00,000 --> 00:46:07,000 där vi inte kan ha flera nycklar i en matris. 627 00:46:07,000 --> 00:46:10,000 Vi kan inte ha samma nycklar i en matris. 628 00:46:10,000 --> 00:46:17,000 Jag kan inte ha nyckel 0 och värdet 1 och viktiga 0 och värde en 629 00:46:17,000 --> 00:46:21,000 eller nyckel 0 och värdet true. 630 00:46:21,000 --> 00:46:27,000 Nycklarna är all-det finns bara 1 nyckel i arrayen. 631 00:46:27,000 --> 00:46:32,000 Även om du kan ha samma värde som lagras 632 00:46:32,000 --> 00:46:35,000 flera gånger i rad under olika nycklar 633 00:46:35,000 --> 00:46:42,000 det är inte möjligt att ha identiska nycklar flera gånger i din PHP-array. 634 00:46:42,000 --> 00:46:47,000 >> Om vi ​​tittar på det här nästa problem, unique.php, 635 00:46:47,000 --> 00:46:51,000 där vi vill öppna upp en PHP-fil 636 00:46:51,000 --> 00:46:54,000 innehåller en lista med strängar, en sträng per rad, 637 00:46:54,000 --> 00:47:01,000 och vi vill hitta alla unika strängar i filen 638 00:47:01,000 --> 00:47:06,000 allt vi behöver göra är att använda en av dessa PHP arrayer 639 00:47:06,000 --> 00:47:12,000 och använda strängar i filen som nycklarna till denna array 640 00:47:12,000 --> 00:47:17,000 och hålla uppdatera vår array som vi lagrar dessa nya nycklar. 641 00:47:17,000 --> 00:47:22,000 När vi läser varje rad ur filen kan vi lagra det i arrayen, 642 00:47:22,000 --> 00:47:28,000 och i slutet kommer vi att ha som våra nycklar i vår grupp 643 00:47:28,000 --> 00:47:34,000 alla de unika strängar i filen. 644 00:47:34,000 --> 00:47:37,000 Verkar det vettigt? 645 00:47:37,000 --> 00:47:41,000 Låt oss se hur det fungerar. 646 00:47:41,000 --> 00:47:49,000 Vi kommer att öppna upp, enligt spec, kallas en ny fil unique.php. 647 00:47:49,000 --> 00:47:58,000 Öppna. Oj, förlåt, ny fil. 648 00:47:58,000 --> 00:48:03,000 Vi kommer att börja den med samma start och slut-taggar. 649 00:48:03,000 --> 00:48:17,000 Vi kommer att spara den i 9 §, och vi kommer att kalla det unique.php. 650 00:48:17,000 --> 00:48:25,000 Okej, nu zooma in 651 00:48:25,000 --> 00:48:32,000 Tanken här är att öppna en fil, 652 00:48:32,000 --> 00:48:38,000 Läs i filen rad för rad. 653 00:48:38,000 --> 00:48:46,000 För varje rad i fil 654 00:48:46,000 --> 00:48:51,000 Vi kommer att ha en matris där vi har 655 00:48:51,000 --> 00:49:03,000  linjen som vår nyckel. 656 00:49:03,000 --> 00:49:09,000 Och sedan när vi kommer till slutet här 657 00:49:09,000 --> 00:49:17,000 $ Arr nycklar är unika linjer 658 00:49:17,000 --> 00:49:25,000 från filen eftersom vi vet att om jag sätter linje i denna array 659 00:49:25,000 --> 00:49:33,000 flera gånger det kommer bara fortsätta åsidosätta det gamla värdet, 660 00:49:33,000 --> 00:49:46,000 och vi kan faktiskt sätta array linje som själv bara så. 661 00:49:46,000 --> 00:49:48,000 >> Detta är lite konstigt. 662 00:49:48,000 --> 00:49:52,000 Vi lagrar samma nyckel värde par om och om och om igen, 663 00:49:52,000 --> 00:50:00,000 men eftersom vi är garanterade att det bara kommer att finnas 1 nyckel heter linje 664 00:50:00,000 --> 00:50:05,000 så om vi har en fil som säger-en fil av animaliska tongångar och det har woof, woof, 665 00:50:05,000 --> 00:50:11,000 mjau, mjau, mu, mu, och varje gång vi läser ett djur brus 666 00:50:11,000 --> 00:50:15,000 Liksom woof och vi lagrar det i vår grupp får vi woof, och sedan andra gången 667 00:50:15,000 --> 00:50:20,000 Vi lagrar woof skriver den över den första gången som vi lagrat det. 668 00:50:20,000 --> 00:50:25,000 I slutet kommer vi bara att ha en post i arrayen 669 00:50:25,000 --> 00:50:33,000 för varje djur tongångar i vår djur ljud-fil. 670 00:50:33,000 --> 00:50:41,000 Har ni lita på att du kan ta itu med öppnandet av en fil i PHP? 671 00:50:41,000 --> 00:50:45,000 Ett sätt att göra det-låt oss gå över detta snabbt-ett sätt att göra det 672 00:50:45,000 --> 00:50:50,000 är med fopen, som vi såg tidigare. 673 00:50:50,000 --> 00:50:55,000 Du kan fopen some_file.txt. 674 00:50:55,000 --> 00:50:59,000 Du kan öppna den i läsläge, precis som i C. 675 00:50:59,000 --> 00:51:02,000 Det är en mycket bra sätt att göra det. 676 00:51:02,000 --> 00:51:05,000 Du kan även då för att läsa i filen rad för rad 677 00:51:05,000 --> 00:51:12,000 har samma funktioner, många av dem, som du gjorde i C. 678 00:51:12,000 --> 00:51:14,000 Du har fgets. 679 00:51:14,000 --> 00:51:17,000 Du har feof, även om vi inte gillar att använda den 680 00:51:17,000 --> 00:51:22,000 eftersom, kom ihåg, det var inte bra i C. 681 00:51:22,000 --> 00:51:25,000 Du kan göra det på samma sätt, 682 00:51:25,000 --> 00:51:34,000 men här är en riktigt cool grej. 683 00:51:34,000 --> 00:51:41,000 Tyvärr, jag vill inte göra $ fil, men det finns en funktion som kallas fil i PHP, 684 00:51:41,000 --> 00:51:47,000 och denna funktion här är coolt eftersom den läser hela innehållet 685 00:51:47,000 --> 00:51:52,000 för filen som du anger, så some_file.txt, 686 00:51:52,000 --> 00:51:56,000 läser hela innehållet i denna fil i en array 687 00:51:56,000 --> 00:52:03,000 och sedan kan du iterera över den, vilket är ganska tjusig. 688 00:52:03,000 --> 00:52:07,000 >> Om vi ​​går till exempel till vår webbläsare 689 00:52:07,000 --> 00:52:14,000 och vi ser på Google för PHP-fil 690 00:52:14,000 --> 00:52:23,000 ni kan se här att vår handbok säger att filen läses hela filen i en array, 691 00:52:23,000 --> 00:52:27,000 och vi kan file_get_contents att returnera innehållet i en fil som en sträng, 692 00:52:27,000 --> 00:52:30,000 men typiskt bara få det som en matris är riktigt trevligt eftersom vad den gör 693 00:52:30,000 --> 00:52:33,000 är den bryter upp det så att varje element 694 00:52:33,000 --> 00:52:37,000 i arrayen är en rad i filen, 695 00:52:37,000 --> 00:52:41,000 så om vi ser på fil 0, det är den första raden i filen. 696 00:52:41,000 --> 00:52:46,000 Fil 1, andra raden, fil 2, tredje raden, och så vidare och så vidare. 697 00:52:46,000 --> 00:52:50,000 Skulle det inte vara trevligt om det var allt du hade att göra i C? 698 00:52:50,000 --> 00:52:53,000 Ganska tjusig. 699 00:52:53,000 --> 00:52:59,000 David visade detta i föreläsning och formspråk han visade var 700 00:52:59,000 --> 00:53:03,000 att utöver vår standard för loop-i PHP hade vi att 701 00:53:03,000 --> 00:53:09,000 för ($ i = 0; i <10, i + +), 702 00:53:09,000 --> 00:53:16,000 och du kan göra detta i PHP även samma sak- 703 00:53:16,000 --> 00:53:27,000 Vi har även denna coola konstruktion som kallas foreach. 704 00:53:27,000 --> 00:53:32,000 Foreach är verkligen praktiskt när iteration över arrayer eller dessa datastrukturer 705 00:53:32,000 --> 00:53:36,000 eftersom det tillåter dig att dra ut varje element i arrayen 706 00:53:36,000 --> 00:53:42,000 utan att manuellt behöva göra indexering själv, 707 00:53:42,000 --> 00:53:46,000 utan att manuellt behöva skapa ett index variabel öka den, 708 00:53:46,000 --> 00:53:51,000 dra ut värdet i arrayen vid den tidpunkten, eftersom det är en mycket vanlig sak att göra. 709 00:53:51,000 --> 00:53:54,000 >> Du har förmodligen gjort att massor av gånger när du gjorde C grejer 710 00:53:54,000 --> 00:54:00,000 över terminen, så med denna foreach 711 00:54:00,000 --> 00:54:06,000 vi kan slinga över den här filen array, 712 00:54:06,000 --> 00:54:12,000 och syntaxen är att vi vill nu slinga över denna rad 713 00:54:12,000 --> 00:54:18,000 och ange att variabeln ska vi använda för att lagra 714 00:54:18,000 --> 00:54:27,000 inslaget av denna array lokalt lokal till tillämpningsområdet för denna foreach loop, 715 00:54:27,000 --> 00:54:32,000 är att vi kommer att kalla det linje. 716 00:54:32,000 --> 00:54:38,000 Om det är en fil med bara ord och det finns ett ord i en linje 717 00:54:38,000 --> 00:54:43,000 Vi kan kalla det ord också, egentligen bara du ger det ett namn, 718 00:54:43,000 --> 00:54:49,000 vad du vill kalla det, 719 00:54:49,000 --> 00:55:02,000 och sedan inuti slingan kan du göra vad du vill med denna variabel linje. 720 00:55:02,000 --> 00:55:08,000 Om det inte tillräckligt för att få värdet i matrisen och du också vill få 721 00:55:08,000 --> 00:55:17,000 indexet tillsammans med det du kan ange ett namn för indexet 722 00:55:17,000 --> 00:55:22,000 liksom värdet, och nu har du tillgång till 2 variabler. 723 00:55:22,000 --> 00:55:26,000 Du har $ i och linje 724 00:55:26,000 --> 00:55:30,000 där $ i är indexet i arrayen, 725 00:55:30,000 --> 00:55:38,000 och linjen är den linje som du hämtat från filen. 726 00:55:38,000 --> 00:55:49,000 Till exempel, om vi ville skriva ut eko rad 0 i filen som denna, 727 00:55:49,000 --> 00:55:57,000 vi kunde göra det precis så här, "är Linje $ i av filen $ raden" 728 00:55:57,000 --> 00:56:02,000 och här är något som vi inte heller sett ännu heller 729 00:56:02,000 --> 00:56:13,000 där jag bara helt hoppat över hela denna% s% d affärer 730 00:56:13,000 --> 00:56:16,000 att vi var tvungna att ta itu med i C, och i stället har jag gått direkt till 731 00:56:16,000 --> 00:56:19,000 skriva variabler i rad i min sträng. 732 00:56:19,000 --> 00:56:23,000 >> Detta kallas variabel interpolering, sträng interpolering 733 00:56:23,000 --> 00:56:26,000 där du fyllning variablerna rätt i, och PHP tolken 734 00:56:26,000 --> 00:56:31,000 är smart nog när det läsa igenom en sträng som börjar med citationstecken, 735 00:56:31,000 --> 00:56:34,000 inte apostrof, med enkla noterade strängar du inte kan göra detta, 736 00:56:34,000 --> 00:56:38,000 men med dubbla citerade strängar som läser igenom det ser för variabler. 737 00:56:38,000 --> 00:56:42,000 Det jagar ner dem, och om den ser variabler kommer det att ta värdet av variabeln 738 00:56:42,000 --> 00:56:47,000 och stoppa in den i strängen om det kan omvandla den till en sträng representation, 739 00:56:47,000 --> 00:56:51,000 vilket är ganska tjusig. 740 00:56:51,000 --> 00:56:56,000 För nu, låt oss kommentera ut resten av allt, 741 00:56:56,000 --> 00:57:00,000 spara, och vad vi kan göra nu är att vi kan öppna upp en fil 742 00:57:00,000 --> 00:57:06,000 som vi kan kalla some_file.txt-låt oss skapa en ny fil- 743 00:57:06,000 --> 00:57:15,000 och vi kan sätta i en massa nonsens grejer här bara för att testa allting, 744 00:57:15,000 --> 00:57:25,000 spara den, kalla det some_file.txt, som jag gör här uppe i toppen, 745 00:57:25,000 --> 00:57:33,000 och nu om jag zooma ut bara för att kontrollera att allt är i samma katalog- 746 00:57:33,000 --> 00:57:36,000 det ser ut som jag har unique.php och some_file.txt i samma katalog. 747 00:57:36,000 --> 00:57:42,000 Om jag kör php unique.php 748 00:57:42,000 --> 00:57:51,000 se hur det skriver ut varje rad i min fil och vad linjen är? 749 00:57:51,000 --> 00:57:56,000 >> Det är ganska kraftfull, eller hur? 750 00:57:56,000 --> 00:58:03,000 Titta, det tog 3 rader kod för att öppna upp en fil. 751 00:58:03,000 --> 00:58:08,000 Tja, 4 rader kod. Jag kan inte räkna idag, tydligt. 752 00:58:08,000 --> 00:58:13,000 Men egentligen bara 2 intressanta rader kod, eftersom de andra 2 var klammerparenteser, 753 00:58:13,000 --> 00:58:17,000 men i detta mycket kod kunde vi öppna en fil, iterera igenom den, 754 00:58:17,000 --> 00:58:20,000 dra ut radnummer och själva linjen 755 00:58:20,000 --> 00:58:24,000 och skriva ut den. 756 00:58:24,000 --> 00:58:26,000 Cool stuff. Charlotte. 757 00:58:26,000 --> 00:58:28,000 [Charlotte] Jag har en fråga om syntaxen. 758 00:58:28,000 --> 00:58:33,000 Så foreach behandlar varenda rad i filen som du öppnar, 759 00:58:33,000 --> 00:58:37,000 och sedan när du vill göra saker med varenda linje du göra just det som 760 00:58:37,000 --> 00:58:39,000 och sedan associera värdet. 761 00:58:39,000 --> 00:58:41,000 [Nate H] Vad du kan göra här, frågan var 762 00:58:41,000 --> 00:58:46,000 den foreach har att göra med arrayen, så foreach syntaxen 763 00:58:46,000 --> 00:58:51,000 är foreach verkligen, och märker att det finns inget utrymme 764 00:58:51,000 --> 00:58:53,000 eller något mellan för och var. 765 00:58:53,000 --> 00:58:56,000 De måste gå bredvid varandra, 766 00:58:56,000 --> 00:59:00,000 och sedan tar i en array, 767 00:59:00,000 --> 00:59:05,000 och då har du här andra sökord kallas det måste finnas där, 768 00:59:05,000 --> 00:59:11,000 och sedan efter det så kan du antingen lägga en variabelnamn, 769 00:59:11,000 --> 00:59:14,000 i vilket fall du kommer att dra ut värdena i matrisen, 770 00:59:14,000 --> 00:59:20,000 inte de index, eller om du gör det som vi har skrivit under 771 00:59:20,000 --> 00:59:24,000 du får nycklar och värden. 772 00:59:24,000 --> 00:59:33,000 Du har foreach-element i arrayen eller paret av arrayen som fastkilad till värde 773 00:59:33,000 --> 00:59:38,000 eller som bara värde. 774 00:59:38,000 --> 00:59:40,000 Beroende på vad du behöver, om du inte behöver nycklarna, 775 00:59:40,000 --> 00:59:42,000 då kan du gå med värdet. 776 00:59:42,000 --> 00:59:45,000 Om du vill att knapparna kan du gå med dem också. 777 00:59:45,000 --> 00:59:48,000 >> [Charlotte] Jag insåg också att vi aldrig förklarade i eller linjen. 778 00:59:48,000 --> 00:59:51,000 Hur vet ens vad de är? 779 00:59:51,000 --> 00:59:53,000 [Nate H] Vad menar du med deklarera? 780 00:59:53,000 --> 00:59:57,000 [Charlotte] Vi har aldrig berättade vad jag eller linje medel. 781 00:59:57,000 --> 01:00:01,000 [Nate H] Vi sa aldrig datorn vad jag eller linje innebär i termer av- 782 01:00:01,000 --> 01:00:05,000 [Charlotte] att de är indexerade eller att Dom- 783 01:00:05,000 --> 01:00:09,000 [Nate H] Vi berättade aldrig att detta är tänkt att vara indexet eller nyckeln och värdet, 784 01:00:09,000 --> 01:00:13,000 och det beror på att det är PHP tolken. 785 01:00:13,000 --> 01:00:17,000 Detta fungerar som deklarationen och säger okej, är nyckeln kommer att vara 786 01:00:17,000 --> 01:00:20,000 en variabel kallas i lagras i en variabel som kallas i.. 787 01:00:20,000 --> 01:00:24,000 Värdet kommer att lagras i en variabel som kallas linje, 788 01:00:24,000 --> 01:00:28,000 så detta fungerar som förklaring av dessa variabler 789 01:00:28,000 --> 01:00:35,000 och säger $ i är en nyckel, och $ linje är ett värde. 790 01:00:35,000 --> 01:00:37,000 Ja, Ella. 791 01:00:37,000 --> 01:00:41,000 [Ella] Om tangenterna inte görs numeriskt 792 01:00:41,000 --> 01:00:44,000 Hur avgör man vilken ordning det kommer att skriva ut allt? 793 01:00:44,000 --> 01:00:47,000 Är som det bara ordning det in i? 794 01:00:47,000 --> 01:00:51,000 [Nate H] Låt oss ge det ett försök. 795 01:00:51,000 --> 01:00:57,000 Låt oss skapa en variabel som heter arr, 796 01:00:57,000 --> 01:01:06,000 och vi kan göra en går till 7. 797 01:01:06,000 --> 01:01:19,000 Låt oss säga 0 går till en annan array med 1, 2 eller äpple. 798 01:01:19,000 --> 01:01:30,000 Låt oss säga 7 går till 1, går b 2, 799 01:01:30,000 --> 01:01:39,000 och 3 går till 4. 800 01:01:39,000 --> 01:01:44,000 Detta är lite av en galen ser exempel eftersom vi blandar ihop 801 01:01:44,000 --> 01:01:47,000 strängar och heltal överallt. 802 01:01:47,000 --> 01:01:50,000 Det finns ingen riktig ordning på detta arrayen. 803 01:01:50,000 --> 01:01:55,000 Jag menar, vi kan beställa allt i alfabetisk ordning efter nycklarna. 804 01:01:55,000 --> 01:01:57,000 Vi kunde beställa allt alfabetiskt efter värdet. 805 01:01:57,000 --> 01:02:00,000 >> Vi kan försöka ta hänsyn till att vissa är strängar, vissa är Ints, 806 01:02:00,000 --> 01:02:03,000 och vi kunde försöka omvandla dem alla till samma typ och se vad som händer, 807 01:02:03,000 --> 01:02:09,000 eller vi kan betrakta dem i värdet som vi redan angett dem 808 01:02:09,000 --> 01:02:14,000 där vi sätter den här killen i första, den här killen i andra, den här killen i tredje, 809 01:02:14,000 --> 01:02:19,000 den här killen i fjärde, et cetera. 810 01:02:19,000 --> 01:02:23,000 Låt oss se vad som händer när vi kör den här koden. 811 01:02:23,000 --> 01:02:29,000 Om vi ​​bläddra ner och göra samma sak, 812 01:02:29,000 --> 01:02:31,000 och här är inte skriva ut de nya linjerna. 813 01:02:31,000 --> 01:02:35,000 När det läser saker ur filen det inklusive de nya linjerna i de värderingar, 814 01:02:35,000 --> 01:02:38,000 som varför det skrivs ut fint, medan här är det inte, 815 01:02:38,000 --> 01:02:40,000 så det är därför allt är smushed ihop. 816 01:02:40,000 --> 01:02:44,000 Låt oss lägga till i den nya linjen bara för att göra saker och ting bra. 817 01:02:44,000 --> 01:02:51,000 Låt oss köra den och så här 818 01:02:51,000 --> 01:02:54,000 titta på vad som hände. 819 01:02:54,000 --> 01:03:00,000 Det tryckta ut allt i den ordning som vi sätter in det i arrayen. 820 01:03:00,000 --> 01:03:10,000 Det bevarar ordningen i den meningen. 821 01:03:10,000 --> 01:03:15,000 >> Att gå tillbaka till problemet med Uniques 822 01:03:15,000 --> 01:03:20,000 där vi vill kunna iterera över en fil, 823 01:03:20,000 --> 01:03:24,000 och vi ska ge det some_file.txt, 824 01:03:24,000 --> 01:03:27,000 och vi kommer att iterera över det så här. 825 01:03:27,000 --> 01:03:31,000 Vi sade att vi ville använda en array för att se till att vi hade fått alla 826 01:03:31,000 --> 01:03:36,000 unika linjer ur det, och vi skulle kunna göra det riktigt lätt 827 01:03:36,000 --> 01:03:49,000 genom att bara lagra i en array som vi naturligtvis förklara utanför en slinga, 828 01:03:49,000 --> 01:03:55,000 och vi sa att om vi använde raderna i filen som nycklar i vår grupp 829 01:03:55,000 --> 01:03:59,000 om vi gick in i en dubblett linje vi skulle åsidosätta det tidigare värdet. 830 01:03:59,000 --> 01:04:08,000 Det är inte alltid möjligt att ha 2 nycklar som är identiska i samma matris. 831 01:04:08,000 --> 01:04:13,000 Vi kan göra just det. 832 01:04:13,000 --> 01:04:17,000 Vi ska bli av med denna eko uttalande här. 833 01:04:17,000 --> 01:04:24,000 Här vi lagra rad i filen i vår grupp 834 01:04:24,000 --> 01:04:28,000 använda sig själv som nyckeln. 835 01:04:28,000 --> 01:04:32,000 Inget att den, och det visar sig att vi inte ens behöver denna nyckel. 836 01:04:32,000 --> 01:04:38,000 Vi behöver inte jag variabel. 837 01:04:38,000 --> 01:04:43,000 Vid denna punkt om vi skulle göra en annan foreach loop 838 01:04:43,000 --> 01:04:48,000 och vi skulle slinga över varje arr 839 01:04:48,000 --> 01:04:56,000 och linje nu om vi ECHO oops, sorry. 840 01:04:56,000 --> 01:05:00,000 Vi kan inte använda kommatecken. Vi måste använda detta som sökord. 841 01:05:00,000 --> 01:05:05,000 Nu om vi upprepar linje vi bör få alla unika ord i filen. 842 01:05:05,000 --> 01:05:10,000 Om vi ​​går upp till some_file.txt, 843 01:05:10,000 --> 01:05:19,000 och låt oss säga att vi äpple, banan, äpple, äpple, banan, 844 01:05:19,000 --> 01:05:22,000 om vi skriva ut alla unika ord i denna fil vi bara få 845 01:05:22,000 --> 01:05:30,000 äpple och banan för att skriva ut. 846 01:05:30,000 --> 01:05:36,000 Om vi ​​rädda denna, nu här ska vi in ​​igen i, 847 01:05:36,000 --> 01:05:44,000 php unique.php och ta-da. 848 01:05:44,000 --> 01:05:51,000 Vi har lyckats uniqued filen. 849 01:05:51,000 --> 01:05:55,000 >> Den sista delen av detta problem ber dig att sortera denna array innan du skrev ut 850 01:05:55,000 --> 01:05:58,000 eftersom i detta enkla exempel som vi har just gjort 851 01:05:58,000 --> 01:06:04,000 Vi hade tur i den meningen att fil- 852 01:06:04,000 --> 01:06:06,000 vi gjorde detta krystat exempel med äpplen och bananer. 853 01:06:06,000 --> 01:06:08,000 Det var redan sorterade. 854 01:06:08,000 --> 01:06:19,000 Men att använda den enkla sorteringsfunktionen kan du sortera en array, vilket är ganska tjusig. 855 01:06:19,000 --> 01:06:24,000 Det sista jag ville prata med er om riktigt snabbt 856 01:06:24,000 --> 01:06:31,000 är att denna typ av PHP är allt gott och väl, och det är super praktiskt 857 01:06:31,000 --> 01:06:43,000 att veta hur man ska göra om du någonsin behöver göra lite, snabba saker programmatiskt. 858 01:06:43,000 --> 01:06:48,000 Till exempel, om jag behöver skriva ett program som, säg, 859 01:06:48,000 --> 01:06:53,000 sätter alla i sektioner Jag tänker inte gå och skriva det i C. 860 01:06:53,000 --> 01:06:55,000 Det kommer att vara lång. 861 01:06:55,000 --> 01:06:57,000 Det kommer att bli lite av en smärta, speciellt om det finns inblandade filer, 862 01:06:57,000 --> 01:07:00,000 precis som ni har sett. 863 01:07:00,000 --> 01:07:05,000 Det är så trevligt att med bara så mycket kod här 864 01:07:05,000 --> 01:07:08,000 vi kunde rippa genom en fil, dra ut alla unika värden 865 01:07:08,000 --> 01:07:11,000 och skriva ut dem tillbaka ut. 866 01:07:11,000 --> 01:07:16,000 >> Men för era uppdrag, för dina projekt, 867 01:07:16,000 --> 01:07:20,000 om du bygga webbplatser med PHP strömmen är att 868 01:07:20,000 --> 01:07:25,000 Vi kör våra PHP-filer genom denna tolk 869 01:07:25,000 --> 01:07:29,000 och tolken bearbetar allt inom PHP-taggar, 870 01:07:29,000 --> 01:07:34,000 lämnar allt annat orört och spotta ut resultaten. 871 01:07:34,000 --> 01:07:40,000 Vi kan göra detta för att bygga HTML programmering. 872 01:07:40,000 --> 01:07:46,000 Nu, om vi går tillbaka till spec, det sista problemet i spec 873 01:07:46,000 --> 01:07:56,000 talar om denna idé av koncentrationer 874 01:07:56,000 --> 01:08:01,000 och skapa en rullgardinsmeny, 875 01:08:01,000 --> 01:08:06,000 som du kanske eller kanske inte vill göra, beroende på vad din slutliga projekt gör, 876 01:08:06,000 --> 01:08:13,000 som tillåter användaren att välja från en lista över alla möjliga koncentrationer 877 01:08:13,000 --> 01:08:15,000 deras en koncentration. 878 01:08:15,000 --> 01:08:21,000 Nu är denna typ av en smärta att skriva ut det här 879 01:08:21,000 --> 01:08:25,000 och måste göra allt detta manuellt, speciellt när du har att se 880 01:08:25,000 --> 01:08:28,000 att du har alla fästvinklarna på rätt plats och alla citat på rätt plats, 881 01:08:28,000 --> 01:08:34,000 så med PHP kan du göra detta programmatiskt, och du kan göra detta riktigt snabbt. 882 01:08:34,000 --> 01:08:36,000 >> Låt oss se hur man gör detta. 883 01:08:36,000 --> 01:08:42,000 Vi kommer att öppna upp en ny fil. 884 01:08:42,000 --> 01:08:46,000 Vi kommer att sätta i våra PHP-taggar. 885 01:08:46,000 --> 01:08:53,000 Vi kommer att kalla det concentrations.php, 886 01:08:53,000 --> 01:08:58,000 och nu när du gör detta, typ av det goda tänka 887 01:08:58,000 --> 01:09:02,000 när du försöker att mixa och matcha din PHP och HTML 888 01:09:02,000 --> 01:09:08,000 är att räkna ut, okej, vad är den del som jag vill programmässigt generera? 889 01:09:08,000 --> 01:09:11,000 Vad är den del som jag programmässigt kan generera? 890 01:09:11,000 --> 01:09:17,000 Det är sant att du kan göra alla dina HTML 891 01:09:17,000 --> 01:09:19,000 insidan av PHP block. 892 01:09:19,000 --> 01:09:24,000 Du kan upprepa alla HTML som strängar. 893 01:09:24,000 --> 01:09:30,000 Till exempel, om jag vill börja göra de utvalda taggar inuti PHP 894 01:09:30,000 --> 01:09:46,000 Jag kan säga eko, säger välj namn = koncentration, 895 01:09:46,000 --> 01:09:49,000 och sedan ner under jag kunde ha en annan eko-taggen 896 01:09:49,000 --> 01:09:57,000 eller annan eko kallas stänga välja. 897 01:09:57,000 --> 01:10:00,000 Detta är ett sätt att göra det eftersom det här är bokstavligen kommer att göra 898 01:10:00,000 --> 01:10:09,000 är skriva ut denna sträng när det körs via PHP-tolken, 899 01:10:09,000 --> 01:10:12,000 så blir resultatet HTML. 900 01:10:12,000 --> 01:10:18,000 Om jag sparar filen som det är just nu 901 01:10:18,000 --> 01:10:24,000 och jag kör php concentrations.php 902 01:10:24,000 --> 01:10:26,000 titta på vad jag fick. 903 01:10:26,000 --> 01:10:30,000 Jag fick denna öppna stäng Välj tagg. 904 01:10:30,000 --> 01:10:36,000 >> Om jag skulle göra detta och jag skulle spara resultatet till en fil, 905 01:10:36,000 --> 01:10:45,000 säger concentrations.html-vänta, ser det ut som på l har gått över till andra sidan, 906 01:10:45,000 --> 01:11:02,000 nu om jag öppnar upp här concentrations.html ser jag har en giltig HTML-fil. 907 01:11:02,000 --> 01:11:05,000 Är det slags konstig? 908 01:11:05,000 --> 01:11:09,000 Vi använder PHP för att skapa HTML, skapa giltig HTML. 909 01:11:09,000 --> 01:11:13,000 Det sätt vi gör det är vi bara ska ha PHP utskrift 910 01:11:13,000 --> 01:11:16,000 HTML som vi vill att det ska skrivas ut. 911 01:11:16,000 --> 01:11:20,000 Detta är bokstavligen hur PHP-webbplatser fungerar. 912 01:11:20,000 --> 01:11:24,000 När du besöker en webbplats som skickar dig till något liknande 913 01:11:24,000 --> 01:11:30,000 något, något, något dot com slash index.php 914 01:11:30,000 --> 01:11:33,000 datorn bokstavligen ringa upp index.php, 915 01:11:33,000 --> 01:11:38,000 kör det genom PHP tolken och vad skräp kommer ut 916 01:11:38,000 --> 01:11:49,000 det skickar tillbaka till webbläsaren och säger hej, webbläsare, tolkar detta som HTML. 917 01:11:49,000 --> 01:11:54,000 Det fina är att det kan vara jobbigt att ständigt skriva eko, eko, eko, eko 918 01:11:54,000 --> 01:11:59,000 och bifoga allt citat som detta, så om du vill skriva 919 01:11:59,000 --> 01:12:04,000 HTML som kommer att vara statiska själv kan du göra det så här, 920 01:12:04,000 --> 01:12:16,000 sätta den utanför, stänga den, 921 01:12:16,000 --> 01:12:21,000 och så här du sätter bara in PHP-taggar det som du vet 922 01:12:21,000 --> 01:12:26,000 du vill programmatiskt skapa, och i detta fall är det de alternativ taggar 923 01:12:26,000 --> 01:12:31,000 som är en smärta att generera. 924 01:12:31,000 --> 01:12:37,000 >> Till exempel skulle vi kunna skapa tusen alternativ taggar 925 01:12:37,000 --> 01:12:48,000 genom att göra något sådant, $ i <1000, i + + 926 01:12:48,000 --> 01:13:00,000 och säger value echo option = $-hoppsan, jag kan inte göra det. 927 01:13:00,000 --> 01:13:03,000 Nåväl, låt oss ge det ett försök och se vad som händer. 928 01:13:03,000 --> 01:13:22,000 $ I och sedan säga $ i 01:13:27,000 I stället för att behöva skriva ut det alternativet tag tusen olika tider 930 01:13:27,000 --> 01:13:33,000 Jag använder PHP-kod för att skapa det automatiskt, programmatiskt. 931 01:13:33,000 --> 01:13:38,000 Typ av tjusig. Ja. 932 01:13:38,000 --> 01:13:41,000 Jag minns det som nämns i antingen föreläsningen eller genomgång, 933 01:13:41,000 --> 01:13:43,000 men vad är skillnaden mellan citattecknen, 934 01:13:43,000 --> 01:13:45,000 de normala och de enda saker? 935 01:13:45,000 --> 01:13:49,000 Det är faktiskt något som jag har gjort fel här att jag ska visa dig. 936 01:13:49,000 --> 01:13:52,000 De enskilda citat tillåter inte några specialtecken, 937 01:13:52,000 --> 01:13:57,000 så allt inuti en noterad enda sträng tolkas bokstavligt. 938 01:13:57,000 --> 01:14:02,000 Om jag hade en \ n insidan av enkla citationstecken, och jag sparar det till exempel 939 01:14:02,000 --> 01:14:07,000 och nu går jag ner hit och kör det- 940 01:14:07,000 --> 01:14:12,000 oops, där ska jag? 941 01:14:12,000 --> 01:14:19,000 Åh, det är för att jag har glömt $. 942 01:14:19,000 --> 01:14:25,000 >> Nu om jag öppnar upp-faktiskt, här kommer vi bli av med att skriva det i en fil. 943 01:14:25,000 --> 01:14:27,000 Vi ska bara läsa det. 944 01:14:27,000 --> 01:14:34,000 Här ser du att jag har denna bokstavliga \ n i strängen, som inte en faktisk ny linje, 945 01:14:34,000 --> 01:14:38,000 och likaså, i stället för att faktiskt interpolera värdet av denna variabel 946 01:14:38,000 --> 01:14:42,000 Det gav mig $ i sig, som är typ av en smärta. 947 01:14:42,000 --> 01:14:46,000 Vägen runt detta är att använda citationstecken, 948 01:14:46,000 --> 01:14:52,000 och sedan när du använder citationstecken det kommer faktiskt 949 01:14:52,000 --> 01:14:56,000 korrekt interpolera värdena för alla dessa variabler här 950 01:14:56,000 --> 01:14:59,000 och även erkänna denna \ n att vara den nya linjen att det är 951 01:14:59,000 --> 01:15:02,000 och inte \ n. 952 01:15:02,000 --> 01:15:07,000 Använda enda de är trevligt när du har 953 01:15:07,000 --> 01:15:10,000 tecken som kan tolkas som specialtecken för då behöver du inte 954 01:15:10,000 --> 01:15:15,000 undkomma dem hela tiden. 955 01:15:15,000 --> 01:15:18,000 Saker kan bli rörigt, och ofta som jag gör det, 956 01:15:18,000 --> 01:15:24,000 bara för att göra det enkelt, är att om jag ska ha något 957 01:15:24,000 --> 01:15:31,000 HTML som i min kod jag inkludera edit inom enkla citattecken 958 01:15:31,000 --> 01:15:36,000 och sedan använda denna sammanslagning operatör 959 01:15:36,000 --> 01:15:43,000 att sammanfoga de variabler i. 960 01:15:43,000 --> 01:15:47,000 Detta är ett annat sätt att göra det 961 01:15:47,000 --> 01:15:52,000 där vi har punkten som kommer att ansluta denna är en sträng 962 01:15:52,000 --> 01:15:56,000 med detta med detta med detta, 963 01:15:56,000 --> 01:15:59,000 och nu har jag inte att undkomma dessa dubbla citattecken. 964 01:15:59,000 --> 01:16:02,000 Jag behöver inte använda den här killen att fly. 965 01:16:02,000 --> 01:16:08,000 De kommer bokstavligen skrivas ut som citationstecken och sedan denna killen här. 966 01:16:08,000 --> 01:16:11,000 Detta är ett annat sätt att blanda allting tillsammans. 967 01:16:11,000 --> 01:16:14,000 >> [Student] Även när du ekade getType fanns inga citattecken alls. 968 01:16:14,000 --> 01:16:22,000 Rätt, så eko är typ av speciell i den meningen att du inte behöver parenteser. 969 01:16:22,000 --> 01:16:29,000 Du behöver inte ha citationstecken nödvändighet runt variabler, 970 01:16:29,000 --> 01:16:37,000 som det är giltigt att säga echo $ i, och det kommer att tolka detta som en sträng. 971 01:16:37,000 --> 01:16:44,000 Det kommer att göra rösterna, så vi kunde göra detta, och det är giltigt också, men vi behöver inte det. 972 01:16:44,000 --> 01:16:48,000 Det är valfritt. 973 01:16:48,000 --> 01:16:53,000 I denna veckas problembild utkik efter en hel del denna typ av saker 974 01:16:53,000 --> 01:16:58,000 där du mixa och matcha HTML med PHP 975 01:16:58,000 --> 01:17:08,000 precis som denna, och nu när vi rullar tillbaka och vi kör detta 976 01:17:08,000 --> 01:17:13,000 kan vi se att vi har en massa alternativ värden 977 01:17:13,000 --> 01:17:15,000 som bara blev skrivs ut. 978 01:17:15,000 --> 01:17:20,000 Vi har allt detta HTML som fick genererat verkligen snabbt för oss. 979 01:17:20,000 --> 01:17:22,000 Jag lämnar det som en övning. 980 01:17:22,000 --> 01:17:24,000 Det är mycket lik den fil läsning som vi gjorde tidigare. 981 01:17:24,000 --> 01:17:31,000 >> Det finns en concentrations.txt fil som du kan dra ner från CDN, 982 01:17:31,000 --> 01:17:34,000 och du kan öppna den med samma foreach trick som vi gjorde tidigare, 983 01:17:34,000 --> 01:17:39,000 och foreach du bara upprepa ett alternativ och koppla in 984 01:17:39,000 --> 01:17:44,000 lämpliga värden, lämpliga nycklar och index, 985 01:17:44,000 --> 01:17:49,000 och då får du en rullgardinsmeny som bokstavligen skapar 986 01:17:49,000 --> 01:17:54,000 programmatiskt för er alla de olika koncentrationer vid Harvard. 987 01:17:54,000 --> 01:17:57,000 En praktisk sak att ha. 988 01:17:57,000 --> 01:18:02,000 Det finns en hel del konfiguration grejer för detta uppdrag. 989 01:18:02,000 --> 01:18:07,000 Om du inte har gjort det ta redan nästa halvtimme, timme, 990 01:18:07,000 --> 01:18:10,000 tid ikväll definitivt för säker, 991 01:18:10,000 --> 01:18:14,000 gå igenom problemet inställda spec, 992 01:18:14,000 --> 01:18:20,000 se vad som händer med att sätta upp vhosts, den lokala värden, allt det där. 993 01:18:20,000 --> 01:18:24,000 En sak att påpeka just nu är att 994 01:18:24,000 --> 01:18:30,000 i de flesta problem set vi har pågått i din Dropbox-mappen 995 01:18:30,000 --> 01:18:34,000 och sedan ladda ner problemet filuppsättning zip och packa den. 996 01:18:34,000 --> 01:18:36,000 För detta problem uppsättning som du inte vill. 997 01:18:36,000 --> 01:18:40,000 Vill du gå in på detta vhosts katalogen. 998 01:18:40,000 --> 01:18:45,000 Du vill gå in vhosts och gå in i lokala värden katalogen i den, 999 01:18:45,000 --> 01:18:50,000 och det är där du kommer att vilja dra ner zip-filen, 1000 01:18:50,000 --> 01:18:55,000 packa upp den, och gör dig redo att gå. 1001 01:18:55,000 --> 01:18:57,000 Du måste följa stegen noga. 1002 01:18:57,000 --> 01:19:02,000 >> Om du har några frågor, skicka e-post, lägga upp den på Diskutera, kom till kontorstid. 1003 01:19:02,000 --> 01:19:08,000 Tack killar. Nästa vecka ska vi ha en översyn session för testet. 1004 01:19:08,000 --> 01:19:12,000 Njut av din sista problemet set. Jag hoppas att allt går riktigt bra. 1005 01:19:12,000 --> 01:19:14,000 [CS50.TV]