1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [§ 8] [mindre komfortable] 2 00:00:02,000 --> 00:00:04,000 [Nate Hardison] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Dette er CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:11,000 >> Velkommen til vår nest siste avsnitt. 5 00:00:11,000 --> 00:00:13,000 I denne uken skal vi snakke om PHP, og så neste uke 6 00:00:13,000 --> 00:00:17,000 vi vil gjøre en liten gjennomgang for Quiz 1. 7 00:00:17,000 --> 00:00:20,000 Vi kommer til å starte på side 3 av problemet setter pack, 8 00:00:20,000 --> 00:00:28,000 og vi vil arbeide gjennom den delen av spørsmålene ganske raskt. 9 00:00:28,000 --> 00:00:34,000 På side 3, begynner vi å snakke om denne forskjellen mellom C og PHP 10 00:00:34,000 --> 00:00:38,000 i den forstand at PHP er et dynamisk skrevet språk, 11 00:00:38,000 --> 00:00:42,000 mens C er statisk skrevet, 12 00:00:42,000 --> 00:00:46,000 og har noen veldig raskt gjort noen koding i noe som PHP 13 00:00:46,000 --> 00:00:51,000 eller Python eller Ruby før, JavaScript? 14 00:00:51,000 --> 00:00:53,000 Helt nytt? Okay. 15 00:00:53,000 --> 00:00:56,000 >> Alle disse språkene som jeg nettopp nevnte 16 00:00:56,000 --> 00:01:01,000 er svært forskjellig fra språk som C og C + + og Java 17 00:01:01,000 --> 00:01:04,000 i den forstand at når du deklarerer en variabel du ikke nødt til å erklære 18 00:01:04,000 --> 00:01:09,000 hva slags variabel det er, så i C vi ble sittende fast å måtte alltid si 19 00:01:09,000 --> 00:01:13,000 dette kommer til å bli en int variabel, eller dette kommer til å bli en char * variabel, 20 00:01:13,000 --> 00:01:16,000 mens med PHP, med Python, med Ruby, 21 00:01:16,000 --> 00:01:20,000 med mange av disse mer moderne språk du ikke trenger å gjøre det i det hele tatt. 22 00:01:20,000 --> 00:01:24,000 Du bare deklarerer variabelen, og i tilfelle av PHP 23 00:01:24,000 --> 00:01:28,000 du erklærer at det er en variabel med prefikset med en $ tegn, 24 00:01:28,000 --> 00:01:35,000 og deretter type variabelen er bestemt av hvilken verdi det er å holde, 25 00:01:35,000 --> 00:01:38,000 som er litt kult. 26 00:01:38,000 --> 00:01:44,000 Å leke seg med dette litt, har vi prøve PHP-kode her 27 00:01:44,000 --> 00:01:47,000 mellom start og slutt tagger. 28 00:01:47,000 --> 00:01:53,000 Vi bruker denne typen som HTML i den forstand at 29 00:01:53,000 --> 00:01:56,000 vi har disse vinkelparentesene her for å åpne og lukke. 30 00:01:56,000 --> 00:01:58,000 Du vil se dette med HTML. 31 00:01:58,000 --> 00:02:03,000 Du vil se den samme typen syntaks med XML også. 32 00:02:03,000 --> 00:02:06,000 >> Dette indikerer starten på en PHP-blokk. 33 00:02:06,000 --> 00:02:09,000 Dette? Php er spesifikk for PHP. 34 00:02:09,000 --> 00:02:16,000 Vi stenger alt med en> også. 35 00:02:16,000 --> 00:02:22,000 La oss åpne opp en fil i apparatet vi bruker hva du vil. 36 00:02:22,000 --> 00:02:25,000 I denne pakken står det å ringe dynamic.php. 37 00:02:25,000 --> 00:02:29,000 I sannhet, kan du kalle det hva du vil, men filnavnet vil komme opp 38 00:02:29,000 --> 00:02:34,000 og være viktig senere, så bare husk hva du kaller det. 39 00:02:34,000 --> 00:02:36,000 Jeg kommer til å bytte over til apparatet, 40 00:02:36,000 --> 00:02:43,000 og jeg kommer til å gjøre en katalog for 41 00:02:43,000 --> 00:02:48,000 § 9 Jeg tror vi på nå. 42 00:02:48,000 --> 00:02:51,000 Og vi vil gå inn i § 9, 43 00:02:51,000 --> 00:02:54,000 og jeg kommer til å bruke gedit. 44 00:02:54,000 --> 00:02:59,000 La oss se, gedit, og jeg kommer til å ringe meg dynamic.php. 45 00:02:59,000 --> 00:03:03,000 Boom. 46 00:03:03,000 --> 00:03:06,000 Innen dynamic.php, siden dette er en PHP-fil 47 00:03:06,000 --> 00:03:09,000 og jeg ønsker å kjøre dette gjennom PHP tolk 48 00:03:09,000 --> 00:03:12,000 Jeg trenger å starte alt av med de åpne koder, 49 00:03:12,000 --> 00:03:17,000 så jeg kommer til å starte de med en gang, 50 00:03:17,000 --> 00:03:23,000 gi meg selv en liten plass i mellom kodene, 51 00:03:23,000 --> 00:03:26,000 og da poenget med denne øvelsen var å spille rundt med 52 00:03:26,000 --> 00:03:34,000 denne funksjonen kalles getType, så getType, denne funksjonen her. 53 00:03:34,000 --> 00:03:38,000 >> Legg merke til at det har understrek ingen eller mellomrom eller bindestrek eller noe sånt 54 00:03:38,000 --> 00:03:42,000 skille 2 ord, få og skrive, bare ett ord helt. 55 00:03:42,000 --> 00:03:46,000 Men hva dette vil gjøre er hvis jeg passerer i en variabel til getType, 56 00:03:46,000 --> 00:03:51,000 si $ VAR eller $ x, 57 00:03:51,000 --> 00:03:55,000 Dette vil fortelle meg slags i en debugging format 58 00:03:55,000 --> 00:03:59,000 hva navnet på denne typen er. 59 00:03:59,000 --> 00:04:03,000 Vi kommer til å eksperimentere her. 60 00:04:03,000 --> 00:04:07,000 Spesielt hvis du ser tilbake på pset spec 61 00:04:07,000 --> 00:04:11,000 Vi har et par forskjellige linjer med kode her. 62 00:04:11,000 --> 00:04:16,000 I den første linjen i koden initialisere vi denne variabelen, $ var, 63 00:04:16,000 --> 00:04:21,000 å være lik 7, og så har vi denne printf linjen 64 00:04:21,000 --> 00:04:25,000 som sier hei, er printf Var blank. 65 00:04:25,000 --> 00:04:29,000 Printf er en av mange måter vi kan skrive ut ting i PHP. 66 00:04:29,000 --> 00:04:33,000 Ofte vil du se ekko funksjonen brukes i stedet for printf, 67 00:04:33,000 --> 00:04:40,000 men printf vi er alle kjent med å ha blitt koding i C for en stund. 68 00:04:40,000 --> 00:04:42,000 Hva du faktisk kan gjøre er å la oss se om kopier og lim fungerer. 69 00:04:42,000 --> 00:04:46,000 Jeg kommer til å gi dette en sjanse. 70 00:04:46,000 --> 00:04:52,000 Vi vil gå tilbake over til apparatet. 71 00:04:52,000 --> 00:05:00,000 Ok, og der vi går. 72 00:05:00,000 --> 00:05:05,000 Og avstanden er litt funky, men her vi går. 73 00:05:05,000 --> 00:05:08,000 Vi har fått denne koden her. 74 00:05:08,000 --> 00:05:11,000 >> [Student] Er det ikke god stil til fane det? 75 00:05:11,000 --> 00:05:13,000 Beklager? 76 00:05:13,000 --> 00:05:15,000 [Student] Er det vanlig å fane det? 77 00:05:15,000 --> 00:05:21,000 Høyre, så Sam spør om det er konvensjonen til fane det eller ikke. 78 00:05:21,000 --> 00:05:23,000 Vanligvis ja. 79 00:05:23,000 --> 00:05:26,000 I dette tilfellet har jeg valgt å la være. 80 00:05:26,000 --> 00:05:33,000 Ærlig, vil du se forskjellige ting for forskjellige programmerere. 81 00:05:33,000 --> 00:05:40,000 PHP er vanligvis brukes ofte i kombinasjon med HTML 82 00:05:40,000 --> 00:05:45,000 og andre språk, og så noen ganger utskriften vil se litt funky 83 00:05:45,000 --> 00:05:50,000 Hvis du innrykk innen PHP start og slutt tagger. 84 00:05:50,000 --> 00:05:53,000 Det avhenger egentlig. 85 00:05:53,000 --> 00:05:56,000 I dette tilfellet kopier og lim ikke lime inn kategoriene i for meg, 86 00:05:56,000 --> 00:06:02,000 men det definitivt ikke, som du sa, gjør det klarere. 87 00:06:02,000 --> 00:06:06,000 Greit, hvis du lagrer denne koden i dynamic.php 88 00:06:06,000 --> 00:06:10,000 så hva du kan gjøre er å komme ned til din terminal vindu der jeg er akkurat her nede 89 00:06:10,000 --> 00:06:17,000 i gedit, og å gjøre tilsvarende kompilere 90 00:06:17,000 --> 00:06:20,000 bruke sminke og deretter kjører koden i C 91 00:06:20,000 --> 00:06:25,000 alt du trenger å gjøre med PHP-filen er å starte opp PHP tolk, 92 00:06:25,000 --> 00:06:30,000 som er et lite program som heter PHP, 93 00:06:30,000 --> 00:06:35,000 og argumentet du gir tolken er filen du ønsker å tolke. 94 00:06:35,000 --> 00:06:40,000 I dette tilfellet, dynamic.php. 95 00:06:40,000 --> 00:06:43,000 Whoops, hvor fikk jeg plassere den? 96 00:06:43,000 --> 00:06:52,000 Oh, la jeg det i § 9, og her er jeg. Det er derfor. 97 00:06:52,000 --> 00:06:57,000 >> Nå hvis jeg kjører det igjen 98 00:06:57,000 --> 00:07:02,000 Vi ser at i mitt første getType funksjon samtale 99 00:07:02,000 --> 00:07:04,000 Var er et heltall. 100 00:07:04,000 --> 00:07:12,000 I den neste Var er en streng, og deretter i den tredje Var er en boolsk. 101 00:07:12,000 --> 00:07:15,000 Hva er interessant om dette er hvis vi rulle opp ser vi at 102 00:07:15,000 --> 00:07:18,000 disse er typer som ligner på de som vi hadde i C. 103 00:07:18,000 --> 00:07:22,000 Vi hadde ints i C. 104 00:07:22,000 --> 00:07:26,000 Vi måtte liksom strenger i C, 105 00:07:26,000 --> 00:07:31,000 så strenger var ikke en helt legit type i den forstand at 106 00:07:31,000 --> 00:07:37,000 vår CS50 streng var virkelig hva? 107 00:07:37,000 --> 00:07:39,000 Beklager? Missy? 108 00:07:39,000 --> 00:07:41,000 [Missy] Char *. 109 00:07:41,000 --> 00:07:43,000 Ja, det var dette char * vi brukte. 110 00:07:43,000 --> 00:07:47,000 Helt i begynnelsen av semesteret brukte vi strengen type, 111 00:07:47,000 --> 00:07:52,000 men det var virkelig en char * under panseret. 112 00:07:52,000 --> 00:07:58,000 Vi bare skriver definert det, mens i PHP disse strengene er en faktisk type. 113 00:07:58,000 --> 00:08:07,000 Det er ikke mer av dette char * type ting. 114 00:08:07,000 --> 00:08:10,000 >> Du vil se at vi kan gjøre mange flere ting med strenger 115 00:08:10,000 --> 00:08:14,000 mye lettere i PHP enn vi kunne i C, 116 00:08:14,000 --> 00:08:17,000 og så til slutt har vi dette boolean type, og den store forskjellen her er at 117 00:08:17,000 --> 00:08:21,000 hvis vi blar ned ser vi at navnet på disse typene 118 00:08:21,000 --> 00:08:28,000 er nå heltall, streng, og boolean istedenfor int og bool, 119 00:08:28,000 --> 00:08:31,000 og som du plukker opp forskjellige programmeringsspråk, 120 00:08:31,000 --> 00:08:36,000 forutsatt at på et tidspunkt i livet vil du komme i kontakt med 121 00:08:36,000 --> 00:08:40,000 ulike de du vil legge merke til små quirks som dette 122 00:08:40,000 --> 00:08:44,000 der C kaller heltall ints. 123 00:08:44,000 --> 00:08:46,000 Noen kaller det heltall. 124 00:08:46,000 --> 00:08:51,000 Det er andre ord som du vil kjøre inn. 125 00:08:51,000 --> 00:08:55,000 Big int vi så i dag i SQL. 126 00:08:55,000 --> 00:08:59,000 Det er også tall og deretter bool, boolean, 127 00:08:59,000 --> 00:09:03,000 alle slags forskjeller der. 128 00:09:03,000 --> 00:09:07,000 >> Dette er ikke veldig interessant, men nå skal jeg gi dere en liten bit av tid- 129 00:09:07,000 --> 00:09:13,000 hvis vi zoome ut igjen for å arbeide gjennom denne øvelsen nederst på side 3 130 00:09:13,000 --> 00:09:20,000 der den ber hvilke typer svarer til disse verdiene her nederst. 131 00:09:20,000 --> 00:09:24,000 Vi har 3,50. 132 00:09:24,000 --> 00:09:28,000 Vi har denne tingen her, noe som er interessant. 133 00:09:28,000 --> 00:09:32,000 Vi har ikke sett det før, men hvis du har fulgt med i forelesning 134 00:09:32,000 --> 00:09:35,000 du sannsynligvis allerede vet hva det er. 135 00:09:35,000 --> 00:09:40,000 Så har vi dette, som dette er slags funky. 136 00:09:40,000 --> 00:09:42,000 Du kjenner igjen dette. 137 00:09:42,000 --> 00:09:46,000 Hva er dette i C? 138 00:09:46,000 --> 00:09:50,000 Sam? Hva ville dette gi deg i C? 139 00:09:50,000 --> 00:09:54,000 Det ville åpne en fil som heter dynamic.php og gjøre den lesbar. 140 00:09:54,000 --> 00:09:58,000 Ja, og hva ville være den type variabel som vi ville tildele dette til? >> File stjerne. 141 00:09:58,000 --> 00:10:02,000 Nøyaktig, ville vi tildele denne til en fil stjerne. 142 00:10:02,000 --> 00:10:08,000 Dette er legitim PHP også. 143 00:10:08,000 --> 00:10:12,000 Kjør det. Se hva som skjer når du passerer det i getType. 144 00:10:12,000 --> 00:10:19,000 Og deretter også sjekke ut hva null er, hva som kan være i PHP. 145 00:10:19,000 --> 00:10:21,000 Jeg skal gi deg et par minutter. 146 00:10:21,000 --> 00:10:24,000 Du kan bokstavelig talt kopiere og lime inn disse verdiene i, 147 00:10:24,000 --> 00:10:29,000 og så får vi gjøre litt tilfeldig samtale på deg 148 00:10:29,000 --> 00:10:34,000 og se hva du har. 149 00:10:34,000 --> 00:10:36,000 >> [Student] Jeg har et spørsmål. << Ja. 150 00:10:36,000 --> 00:10:40,000 I en av forelesningene David sa at det er noe du kan sette på toppen av filen 151 00:10:40,000 --> 00:10:43,000 slik at du ikke trenger å skrive i PHP hver gang. 152 00:10:43,000 --> 00:10:45,000 Hva var det? 153 00:10:45,000 --> 00:10:50,000 Han var sannsynligvis snakker om pund bang, hash smell. 154 00:10:50,000 --> 00:10:57,000 Det er et direktiv om at hvis du merker en fil som kjørbar 155 00:10:57,000 --> 00:11:01,000 så hva den gjør er når du kjøre filen 156 00:11:01,000 --> 00:11:06,000 det vil si skallet program 157 00:11:06,000 --> 00:11:12,000 bruke PHP tolken til å tolke innholdet i filen. 158 00:11:12,000 --> 00:11:16,000 Spørsmålet blir hva var dette spesiell linje 159 00:11:16,000 --> 00:11:20,000 at vi kunne inkludere øverst av våre PHP-filer til ikke å inkludere 160 00:11:20,000 --> 00:11:26,000 Dette PHP linje eller denne PHP-kommandoen når vi ønsker å kjøre filen? 161 00:11:26,000 --> 00:11:31,000 Og du kan faktisk gjøre dette med en haug med forskjellige filer. 162 00:11:31,000 --> 00:11:37,000 Jeg tror det avhenger av hvor PHP binære er lagret, 163 00:11:37,000 --> 00:11:43,000 men ofte usr / bin / php er et bra sted å starte. 164 00:11:43,000 --> 00:11:45,000 Du kan finne ut av dette akkurat ved å gå ned igjen til apparatet 165 00:11:45,000 --> 00:11:50,000 og skrive ut hvilke php. 166 00:11:50,000 --> 00:11:55,000 Den hvilken kommando tallene ut når du utfører binære 167 00:11:55,000 --> 00:12:01,000 eller en kommando der tilsvarende filen er. 168 00:12:01,000 --> 00:12:06,000 Dette forteller meg at PHP er virkelig aliasing dette binærfil 169 00:12:06,000 --> 00:12:13,000 som er lagret i usr / bin, som er der mye av systembinærfiler er installert. 170 00:12:13,000 --> 00:12:21,000 For eksempel, hvis jeg blar opp til toppen, nå som jeg har satt dette #! linje her 171 00:12:21,000 --> 00:12:27,000 Jeg kan bla nedover, og jeg kan prøve å kjøre 172 00:12:27,000 --> 00:12:35,000 dynamic.php, men jeg får denne feilen om tillatelse nektes, 173 00:12:35,000 --> 00:12:42,000 og hva det betyr er at denne filen ikke er for tiden å gi kjørbare tillatelser. 174 00:12:42,000 --> 00:12:46,000 Det er ikke merket som en fil som noen kan kjøre. 175 00:12:46,000 --> 00:12:52,000 >> Når du kjørte foreta eller Clang og du fikk en kjørbar fra det 176 00:12:52,000 --> 00:12:56,000 kompilatoren var smart nok til å vite at hei, jeg bygger en kjørbar. 177 00:12:56,000 --> 00:13:00,000 Du sannsynligvis vil utføre det, så det ville automatisk konfigurere 178 00:13:00,000 --> 00:13:02,000 tillatelsene for deg. 179 00:13:02,000 --> 00:13:06,000 Dette er ikke tilfelle, men når du oppretter en normal fil fra bunnen av, 180 00:13:06,000 --> 00:13:13,000 grunnen blir vanligvis du ikke ønsker å ha noen fil på systemet ditt være kjørbare, 181 00:13:13,000 --> 00:13:15,000 slik at du faktisk nødt til å gå inn og manuelt gjøre det. 182 00:13:15,000 --> 00:13:22,000 Den enkleste måten å gjøre det på er med chmod kommandoen, 183 00:13:22,000 --> 00:13:28,000 og chmod + x sier legge den kjørbare bit 184 00:13:28,000 --> 00:13:31,000 fordi det er skrivebeskyttet bit, skrive litt og kjørbare bit, 185 00:13:31,000 --> 00:13:35,000 R, W og X, 186 00:13:35,000 --> 00:13:39,000 og si chmod + x vil slå på den kjørbare bit 187 00:13:39,000 --> 00:13:46,000 for deretter filen som vi angir, som i dette tilfellet vil være dynamic.php. 188 00:13:46,000 --> 00:13:49,000 >> [Student] Er det slått på for alle? 189 00:13:49,000 --> 00:13:52,000 La oss sjekke ut dette, så hvordan skulle jeg sjekke for å se tillatelsene? 190 00:13:52,000 --> 00:13:54,000 Vet du hvordan jeg ville sjekke for å se rettighetene til en fil? 191 00:13:54,000 --> 00:13:56,000 [Uhørlig student respons] 192 00:13:56,000 --> 00:13:58,000 Beklager? >> [Student] XSD. 193 00:13:58,000 --> 00:14:03,000 XSD gir oss filen i hacks. 194 00:14:03,000 --> 00:14:09,000 Liste over alle filene,-l, vil vise meg alle filene i katalogen min 195 00:14:09,000 --> 00:14:13,000 slags i sine lange, ordrik notering, og så her ser vi at 196 00:14:13,000 --> 00:14:17,000 Dette dynamic.php fil 197 00:14:17,000 --> 00:14:23,000 ble sist endret 5 november kl 16:21. 198 00:14:23,000 --> 00:14:26,000 Eieren av denne filen er jharvard. 199 00:14:26,000 --> 00:14:28,000 Det er brukeren som er logget inn 200 00:14:28,000 --> 00:14:31,000 Det er brukeren jeg jobber som, 201 00:14:31,000 --> 00:14:36,000 og hvis du er også i apparatet du også jobbe som bruker jharvard. 202 00:14:36,000 --> 00:14:38,000 Du er i studenter gruppen, 203 00:14:38,000 --> 00:14:44,000 og dette er ting som du ser ofte nok. 204 00:14:44,000 --> 00:14:47,000 >> Vi kan gå inn i mange detaljer her, 205 00:14:47,000 --> 00:14:50,000 men for det meste hva du ønsker å se på når du ønsker å se 206 00:14:50,000 --> 00:14:55,000 hvorvidt en fil er kjørbar er først og fremst 207 00:14:55,000 --> 00:14:58,000 brukeren som eier filen, eieren, 208 00:14:58,000 --> 00:15:03,000 så dette jharvard, og da har vi 209 00:15:03,000 --> 00:15:07,000 tillatelsene biter over her til venstre, 210 00:15:07,000 --> 00:15:13,000 og måten å lese dette er at den siste bit 211 00:15:13,000 --> 00:15:18,000 vanligvis brukes for merking hvorvidt-i det minste i dette tilfelle 212 00:15:18,000 --> 00:15:21,000 denne siste bit vil ofte være satt til ad for å indikere 213 00:15:21,000 --> 00:15:24,000 at filen er en katalog og ikke bare en vanlig fil. 214 00:15:24,000 --> 00:15:28,000 Deretter følgende tre biter rett her 215 00:15:28,000 --> 00:15:34,000 bestemme tillatelsene som eieren av filen har, 216 00:15:34,000 --> 00:15:38,000 så i dette tilfellet jharvard, som eier av filen, kan lese og skrive denne filen, 217 00:15:38,000 --> 00:15:42,000 men det er en dash sier at jharvard ikke kan kjøre denne filen. 218 00:15:42,000 --> 00:15:46,000 De neste tre biter er for gruppen, så dette er studentene i gruppen 219 00:15:46,000 --> 00:15:49,000 så hvis det var flere brukere på maskinen min, 220 00:15:49,000 --> 00:15:52,000 og vi hadde flere brukere som en del av studentene gruppen, 221 00:15:52,000 --> 00:15:55,000 så de kan alle lese denne filen, men de kan ikke skrive det, 222 00:15:55,000 --> 00:15:59,000 og likeledes noen andre, verden 223 00:15:59,000 --> 00:16:01,000 kan bare lese denne filen også. 224 00:16:01,000 --> 00:16:03,000 Det er en god, lang writeup om dette, 225 00:16:03,000 --> 00:16:05,000 slik at du kan lese på nettet. 226 00:16:05,000 --> 00:16:10,000 I oppgavesettet spec går vi inn i dette i mer detalj. 227 00:16:10,000 --> 00:16:12,000 >> [Student] Er 218 henviser til verden? 228 00:16:12,000 --> 00:16:17,000 Den 218 er-på toppen av hodet mitt jeg glemmer, 229 00:16:17,000 --> 00:16:20,000 men nei. 230 00:16:20,000 --> 00:16:29,000 La oss se. Jeg blanking på det akkurat nå. 231 00:16:29,000 --> 00:16:32,000 Tilbake til hva vi var i ferd med å gjøre med dette chmod + x 232 00:16:32,000 --> 00:16:37,000 der vi ønsket å gi dynamic.php kjørbare tillatelser, 233 00:16:37,000 --> 00:16:40,000 og spørsmålet var hvorvidt dette ville gi kjørbare tillatelser til alle 234 00:16:40,000 --> 00:16:44,000 eller bare jharvard, og vi kan se dette ved å 235 00:16:44,000 --> 00:16:48,000 kjører kommandoene og skrive ls-l, 236 00:16:48,000 --> 00:16:51,000 og nå ser vi at det er merket som kjørbar. 237 00:16:51,000 --> 00:16:54,000 Du se at det var en fargeendring. 238 00:16:54,000 --> 00:16:57,000 Nå dynamic.php er oppført i grønt, 239 00:16:57,000 --> 00:17:01,000 og det ser ut som svaret på spørsmålet er hva, Charlotte? 240 00:17:01,000 --> 00:17:04,000 [Charlotte] Bare jharvard. >> Bare jharvard, ja. 241 00:17:04,000 --> 00:17:08,000 >> Hvis vi ønsket å slå den kjørbare litt på for alle 242 00:17:08,000 --> 00:17:10,000 hvordan kan vi gjøre det? 243 00:17:10,000 --> 00:17:13,000 Noen tanker? >> A + x? 244 00:17:13,000 --> 00:17:15,000 Ja, akkurat. 245 00:17:15,000 --> 00:17:23,000 Charlotte sa vi kan gjøre chmod av en + x av dynamic.php, 246 00:17:23,000 --> 00:17:26,000 og nå hvis vi kjører ls-l ser vi at de kjørbare biter 247 00:17:26,000 --> 00:17:30,000 er faktisk slått på for alle. 248 00:17:30,000 --> 00:17:37,000 Og du kan faktisk gjøre det motsatte av dette, slik at du kan slå den av for alle 249 00:17:37,000 --> 00:17:41,000 bruker minus. 250 00:17:41,000 --> 00:17:46,000 Nå er det slått av, og nå kan vi slå den på igjen for jharvard 251 00:17:46,000 --> 00:17:52,000 slik at vi faktisk kan kjøre den nå, 252 00:17:52,000 --> 00:17:58,000 og nå kan du se når vi kjører koden denne spesielle #! linje på toppen, 253 00:17:58,000 --> 00:18:04,000 #! linje, fortalte skallet, 254 00:18:04,000 --> 00:18:08,000 fortalte vår terminal hei, når denne filen kjøres, 255 00:18:08,000 --> 00:18:14,000 bruke / usr / bin / php å tolke denne filen 256 00:18:14,000 --> 00:18:20,000 og deretter skrive ut resultatet. 257 00:18:20,000 --> 00:18:22,000 [Uhørlig student spørsmål] 258 00:18:22,000 --> 00:18:25,000 Jada, la meg rulle opp. Akkurat som denne. 259 00:18:25,000 --> 00:18:36,000 Du vil se alle disse direktivene starte med dette pund og deretter utropstegn, 260 00:18:36,000 --> 00:18:39,000 noen ganger kalt en shebang, hash smell. 261 00:18:39,000 --> 00:18:48,000 >> [Student] Hvordan kan vi kjøre den med php dynamic.php før vi gjør det kjørbar? 262 00:18:48,000 --> 00:18:55,000 Spørsmålet var hvordan kan vi kjøre dette ved hjelp av PHP binære 263 00:18:55,000 --> 00:18:58,000 mens dynamic.php er ikke kjørbar? 264 00:18:58,000 --> 00:19:01,000 Dette er super viktig fordi dette er nøyaktig hvordan 265 00:19:01,000 --> 00:19:06,000 det kommer til å fungere når du skriver oppgavesettet 7. 266 00:19:06,000 --> 00:19:09,000 Mesteparten av tiden PHP-filer er ikke direkte kjørbar. 267 00:19:09,000 --> 00:19:14,000 Den måten som fungerer er fordi det er den PHP binære som er kjørbar. 268 00:19:14,000 --> 00:19:16,000 Tolken er ting som blir henrettet, 269 00:19:16,000 --> 00:19:20,000 og så hva det gjør er bokstavelig talt slurping i hele innholdet 270 00:19:20,000 --> 00:19:25,000 av vår dynamic.php fil og går linje for linje 271 00:19:25,000 --> 00:19:29,000 og gjennomføring disse kommandoene, så det er ved hjelp av vår PHP-fil 272 00:19:29,000 --> 00:19:31,000 som en liste med instruksjoner. 273 00:19:31,000 --> 00:19:36,000 Det er ikke direkte utfører det. 274 00:19:36,000 --> 00:19:40,000 Det er der vi sier at disse filene er tolket under kjøring. 275 00:19:40,000 --> 00:19:46,000 Det er en løpe tid språk i stedet for noe som er bestemt ved kompilering, 276 00:19:46,000 --> 00:19:49,000 ikke et kompilert språk som C. 277 00:19:49,000 --> 00:19:54,000 >> Er det en måte å få en kjøretid språk til å handle som om det er en kompilering språk, 278 00:19:54,000 --> 00:19:58,000 som om du har alle kjører gjort på serveren 279 00:19:58,000 --> 00:20:00,000 snarere enn du vet hva jeg mener? 280 00:20:00,000 --> 00:20:04,000 Ja, så spørsmålet er 281 00:20:04,000 --> 00:20:11,000 er det en måte å få kjøre tid språk for å opptre mer som kompilering typer språk? 282 00:20:11,000 --> 00:20:18,000 Og det er, jeg mener, det er et aktivt område av forskning for mange av disse selskapene. 283 00:20:18,000 --> 00:20:22,000 Jeg tror Facebook har gjort mye arbeid med PHP 284 00:20:22,000 --> 00:20:25,000 og sammenstille det ned, noe som gjør det raskere, optimalisere det 285 00:20:25,000 --> 00:20:29,000 siden deres nettsted er bygget på PHP. 286 00:20:29,000 --> 00:20:34,000 Hvis du har fulgt node.js det hele tatt, 287 00:20:34,000 --> 00:20:40,000 som er en slags JavaScript tolk 288 00:20:40,000 --> 00:20:44,000 å kunne kjøre JavaScript utenfor nettleseren, utenfor nettleseren, 289 00:20:44,000 --> 00:20:47,000 fordi tradisjonelt JavaScript ville bare kjøre inne i Firefox eller Chrome, 290 00:20:47,000 --> 00:20:52,000 og det vil bli brukt til å lage kule animasjoner skje på en webside 291 00:20:52,000 --> 00:20:55,000 og gjøre din nettside dynamisk. 292 00:20:55,000 --> 00:20:59,000 Som er blitt bygget på en mye arbeid som Google har gjort 293 00:20:59,000 --> 00:21:03,000 å lage JavaScript og C + + 294 00:21:03,000 --> 00:21:09,000 binde sammen, så det er mye aktiv forskning for å 295 00:21:09,000 --> 00:21:13,000 få disse språkene til å arbeide og optimalisere dem, 296 00:21:13,000 --> 00:21:17,000 først og fremst fordi så mange mennesker kan kode i PHP og JavaScript 297 00:21:17,000 --> 00:21:19,000 fordi det er mye enklere. 298 00:21:19,000 --> 00:21:21,000 Det er mye hyggeligere. Du har ikke pekere. 299 00:21:21,000 --> 00:21:27,000 Du har ikke typer flyter rundt. 300 00:21:27,000 --> 00:21:31,000 De ønsket å få fordelene av disse kompilering språk 301 00:21:31,000 --> 00:21:36,000 med alle typesjekking og hastigheten og nedre minnebruk og alle som 302 00:21:36,000 --> 00:21:42,000 samtidig opprettholde fleksibilitet og brukervennlighet av disse nyere. 303 00:21:42,000 --> 00:21:46,000 >> Tilbake til vår opprinnelige plan for angrep. 304 00:21:46,000 --> 00:21:50,000 Vi har noen av disse spørsmålene her i vårt problem set spec. 305 00:21:50,000 --> 00:21:54,000 La oss gå gjennom dem veldig raskt, og vi vil gå rundt i rommet. 306 00:21:54,000 --> 00:21:59,000 Charlotte, er hva slags 3,50? 307 00:21:59,000 --> 00:22:01,000 [Charlotte] Det er en dobbel. >> Det er en dobbel. 308 00:22:01,000 --> 00:22:03,000 Jimmy, hva er dette neste? >> En rekke. 309 00:22:03,000 --> 00:22:09,000 En matrise, fantastisk, og Jared, hva er fopen? 310 00:22:09,000 --> 00:22:11,000 [Jared] Det er en ressurs. >> Det er en ressurs. 311 00:22:11,000 --> 00:22:15,000 Det er litt av en ny en, ikke en fil stjerne, ikke en fil. 312 00:22:15,000 --> 00:22:19,000 Det er en ressurs er den type i PHP, 313 00:22:19,000 --> 00:22:24,000 og jeg beklager, Ella, er den siste null hva? 314 00:22:24,000 --> 00:22:26,000 Null. 315 00:22:26,000 --> 00:22:28,000 Null, hvordan er det staves i PHP? >> Den samme måte. 316 00:22:28,000 --> 00:22:30,000 På samme måte, hovedsteder? >> Ja. 317 00:22:30,000 --> 00:22:33,000 Ja, greit. 318 00:22:33,000 --> 00:22:35,000 Here we go, vi har en dobbel, har vi en matrise, 319 00:22:35,000 --> 00:22:41,000 vi har en ressurs, og så har vi null. 320 00:22:41,000 --> 00:22:48,000 La oss se nå har du sett- 321 00:22:48,000 --> 00:22:51,000 la oss se, så nå er jeg gjette hva jeg ønsker også å gjøre er å trekke opp 322 00:22:51,000 --> 00:22:56,000 denne nettsiden her, dette php.net / manual, 323 00:22:56,000 --> 00:23:01,000 så hvis dere kopierer det og åpne opp en nettleser. 324 00:23:01,000 --> 00:23:07,000 Jeg kommer til å trekke opp Chrome, sette det i. 325 00:23:07,000 --> 00:23:10,000 Jeg ønsker å vise deg dette ikke bare fordi 326 00:23:10,000 --> 00:23:13,000 vi kan snakke hele dagen om typer og alt det morsomme ting 327 00:23:13,000 --> 00:23:19,000 men heller fordi dette er PHP manualen, 328 00:23:19,000 --> 00:23:23,000 og det er mange PHP programmerere der ute. 329 00:23:23,000 --> 00:23:26,000 Det finnes en rekke PHP-nettsider der ute, 330 00:23:26,000 --> 00:23:31,000 og som et resultat, er det en masse dokumentasjon på PHP, 331 00:23:31,000 --> 00:23:36,000 og den manuelle, dette php.net, er et veldig bra sted å gå 332 00:23:36,000 --> 00:23:43,000 når du har spørsmål om hva som er den beste måten å gjøre X i PHP 333 00:23:43,000 --> 00:23:45,000 eller hvordan ser en funksjon ut? 334 00:23:45,000 --> 00:23:49,000 Bare slags bli kjent med hvordan dette ser ut, fordi 335 00:23:49,000 --> 00:23:54,000 du vil komme hit ofte, satt litt for problem 7. 336 00:23:54,000 --> 00:23:57,000 >> Hvis du ender opp med å gjøre et avsluttende prosjekt som bruker PHP 337 00:23:57,000 --> 00:24:04,000 Dette vil være et sted du vil bli svært godt kjent med. 338 00:24:04,000 --> 00:24:09,000 Ofte måten å gjøre dette er at de bruker Google til å søke etter nettstedet, 339 00:24:09,000 --> 00:24:16,000 og de ikke bruke søkeboksen som er her oppe i øvre høyre, som er slags liten. 340 00:24:16,000 --> 00:24:19,000 Hvis du Googling rundt etter noe å gjøre med PHP og du ser 341 00:24:19,000 --> 00:24:24,000 en av de manuelle koblinger dukker opp kan du vanligvis stole på at 342 00:24:24,000 --> 00:24:31,000 som en ganske god ressurs. 343 00:24:31,000 --> 00:24:34,000 Awesome, så ut av disse typene, bare ut av nysgjerrighet, 344 00:24:34,000 --> 00:24:37,000 hvilke har vi ikke sett? 345 00:24:37,000 --> 00:24:40,000 Noe vi ikke har sett her? 346 00:24:40,000 --> 00:24:44,000 [Student] Resource. >> Vi så ressurs med fopen samtalen. 347 00:24:44,000 --> 00:24:48,000 [Student] Objekter. >> Objekter vi ikke har sett for sikker. 348 00:24:48,000 --> 00:24:51,000 Tilbakeanrop vi ikke har sett. 349 00:24:51,000 --> 00:24:54,000 Det er noen av disse pseudo-typer. 350 00:24:54,000 --> 00:24:57,000 Vi definitivt bare så heltall og dobbel. 351 00:24:57,000 --> 00:25:01,000 Vi fikk ikke se noen av de andre, så hvis vi klikker på heltall 352 00:25:01,000 --> 00:25:08,000 vi kan se er det noen andre heltall som de har her? 353 00:25:08,000 --> 00:25:11,000 De er alle-så heltall, heltall, heltall. 354 00:25:11,000 --> 00:25:14,000 Noen språk har større heltall typer, 355 00:25:14,000 --> 00:25:23,000 som vi så på MySQL dag var det int og deretter stor int. 356 00:25:23,000 --> 00:25:25,000 Cool. 357 00:25:25,000 --> 00:25:28,000 >> Så, PHP manualen. 358 00:25:28,000 --> 00:25:37,000 La oss gå tilbake til vårt problem sett spec, og vi vil nå bla ned til side 4. 359 00:25:37,000 --> 00:25:41,000 En av de tingene som skjer når du får disse språkene 360 00:25:41,000 --> 00:25:49,000 som ikke har denne statisk skrive, så disse språkene hvor du må erklære 361 00:25:49,000 --> 00:25:52,000 typen en variabel opp foran 362 00:25:52,000 --> 00:26:00,000 er at du får tilfeller der du kan begynne å ha variabler av ulike typer 363 00:26:00,000 --> 00:26:04,000 samspill med hverandre, 364 00:26:04,000 --> 00:26:09,000 og PHP gjør denne tingen der den prøver å gjøre 365 00:26:09,000 --> 00:26:13,000 hva den anser å være den mest fornuftige tingen å gjøre 366 00:26:13,000 --> 00:26:18,000 når du har samhandle to forskjellige typer med hverandre. 367 00:26:18,000 --> 00:26:24,000 For eksempel, hvis vi ser på disse linjene med kode her 368 00:26:24,000 --> 00:26:29,000 ser du at vi har fått det som skjer når 369 00:26:29,000 --> 00:26:38,000 Vi prøver å legge til strengen 1 til heltall 2. 370 00:26:38,000 --> 00:26:41,000 Hva skjer hvis vi prøver å legge en streng som ikke er en numerisk verdi 371 00:26:41,000 --> 00:26:48,000 men heller faktiske tegn, CS til nummeret 50? 372 00:26:48,000 --> 00:26:51,000 Så får vi se er det noe annet som skjer der 373 00:26:51,000 --> 00:26:56,000 stedet for å legge en streng til et tall vi legger et nummer til en streng, 374 00:26:56,000 --> 00:27:00,000 og så videre og så videre til et punkt der vi får 375 00:27:00,000 --> 00:27:05,000 en slags rare ting her hvor vi har 7 + sant. 376 00:27:05,000 --> 00:27:09,000 Hva pokker betyr det? 377 00:27:09,000 --> 00:27:19,000 >> Hvis dere går videre og lime litt av denne koden apparatet. 378 00:27:19,000 --> 00:27:27,000 Du kan holde den i dynamic.php. 379 00:27:27,000 --> 00:27:30,000 Vi får se hva som skjer. 380 00:27:41,000 --> 00:27:43,000 [Student] Bare bruke print, ikke printf? 381 00:27:43,000 --> 00:27:52,000 Ja, så vil du finne at utskriften er også en gyldig funksjon for utskrift i PHP. 382 00:27:52,000 --> 00:27:54,000 Det er mange forskjellige måter å gjøre det. 383 00:27:54,000 --> 00:27:58,000 Vi får se med et par av eksemplene senere når vi begynner å snakke 384 00:27:58,000 --> 00:28:02,000 om den unike problemet som vi kommer til å skrive 385 00:28:02,000 --> 00:28:06,000 og deretter konsentrasjoner problem som vi kommer til å skrive 386 00:28:06,000 --> 00:28:09,000 at selv om vi har fopen og fclose 387 00:28:09,000 --> 00:28:15,000 det er ofte ikke den enkleste måten å lese i innholdet i en fil. 388 00:28:15,000 --> 00:28:21,000 PHP har mange av disse C-lignende restene. 389 00:28:21,000 --> 00:28:28,000 [Student] Når jeg satt i alle 6 av de tingene jeg bare får ett nummer som en utgang. 390 00:28:28,000 --> 00:28:36,000 [Nate H.] Når du putter i alle 6 av disse tingene. 391 00:28:36,000 --> 00:28:39,000 La oss se er det fordi det er muligens- 392 00:28:39,000 --> 00:28:46,000 en ting er at disse trykte anrop ikke blir avsluttet på slutten med nye linjer. 393 00:28:46,000 --> 00:28:49,000 Det er ingen ny linje skille hver av disse trykte samtaler, 394 00:28:49,000 --> 00:28:51,000 så kanskje du får en stort antall, 395 00:28:51,000 --> 00:28:58,000 og det er egentlig bare amalgam av nye linje tegn. 396 00:28:58,000 --> 00:29:00,000 [Student] Ok, hvordan kan jeg være sikker på- 397 00:29:00,000 --> 00:29:03,000 Vel, det er en haug med forskjellige måter. 398 00:29:03,000 --> 00:29:06,000 Du kan manuelt sette i en utskrift av en ny linje karakter, 399 00:29:06,000 --> 00:29:09,000 et ekko av en ny linje karakter, 400 00:29:09,000 --> 00:29:12,000 ut av ny linje. 401 00:29:12,000 --> 00:29:16,000 [Student] Så ekko er det samme som printf? 402 00:29:16,000 --> 00:29:21,000 >> Printf er som C printf 403 00:29:21,000 --> 00:29:24,000 hvor du skriver en formatert streng. 404 00:29:24,000 --> 00:29:32,000 Du leverer det formatet strengen og deretter alle plassholderdata variabler. 405 00:29:32,000 --> 00:29:39,000 Det er ofte noe som ikke brukes, 406 00:29:39,000 --> 00:29:42,000 la oss se, som en ansvarsfraskrivelse, 407 00:29:42,000 --> 00:29:48,000 Jeg er mindre kjent med PHP enn jeg er med andre web språk, 408 00:29:48,000 --> 00:29:53,000 og når jeg har programmert i PHP jeg vanligvis ikke bruker printf 409 00:29:53,000 --> 00:29:59,000 fordi jeg synes det er raskere å bruke streng interpolering evner som den har, 410 00:29:59,000 --> 00:30:04,000 som vi vil gå inn i, og jeg vil vise deg i løpet av et sekund, 411 00:30:04,000 --> 00:30:08,000 mens i C slags vi har å gjøre dette hacky ting å få det til å skrive ut riktig. 412 00:30:08,000 --> 00:30:16,000 Du kan faktisk sette variabler direkte inn strenger i PHP. 413 00:30:16,000 --> 00:30:22,000 Printf er slags altfor lang for hva jeg vanligvis gjør. Ja, Ella. 414 00:30:22,000 --> 00:30:25,000 [Ella] Vanligvis hvis du får parse error betyr det at- 415 00:30:25,000 --> 00:30:30,000 som på C det ikke fortelle deg nøyaktig hvor feilen er, og hva det er, 416 00:30:30,000 --> 00:30:34,000 så betyr det at utseende gjennom hele koden og finne ut av det? 417 00:30:34,000 --> 00:30:39,000 Det er vanligvis mer målrettet enn det. 418 00:30:39,000 --> 00:30:48,000 Jeg tror i så fall var det litt av, 419 00:30:48,000 --> 00:30:51,000 så jeg tror i så fall vi manglet et semikolon. 420 00:30:51,000 --> 00:30:54,000 Det prøvde å gjøre følelse av alt, 421 00:30:54,000 --> 00:30:57,000 så liker disse tolket språk, er tolken skal prøve 422 00:30:57,000 --> 00:31:01,000 og gjøre sitt beste for å gjøre alt arbeidet på riktig måte. 423 00:31:01,000 --> 00:31:04,000 >> Du vil se, for eksempel i JavaScript 424 00:31:04,000 --> 00:31:10,000 Du vil ofte Online uttalelser ender med et semikolon akkurat som de gjør i PHP, 425 00:31:10,000 --> 00:31:13,000 akkurat som de gjør i C. 426 00:31:13,000 --> 00:31:15,000 I JavaScript noen av JavaScript tolker 427 00:31:15,000 --> 00:31:20,000 i mange av nettleserne vil sette i semikolon for deg 428 00:31:20,000 --> 00:31:23,000 Hvis du tilfeldigvis til å mangle dem. 429 00:31:23,000 --> 00:31:29,000 De vil prøve å få plass til noen sloppiness på din del. 430 00:31:29,000 --> 00:31:34,000 Det er der det kanskje prøver og prøver og prøver å gjøre ting fungerer, 431 00:31:34,000 --> 00:31:36,000 og så til slutt vil det komme til et punkt der det står greit, 432 00:31:36,000 --> 00:31:38,000 Jeg kan ikke gjøre ting fungerer på bailing, og det er der du får en linje nummer 433 00:31:38,000 --> 00:31:44,000 som kan virke litt off fra det eksakte stedet. 434 00:31:44,000 --> 00:31:47,000 Ok, så la oss gå gjennom dette veldig raskt. 435 00:31:47,000 --> 00:31:50,000 Vi slapp med Ella, så la oss gå over til Missy, 436 00:31:50,000 --> 00:31:54,000 og Missy, hva print av strengen 1 pluss nummer 2 gir deg? 437 00:31:54,000 --> 00:31:56,000 [Missy] 3. >> 3. 438 00:31:56,000 --> 00:31:59,000 Gjør det fornuftig? Liksom? 439 00:31:59,000 --> 00:32:02,000 Betyr det gir deg et nummer? Gir det deg en streng? 440 00:32:02,000 --> 00:32:05,000 [Missy] En rekke. >> Det er et tall. 441 00:32:05,000 --> 00:32:09,000 Men det er skrive den ut, så det kommer til å gi deg noen form for streng. 442 00:32:09,000 --> 00:32:12,000 >> En ting vi kan gjøre for å sjekke dette ut 443 00:32:12,000 --> 00:32:21,000 er hvis vi gjør $ var = 1 + 2 444 00:32:21,000 --> 00:32:28,000 og så sier vi ekko av getType, 445 00:32:28,000 --> 00:32:33,000 så vi bruker en tredje form av utskrift her. 446 00:32:33,000 --> 00:32:39,000 Nå kan vi se hva som skjer her. 447 00:32:39,000 --> 00:32:42,000 Her er hva vi har er at vi fikk et heltall ut av dette. 448 00:32:42,000 --> 00:32:45,000 Selv om vi var å legge denne strengen til et tall, 449 00:32:45,000 --> 00:32:48,000 Vi fikk ikke en streng ut av det, akkurat som Missy sa. 450 00:32:48,000 --> 00:32:52,000 Vi får et heltall. 451 00:32:52,000 --> 00:32:57,000 Ok, så la oss se, neste opp, 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. Gjør det fornuftig? 454 00:33:02,000 --> 00:33:04,000 [Kevin] Yeah. 455 00:33:04,000 --> 00:33:06,000 [Nate H.] Hvorfor? Hvorfor gjør det fornuftig for deg? 456 00:33:06,000 --> 00:33:11,000 [Kevin] Fordi det er bare å ha strengen, har tallverdi null. 457 00:33:11,000 --> 00:33:16,000 Ja, flott. 458 00:33:16,000 --> 00:33:20,000 Slags tvetydige situasjoner, men det er godt å vite hva som skjer. 459 00:33:20,000 --> 00:33:25,000 Stella, hva skjer neste med nummer 1 + string 2? 460 00:33:25,000 --> 00:33:27,000 [Stella] 3. >> 3 igjen. 461 00:33:27,000 --> 00:33:30,000 Og i dette tilfellet, får vi en streng eller et nummer? 462 00:33:30,000 --> 00:33:36,000 >> La oss gi dette en sjanse. 463 00:33:36,000 --> 00:33:43,000 Noen raskere enn meg får svar? Charlotte? 464 00:33:43,000 --> 00:33:46,000 Åh, jeg didn't-okay, la oss se, vi kommer til å gjøre det samme slags ting 465 00:33:46,000 --> 00:33:49,000 hvor vi har fått en rekke pluss en streng, og vi kommer til å ekko typen, 466 00:33:49,000 --> 00:33:51,000 se hva vi får. 467 00:33:51,000 --> 00:33:55,000 Vi får også et heltall. 468 00:33:55,000 --> 00:33:58,000 Det spiller ingen rolle hvilken som er streng, som en er nummeret. 469 00:33:58,000 --> 00:34:00,000 Vi fremdeles kommer til å få et heltall. 470 00:34:00,000 --> 00:34:04,000 Det er fortsatt kommer til å gjøre hva vi kan forvente. 471 00:34:04,000 --> 00:34:09,000 All right, så Sam, hva 90 + 9 flasker øl på veggen? 472 00:34:09,000 --> 00:34:12,000 [Sam] 99. >> 99. 473 00:34:12,000 --> 00:34:15,000 Ingen flasker øl på veggen, skjønt. 474 00:34:15,000 --> 00:34:17,000 Det gir oss litt mer informasjon om hva som skjer. 475 00:34:17,000 --> 00:34:21,000 [Sam] Hvis du hadde skrevet 9 i brev 476 00:34:21,000 --> 00:34:23,000 så ville du ha 90, ikke sant? 477 00:34:23,000 --> 00:34:26,000 [Nate H.] Yeah. 478 00:34:26,000 --> 00:34:30,000 Spørsmålet var om vi hadde skrevet 9 som N-I-N-E 479 00:34:30,000 --> 00:34:34,000 ville vi ha fått 99 eller 90? 480 00:34:34,000 --> 00:34:38,000 Vi ville få 90. 481 00:34:38,000 --> 00:34:42,000 Det er bokstavelig talt bare ute etter siffer tegn. 482 00:34:42,000 --> 00:34:46,000 Det er ikke smart nok til å innse antall ord, og at ting. Ja. 483 00:34:46,000 --> 00:34:48,000 >> [Student] Er det noe slikt som typecasting i PHP? 484 00:34:48,000 --> 00:34:54,000 Det er, og det er akkurat slik du ville gjøre det i C. 485 00:34:54,000 --> 00:34:56,000 Hva 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.] Yeah, så hva kan være overraskende om dette? 488 00:35:01,000 --> 00:35:04,000 Hva ville skje hvis du gjorde dette samme slags ting i C, 489 00:35:04,000 --> 00:35:06,000 hvis du gjorde 10/7 i C? 490 00:35:06,000 --> 00:35:08,000 [Charlotte] Det ville bare gi deg-avhengig av hvordan du typecasted Jeg antar 491 00:35:08,000 --> 00:35:12,000 det vil gi deg bare et begrenset antall sifre etter desimaltegnet. 492 00:35:12,000 --> 00:35:16,000 Ja, så et begrenset antall sifre etter desimaltegnet. 493 00:35:16,000 --> 00:35:21,000 Hva annet kan være-vil det gi deg noen sifre etter desimalen? 494 00:35:21,000 --> 00:35:28,000 Ofte ikke, så igjen, avhengig av hvordan du typecasting det 495 00:35:28,000 --> 00:35:31,000 det kan eller ikke kan konvertere den til et flyttall. 496 00:35:31,000 --> 00:35:35,000 Her var det slags hyggelig at det gjorde. 497 00:35:35,000 --> 00:35:40,000 Hadde vi vist deg dette tilbake når vi begynte å gjøre denne typen ting i C 498 00:35:40,000 --> 00:35:44,000 det sannsynligvis ville ha gjort litt mer fornuftig 499 00:35:44,000 --> 00:35:48,000 at det ikke går bare til en. 500 00:35:48,000 --> 00:35:51,000 Og så til slutt, Jamie, hva 7 + sant? 501 00:35:51,000 --> 00:35:53,000 [Jamie] 8. >> 8. 502 00:35:53,000 --> 00:35:56,000 Hva betyr det? 503 00:35:56,000 --> 00:35:58,000 Jeg antar det bare gir sanne verdien av en. 504 00:35:58,000 --> 00:36:01,000 Ja. Hva skjer hvis vi endrer det til false? 505 00:36:01,000 --> 00:36:04,000 [Student] 7. 506 00:36:04,000 --> 00:36:09,000 Ja, så husk hvor vi snakker om disse binære verdier, 507 00:36:09,000 --> 00:36:12,000 1 er på, 0 blir av? 508 00:36:12,000 --> 00:36:17,000 Nå har vi sant er 1, er 0 false, 509 00:36:17,000 --> 00:36:21,000 og du kanskje ikke har sett dette i C eksempler på at vi har gjort det siste semesteret, 510 00:36:21,000 --> 00:36:27,000 men historisk bool type i C ikke har vært en reell type, 511 00:36:27,000 --> 00:36:32,000 slik at folk har brukt 0 og 1 i stedet for sant og usant. 512 00:36:32,000 --> 00:36:35,000 Dette er en manifestasjon av det. 513 00:36:35,000 --> 00:36:39,000 >> Ok, så en viktig del om alt dette 514 00:36:39,000 --> 00:36:41,000 er at vi har disse forskjellige typer. 515 00:36:41,000 --> 00:36:43,000 De kan kommunisere med hverandre. 516 00:36:43,000 --> 00:36:49,000 De kan ofte samhandle med hverandre på måter som er hyggelig, som vi har sett her. 517 00:36:49,000 --> 00:36:53,000 Det er hyggelig å kunne ha streng 1 og nummer 2, legge dem sammen og få 3. 518 00:36:53,000 --> 00:36:55,000 Det er fornuftig. 519 00:36:55,000 --> 00:36:59,000 Men når du skriver nettsteder, og spesielt når du behandler 520 00:36:59,000 --> 00:37:04,000 brukerundersøkelser, så si at du har skrevet et webskjema 521 00:37:04,000 --> 00:37:09,000 som samler informasjon fra brukeren, og deretter går å behandle den 522 00:37:09,000 --> 00:37:13,000 på baksiden slutten, på serversiden i PHP-koden 523 00:37:13,000 --> 00:37:18,000 Hvis du forventer at verdien som brukeren har skrevet inn og sendt 524 00:37:18,000 --> 00:37:23,000 i skjemaet for å være et heltall eller for å være et flyttall eller noe sånt 525 00:37:23,000 --> 00:37:29,000 du må eksplisitt kaste det 526 00:37:29,000 --> 00:37:34,000 og deretter gjøre noen type kontroll. 527 00:37:34,000 --> 00:37:41,000 >> Du ønsker ikke å bare stole på denne typen sjonglering system for å gjøre ting fungerer, 528 00:37:41,000 --> 00:37:48,000 spesielt for sikkerhetsmessige årsaker, og bare for robusthet av nettstedet ditt. 529 00:37:48,000 --> 00:37:51,000 Bare noe å huske på at når du håndterer skjemadata, 530 00:37:51,000 --> 00:37:57,000 noe som kommer i posten eller få superglobals 531 00:37:57,000 --> 00:38:01,000 sørg for at du alltid validere den og konvertere den og typecast det. 532 00:38:01,000 --> 00:38:04,000 Og akkurat som vi snakket om et øyeblikk siden at typecasting 533 00:38:04,000 --> 00:38:08,000 PHP er nøyaktig den samme som i C hvor du har parentes 534 00:38:08,000 --> 00:38:14,000 og deretter den typen. 535 00:38:14,000 --> 00:38:16,000 Holde det i tankene. 536 00:38:16,000 --> 00:38:19,000 En funksjon som vil komme godt med når du gjør dette 537 00:38:19,000 --> 00:38:22,000 er vi har brukt, og dette er typen som en side- 538 00:38:22,000 --> 00:38:27,000 Vi har brukt denne getType funksjonen her 539 00:38:27,000 --> 00:38:30,000 å finne ut hvilken type en variabel, 540 00:38:30,000 --> 00:38:37,000 og mens dette er nyttig for feilsøking og å se hva en variabel type er 541 00:38:37,000 --> 00:38:42,000 du ikke ønsker å bruke dette, for eksempel i en tilstand der 542 00:38:42,000 --> 00:38:57,000 du sjekke for å se om getType på $ var = heltall gjøre noe. 543 00:38:57,000 --> 00:39:01,000 Dette er dårlig, dårlig, dårlig. 544 00:39:01,000 --> 00:39:09,000 I stedet er det disse funksjonene kalles er heltall, er streng, 545 00:39:09,000 --> 00:39:14,000 er array som du ønsker å bruke i stedet, så i dette tilfellet 546 00:39:14,000 --> 00:39:18,000 hva jeg ønsker å gjøre i stedet for denne fyren her 547 00:39:18,000 --> 00:39:31,000 er å bruke er heltall var. 548 00:39:31,000 --> 00:39:37,000 Og de er ofte referert er is_ * i den forstand at du kan erstatte * med heltall, 549 00:39:37,000 --> 00:39:43,000 string, et cetera, og bare for å sørge for at virkelig rask 550 00:39:43,000 --> 00:39:50,000 Dette er int php. 551 00:39:50,000 --> 00:39:59,000 Ser ut som du kan gjøre er enten int eller det er heltall også? 552 00:39:59,000 --> 00:40:06,000 Ja, alias, så int heltall aliaser. 553 00:40:06,000 --> 00:40:08,000 Cool. 554 00:40:14,000 --> 00:40:17,000 >> Hvordan gjør vi det? 555 00:40:17,000 --> 00:40:20,000 La oss plukke opp tempoet litt. 556 00:40:20,000 --> 00:40:24,000 Nå skal vi snakke om matriser, slik at du kan se 557 00:40:24,000 --> 00:40:28,000 i neste del av spec snakker vi om hvordan arrays i PHP 558 00:40:28,000 --> 00:40:31,000 er litt annerledes enn de er i C. 559 00:40:31,000 --> 00:40:34,000 I sannhet, de er slag av en blanding av 560 00:40:34,000 --> 00:40:36,000 matriser som du har lært å kjenne og elske i C 561 00:40:36,000 --> 00:40:40,000 der alt er av samme type 562 00:40:40,000 --> 00:40:43,000 lagret fortløpende og contiguously i minnet, 563 00:40:43,000 --> 00:40:46,000 og du har disse numeriske indekser. 564 00:40:46,000 --> 00:40:49,000 Du har indeks 0, 1 indeksen, 2 indeks, 565 00:40:49,000 --> 00:40:53,000 og du lagre verdier på disse indeksene. 566 00:40:53,000 --> 00:40:57,000 Du kan også i C, når du skrev Speller, mange av dere 567 00:40:57,000 --> 00:41:00,000 gjorde hash table tilnærming, og du så at det vi hadde 568 00:41:00,000 --> 00:41:03,000 en annen type lagring hvor vi kartlegge 569 00:41:03,000 --> 00:41:07,000 en nøkkel til en verdi, så når du prøvde å lagre noe i hash table 570 00:41:07,000 --> 00:41:11,000 du måtte oppgi at du ønsket å lagre den med en bestemt nøkkel, 571 00:41:11,000 --> 00:41:17,000 og at nøkkelen bestemmes plasseringen av verdi og hvor det vil bli lagret. 572 00:41:17,000 --> 00:41:22,000 Du har slags fikk begge disse begrepene skjer på samme tid i en PHP array, 573 00:41:22,000 --> 00:41:27,000 og som et resultat, vi ofte kaller disse assosiative arrays 574 00:41:27,000 --> 00:41:33,000 hvor vi knytte en nøkkel i en verdi. 575 00:41:33,000 --> 00:41:39,000 I neste del snakker vi om en enkel PHP matrise 576 00:41:39,000 --> 00:41:45,000 hvor vi har nøkler a, b, og c, 577 00:41:45,000 --> 00:41:53,000 alle strenger, tilordning til heltallene 1, 2, og 3. 578 00:41:53,000 --> 00:41:57,000 Og du kan ha nøkler av forskjellige typer. 579 00:41:57,000 --> 00:42:00,000 >> Du kan ha noen nøkler som er strenger, noen nøkler som er heltall. 580 00:42:00,000 --> 00:42:03,000 Du kan ha verdier av forskjellige typer. 581 00:42:03,000 --> 00:42:06,000 Du kan ha en verdi som er en streng, en verdi som er et heltall, 582 00:42:06,000 --> 00:42:11,000 en verdi som er en gjenstand eller annen matrise, for eksempel 583 00:42:11,000 --> 00:42:16,000 alle i samme rekke objekt, som er slags merkelig. 584 00:42:16,000 --> 00:42:20,000 Du trenger ikke å ha en matrise som er akkurat en type element i den. 585 00:42:20,000 --> 00:42:26,000 Du kan ha mange forskjellige ting som skjer der inne. 586 00:42:26,000 --> 00:42:33,000 Den andre ting å merke seg er at når du ser noe som dette i koden, 587 00:42:33,000 --> 00:42:38,000 som er gyldig PHP å erklære en matrise akkurat som dette, 0, 1, 2, 3, 4, 5, 588 00:42:38,000 --> 00:42:43,000 som vil erklære en initialisert $ arr å være denne tabellen. 589 00:42:43,000 --> 00:42:48,000 Men hva du faktisk får under panseret er denne typen implisitt 590 00:42:48,000 --> 00:42:55,000 generasjon av nøkler hvor vi har fått 0-0, 1-1, 2-2, 3-3. 591 00:42:55,000 --> 00:42:59,000 Og det viser seg at selv om du har en rekke som denne fyren her oppe 592 00:42:59,000 --> 00:43:03,000 der du har a, b og c som nøklene 593 00:43:03,000 --> 00:43:09,000 og deretter begynne å bruke matrisen trykk metoden for å begynne å bruke denne tabellen som en stabel, 594 00:43:09,000 --> 00:43:12,000 slik at du kan se at denne matrisen objektet, er denne tabellen virkelig bli overbelastet. 595 00:43:12,000 --> 00:43:15,000 Vi kan bruke den som en matrise. Vi kan bruke den som en hash table. 596 00:43:15,000 --> 00:43:19,000 Vi kan bruke den som en stabel. 597 00:43:19,000 --> 00:43:22,000 Når du begynner å presse ting på denne tabellen 598 00:43:22,000 --> 00:43:30,000 det første du presse på dette vil være indeksen 0 og deretter indeks 1 og indeks 2. 599 00:43:30,000 --> 00:43:33,000 Du kan få denne typen implisitt generasjon av nøkler 600 00:43:33,000 --> 00:43:38,000 med mindre du angir dem eksplisitt. 601 00:43:38,000 --> 00:43:43,000 Måten du angir tastene eksplisitt, selvfølgelig, er ved hjelp av denne braketten notasjon, 602 00:43:43,000 --> 00:43:48,000 som er lik matriser unntatt i stedet for å bare tillate 603 00:43:48,000 --> 00:43:54,000 heltall indekser i her, nå er vi la noe. 604 00:43:54,000 --> 00:43:57,000 Hvis du vil at nøkkelen til å være en streng, ville du angi det som dette. 605 00:43:57,000 --> 00:44:06,000 Hvis du vil at det skal være en int, angir du den med int du vil bruke. 606 00:44:06,000 --> 00:44:13,000 >> Spørsmål om det så langt? 607 00:44:13,000 --> 00:44:18,000 En av de fine ting om denne ideen 608 00:44:18,000 --> 00:44:26,000 er at du kan bare trenger én verdi lagret med en bestemt nøkkel. 609 00:44:26,000 --> 00:44:32,000 Hvis vi går tilbake til vår appliance-la meg slette noen av disse greiene. 610 00:44:32,000 --> 00:44:47,000 Og la oss si at jeg initialisere en matrise for å være 0, 1, 2, gjort. 611 00:44:47,000 --> 00:44:55,000 Hvis jeg nå vet at for eksempel hvis jeg echo $ arr [0] 612 00:44:55,000 --> 00:44:59,000 Jeg kommer til å få verdien 0 skrives ut, 613 00:44:59,000 --> 00:45:05,000 og siden det bare kan være noen en verdi lagret for en bestemt nøkkel 614 00:45:05,000 --> 00:45:11,000 hvis jeg lagre noe på $ arr [0], sier en, 615 00:45:11,000 --> 00:45:16,000 så jeg vet når jeg echo $ arr [0] en gang 616 00:45:16,000 --> 00:45:19,000 Jeg kommer ikke til å få 0 skrives ut som før. 617 00:45:19,000 --> 00:45:24,000 Jeg bare kommer til å få en. 618 00:45:24,000 --> 00:45:30,000 Så dette er i utgangspunktet si at jeg ikke kan ha $ arr [0] lagring 2 forskjellige verdier. 619 00:45:30,000 --> 00:45:34,000 Det kan ikke lagre både 0 og strengen a, som dette bokstavelig erstatter 620 00:45:34,000 --> 00:45:38,000 hva var på $ arr [0] tidligere. 621 00:45:38,000 --> 00:45:43,000 Grunnen til at jeg tar opp dette er kjøre den, se hva som skjer. 622 00:45:43,000 --> 00:45:47,000 Se her at jeg fikk 0 skrives ut og deretter en ned her. 623 00:45:47,000 --> 00:45:51,000 Det finnes ingen ny linje der fordi jeg var lat og ikke sette det i. 624 00:45:51,000 --> 00:45:54,000 Hva er kult om dette er kan vi bruke dette som en måte 625 00:45:54,000 --> 00:46:00,000 å fange opp denne ideen om et sett 626 00:46:00,000 --> 00:46:07,000 hvor vi ikke kan ha flere nøkler i en matrise. 627 00:46:07,000 --> 00:46:10,000 Vi kan ikke ha identiske nøkler i en matrise. 628 00:46:10,000 --> 00:46:17,000 Jeg kan ikke ha 0 tasten og verdien 1 og 0 for og verdien en 629 00:46:17,000 --> 00:46:21,000 eller tast 0 og verdien sant. 630 00:46:21,000 --> 00:46:27,000 Tastene er all-det er bare 1 nøkkel i tabellen. 631 00:46:27,000 --> 00:46:32,000 Selv om du kan ha den samme verdien som er lagret 632 00:46:32,000 --> 00:46:35,000 flere ganger i matrisen under ulike nøkler 633 00:46:35,000 --> 00:46:42,000 det er ikke mulig å ha identiske nøkler flere ganger i PHP array. 634 00:46:42,000 --> 00:46:47,000 >> Hvis vi ser på dette neste problem, unique.php, 635 00:46:47,000 --> 00:46:51,000 der vi ønsker å åpne opp en PHP-fil 636 00:46:51,000 --> 00:46:54,000 inneholder en liste over strenger, en streng per linje, 637 00:46:54,000 --> 00:47:01,000 og vi ønsker å finne alle de unike strenger i denne filen 638 00:47:01,000 --> 00:47:06,000 alt vi har å gjøre er å bruke en av disse PHP arrays 639 00:47:06,000 --> 00:47:12,000 og bruke strenger i filen som nøklene til denne tabellen 640 00:47:12,000 --> 00:47:17,000 og holde oppdatere vårt utvalg som vi lagre disse nye nøkler. 641 00:47:17,000 --> 00:47:22,000 Som vi lese hver linje av filen vi kan lagre det i matrisen, 642 00:47:22,000 --> 00:47:28,000 og på slutten vil vi ha som våre nøkler i array vår 643 00:47:28,000 --> 00:47:34,000 alle de unike strenger i filen. 644 00:47:34,000 --> 00:47:37,000 Gjør det fornuftig? 645 00:47:37,000 --> 00:47:41,000 La oss se hvordan dette fungerer. 646 00:47:41,000 --> 00:47:49,000 Vi kommer til å åpne opp, ifølge spec, som kalles en ny fil unique.php. 647 00:47:49,000 --> 00:47:58,000 Åpne. Oops, beklager, ny fil. 648 00:47:58,000 --> 00:48:03,000 Vi kommer til å starte den av med samme start-og slutt-koder. 649 00:48:03,000 --> 00:48:17,000 Vi kommer til å lagre det i § 9, og vi kommer til å kalle det unique.php. 650 00:48:17,000 --> 00:48:25,000 Ok, nå zoome inn 651 00:48:25,000 --> 00:48:32,000 Ideen her er å åpne en fil, 652 00:48:32,000 --> 00:48:38,000 les i filen linje for linje. 653 00:48:38,000 --> 00:48:46,000 For hver linje i filen 654 00:48:46,000 --> 00:48:51,000 vi har en rekke der vi har 655 00:48:51,000 --> 00:49:03,000  linjen som våre viktigste. 656 00:49:03,000 --> 00:49:09,000 Og så når vi kommer til slutten her 657 00:49:09,000 --> 00:49:17,000 $ Arr tastene er de unike linjer 658 00:49:17,000 --> 00:49:25,000 fra filen siden vi vet at hvis jeg legger linje inn i denne matrisen 659 00:49:25,000 --> 00:49:33,000 flere ganger vil det bare fortsette å overstyre den gamle verdien, 660 00:49:33,000 --> 00:49:46,000 og vi kan faktisk sette matrise linje inn som seg selv bare sånn. 661 00:49:46,000 --> 00:49:48,000 >> Dette er slags merkelig. 662 00:49:48,000 --> 00:49:52,000 Vi lagrer samme nøkkel verdi-paret igjen og igjen og igjen, 663 00:49:52,000 --> 00:50:00,000 men siden vi er garantert at det vil være bare en nøkkel kalt linje 664 00:50:00,000 --> 00:50:05,000 så hvis vi har en fil som sier-en fil av dyrelyder og det har vaff, vaff, 665 00:50:05,000 --> 00:50:11,000 meow, meow, moo, moo, og hver gang vi leser et dyr støy ut 666 00:50:11,000 --> 00:50:15,000 som woof og vi lagre den i matrisen vår får vi vaff, og deretter andre gang 667 00:50:15,000 --> 00:50:20,000 vi lagrer woof det vil overskrive første gang at vi lagret det. 668 00:50:20,000 --> 00:50:25,000 Til slutt vil vi bare ha én oppføring i rekken 669 00:50:25,000 --> 00:50:33,000 for hver av de dyr lyder i vårt dyrelyder fil. 670 00:50:33,000 --> 00:50:41,000 Gjør dere føle deg trygg på at du kan takle åpningen av en fil i PHP? 671 00:50:41,000 --> 00:50:45,000 En måte å gjøre det-la oss gå over dette raskt-én måte å gjøre det 672 00:50:45,000 --> 00:50:50,000 er med fopen, som vi så tidligere. 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 åpne den i lesemodus, akkurat som i C. 675 00:50:59,000 --> 00:51:02,000 Det er en perfekt god måte å gjøre det. 676 00:51:02,000 --> 00:51:05,000 Du også da for å lese i filen linje for linje 677 00:51:05,000 --> 00:51:12,000 har de samme funksjonene, mange 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, selv om vi ikke liker å bruke det 680 00:51:17,000 --> 00:51:22,000 fordi, husk, det var ikke stor i C. 681 00:51:22,000 --> 00:51:25,000 Du kan gjøre det på samme måte, 682 00:51:25,000 --> 00:51:34,000 men her er en veldig kul ting. 683 00:51:34,000 --> 00:51:41,000 Beklager, jeg ønsker ikke å gjøre $ fil, men det er en funksjon som heter fil i PHP, 684 00:51:41,000 --> 00:51:47,000 og denne funksjonen rett her kult fordi den leser hele innholdet 685 00:51:47,000 --> 00:51:52,000 av filen som du angir, så some_file.txt, 686 00:51:52,000 --> 00:51:56,000 leser hele innholdet i denne filen inn i en matrise 687 00:51:56,000 --> 00:52:03,000 og lar så iterere over det, som er ganske kjekk. 688 00:52:03,000 --> 00:52:07,000 >> Hvis vi går, for eksempel, til vår web browser 689 00:52:07,000 --> 00:52:14,000 og vi ser på Google for PHP-fil 690 00:52:14,000 --> 00:52:23,000 du kan se her at vår manuelle sier at filen leser hele filen inn i en matrise, 691 00:52:23,000 --> 00:52:27,000 og vi kan file_get_contents å returnere innholdet i en fil som en streng, 692 00:52:27,000 --> 00:52:30,000 men vanligvis bare å få det som en matrise er virkelig fint fordi hva det gjør 693 00:52:30,000 --> 00:52:33,000 er det bryter det opp slik at hvert element 694 00:52:33,000 --> 00:52:37,000 i matrisen er en linje av filen, 695 00:52:37,000 --> 00:52:41,000 så hvis vi ser på fil 0, er at den første linjen i filen. 696 00:52:41,000 --> 00:52:46,000 Fil 1, andre linje, fil 2, tredje linje, og så videre og så videre. 697 00:52:46,000 --> 00:52:50,000 Ville det ikke vært fint hvis det var alt du måtte gjøre i C? 698 00:52:50,000 --> 00:52:53,000 Ganske kjekk liten. 699 00:52:53,000 --> 00:52:59,000 David viste dette i foredraget, og idiom han viste var 700 00:52:59,000 --> 00:53:03,000 som i tillegg til vår standard for loop-in PHP hadde vi at 701 00:53:03,000 --> 00:53:09,000 for ($ i = 0; i <10; i + +), 702 00:53:09,000 --> 00:53:16,000 og du kan gjøre dette i PHP også, samme ting- 703 00:53:16,000 --> 00:53:27,000 vi har også denne kule konstruere kalt foreach. 704 00:53:27,000 --> 00:53:32,000 Foreach er veldig praktisk når iterating i matriser eller disse datastrukturer 705 00:53:32,000 --> 00:53:36,000 fordi det tillater deg å trekke ut hvert element i matrisen 706 00:53:36,000 --> 00:53:42,000 uten å måtte manuelt gjøre indekseringen selv, 707 00:53:42,000 --> 00:53:46,000 uten å måtte manuelt lage en indeks variabel, øke den, 708 00:53:46,000 --> 00:53:51,000 trekke ut verdien i matrisen på det punktet, fordi det er en veldig vanlig ting å gjøre. 709 00:53:51,000 --> 00:53:54,000 >> Du har sannsynligvis gjort det tonnevis av ganger når du gjorde C stuff 710 00:53:54,000 --> 00:54:00,000 løpet av semesteret, så med dette foreach 711 00:54:00,000 --> 00:54:06,000 vi kan sløyfe over denne filen array, 712 00:54:06,000 --> 00:54:12,000 og syntaksen er at vi ønsker å nå sløyfe over denne matrisen 713 00:54:12,000 --> 00:54:18,000 og angi at variabelen vi skal bruke til å lagre 714 00:54:18,000 --> 00:54:27,000 elementet av denne matrisen lokalt, lokale for omfanget av denne foreach loop, 715 00:54:27,000 --> 00:54:32,000 er vi kommer til å kalle det linje. 716 00:54:32,000 --> 00:54:38,000 Hvis det er en fil av bare ord, og det er ett ord på en linje 717 00:54:38,000 --> 00:54:43,000 Vi kan kalle det ordet også, egentlig bare du gi denne et navn, 718 00:54:43,000 --> 00:54:49,000 hva du vil kalle det, 719 00:54:49,000 --> 00:55:02,000 og deretter inne i loopen kan du gjøre hva du vil med denne variabelen linje. 720 00:55:02,000 --> 00:55:08,000 Hvis det ikke er nok til å få verdien i matrisen, og du vil også få 721 00:55:08,000 --> 00:55:17,000 indeksen sammen med det du kan angi et navn for indeksen 722 00:55:17,000 --> 00:55:22,000 samt verdien, og nå har du tilgang til 2 variabler. 723 00:55:22,000 --> 00:55:26,000 Du har $ i og linje 724 00:55:26,000 --> 00:55:30,000 der $ i er indeksen i matrisen, 725 00:55:30,000 --> 00:55:38,000 og linje er linjen som du hentet fra filen. 726 00:55:38,000 --> 00:55:49,000 For eksempel, hvis vi ønsket å skrive ut echo linje 0 av filen som dette, 727 00:55:49,000 --> 00:55:57,000 vi kunne gjøre det akkurat som dette, "er Line $ i av filen $ linje," 728 00:55:57,000 --> 00:56:02,000 og her er noe vi heller ikke har sett ennå enten 729 00:56:02,000 --> 00:56:13,000 der jeg har bare helt hoppet over hele denne% s% d virksomhet 730 00:56:13,000 --> 00:56:16,000 at vi måtte håndtere i C, og i stedet har jeg gått rett til 731 00:56:16,000 --> 00:56:19,000 skrive variablene i linje string min. 732 00:56:19,000 --> 00:56:23,000 >> Dette kalles variabel interpolering, string interpolasjon 733 00:56:23,000 --> 00:56:26,000 hvor du stuffing variablene rett i, og PHP tolk 734 00:56:26,000 --> 00:56:31,000 er smart nok når det er lesing gjennom en streng som begynner med anførselstegn, 735 00:56:31,000 --> 00:56:34,000 ikke apostrof, med enkle siterte strenger du ikke kan gjøre dette, 736 00:56:34,000 --> 00:56:38,000 men med doble sitert strenger slik det står gjennom den ser etter variabler. 737 00:56:38,000 --> 00:56:42,000 Det jakte dem ned, og hvis det ser variabler det vil ta verdien av variabelen 738 00:56:42,000 --> 00:56:47,000 og dytte i strengen hvis det kan konvertere den til en streng representasjon, 739 00:56:47,000 --> 00:56:51,000 som er ganske kjekk. 740 00:56:51,000 --> 00:56:56,000 For nå, la oss kommentere ut resten av alt, 741 00:56:56,000 --> 00:57:00,000 lagre dette, og hva vi kan gjøre nå er at vi kan åpne opp en fil 742 00:57:00,000 --> 00:57:06,000 som vi kan kalle some_file.txt-la oss lage en ny fil- 743 00:57:06,000 --> 00:57:15,000 og vi kan sette i en haug med tull ting her bare for å teste alt ut, 744 00:57:15,000 --> 00:57:25,000 lagre det, kaller det some_file.txt, som jeg gjør her oppe på toppen, 745 00:57:25,000 --> 00:57:33,000 og nå om jeg zoome ut bare for å kontrollere at alt er i samme katalog- 746 00:57:33,000 --> 00:57:36,000 det ser ut som jeg har unique.php og some_file.txt i samme katalog. 747 00:57:36,000 --> 00:57:42,000 Hvis jeg kjører php unique.php 748 00:57:42,000 --> 00:57:51,000 se hvordan det skrives ut hver linje i filen min og hva linjen er? 749 00:57:51,000 --> 00:57:56,000 >> Det er ganske kraftig, ikke sant? 750 00:57:56,000 --> 00:58:03,000 Se, det tok 3 linjer med kode for å åpne opp en fil. 751 00:58:03,000 --> 00:58:08,000 Vel, 4 linjer med kode. Jeg kan ikke telle i dag, klart. 752 00:58:08,000 --> 00:58:13,000 Men egentlig bare 2 interessante linjer med kode, fordi de andre 2 var klammeparentes, 753 00:58:13,000 --> 00:58:17,000 men i dette mye kode kunne vi åpne en fil, iterate gjennom det, 754 00:58:17,000 --> 00:58:20,000 trekke ut linjenummer og selve linjen 755 00:58:20,000 --> 00:58:24,000 og skrive det ut. 756 00:58:24,000 --> 00:58:26,000 Kule ting. Charlotte. 757 00:58:26,000 --> 00:58:28,000 [Charlotte] Jeg har et spørsmål om syntaks. 758 00:58:28,000 --> 00:58:33,000 Så foreach avtaler med hver enkelt linje av filen som du åpner, 759 00:58:33,000 --> 00:58:37,000 og når du ønsker å gjøre ting med hver enkelt linje du bare gjøre det som 760 00:58:37,000 --> 00:58:39,000 og deretter knytte verdien. 761 00:58:39,000 --> 00:58:41,000 [Nate H.] Hva du kan gjøre akkurat her-spørsmålet var 762 00:58:41,000 --> 00:58:46,000 den foreach har å gjøre med tabellen, så foreach syntaks 763 00:58:46,000 --> 00:58:51,000 er foreach egentlig, og merker at det ikke er plass 764 00:58:51,000 --> 00:58:53,000 eller noe mellom for og hver. 765 00:58:53,000 --> 00:58:56,000 De må gå rett ved siden av hverandre, 766 00:58:56,000 --> 00:59:00,000 og så tar det i en matrise, 767 00:59:00,000 --> 00:59:05,000 og da har du dette andre søkeord kalt som må være der, 768 00:59:05,000 --> 00:59:11,000 og deretter etter som du kan enten sette en variabel navn, 769 00:59:11,000 --> 00:59:14,000 i så fall kommer til å trekke ut verdiene i tabellen, 770 00:59:14,000 --> 00:59:20,000 ikke indeksene, eller hvis du gjør det som vi har skrevet under 771 00:59:20,000 --> 00:59:24,000 du får nøklene og verdiene. 772 00:59:24,000 --> 00:59:33,000 Du har foreach element i matrisen eller par av tabellen som tastet til verdi 773 00:59:33,000 --> 00:59:38,000 eller som bare verdi. 774 00:59:38,000 --> 00:59:40,000 Avhengig av hva du trenger, hvis du ikke trenger nøklene, 775 00:59:40,000 --> 00:59:42,000 så kan du gå med verdien. 776 00:59:42,000 --> 00:59:45,000 Hvis du vil tastene du kan gå med dem også. 777 00:59:45,000 --> 00:59:48,000 >> [Charlotte] Jeg har også innsett at vi aldri erklærte jeg eller linje. 778 00:59:48,000 --> 00:59:51,000 Hvordan det engang vet hva de er? 779 00:59:51,000 --> 00:59:53,000 [Nate H.] Hva mener du med fortolle? 780 00:59:53,000 --> 00:59:57,000 [Charlotte] Vi har aldri fortalt dem hva jeg eller linje betyr. 781 00:59:57,000 --> 01:00:01,000 [Nate H.] Vi har aldri fortalt datamaskinen hva jeg eller linje betyr i forhold til- 782 01:00:01,000 --> 01:00:05,000 [Charlotte] At de indeksert eller at they're- 783 01:00:05,000 --> 01:00:09,000 [Nate H.] Vi har aldri fortalt at dette er ment å være indeksen eller nøkkelen og verdien, 784 01:00:09,000 --> 01:00:13,000 og det er fordi det er PHP-tolken. 785 01:00:13,000 --> 01:00:17,000 Dette fungerer som erklæringen og sier OK, er nøkkelen til å bli 786 01:00:17,000 --> 01:00:20,000 en variabel kalt jeg lagret i en variabel kalt jeg. 787 01:00:20,000 --> 01:00:24,000 Verdien skal lagres i en variabel kalt linje, 788 01:00:24,000 --> 01:00:28,000 så dette fungerer som erklæringen av disse variablene 789 01:00:28,000 --> 01:00:35,000 og sier $ i er en nøkkel, og $ linjen er en verdi. 790 01:00:35,000 --> 01:00:37,000 Ja, Ella. 791 01:00:37,000 --> 01:00:41,000 [Ella] Hvis tastene ikke er gjort numerisk 792 01:00:41,000 --> 01:00:44,000 Hvordan bestemmer det hvilken rekkefølge det kommer til å skrive ut alt? 793 01:00:44,000 --> 01:00:47,000 Er det akkurat som den rekkefølgen det er lagt inn i? 794 01:00:47,000 --> 01:00:51,000 [Nate H.] La oss gi det et forsøk. 795 01:00:51,000 --> 01:00:57,000 La oss lage en variabel kalt arr, 796 01:00:57,000 --> 01:01:06,000 og vi kan gjøre en går til 7. 797 01:01:06,000 --> 01:01:19,000 La oss si 0 går til en annen tabell med 1, 2 eller eple. 798 01:01:19,000 --> 01:01:30,000 La oss si 7 går til en, går b til 2, 799 01:01:30,000 --> 01:01:39,000 og 3 går til 4. 800 01:01:39,000 --> 01:01:44,000 Dette er en slags sprø jakt eksempel fordi vi blande opp 801 01:01:44,000 --> 01:01:47,000 strenger og heltall over alt. 802 01:01:47,000 --> 01:01:50,000 Det er ingen reell for å denne tabellen. 803 01:01:50,000 --> 01:01:55,000 Jeg mener, vi kunne bestille alt i alfabetisk rekkefølge etter nøklene. 804 01:01:55,000 --> 01:01:57,000 Vi kunne bestille alt alfabetisk etter verdien. 805 01:01:57,000 --> 01:02:00,000 >> Vi kan prøve og ta hensyn til at noen er strenger, noen er ints, 806 01:02:00,000 --> 01:02:03,000 og vi kan prøve og konvertere dem alle til samme type og se hva som skjer, 807 01:02:03,000 --> 01:02:09,000 eller vi kan vurdere dem i verdien som vi allerede har angitt dem 808 01:02:09,000 --> 01:02:14,000 der vi legger denne fyren i første, denne fyren i andre, denne fyren i tredje, 809 01:02:14,000 --> 01:02:19,000 denne fyren i fjerde, et cetera. 810 01:02:19,000 --> 01:02:23,000 La oss se hva som skjer når vi kjører denne koden. 811 01:02:23,000 --> 01:02:29,000 Hvis vi blar du ned og gjøre det samme slags ting, 812 01:02:29,000 --> 01:02:31,000 og her er det ikke som skrives ut de nye linjene. 813 01:02:31,000 --> 01:02:35,000 Når den lese ting ut av filen ble inkludert de nye linjene i verdiene, 814 01:02:35,000 --> 01:02:38,000 som var grunnen til det skrives ut pent, mens her er det ikke, 815 01:02:38,000 --> 01:02:40,000 så det er derfor alt er smushed sammen. 816 01:02:40,000 --> 01:02:44,000 La oss legge til i den nye linjen bare for å gjøre det hyggelig. 817 01:02:44,000 --> 01:02:51,000 La oss kjøre det, og så her 818 01:02:51,000 --> 01:02:54,000 se på hva som skjedde. 819 01:02:54,000 --> 01:03:00,000 Det skrives alt ut i den rekkefølgen vi sette det inn i matrisen. 820 01:03:00,000 --> 01:03:10,000 Det bevarer orden i den forstand. 821 01:03:10,000 --> 01:03:15,000 >> Kommer tilbake til dette problemet med uniques 822 01:03:15,000 --> 01:03:20,000 der vi ønsker å være i stand til å iterere over en fil, 823 01:03:20,000 --> 01:03:24,000 og vi vil gi den some_file.txt, 824 01:03:24,000 --> 01:03:27,000 og vi kommer til å iterere over det som dette. 825 01:03:27,000 --> 01:03:31,000 Vi sa at vi ønsket å bruke en matrise for å sørge for at vi hadde fått alle de 826 01:03:31,000 --> 01:03:36,000 unike linjer ut av det, og vi kunne gjøre det veldig lett 827 01:03:36,000 --> 01:03:49,000 ved å bare lagre i en matrise som vi selvfølgelig erklære utenfor en loop, 828 01:03:49,000 --> 01:03:55,000 og vi sa at hvis vi brukte linjene i filen som nøklene i array vår 829 01:03:55,000 --> 01:03:59,000 hvis vi gikk inn i en duplikatlinje vi skulle overstyre den forrige verdien. 830 01:03:59,000 --> 01:04:08,000 Det er ikke alltid mulig å ha to nøkler som er identiske i samme rekke. 831 01:04:08,000 --> 01:04:13,000 Vi kan gjøre nettopp det. 832 01:04:13,000 --> 01:04:17,000 Vi vil bli kvitt denne ekko uttalelse her. 833 01:04:17,000 --> 01:04:24,000 Her er vi lagrer linjen i filen i matrisen vår 834 01:04:24,000 --> 01:04:28,000 bruker seg selv som nøkkelen. 835 01:04:28,000 --> 01:04:32,000 Ingenting til det, og det viser seg at vi ikke engang trenger denne nøkkelen. 836 01:04:32,000 --> 01:04:38,000 Vi trenger ikke at jeg variabel. 837 01:04:38,000 --> 01:04:43,000 På dette punktet hvis vi skulle gjøre en annen foreach loop 838 01:04:43,000 --> 01:04:48,000 og vi var å sløyfe over hver arr 839 01:04:48,000 --> 01:04:56,000 og linje nå hvis vi ekko-oops, beklager. 840 01:04:56,000 --> 01:05:00,000 Vi kan ikke bruke komma. Vi må bruke dette som søkeord. 841 01:05:00,000 --> 01:05:05,000 Hvis vi nå ekko linje vi skulle få alle de unike ordene i filen. 842 01:05:05,000 --> 01:05:10,000 Hvis vi går opp til some_file.txt, 843 01:05:10,000 --> 01:05:19,000 og la oss si at vi eple, banan, eple, eple, banan, 844 01:05:19,000 --> 01:05:22,000 hvis vi skriver ut alle de unike ordene i denne filen vi skal bare få 845 01:05:22,000 --> 01:05:30,000 eple og banan for å skrive ut. 846 01:05:30,000 --> 01:05:36,000 Hvis vi lagre denne, nå her vi vil zoome tilbake i, 847 01:05:36,000 --> 01:05:44,000 php unique.php, og ta-da. 848 01:05:44,000 --> 01:05:51,000 Vi har med hell uniqued filen. 849 01:05:51,000 --> 01:05:55,000 >> Den siste delen av dette problemet er som ber deg å sortere denne tabellen før du skrev det ut 850 01:05:55,000 --> 01:05:58,000 fordi i dette enkle eksempelet som vi nettopp har gjort 851 01:05:58,000 --> 01:06:04,000 Vi var heldig i den forstand at fil- 852 01:06:04,000 --> 01:06:06,000 vi gjorde dette contrived eksempel med epler og bananer. 853 01:06:06,000 --> 01:06:08,000 Det var allerede sortert. 854 01:06:08,000 --> 01:06:19,000 Men ved hjelp av den enkle typen funksjonen kan du sortere en array, som er ganske kjekk. 855 01:06:19,000 --> 01:06:24,000 Den siste tingen jeg ønsket å snakke med dere om veldig raskt 856 01:06:24,000 --> 01:06:31,000 er at denne typen PHP er vel og bra, og det er super praktisk 857 01:06:31,000 --> 01:06:43,000 å vite hvordan du skal gjøre hvis du noen gang trenger å gjøre små, raske ting programmatisk. 858 01:06:43,000 --> 01:06:48,000 For eksempel, hvis jeg trenger å skrive et program som for eksempel 859 01:06:48,000 --> 01:06:53,000 setter alle i seksjoner jeg ikke kommer til å gå og skrive det i C. 860 01:06:53,000 --> 01:06:55,000 Det kommer til å bli lang. 861 01:06:55,000 --> 01:06:57,000 Det kommer til å bli en slags smerte, spesielt hvis det er filer som er involvert, 862 01:06:57,000 --> 01:07:00,000 akkurat som dere har sett. 863 01:07:00,000 --> 01:07:05,000 Det er så hyggelig at med bare dette mye kode her 864 01:07:05,000 --> 01:07:08,000 vi var i stand til å rippe gjennom en fil, trekke ut alle de unike verdiene 865 01:07:08,000 --> 01:07:11,000 og skrive dem ut igjen. 866 01:07:11,000 --> 01:07:16,000 >> Men for dine oppgaver, for dine prosjekter, 867 01:07:16,000 --> 01:07:20,000 hvis du bygger nettsteder med PHP strømmen er at 868 01:07:20,000 --> 01:07:25,000 vi kjører våre PHP-filer gjennom denne tolk, 869 01:07:25,000 --> 01:07:29,000 og tolken behandler alt innen PHP-koder, 870 01:07:29,000 --> 01:07:34,000 forlater alt annet urørt og spytter ut resultatene. 871 01:07:34,000 --> 01:07:40,000 Vi kan gjøre dette for å bygge HTML programmatisk. 872 01:07:40,000 --> 01:07:46,000 Nå, hvis vi går tilbake til spec, det siste problemet i spec 873 01:07:46,000 --> 01:07:56,000 snakker om denne ideen om konsentrasjoner 874 01:07:56,000 --> 01:08:01,000 og skape en drop-down menyen, 875 01:08:01,000 --> 01:08:06,000 som du kanskje eller kanskje ikke ønsker å gjøre, avhengig av hva det endelige prosjektet gjør, 876 01:08:06,000 --> 01:08:13,000 som lar brukeren velge fra en liste over alle mulige konsentrasjoner 877 01:08:13,000 --> 01:08:15,000 deres en konsentrasjon. 878 01:08:15,000 --> 01:08:21,000 Nå er denne typen av en smerte å skrive dette ut 879 01:08:21,000 --> 01:08:25,000 og må gjøre alt dette manuelt, spesielt når du har for å sikre at 880 01:08:25,000 --> 01:08:28,000 at du har alle de vinkelparenteser på rett sted og alle sitater på rett sted, 881 01:08:28,000 --> 01:08:34,000 så med PHP kan du gjøre dette programmatisk, og du kan gjøre dette veldig raskt. 882 01:08:34,000 --> 01:08:36,000 >> La oss se hvordan du gjør dette. 883 01:08:36,000 --> 01:08:42,000 Vi kommer til å åpne opp en ny fil. 884 01:08:42,000 --> 01:08:46,000 Vi kommer til å sette i vår PHP-koder. 885 01:08:46,000 --> 01:08:53,000 Vi kommer til å kalle det concentrations.php, 886 01:08:53,000 --> 01:08:58,000 og nå når du gjør dette, slik en god ting tenke 887 01:08:58,000 --> 01:09:02,000 når du prøver å mikse og matche din PHP og HTML 888 01:09:02,000 --> 01:09:08,000 er å finne ut, ok, hva er den delen som jeg ønsker å programmatisk generere? 889 01:09:08,000 --> 01:09:11,000 Hva er den delen som jeg kan programmatisk generere? 890 01:09:11,000 --> 01:09:17,000 Det er sant at du kan gjøre alt i HTML 891 01:09:17,000 --> 01:09:19,000 innsiden av PHP blokker. 892 01:09:19,000 --> 01:09:24,000 Du kan ekko alle HTML som strenger. 893 01:09:24,000 --> 01:09:30,000 For eksempel, hvis jeg ønsker å begynne å gjøre de utvalgte koder innsiden av PHP 894 01:09:30,000 --> 01:09:46,000 Jeg kan si ekko, sier velg name = konsentrasjon, 895 01:09:46,000 --> 01:09:49,000 og deretter ned under kunne jeg ha en annen ekko tag 896 01:09:49,000 --> 01:09:57,000 eller en annen ekko kalt lukke velge. 897 01:09:57,000 --> 01:10:00,000 Dette er en måte å gjøre det fordi det er dette bokstavelig talt kommer til å gjøre 898 01:10:00,000 --> 01:10:09,000 er skrive ut denne strengen når det kjøres gjennom PHP tolk, 899 01:10:09,000 --> 01:10:12,000 så resultatet vil være HTML. 900 01:10:12,000 --> 01:10:18,000 Hvis jeg lagre denne filen som det er akkurat nå 901 01:10:18,000 --> 01:10:24,000 og jeg kjører php concentrations.php 902 01:10:24,000 --> 01:10:26,000 se på hva jeg fikk. 903 01:10:26,000 --> 01:10:30,000 Jeg fikk denne åpne Lukk Velg tag. 904 01:10:30,000 --> 01:10:36,000 >> Hvis jeg skulle gjøre dette, og jeg skulle redde dette resultatet til en fil, 905 01:10:36,000 --> 01:10:45,000 si, concentrations.html-vent, det ser ut som jeg har gått over til den andre siden- 906 01:10:45,000 --> 01:11:02,000 nå hvis jeg åpner opp her concentrations.html du ser at jeg har en gyldig HTML-fil. 907 01:11:02,000 --> 01:11:05,000 Er den slags rare? 908 01:11:05,000 --> 01:11:09,000 Vi bruker PHP for å lage HTML, lage gyldig HTML. 909 01:11:09,000 --> 01:11:13,000 Måten vi gjør det er vi bare ha PHP print 910 01:11:13,000 --> 01:11:16,000 HTML som vi ønsker den skal skrive ut. 911 01:11:16,000 --> 01:11:20,000 Dette er bokstavelig talt hvordan PHP-nettsider virker. 912 01:11:20,000 --> 01:11:24,000 Når du besøker en nettside som sender deg til noe sånt 913 01:11:24,000 --> 01:11:30,000 noe, noe, noe dot com slash index.php 914 01:11:30,000 --> 01:11:33,000 datamaskinen er bokstavelig talt kalle opp index.php, 915 01:11:33,000 --> 01:11:38,000 kjører det gjennom PHP tolk, og hva junk kommer ut 916 01:11:38,000 --> 01:11:49,000 det er å sende tilbake til nettleseren og si hei, nettleser, tolke dette som HTML. 917 01:11:49,000 --> 01:11:54,000 Det fine er at det kan være smertefullt å stadig skrive ekko, ekko, ekko, ekko 918 01:11:54,000 --> 01:11:59,000 og legge alt i sitater som dette, så hvis du ønsker å skrive 919 01:11:59,000 --> 01:12:04,000 HTML som kommer til å være statisk selv kan du gjøre det slik, 920 01:12:04,000 --> 01:12:16,000 sette det utenfor, lukke den, 921 01:12:16,000 --> 01:12:21,000 og her du bare sette inn PHP koder som du vet 922 01:12:21,000 --> 01:12:26,000 Vil du programmatisk generere, og i dette tilfellet er det de alternativ tags 923 01:12:26,000 --> 01:12:31,000 som er en smerte å generere. 924 01:12:31,000 --> 01:12:37,000 >> For eksempel kan vi generere tusen alternativ tags 925 01:12:37,000 --> 01:12:48,000 ved å gjøre noe som dette, $ i <1000, i + + 926 01:12:48,000 --> 01:13:00,000 og sier ekko alternativ value = $-whoops, jeg kan ikke gjøre det. 927 01:13:00,000 --> 01:13:03,000 Vel, la oss gi det en sjanse og se hva som skjer. 928 01:13:03,000 --> 01:13:22,000 $ I og deretter si $ i 01:13:27,000 Snarere enn å måtte skrive ut det alternativet tag tusen forskjellige tider 930 01:13:27,000 --> 01:13:33,000 Jeg bruker PHP-koden til å generere den automatisk, programmatisk. 931 01:13:33,000 --> 01:13:38,000 Kind of nifty. Ja. 932 01:13:38,000 --> 01:13:41,000 Jeg husker dette blir nevnt i enten forelesningen eller gjennomgang, 933 01:13:41,000 --> 01:13:43,000 men hva er forskjellen mellom anførselstegnene, 934 01:13:43,000 --> 01:13:45,000 de normale og disse enkle ting? 935 01:13:45,000 --> 01:13:49,000 Det er faktisk noe som jeg har gjort feil her at jeg skulle vise deg. 936 01:13:49,000 --> 01:13:52,000 De enkle anførselstegn tillater ikke noen spesielle tegn, 937 01:13:52,000 --> 01:13:57,000 så alt i én sitert streng tolkes bokstavelig. 938 01:13:57,000 --> 01:14:02,000 Hvis jeg hadde en \ n innsiden av apostrof og jeg lagre denne, for eksempel, 939 01:14:02,000 --> 01:14:07,000 og nå går jeg ned hit og kjøre it- 940 01:14:07,000 --> 01:14:12,000 oops, der jeg kommer? 941 01:14:12,000 --> 01:14:19,000 Åh, det er fordi jeg glemte $. 942 01:14:19,000 --> 01:14:25,000 >> Nå hvis jeg åpner opp faktisk, her vil vi bli kvitt den skrive til en fil. 943 01:14:25,000 --> 01:14:27,000 Vi vil bare lese den. 944 01:14:27,000 --> 01:14:34,000 Her ser du at jeg har fått denne bokstavelige \ n i strengen, som ikke en faktisk ny linje, 945 01:14:34,000 --> 01:14:38,000 og likeså, i stedet for faktisk interpolere verdien av denne variabelen 946 01:14:38,000 --> 01:14:42,000 det ga meg $ i seg selv, som er en slags smerte. 947 01:14:42,000 --> 01:14:46,000 Veien rundt dette på er å bruke anførselstegn, 948 01:14:46,000 --> 01:14:52,000 og når du bruker doble anførselstegn det faktisk vil 949 01:14:52,000 --> 01:14:56,000 skikkelig interpolere verdiene av alle disse variablene i her 950 01:14:56,000 --> 01:14:59,000 og også innse dette \ n å være den nye linjen som det er 951 01:14:59,000 --> 01:15:02,000 og ikke \ n. 952 01:15:02,000 --> 01:15:07,000 Bruke enkle de er hyggelig når du har 953 01:15:07,000 --> 01:15:10,000 tegn som kan tolkes som spesialtegn fordi da du ikke trenger å 954 01:15:10,000 --> 01:15:15,000 unnslippe dem hele tiden. 955 01:15:15,000 --> 01:15:18,000 Ting kan bli rotete, og ofte slik jeg gjør det, 956 01:15:18,000 --> 01:15:24,000 bare for å gjøre ting enkelt, er at hvis jeg skal ha noe 957 01:15:24,000 --> 01:15:31,000 HTML liker i min kode jeg skal ta edit innen apostrof 958 01:15:31,000 --> 01:15:36,000 og deretter bruke denne sammensetning operatør 959 01:15:36,000 --> 01:15:43,000 å sette sammen de variablene i. 960 01:15:43,000 --> 01:15:47,000 Dette er en annen måte å gjøre det 961 01:15:47,000 --> 01:15:52,000 hvor vi har fått prikk som kommer til å koble dette er en streng 962 01:15:52,000 --> 01:15:56,000 med dette med dette med dette, 963 01:15:56,000 --> 01:15:59,000 og nå har jeg ikke trenger å unnslippe disse anførselstegn. 964 01:15:59,000 --> 01:16:02,000 Jeg trenger ikke å bruke denne fyren til å flykte. 965 01:16:02,000 --> 01:16:08,000 De vil bokstavelig talt bli skrevet ut som doble anførselstegn og deretter denne fyren her. 966 01:16:08,000 --> 01:16:11,000 Dette er en annen måte å blande alt sammen. 967 01:16:11,000 --> 01:16:14,000 >> [Student] Også når du gjentok getType var det ingen anførselstegn i det hele tatt. 968 01:16:14,000 --> 01:16:22,000 Høyre, så ekko er slags spesiell i den forstand at du ikke trenger parentes. 969 01:16:22,000 --> 01:16:29,000 Du trenger ikke å ha anførselstegnene nødvendigvis rundt variabler, 970 01:16:29,000 --> 01:16:37,000 som det er gyldig å si echo $ i, og det kommer til å tolke dette som en streng. 971 01:16:37,000 --> 01:16:44,000 Det kommer til å gjøre det kastet, slik at vi kunne gjøre dette, og det er gyldig også, men vi trenger ikke det. 972 01:16:44,000 --> 01:16:48,000 Det er valgfritt. 973 01:16:48,000 --> 01:16:53,000 I denne ukens oppgavesettet se opp for mye av denne typen ting 974 01:16:53,000 --> 01:16:58,000 hvor du mikse og matche HTML med PHP 975 01:16:58,000 --> 01:17:08,000 akkurat som dette, og nå hvis vi bla tilbake og vi kjører dette 976 01:17:08,000 --> 01:17:13,000 Vi kan se at vi har en hel haug med opsjonsverdier 977 01:17:13,000 --> 01:17:15,000 som bare fikk skrevet ut. 978 01:17:15,000 --> 01:17:20,000 Vi har alt dette HTML som fikk generert veldig raskt for oss. 979 01:17:20,000 --> 01:17:22,000 Jeg skal la det som en øvelse. 980 01:17:22,000 --> 01:17:24,000 Det er svært lik den filen lesing at vi gjorde tidligere. 981 01:17:24,000 --> 01:17:31,000 >> Det er en concentrations.txt fil som du kan trekke ned fra CDN, 982 01:17:31,000 --> 01:17:34,000 og du kan åpne den med det samme foreach triks som vi gjorde tidligere, 983 01:17:34,000 --> 01:17:39,000 og foreach du må bare ekko et alternativ og plugg i 984 01:17:39,000 --> 01:17:44,000 de aktuelle verdiene, de aktuelle tastene og indekser, 985 01:17:44,000 --> 01:17:49,000 og da får du en rullgardin som bokstavelig talt skaper 986 01:17:49,000 --> 01:17:54,000 programmatisk for deg alle de ulike konsentrasjoner ved Harvard. 987 01:17:54,000 --> 01:17:57,000 En hendig ting å ha. 988 01:17:57,000 --> 01:18:02,000 Det er mye av konfigurasjon ting for dette oppdraget. 989 01:18:02,000 --> 01:18:07,000 Hvis du ikke har gjort det allerede ta den neste halvtimen, time, 990 01:18:07,000 --> 01:18:10,000 litt tid i kveld definitivt sikkert, 991 01:18:10,000 --> 01:18:14,000 gå gjennom oppgavesettet spec, 992 01:18:14,000 --> 01:18:20,000 se hva som skjer med å sette opp vhosts, den lokale verten, alt det der. 993 01:18:20,000 --> 01:18:24,000 En ting å peke ut akkurat nå, er at 994 01:18:24,000 --> 01:18:30,000 i de fleste oppgavesett har vi gått inn i Dropbox-mappen 995 01:18:30,000 --> 01:18:34,000 og deretter laste oppgavesettet zip-filen og utpakking av det. 996 01:18:34,000 --> 01:18:36,000 For dette problemet sett ikke du vil. 997 01:18:36,000 --> 01:18:40,000 Du ønsker å gå inn i denne vhosts katalogen. 998 01:18:40,000 --> 01:18:45,000 Det er lurt å gå inn vhosts og gå inn den lokale verten katalog i det, 999 01:18:45,000 --> 01:18:50,000 og det er her du ønsker å trekke ned zip-filen, 1000 01:18:50,000 --> 01:18:55,000 pakk den, og gjør deg klar til å gå. 1001 01:18:55,000 --> 01:18:57,000 Du må følge trinnene nøye. 1002 01:18:57,000 --> 01:19:02,000 >> Hvis du har noen spørsmål, send e-post, legge det ut på Diskuter, kommer til kontortiden. 1003 01:19:02,000 --> 01:19:08,000 Takk folkens. Neste uke skal vi ha en gjennomgang session for quiz. 1004 01:19:08,000 --> 01:19:12,000 Nyt siste oppgaven. Jeg håper alt går veldig bra. 1005 01:19:12,000 --> 01:19:14,000 [CS50.TV]