1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Afsnit 8] [mindre behagelig] 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 vores andet til sidste afsnit. 5 00:00:11,000 --> 00:00:13,000 I denne uge vil vi snakke om PHP, og derefter næste uge 6 00:00:13,000 --> 00:00:17,000 vi vil gøre en lille anmeldelse til Quiz 1. 7 00:00:17,000 --> 00:00:20,000 Vi vil starte på side 3 af problemet sætter pack, 8 00:00:20,000 --> 00:00:28,000 og vi vil arbejde gennem den del af spørgsmålene forholdsvis hurtigt. 9 00:00:28,000 --> 00:00:34,000 På side 3, begynder vi at tale om denne forskel mellem C og PHP 10 00:00:34,000 --> 00:00:38,000 i den forstand, at PHP er et dynamisk skrevet sprog, 11 00:00:38,000 --> 00:00:42,000 hvorimod C statisk indtastes, 12 00:00:42,000 --> 00:00:46,000 og har nogen virkelig hurtigt gjort nogen kodning i noget 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 nyt? Okay. 15 00:00:53,000 --> 00:00:56,000 >> Alle disse sprog, som jeg lige har nævnt 16 00:00:56,000 --> 00:01:01,000 er meget forskellige fra sprog som C og C + + og Java 17 00:01:01,000 --> 00:01:04,000 i den forstand, at når du angiver en variabel, du ikke nødt til at erklære 18 00:01:04,000 --> 00:01:09,000 hvilken form for variabel det er, så i C vi var fast at skulle altid sige 19 00:01:09,000 --> 00:01:13,000 dette vil være en int variabel, eller det vil være en char * variabel, 20 00:01:13,000 --> 00:01:16,000 hvorimod med PHP, med Python, med Ruby, 21 00:01:16,000 --> 00:01:20,000 med en masse af disse mere moderne sprog, du ikke behøver at gøre det på alle. 22 00:01:20,000 --> 00:01:24,000 Du skal bare erklære din variabel, og i tilfælde af PHP 23 00:01:24,000 --> 00:01:28,000 De erklærer, at det er en variabel ved forudfastsætte det med en $ tegn, 24 00:01:28,000 --> 00:01:35,000 og derefter typen af ​​variablen afhænger af den værdi det er holder, 25 00:01:35,000 --> 00:01:38,000 der er lidt cool. 26 00:01:38,000 --> 00:01:44,000 For at spille rundt med det en lille smule, har vi prøve PHP-kode lige her 27 00:01:44,000 --> 00:01:47,000 i mellem start og slut tags. 28 00:01:47,000 --> 00:01:53,000 Vi bruger denne form for som HTML i den forstand, at 29 00:01:53,000 --> 00:01:56,000 vi har fået disse vinkelbeslagene her for at åbne 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 slags syntaks med XML også. 32 00:02:03,000 --> 00:02:06,000 >> Dette indikerer begyndelsen af ​​en PHP blok. 33 00:02:06,000 --> 00:02:09,000 Dette? Php er specifik for PHP. 34 00:02:09,000 --> 00:02:16,000 Vi lukker alt med en?> Så godt. 35 00:02:16,000 --> 00:02:22,000 Lad os åbne op for en fil i vores apparatet ved hjælp uanset hvad du gerne vil. 36 00:02:22,000 --> 00:02:25,000 I denne pakke den siger at kalde dynamic.php. 37 00:02:25,000 --> 00:02:29,000 I sandhed, kan du kalde det hvad du vil, men filnavnet vil komme op 38 00:02:29,000 --> 00:02:34,000 og være vigtigt senere, så bare huske hvad du kalder det. 39 00:02:34,000 --> 00:02:36,000 Jeg har tænkt mig at skifte over til apparatet, 40 00:02:36,000 --> 00:02:43,000 og jeg har tænkt mig at lave en mappe til 41 00:02:43,000 --> 00:02:48,000 § 9 Jeg tror, ​​vi er på nu. 42 00:02:48,000 --> 00:02:51,000 Og vi vil gå ind i afsnit 9, 43 00:02:51,000 --> 00:02:54,000 og jeg har tænkt mig at bruge gedit. 44 00:02:54,000 --> 00:02:59,000 Lad os se, gedit, og jeg har tænkt mig at kalde mine dynamic.php. 45 00:02:59,000 --> 00:03:03,000 Boom. 46 00:03:03,000 --> 00:03:06,000 Inden dynamic.php, dette da er en PHP-fil 47 00:03:06,000 --> 00:03:09,000 og jeg vil køre dette gennem PHP tolk 48 00:03:09,000 --> 00:03:12,000 Jeg er nødt til at starte det hele ud med disse åbne tags, 49 00:03:12,000 --> 00:03:17,000 så jeg har tænkt mig at starte dem med det samme, 50 00:03:17,000 --> 00:03:23,000 give mig selv en lille plads i mellem tags, 51 00:03:23,000 --> 00:03:26,000 og derefter pointen med denne øvelse var at lege med 52 00:03:26,000 --> 00:03:34,000 denne funktion kaldet getType, så getType, denne funktion lige her. 53 00:03:34,000 --> 00:03:38,000 >> Bemærk, at der ikke er understregning eller mellemrum eller bindestreg eller noget lignende 54 00:03:38,000 --> 00:03:42,000 adskille de 2 ord, og få skrive, bare ét ord helt. 55 00:03:42,000 --> 00:03:46,000 Men hvad dette vil gøre, er, hvis jeg passere i en variabel til getType, 56 00:03:46,000 --> 00:03:51,000 sige $ var eller $ x, 57 00:03:51,000 --> 00:03:55,000 Dette vil fortælle mig slags i en debugging format 58 00:03:55,000 --> 00:03:59,000 hvad navnet på denne type er. 59 00:03:59,000 --> 00:04:03,000 Vi vil eksperimentere her. 60 00:04:03,000 --> 00:04:07,000 Især, hvis du ser tilbage på Pset spec 61 00:04:07,000 --> 00:04:11,000 vi har fået et par forskellige linjer kode her. 62 00:04:11,000 --> 00:04:16,000 I den første linje kode vi initialisere denne variabel, $ var, 63 00:04:16,000 --> 00:04:21,000 at være lig med 7, og så har vi denne printf linje 64 00:04:21,000 --> 00:04:25,000 der siger hey, printf var tomt. 65 00:04:25,000 --> 00:04:29,000 Printf er en af ​​de mange måder, vi kan udskrive ting i PHP. 66 00:04:29,000 --> 00:04:33,000 Ofte vil du se ekko funktion, der bruges i stedet for printf, 67 00:04:33,000 --> 00:04:40,000 men printf vi kender alle have været kodning i C for et stykke tid. 68 00:04:40,000 --> 00:04:42,000 Hvad du rent faktisk kan gøre, er at Lad os se om kopiere og indsætte værker. 69 00:04:42,000 --> 00:04:46,000 Jeg har tænkt mig at give det en chance. 70 00:04:46,000 --> 00:04:52,000 Vi vil gå tilbage over til apparatet. 71 00:04:52,000 --> 00:05:00,000 Okay, og der går vi. 72 00:05:00,000 --> 00:05:05,000 Og afstanden er lidt funky, men here we go. 73 00:05:05,000 --> 00:05:08,000 Vi har fået denne kode herinde. 74 00:05:08,000 --> 00:05:11,000 >> [Student] Er det ikke god stil at fane det? 75 00:05:11,000 --> 00:05:13,000 Undskyld? 76 00:05:13,000 --> 00:05:15,000 [Student] Er det almindeligt at fane det? 77 00:05:15,000 --> 00:05:21,000 Højre, så Sam spørger, om det er konvention til fane det eller ej. 78 00:05:21,000 --> 00:05:23,000 Typisk ja. 79 00:05:23,000 --> 00:05:26,000 I dette tilfælde har jeg valgt at lade være. 80 00:05:26,000 --> 00:05:33,000 Ærligt, vil du se forskellige ting mellem forskellige programmører. 81 00:05:33,000 --> 00:05:40,000 PHP bruges typisk ofte i kombination med HTML 82 00:05:40,000 --> 00:05:45,000 og andre sprog, og så nogle gange udskrivningen vil se lidt funky 83 00:05:45,000 --> 00:05:50,000 hvis du led i PHP start og slut tags. 84 00:05:50,000 --> 00:05:53,000 Det er virkelig afhænger af. 85 00:05:53,000 --> 00:05:56,000 I dette tilfælde kopiere og indsætte ikke indsætte fanerne i for mig, 86 00:05:56,000 --> 00:06:02,000 men det helt sikkert gør, som du sagde, gør det klarere. 87 00:06:02,000 --> 00:06:06,000 Okay, hvis du gemmer denne kode i dynamic.php 88 00:06:06,000 --> 00:06:10,000 så hvad du kan gøre, er at komme ned til din terminal vindue hvor jeg er lige hernede 89 00:06:10,000 --> 00:06:17,000 i gedit, og gøre hvad der svarer til compile 90 00:06:17,000 --> 00:06:20,000 hjælp gøre og derefter kører din kode i C 91 00:06:20,000 --> 00:06:25,000 alt hvad du skal gøre med PHP-fil er at starte op PHP tolk, 92 00:06:25,000 --> 00:06:30,000 der er et lille program kaldet PHP, 93 00:06:30,000 --> 00:06:35,000 og det argument, du giver til tolken er den fil, du vil fortolke. 94 00:06:35,000 --> 00:06:40,000 I dette tilfælde dynamic.php. 95 00:06:40,000 --> 00:06:43,000 Whoops, hvor har jeg sige det? 96 00:06:43,000 --> 00:06:52,000 Åh, jeg sætte det i afsnit 9, og her er jeg. Det er derfor. 97 00:06:52,000 --> 00:06:57,000 >> Nu hvis jeg løber det igen 98 00:06:57,000 --> 00:07:02,000 vi se, at i min første getType funktionskald 99 00:07:02,000 --> 00:07:04,000 VaR er et heltal. 100 00:07:04,000 --> 00:07:12,000 I det næste var er en streng, og derefter i den tredje var en boolean. 101 00:07:12,000 --> 00:07:15,000 Hvad er interessant ved dette er, hvis vi rulle tilbage op ser vi, at 102 00:07:15,000 --> 00:07:18,000 disse er typer, svarende til dem, som vi havde i C. 103 00:07:18,000 --> 00:07:22,000 Vi havde int'er i C. 104 00:07:22,000 --> 00:07:26,000 Vi slags havde strenge i C, 105 00:07:26,000 --> 00:07:31,000 så strenge var ikke en helt legit type i den forstand, at 106 00:07:31,000 --> 00:07:37,000 vores CS50 streng var virkelig hvad? 107 00:07:37,000 --> 00:07:39,000 Undskyld? Missy? 108 00:07:39,000 --> 00:07:41,000 [Missy] Char *. 109 00:07:41,000 --> 00:07:43,000 Ja, det var denne char * vi bruges. 110 00:07:43,000 --> 00:07:47,000 I begyndelsen af ​​semestret vi brugte strengen type, 111 00:07:47,000 --> 00:07:52,000 men det var virkelig en char * under kølerhjelmen. 112 00:07:52,000 --> 00:07:58,000 Vi har lige typen defineret det, mens det i PHP disse strenge er en egentlig type. 113 00:07:58,000 --> 00:08:07,000 Der er ikke mere af denne char * type stuff. 114 00:08:07,000 --> 00:08:10,000 >> Du vil se, at vi kan gøre mange flere ting med strygere 115 00:08:10,000 --> 00:08:14,000 meget lettere i PHP, end vi kunne i C, 116 00:08:14,000 --> 00:08:17,000 og så endelig, har vi denne boolean type, og den store forskel her er, at 117 00:08:17,000 --> 00:08:21,000 hvis vi rulle tilbage ned ser vi, at navnet på disse typer 118 00:08:21,000 --> 00:08:28,000 er nu heltal, streng, og boolean i stedet for int og bool, 119 00:08:28,000 --> 00:08:31,000 og da du afhenter forskellige programmeringssprog, 120 00:08:31,000 --> 00:08:36,000 det antages, at på et tidspunkt i jeres liv, vil du komme i kontakt med 121 00:08:36,000 --> 00:08:40,000 forskellige dem, du vil opdage særheder som denne 122 00:08:40,000 --> 00:08:44,000 hvor C kalder heltal int'er. 123 00:08:44,000 --> 00:08:46,000 Nogle kalder det heltal. 124 00:08:46,000 --> 00:08:51,000 Der er andre udtryk, som du vil løbe ind. 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 Der er også nummer og derefter bool, boolean, 127 00:08:59,000 --> 00:09:03,000 alle mulige forskelle der. 128 00:09:03,000 --> 00:09:07,000 >> Det er ikke frygtelig interessant, men nu vil jeg give dig en lille smule tid- 129 00:09:07,000 --> 00:09:13,000 Hvis vi ind igen ud-at arbejde gennem denne øvelse nederst på side 3 130 00:09:13,000 --> 00:09:20,000 hvor den beder hvilke typer svarer til disse værdier 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 ting lige her, der er interessant. 133 00:09:28,000 --> 00:09:32,000 Vi har ikke set det før, men hvis du har fulgt med i foredrag 134 00:09:32,000 --> 00:09:35,000 du sikkert allerede ved, hvad det er. 135 00:09:35,000 --> 00:09:40,000 Så har vi det, som det er lidt funky. 136 00:09:40,000 --> 00:09:42,000 Du anerkender dette. 137 00:09:42,000 --> 00:09:46,000 Hvad er det i C? 138 00:09:46,000 --> 00:09:50,000 Sam? Hvad ville det give dig i C? 139 00:09:50,000 --> 00:09:54,000 Det ville åbne en fil kaldet dynamic.php og gøre det læsbart. 140 00:09:54,000 --> 00:09:58,000 Ja, og hvad vil være den type variabel, at vi ville overdrage dette til? >> File stjerne. 141 00:09:58,000 --> 00:10:02,000 Præcis, vi ville overdrage denne til en fil stjerne. 142 00:10:02,000 --> 00:10:08,000 Det er legitimt PHP også. 143 00:10:08,000 --> 00:10:12,000 Kør det. Se hvad der sker, når du passerer det ind i getType. 144 00:10:12,000 --> 00:10:19,000 Og så også tjekke ud af, hvad null er, hvad der kan være i PHP. 145 00:10:19,000 --> 00:10:21,000 Jeg vil give dig et par minutter. 146 00:10:21,000 --> 00:10:24,000 Du kan bogstaveligt talt kopiere og indsætte disse værdier i, 147 00:10:24,000 --> 00:10:29,000 og så vil vi gøre lidt tilfældig samtale på dig 148 00:10:29,000 --> 00:10:34,000 og se, hvad du fik. 149 00:10:34,000 --> 00:10:36,000 >> [Student] Jeg har et spørgsmål. << Yeah. 150 00:10:36,000 --> 00:10:40,000 I en af ​​de foredrag David sagde, at der er noget, du kan sætte på toppen af ​​din fil 151 00:10:40,000 --> 00:10:43,000 så du ikke behøver at skrive i PHP hver gang. 152 00:10:43,000 --> 00:10:45,000 Hvad var det? 153 00:10:45,000 --> 00:10:50,000 Han var sandsynligvis tale om pund bang, hash bang. 154 00:10:50,000 --> 00:10:57,000 Det er et direktiv, hvis du markerer din fil som eksekverbar 155 00:10:57,000 --> 00:11:01,000 så hvad det gør, er, når du køre filen 156 00:11:01,000 --> 00:11:06,000 det vil fortælle skallen program 157 00:11:06,000 --> 00:11:12,000 at bruge PHP tolk til at fortolke indholdet af filen. 158 00:11:12,000 --> 00:11:16,000 Spørgsmålet er, hvad der var denne særlige linje 159 00:11:16,000 --> 00:11:20,000 at vi kunne omfatte øverst på vores PHP-filer til ikke at medtage 160 00:11:20,000 --> 00:11:26,000 dette PHP linje eller denne PHP kommando, når vi ønsker at køre filen? 161 00:11:26,000 --> 00:11:31,000 Og du kan faktisk gøre dette med en masse forskellige filer. 162 00:11:31,000 --> 00:11:37,000 Jeg tror, ​​det afhænger af, hvor PHP binære er gemt, 163 00:11:37,000 --> 00:11:43,000 men ofte usr / bin / php er et godt sted at starte. 164 00:11:43,000 --> 00:11:45,000 Du kan finde ud af dette netop ved at gå tilbage til dit apparat 165 00:11:45,000 --> 00:11:50,000 og skrive ud som php. 166 00:11:50,000 --> 00:11:55,000 Den hvilken kommando tal ud, når du udfører binære 167 00:11:55,000 --> 00:12:01,000 eller en kommando, hvor den tilsvarende fil er. 168 00:12:01,000 --> 00:12:06,000 Det fortæller mig, at PHP er virkelig aliasing denne binære fil 169 00:12:06,000 --> 00:12:13,000 der er gemt i usr / bin, hvilket er hvor en masse af systemets binære filer er installeret. 170 00:12:13,000 --> 00:12:21,000 For eksempel, hvis jeg ruller op til toppen, nu hvor jeg har lagt dette # linje i here 171 00:12:21,000 --> 00:12:27,000 Jeg kan rulle ned, og jeg kan prøve at køre 172 00:12:27,000 --> 00:12:35,000 dynamic.php, men jeg får denne fejl om tilladelse nægtes, 173 00:12:35,000 --> 00:12:42,000 og hvad det betyder, er, at denne fil ikke i øjeblikket give eksekverbare tilladelser. 174 00:12:42,000 --> 00:12:46,000 Det er ikke markeret som en fil, at nogen kan køre. 175 00:12:46,000 --> 00:12:52,000 >> Når du kørte foretager eller Dunk og du fik en eksekverbar fra det 176 00:12:52,000 --> 00:12:56,000 compileren var smart nok til at vide, at hey, jeg bygger en eksekverbar. 177 00:12:56,000 --> 00:13:00,000 Du har sikkert ønsker at udføre det, så det ville automatisk konfigurere 178 00:13:00,000 --> 00:13:02,000 tilladelserne til dig. 179 00:13:02,000 --> 00:13:06,000 Dette er ikke tilfældet, selv om, når du opretter en normal fil fra bunden, 180 00:13:06,000 --> 00:13:13,000 Årsagen er typisk, du ikke ønsker at have nogen fil på dit system være eksekverbar, 181 00:13:13,000 --> 00:13:15,000 så du faktisk nødt til at gå ind og manuelt gøre det. 182 00:13:15,000 --> 00:13:22,000 Den nemmeste måde at gøre det på er med kommandoen chmod, 183 00:13:22,000 --> 00:13:28,000 og chmod + x siger tilføje eksekverbare bit 184 00:13:28,000 --> 00:13:31,000 fordi der er read bit, skrivebeskyttelsen bit og eksekverbare bit, 185 00:13:31,000 --> 00:13:35,000 r, w og x, 186 00:13:35,000 --> 00:13:39,000 og siger chmod + x vil tænde den eksekverbare bit 187 00:13:39,000 --> 00:13:46,000 for derefter filen som vi angiver, hvilket i dette tilfælde vil være dynamic.php. 188 00:13:46,000 --> 00:13:49,000 >> [Student] Er der tændt for alle? 189 00:13:49,000 --> 00:13:52,000 Lad os kontrollere dette ud, så hvordan ville jeg tjekke at se tilladelser? 190 00:13:52,000 --> 00:13:54,000 Ved du hvordan jeg ville kontrollere at se tilladelserne for en fil? 191 00:13:54,000 --> 00:13:56,000 [Uhørlig student svar] 192 00:13:56,000 --> 00:13:58,000 Undskyld? >> [Student] XSD. 193 00:13:58,000 --> 00:14:03,000 XSD giver os filen i hacks. 194 00:14:03,000 --> 00:14:09,000 En liste over alle de filer,-l, vil vise mig alle filer i mit bibliotek 195 00:14:09,000 --> 00:14:13,000 slags i deres lange, ordrige notering, og så her ser vi, at 196 00:14:13,000 --> 00:14:17,000 denne dynamic.php fil 197 00:14:17,000 --> 00:14:23,000 blev senest ændret 5. november kl 16:21. 198 00:14:23,000 --> 00:14:26,000 Ejeren af ​​denne fil er jharvard. 199 00:14:26,000 --> 00:14:28,000 Det er den bruger, der er logget ind 200 00:14:28,000 --> 00:14:31,000 Det er brugeren arbejder jeg som, 201 00:14:31,000 --> 00:14:36,000 og hvis du er også i apparatet, du arbejder også som bruger jharvard. 202 00:14:36,000 --> 00:14:38,000 Du er i de studerende i gruppen 203 00:14:38,000 --> 00:14:44,000 og disse er ting, du vil se ofte nok. 204 00:14:44,000 --> 00:14:47,000 >> Vi kan gå ind i en masse detaljer her, 205 00:14:47,000 --> 00:14:50,000 men for det meste hvad du ønsker at se på, når du søger at se 206 00:14:50,000 --> 00:14:55,000 , om en fil er eksekverbar primært 207 00:14:55,000 --> 00:14:58,000 den bruger, der ejer filen, ejer, 208 00:14:58,000 --> 00:15:03,000 så denne jharvard, og så har vi 209 00:15:03,000 --> 00:15:07,000 tilladelserne bits herovre til venstre, 210 00:15:07,000 --> 00:15:13,000 og den måde at læse dette er, at den sidste bit 211 00:15:13,000 --> 00:15:18,000 typisk anvendes til mærkning også i hvert fald i dette tilfælde 212 00:15:18,000 --> 00:15:21,000 denne sidste bit vil ofte være indstillet til ad for at angive 213 00:15:21,000 --> 00:15:24,000 at filen er et katalog og ikke bare en normal fil. 214 00:15:24,000 --> 00:15:28,000 Så de følgende 3 bit lige her 215 00:15:28,000 --> 00:15:34,000 fastlægge de tilladelser, som ejeren af ​​filen har, 216 00:15:34,000 --> 00:15:38,000 så i dette tilfælde jharvard som ejer af filen, læse og kan skrive denne fil, 217 00:15:38,000 --> 00:15:42,000 men der er en streg siger, at jharvard ikke kan eksekvere denne fil. 218 00:15:42,000 --> 00:15:46,000 De næste 3 bit er for gruppen, så dette er den studerende i gruppen 219 00:15:46,000 --> 00:15:49,000 så hvis der var flere brugere på min apparat, 220 00:15:49,000 --> 00:15:52,000 og vi havde flere brugere som en del af de studerende i gruppen 221 00:15:52,000 --> 00:15:55,000 så kan de alle læse denne fil, men de kan ikke skrive det, 222 00:15:55,000 --> 00:15:59,000 og ligeledes andre, verden 223 00:15:59,000 --> 00:16:01,000 kan kun læse denne fil så godt. 224 00:16:01,000 --> 00:16:03,000 Der er en god, lang writeup om dette, 225 00:16:03,000 --> 00:16:05,000 så du kan læse online. 226 00:16:05,000 --> 00:16:10,000 I det problem indstillede spec vi går ind i dette i flere detaljer. 227 00:16:10,000 --> 00:16:12,000 >> [Student] Er 218 henviser til verden? 228 00:16:12,000 --> 00:16:17,000 De 218 er-off toppen af ​​mit hoved, jeg glemmer, 229 00:16:17,000 --> 00:16:20,000 men ingen. 230 00:16:20,000 --> 00:16:29,000 Lad os se. Jeg afblænding på det lige nu. 231 00:16:29,000 --> 00:16:32,000 Tilbage til hvad vi var ved at gøre med dette chmod + x 232 00:16:32,000 --> 00:16:37,000 hvor vi ønskede at give dynamic.php eksekverbare tilladelser, 233 00:16:37,000 --> 00:16:40,000 og spørgsmålet var, hvorvidt dette ville give eksekverbare tilladelser 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 kører kommandoerne og skrive ls-l, 236 00:16:48,000 --> 00:16:51,000 og nu ser vi, at den er markeret som eksekverbar. 237 00:16:51,000 --> 00:16:54,000 Du kan se, at der var en farveændring. 238 00:16:54,000 --> 00:16:57,000 Nu dynamic.php er opført i grøn, 239 00:16:57,000 --> 00:17:01,000 og det ligner svaret på spørgsmålet er, hvad, Charlotte? 240 00:17:01,000 --> 00:17:04,000 [Charlotte] Kun jharvard. >> Only jharvard, yeah. 241 00:17:04,000 --> 00:17:08,000 >> Hvis vi ønskede at vende den eksekverbare smule på for alle 242 00:17:08,000 --> 00:17:10,000 hvordan kan vi gøre det? 243 00:17:10,000 --> 00:17:13,000 Nogen tanker? >> A + x? 244 00:17:13,000 --> 00:17:15,000 Ja, præcis. 245 00:17:15,000 --> 00:17:23,000 Charlotte sagde vi kan gøre chmod af a + x af dynamic.php, 246 00:17:23,000 --> 00:17:26,000 og nu, hvis vi kører ls-l ser vi, at de eksekverbare bits 247 00:17:26,000 --> 00:17:30,000 er faktisk tændt for alle. 248 00:17:30,000 --> 00:17:37,000 Og du kan faktisk gøre det modsatte af dette, så du kan slå den fra for alle 249 00:17:37,000 --> 00:17:41,000 ved hjælp minus. 250 00:17:41,000 --> 00:17:46,000 Nu er det slukket, og nu kan vi slå det til igen for jharvard 251 00:17:46,000 --> 00:17:52,000 således at vi rent faktisk kan køre det nu, 252 00:17:52,000 --> 00:17:58,000 og nu kan du se, når vi kører koden denne særlige #! linje øverst, 253 00:17:58,000 --> 00:18:04,000 #! linje, fortalte skallen, 254 00:18:04,000 --> 00:18:08,000 fortalte vores terminal hey, når denne fil køres, 255 00:18:08,000 --> 00:18:14,000 bruge / usr / bin / php til at fortolke denne fil 256 00:18:14,000 --> 00:18:20,000 og derefter udskrive output. 257 00:18:20,000 --> 00:18:22,000 [Uhørlig student spørgsmål] 258 00:18:22,000 --> 00:18:25,000 Sure, lad mig rulle op igen. Ligesom dette. 259 00:18:25,000 --> 00:18:36,000 Du kan se alle disse direktiver starte med denne pund og derefter udråbstegn, 260 00:18:36,000 --> 00:18:39,000 undertiden kaldes en molevitten, hash bang. 261 00:18:39,000 --> 00:18:48,000 >> [Student] Hvordan kan vi køre det med php dynamic.php før vi gør det eksekverbar? 262 00:18:48,000 --> 00:18:55,000 Spørgsmålet var, hvordan kan vi køre denne bruger PHP binære 263 00:18:55,000 --> 00:18:58,000 mens dynamic.php ikke er eksekverbar? 264 00:18:58,000 --> 00:19:01,000 Det er super vigtigt, fordi det er præcis, hvordan 265 00:19:01,000 --> 00:19:06,000 det kommer til at arbejde, når du skriver problem set 7. 266 00:19:06,000 --> 00:19:09,000 Det meste af tiden PHP-filer er ikke direkte eksekverbar. 267 00:19:09,000 --> 00:19:14,000 Den måde, der virker, er fordi det er den PHP binære fil, der er eksekverbar. 268 00:19:14,000 --> 00:19:16,000 Tolken er den ting, der bliver henrettet, 269 00:19:16,000 --> 00:19:20,000 og så hvad det gør bogstaveligt talt slurping i hele indholdet 270 00:19:20,000 --> 00:19:25,000 af vores dynamic.php fil og går linje for linje 271 00:19:25,000 --> 00:19:29,000 og udføre disse kommandoer, så det er ved hjælp af vores PHP-fil 272 00:19:29,000 --> 00:19:31,000 som en liste over instruktioner. 273 00:19:31,000 --> 00:19:36,000 Det er ikke direkte at udføre det. 274 00:19:36,000 --> 00:19:40,000 Det er, hvor vi siger, at disse filer er fortolket på kørselstidspunktet. 275 00:19:40,000 --> 00:19:46,000 Det er en køretid sprog i stedet for noget, der er fastlagt påkompileringstidspunktet, 276 00:19:46,000 --> 00:19:49,000 ikke et kompileret sprog som C. 277 00:19:49,000 --> 00:19:54,000 >> Er der en måde at få en køretid sprog til at handle, som om det er en kompilere tid sprog, 278 00:19:54,000 --> 00:19:58,000 gerne, hvis du har alle driften gøres på serveren 279 00:19:58,000 --> 00:20:00,000 snarere end du ved hvad jeg mener? 280 00:20:00,000 --> 00:20:04,000 Ja, så spørgsmålet er 281 00:20:04,000 --> 00:20:11,000 er der en måde at få drifttid sprog til at handle mere som påkompileringstidspunktet typer sprog? 282 00:20:11,000 --> 00:20:18,000 Og der er, mener jeg, det er et aktivt forskningsområde for en masse af disse selskaber. 283 00:20:18,000 --> 00:20:22,000 Jeg tror, ​​Facebook har gjort et stort arbejde med PHP 284 00:20:22,000 --> 00:20:25,000 og kompilere den ned, hvilket gør det hurtigere, optimering det 285 00:20:25,000 --> 00:20:29,000 eftersom deres site er bygget på PHP. 286 00:20:29,000 --> 00:20:34,000 Hvis du har fulgt node.js på alle, 287 00:20:34,000 --> 00:20:40,000 der er lidt af en JavaScript-fortolkeren 288 00:20:40,000 --> 00:20:44,000 at være i stand til at køre JavaScript uden for browseren, uden for din web-browser, 289 00:20:44,000 --> 00:20:47,000 fordi der traditionelt JavaScript ville bare køre inde i Firefox eller Chrome, 290 00:20:47,000 --> 00:20:52,000 og det vil blive anvendt til at lave fede animationer ske på en webside 291 00:20:52,000 --> 00:20:55,000 og gør din webside dynamisk. 292 00:20:55,000 --> 00:20:59,000 Det er blevet bygget på en masse arbejde, som Google har gjort 293 00:20:59,000 --> 00:21:03,000 at gøre JavaScript og C + + 294 00:21:03,000 --> 00:21:09,000 binde sammen, så der er en masse af aktiv forskning til 295 00:21:09,000 --> 00:21:13,000 få disse sprog til at interagere og optimere dem, 296 00:21:13,000 --> 00:21:17,000 primært fordi så mange mennesker kan kode i PHP og JavaScript 297 00:21:17,000 --> 00:21:19,000 fordi det er meget nemmere. 298 00:21:19,000 --> 00:21:21,000 Det er meget pænere. Du har ikke pointers. 299 00:21:21,000 --> 00:21:27,000 Du har ikke typer, svæver rundt. 300 00:21:27,000 --> 00:21:31,000 De ønskede at opnå fordelene ved disse påkompileringstidspunktet sprog 301 00:21:31,000 --> 00:21:36,000 med alle typekontrol og hastigheden og den nedre hukommelse og alt dette 302 00:21:36,000 --> 00:21:42,000 samtidig bibeholde fleksibiliteten og brugervenligheden af ​​disse nyere. 303 00:21:42,000 --> 00:21:46,000 >> Tilbage til vores oprindelige plan for angreb. 304 00:21:46,000 --> 00:21:50,000 Vi har et par af disse spørgsmål her i vores problem set spec. 305 00:21:50,000 --> 00:21:54,000 Lad os gå igennem dem virkelig hurtigt, og vi vil gå rundt i lokalet. 306 00:21:54,000 --> 00:21:59,000 Charlotte, hvilken type er 3,50? 307 00:21:59,000 --> 00:22:01,000 [Charlotte] Det er en dobbelt. >> Det er en dobbelt. 308 00:22:01,000 --> 00:22:03,000 Jimmy, hvad er det næste? >> Et array. 309 00:22:03,000 --> 00:22:09,000 Et array, awesome, og Jared, hvad er fopen? 310 00:22:09,000 --> 00:22:11,000 [Jared] Det er en ressource. >> Det er en ressource. 311 00:22:11,000 --> 00:22:15,000 Det er lidt en ny, ikke en fil stjerne, ikke en fil. 312 00:22:15,000 --> 00:22:19,000 Det er en ressource er den type i PHP, 313 00:22:19,000 --> 00:22:24,000 og jeg er ked af det, Ella, den sidste null er hvad? 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? >> På samme måde. 316 00:22:28,000 --> 00:22:30,000 På samme måde, hovedstæder? >> Yeah. 317 00:22:30,000 --> 00:22:33,000 Ja, okay. 318 00:22:33,000 --> 00:22:35,000 Her går vi, vi har en dobbelt, så har vi en matrix, 319 00:22:35,000 --> 00:22:41,000 har vi en ressource, og så har vi null. 320 00:22:41,000 --> 00:22:48,000 Lad os se nu har du set, 321 00:22:48,000 --> 00:22:51,000 lad os se, så nu jeg gætte, hvad jeg også vil gøre, er trække op 322 00:22:51,000 --> 00:22:56,000 denne webside lige her, denne php.net / manual, 323 00:22:56,000 --> 00:23:01,000 så hvis du fyre kopiere det og åbne en webbrowser. 324 00:23:01,000 --> 00:23:07,000 Jeg har tænkt mig at trække op Chrome, sætte det i. 325 00:23:07,000 --> 00:23:10,000 Jeg vil gerne vise dig dette ikke bare fordi 326 00:23:10,000 --> 00:23:13,000 vi kan snakke hele dagen om typer og alt det sjove 327 00:23:13,000 --> 00:23:19,000 men snarere fordi det er den PHP manual, 328 00:23:19,000 --> 00:23:23,000 og der er en masse af PHP programmører derude. 329 00:23:23,000 --> 00:23:26,000 Der er en masse af PHP hjemmesider derude, 330 00:23:26,000 --> 00:23:31,000 og som et resultat er der meget dokumentation PHP, 331 00:23:31,000 --> 00:23:36,000 og manualen, denne php.net, er et rigtig godt sted at gå 332 00:23:36,000 --> 00:23:43,000 når du har spørgsmål om, hvad er den bedste måde at gøre X i PHP 333 00:23:43,000 --> 00:23:45,000 eller hvad betyder en funktion ud? 334 00:23:45,000 --> 00:23:49,000 Bare slags blive fortrolig med hvordan det ser ud, fordi 335 00:23:49,000 --> 00:23:54,000 du vil komme her ofte, lidt for problem indstille 7. 336 00:23:54,000 --> 00:23:57,000 >> Hvis du ender med at gøre et afsluttende projekt, der bruger PHP 337 00:23:57,000 --> 00:24:04,000 dette vil være et sted, du vil blive meget godt bekendt med. 338 00:24:04,000 --> 00:24:09,000 Ofte den måde, folk gøre dette er de bruger Google til at søge efter webstedet, 339 00:24:09,000 --> 00:24:16,000 og de ikke bruge søgefeltet, der er heroppe i øverste højre, som er form for lille. 340 00:24:16,000 --> 00:24:19,000 Hvis du google rundt efter noget at gøre med PHP og du kan se 341 00:24:19,000 --> 00:24:24,000 en af ​​de manuelle links poppe op, kan du typisk påberåbe sig denne 342 00:24:24,000 --> 00:24:31,000 som en temmelig god ressource. 343 00:24:31,000 --> 00:24:34,000 Awesome, så ud af disse typer, lige ud af nysgerrighed, 344 00:24:34,000 --> 00:24:37,000 hvilke har vi ikke set? 345 00:24:37,000 --> 00:24:40,000 Noget vi ikke har set her? 346 00:24:40,000 --> 00:24:44,000 [Student] Resource. >> Vi oplevede ressource med fopen opkaldet. 347 00:24:44,000 --> 00:24:48,000 [Student] Objekter. >> Objekter, vi ikke har set i sikker. 348 00:24:48,000 --> 00:24:51,000 Noteringer vi ikke har set. 349 00:24:51,000 --> 00:24:54,000 Der er nogle af disse pseudo-typer. 350 00:24:54,000 --> 00:24:57,000 Vi definitivt kun oplevede heltal og dobbelt. 351 00:24:57,000 --> 00:25:01,000 Vi ikke se nogle af de andre, så hvis vi klikker på heltal 352 00:25:01,000 --> 00:25:08,000 vi kan se, er der andre heltal, som de har her? 353 00:25:08,000 --> 00:25:11,000 Er de alle-så heltal, integer, heltal. 354 00:25:11,000 --> 00:25:14,000 Nogle sprog har større integer typer, 355 00:25:14,000 --> 00:25:23,000 ligesom vi så på MySQL i dag var der int og derefter stor 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 Lad os gå tilbage til vores problem set spec, og vi vil nu rulle ned til side 4. 359 00:25:37,000 --> 00:25:41,000 En af de ting, der sker, når du får disse sprog 360 00:25:41,000 --> 00:25:49,000 der ikke har denne statiske skrive, så disse sprog, hvor du er nødt til at erklære 361 00:25:49,000 --> 00:25:52,000 typen af ​​en variabel op foran 362 00:25:52,000 --> 00:26:00,000 er du får de tilfælde, hvor du kan begynde at få variabler af forskellige typer 363 00:26:00,000 --> 00:26:04,000 interagere med hinanden, 364 00:26:04,000 --> 00:26:09,000 og PHP gør denne ting, hvor den forsøger at gøre 365 00:26:09,000 --> 00:26:13,000 hvad det anser for at være den mest fornuftige ting at gøre 366 00:26:13,000 --> 00:26:18,000 når du har 2 forskellige typer interagerer med hinanden. 367 00:26:18,000 --> 00:26:24,000 For eksempel, hvis vi ser på disse linjer kode lige her 368 00:26:24,000 --> 00:26:29,000 du se, at vi har, hvad der sker, når 369 00:26:29,000 --> 00:26:38,000 vi forsøger og tilføje snor 1 til det hele tal 2. 370 00:26:38,000 --> 00:26:41,000 Hvad sker der, hvis vi prøver og tilføje en streng, der ikke er en numerisk værdi 371 00:26:41,000 --> 00:26:48,000 men snarere faktiske tegn, CS til tallet 50? 372 00:26:48,000 --> 00:26:51,000 Så må vi se, er der noget anderledes, der sker, når 373 00:26:51,000 --> 00:26:56,000 stedet for at tilføje en streng til et tal vi tilføjer et nummer til en streng, 374 00:26:56,000 --> 00:27:00,000 og så videre og så videre til det punkt, hvor vi kommer 375 00:27:00,000 --> 00:27:05,000 en slags underlige ting lige her, hvor vi har fået 7 + sandt. 376 00:27:05,000 --> 00:27:09,000 Hvad dælen betyder det? 377 00:27:09,000 --> 00:27:19,000 >> Hvis du fyre gå videre og indsætter noget af denne kode i dit apparat. 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, hvad der sker. 380 00:27:41,000 --> 00:27:43,000 [Student] Bare bruge print, ikke printf? 381 00:27:43,000 --> 00:27:52,000 Ja, så vil du opdage, at print er også en gyldig funktion til udskrivning i PHP. 382 00:27:52,000 --> 00:27:54,000 Der er mange forskellige måder at gøre det. 383 00:27:54,000 --> 00:27:58,000 Vi vil se med et par af de eksempler senere, når vi begynder at tale 384 00:27:58,000 --> 00:28:02,000 om den unikke problem, at vi kommer til at skrive 385 00:28:02,000 --> 00:28:06,000 og derefter koncentrationerne problem, at vi kommer til at 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åde at læse på indholdet af en fil. 388 00:28:15,000 --> 00:28:21,000 PHP har en masse af disse C-lignende holdovers. 389 00:28:21,000 --> 00:28:28,000 [Student] Når jeg sætter i alle 6 af de ting jeg kun får ét nummer som et output. 390 00:28:28,000 --> 00:28:36,000 [Nate H.] Når du lægger i alle 6 af disse ting. 391 00:28:36,000 --> 00:28:39,000 Lad os se, er det, fordi det er muligvis, 392 00:28:39,000 --> 00:28:46,000 én ting er, at disse print opkald ikke bliver afsluttet ved udgangen af ​​nye linjer. 393 00:28:46,000 --> 00:28:49,000 Der er ingen ny linje, der adskiller hver af disse trykte opkald, 394 00:28:49,000 --> 00:28:51,000 så måske du får en stort antal, 395 00:28:51,000 --> 00:28:58,000 og det er egentlig bare amalgam af nye linje tegn. 396 00:28:58,000 --> 00:29:00,000 [Student] Okay, hvordan kan jeg være sikker- 397 00:29:00,000 --> 00:29:03,000 Nå, der er en masse forskellige måder. 398 00:29:03,000 --> 00:29:06,000 Du kan manuelt sætte i en udskrift af en ny linje karakter, 399 00:29:06,000 --> 00:29:09,000 et ekko af en ny linje karakter, 400 00:29:09,000 --> 00:29:12,000 udskrivning af 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 ligesom C printf 403 00:29:21,000 --> 00:29:24,000 hvor du udskriver en formateret streng. 404 00:29:24,000 --> 00:29:32,000 Du leverer det format string og derefter alle pladsholderen variabler. 405 00:29:32,000 --> 00:29:39,000 Det er ofte noget, der ikke bruges, 406 00:29:39,000 --> 00:29:42,000 lad os se, som en ansvarsfraskrivelse, 407 00:29:42,000 --> 00:29:48,000 Jeg er mindre fortrolige med PHP, end jeg er med andre web-sprog, 408 00:29:48,000 --> 00:29:53,000 og når jeg har programmeret i PHP jeg typisk ikke bruger printf 409 00:29:53,000 --> 00:29:59,000 fordi jeg finder det hurtigere at bruge strengen interpolationsfiltre kapaciteter, at det har, 410 00:29:59,000 --> 00:30:04,000 som vi vil gå ind og jeg vil vise dig på bare et sekund, 411 00:30:04,000 --> 00:30:08,000 hvorimod i C vi slags nødt til at gøre dette Hacky ting at få det til at udskrive korrekt. 412 00:30:08,000 --> 00:30:16,000 Du kan faktisk sætte variabler direkte ind strenge i PHP. 413 00:30:16,000 --> 00:30:22,000 Printf er slags alt for lang for hvad jeg plejer at gøre. Ja, Ella. 414 00:30:22,000 --> 00:30:25,000 [Ella] Normalt, hvis du får tolkningsfejl betyder det- 415 00:30:25,000 --> 00:30:30,000 ligesom på C det ikke fortælle dig præcis, hvor fejlen er, og hvad det er, 416 00:30:30,000 --> 00:30:34,000 så betyder det udseende gennem hele din kode og finde ud af det? 417 00:30:34,000 --> 00:30:39,000 Det er typisk mere målrettet end det. 418 00:30:39,000 --> 00:30:48,000 Jeg tror i dette tilfælde var det en smule off, 419 00:30:48,000 --> 00:30:51,000 så jeg tror i dette tilfælde vi mangler et semikolon. 420 00:30:51,000 --> 00:30:54,000 Det forsøgte at få mening ud af alt, 421 00:30:54,000 --> 00:30:57,000 så ligesom disse fortolkede sprog, er tolk vil forsøge 422 00:30:57,000 --> 00:31:01,000 og gøre sit bedste for at få det hele til en passende arbejdsdeling. 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-line udsagn ende med et semikolon ligesom de gør i PHP, 425 00:31:10,000 --> 00:31:13,000 ligesom de gør i C. 426 00:31:13,000 --> 00:31:15,000 I JavaScript nogle af JavaScript-tolke 427 00:31:15,000 --> 00:31:20,000 i en masse af de browsere vil sætte i semikoloner for dig 428 00:31:20,000 --> 00:31:23,000 hvis du tilfældigvis til at mangle dem. 429 00:31:23,000 --> 00:31:29,000 De vil forsøge at rumme for nogle sjusk fra din side. 430 00:31:29,000 --> 00:31:34,000 Det er, hvor det kan være at forsøge og forsøger og forsøger at gøre tingene til at fungere, 431 00:31:34,000 --> 00:31:36,000 og så endelig det vil komme til et punkt, hvor der står okay, 432 00:31:36,000 --> 00:31:38,000 Jeg kan ikke gøre tingene fungerer på at redde, og det er her du får et linjenummer 433 00:31:38,000 --> 00:31:44,000 der kan synes en smule off fra det nøjagtige sted. 434 00:31:44,000 --> 00:31:47,000 Okay, så lad os gå igennem dette virkelig hurtigt. 435 00:31:47,000 --> 00:31:50,000 Vi slap med Ella, så lad os gå over til Missy, 436 00:31:50,000 --> 00:31:54,000 og Missy, hvad print af streng 1 plus tallet 2 give dig? 437 00:31:54,000 --> 00:31:56,000 [Missy] 3. >> 3. 438 00:31:56,000 --> 00:31:59,000 Giver det mening? Sortering af? 439 00:31:59,000 --> 00:32:02,000 Betyder det give dig et nummer? Betyder det give dig en streng? 440 00:32:02,000 --> 00:32:05,000 [Missy] En række. >> Det er et tal. 441 00:32:05,000 --> 00:32:09,000 Men det er at udskrive det, så det kommer til at give dig en form for snor. 442 00:32:09,000 --> 00:32:12,000 >> Én ting vi kan gøre for at kontrollere dette 443 00:32:12,000 --> 00:32:21,000 er, hvis vi gør $ var = 1 + 2 444 00:32:21,000 --> 00:32:28,000 og så siger vi ekko af getType, 445 00:32:28,000 --> 00:32:33,000 så vi bruger en tredje slags udskrivning her. 446 00:32:33,000 --> 00:32:39,000 Nu kan vi se hvad der sker her. 447 00:32:39,000 --> 00:32:42,000 Her hvad vi har, er vi fik et heltal ud af dette. 448 00:32:42,000 --> 00:32:45,000 Selvom vi tilføje denne streng til et tal, 449 00:32:45,000 --> 00:32:48,000 vi ikke fik en streng ud af det, ligesom Missy sagde. 450 00:32:48,000 --> 00:32:52,000 Vi fik et heltal. 451 00:32:52,000 --> 00:32:57,000 Okay, så lad os se, næste op, 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. Giver det mening? 454 00:33:02,000 --> 00:33:04,000 [Kevin] Yeah. 455 00:33:04,000 --> 00:33:06,000 [Nate H.] Hvorfor? Hvorfor giver det mening for dig? 456 00:33:06,000 --> 00:33:11,000 [Kevin] Fordi det bare er at have strengen, der talværdi nul. 457 00:33:11,000 --> 00:33:16,000 Ja, godt. 458 00:33:16,000 --> 00:33:20,000 Kind of tvetydige situationer, men det er godt at vide, hvad der sker. 459 00:33:20,000 --> 00:33:25,000 Stella, hvad der sker næste med nummer 1 + streng 2? 460 00:33:25,000 --> 00:33:27,000 [Stella] 3. >> 3 igen. 461 00:33:27,000 --> 00:33:30,000 Og i dette tilfælde, får vi en streng eller et tal? 462 00:33:30,000 --> 00:33:36,000 >> Lad os give det en chance. 463 00:33:36,000 --> 00:33:43,000 Nogen hurtigere end mig med at få svaret? Charlotte? 464 00:33:43,000 --> 00:33:46,000 Åh, jeg didn't-okay, lad os se, vi kommer til at gøre det samme slags ting 465 00:33:46,000 --> 00:33:49,000 hvor vi har fået et nummer plus en streng, og vi vil gentage den type, 466 00:33:49,000 --> 00:33:51,000 se, hvad vi får. 467 00:33:51,000 --> 00:33:55,000 Vi får også et heltal. 468 00:33:55,000 --> 00:33:58,000 Det er ligegyldigt, hvilken en er den streng, hvoraf den ene er nummeret. 469 00:33:58,000 --> 00:34:00,000 Vi vil stadig få et heltal. 470 00:34:00,000 --> 00:34:04,000 Det er stadig kommer til at gøre, hvad vi kunne forvente. 471 00:34:04,000 --> 00:34:09,000 Okay, så Sam, hvad omkring 90 + 9 flasker ø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 Ingen flasker øl på væggen, selv om. 474 00:34:15,000 --> 00:34:17,000 Det giver os lidt mere information om hvad der sker. 475 00:34:17,000 --> 00:34:21,000 [Sam] Hvis du havde skrevet 9 i breve 476 00:34:21,000 --> 00:34:23,000 så ville du have 90, right? 477 00:34:23,000 --> 00:34:26,000 [Nate H.] Yeah. 478 00:34:26,000 --> 00:34:30,000 Spørgsmålet var, om vi havde skrevet 9 ud som N-I-N-E 479 00:34:30,000 --> 00:34:34,000 ville vi have fået 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 bogstavelig talt lige på udkig efter cifrede tegn. 482 00:34:42,000 --> 00:34:46,000 Det er ikke smart nok til at genkende tal ord og den slags. Ja. 483 00:34:46,000 --> 00:34:48,000 >> [Student] Er der sådan en ting som typecasting i PHP? 484 00:34:48,000 --> 00:34:54,000 Der er, og det er præcis den måde, du ville gøre det i C. 485 00:34:54,000 --> 00:34:56,000 Hvad med 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å hvad kan være overraskende om dette? 488 00:35:01,000 --> 00:35:04,000 Hvad ville der ske, hvis du gjorde det 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 vil kun give dig, afhængigt af hvordan du typecasted jeg gætte 491 00:35:08,000 --> 00:35:12,000 det ville give dig kun et begrænset antal cifre efter kommaet. 492 00:35:12,000 --> 00:35:16,000 Ja, så et begrænset antal cifre efter kommaet. 493 00:35:16,000 --> 00:35:21,000 Hvad ellers kunne være, ville det give dig eventuelle cifre efter kommaet? 494 00:35:21,000 --> 00:35:28,000 Ofte ikke, så igen, afhængigt af hvordan du typecasting det 495 00:35:28,000 --> 00:35:31,000 det måske eller måske ikke konvertere det til et decimaltal. 496 00:35:31,000 --> 00:35:35,000 Her var det lidt rart, at det gjorde. 497 00:35:35,000 --> 00:35:40,000 Havde vi vist dig denne tilbage, når vi startede med at lave denne slags ting i C 498 00:35:40,000 --> 00:35:44,000 det sandsynligvis ville have gjort lidt mere mening 499 00:35:44,000 --> 00:35:48,000 at det ikke bare gå til 1. 500 00:35:48,000 --> 00:35:51,000 Og så endelig, Jamie, hvad 7 + sandt? 501 00:35:51,000 --> 00:35:53,000 [Jamie] 8. >> 8. 502 00:35:53,000 --> 00:35:56,000 Hvad betyder det? 503 00:35:56,000 --> 00:35:58,000 Jeg tror det bare giver sande værdi af 1. 504 00:35:58,000 --> 00:36:01,000 Yeah. Hvad sker der, hvis vi ændrer det til falsk? 505 00:36:01,000 --> 00:36:04,000 [Student] 7. 506 00:36:04,000 --> 00:36:09,000 Ja, så huske, hvor vi taler om disse binære værdier, 507 00:36:09,000 --> 00:36:12,000 1 er på, hvor 0 er slukket? 508 00:36:12,000 --> 00:36:17,000 Nu har vi sandt, er 1, 0 er falsk, 509 00:36:17,000 --> 00:36:21,000 og du måske ikke har set det i C eksempler, vi har gjort dette tidligere semester, 510 00:36:21,000 --> 00:36:27,000 men historisk bool type i C har ikke været en reel type, 511 00:36:27,000 --> 00:36:32,000 så folk har brugt 0 og 1 i stedet for sandt og falsk. 512 00:36:32,000 --> 00:36:35,000 Dette er en manifestation af denne. 513 00:36:35,000 --> 00:36:39,000 >> Okay, så den ene vigtig del om alt dette 514 00:36:39,000 --> 00:36:41,000 er, at vi har disse forskellige typer. 515 00:36:41,000 --> 00:36:43,000 De kan interagere med hinanden. 516 00:36:43,000 --> 00:36:49,000 De kan ofte interagerer med hinanden på måder, som er rart, som vi har set her. 517 00:36:49,000 --> 00:36:53,000 Det er rart at være i stand til at have snor 1 og nummer 2, føje dem sammen og få 3. 518 00:36:53,000 --> 00:36:55,000 Det giver mening. 519 00:36:55,000 --> 00:36:59,000 Men når du skriver hjemmesider, og især når du behandler 520 00:36:59,000 --> 00:37:04,000 brugerinput, så siger du har skrevet en webformular 521 00:37:04,000 --> 00:37:09,000 der indsamler oplysninger fra brugeren og derefter går til at behandle det 522 00:37:09,000 --> 00:37:13,000 på bagsiden ende, på serveren side i din PHP-kode 523 00:37:13,000 --> 00:37:18,000 Hvis du forventer, at værdi, som brugeren har skrevet i og indsendes 524 00:37:18,000 --> 00:37:23,000 til formularen til at være et heltal eller at være et decimaltal eller sådan noget 525 00:37:23,000 --> 00:37:29,000 skal du eksplicit kastede den 526 00:37:29,000 --> 00:37:34,000 og derefter gøre nogle type kontrol. 527 00:37:34,000 --> 00:37:41,000 >> Du ønsker ikke at bare stole på denne type jonglering system til at gøre tingene fungerer ud, 528 00:37:41,000 --> 00:37:48,000 især af sikkerhedsmæssige årsager, og bare for robustheden af ​​din hjemmeside. 529 00:37:48,000 --> 00:37:51,000 Bare noget at huske på, at når du håndterer formulardata, 530 00:37:51,000 --> 00:37:57,000 noget, der kommer med posten eller få superglobals 531 00:37:57,000 --> 00:38:01,000 sørg for, at du altid validere det og omdanne det og typecast det. 532 00:38:01,000 --> 00:38:04,000 Og ligesom vi talte om for et øjeblik siden, at typecasting 533 00:38:04,000 --> 00:38:08,000 i PHP er nøjagtig den samme som i C, hvor du har parenteserne 534 00:38:08,000 --> 00:38:14,000 og derefter typen. 535 00:38:14,000 --> 00:38:16,000 Hold det i tankerne. 536 00:38:16,000 --> 00:38:19,000 En funktion, der vil komme i handy, når du gør dette 537 00:38:19,000 --> 00:38:22,000 er vi har brugt-og det er slags som en sidebemærkning- 538 00:38:22,000 --> 00:38:27,000 vi har brugt denne getType funktion lige her 539 00:38:27,000 --> 00:38:30,000 at finde ud af, hvilken type af en variabel, 540 00:38:30,000 --> 00:38:37,000 og mens dette er praktisk til debugging og at se, hvad en variabels type er 541 00:38:37,000 --> 00:38:42,000 du ikke ønsker at bruge denne, for eksempel i en tilstand, hvor 542 00:38:42,000 --> 00:38:57,000 du tjekker for at se om getType af $ var = heltal gøre noget. 543 00:38:57,000 --> 00:39:01,000 Det er skidt, dårlige, dårlige. 544 00:39:01,000 --> 00:39:09,000 I stedet er der disse funktioner kaldes, er heltal, er streng, 545 00:39:09,000 --> 00:39:14,000 er array, som du vil bruge i stedet, så i dette tilfælde 546 00:39:14,000 --> 00:39:18,000 hvad jeg ønsker at gøre i stedet for denne fyr lige her 547 00:39:18,000 --> 00:39:31,000 er at bruge, er heltal var. 548 00:39:31,000 --> 00:39:37,000 Og de er ofte omtales, er is_ * i den forstand, at du kunne erstatte * med heltal, 549 00:39:37,000 --> 00:39:43,000 streng, et cetera, og bare for at sikre virkelig hurtig 550 00:39:43,000 --> 00:39:50,000 Dette er int php. 551 00:39:50,000 --> 00:39:59,000 Ligner du kan gøre enten er int eller at der er heltal så godt? 552 00:39:59,000 --> 00:40:06,000 Ja, alias, så int heltal aliaser. 553 00:40:06,000 --> 00:40:08,000 Cool. 554 00:40:14,000 --> 00:40:17,000 >> Hvordan gør vi? 555 00:40:17,000 --> 00:40:20,000 Lad os afhente tempoet en lille smule. 556 00:40:20,000 --> 00:40:24,000 Nu skal vi til at tale om arrays, så du kan se 557 00:40:24,000 --> 00:40:28,000 i den næste del af spec, vi taler om, hvordan arrays i PHP 558 00:40:28,000 --> 00:40:31,000 er lidt anderledes end i C. 559 00:40:31,000 --> 00:40:34,000 I sandhed, de er sådan en blanding af 560 00:40:34,000 --> 00:40:36,000 de arrays, du er kommet til at kende og elske i C 561 00:40:36,000 --> 00:40:40,000 hvor alt er af samme type 562 00:40:40,000 --> 00:40:43,000 opbevaret fortløbende og tilstødende i hukommelsen, 563 00:40:43,000 --> 00:40:46,000 og du har disse numeriske indeks. 564 00:40:46,000 --> 00:40:49,000 Du har indeks 0, indeks 1, indeks 2, 565 00:40:49,000 --> 00:40:53,000 og du kan gemme værdier i disse indeks. 566 00:40:53,000 --> 00:40:57,000 Du kan også i C, da du skrev Speller, en masse af jer 567 00:40:57,000 --> 00:41:00,000 gjorde hash tabellen tilgang, og du så, at der havde vi 568 00:41:00,000 --> 00:41:03,000 en anden slags opbevaring, hvor vi var kortlægning 569 00:41:03,000 --> 00:41:07,000 en nøgle til en værdi, så når du forsøgte at gemme noget i hashtabel 570 00:41:07,000 --> 00:41:11,000 De var nødt til at angive, at du ønsker at gemme den med en bestemt nøgle, 571 00:41:11,000 --> 00:41:17,000 og at nøglen bestemmes placeringen af ​​værdi, og hvor det lagres. 572 00:41:17,000 --> 00:41:22,000 Du har slags fik både af disse begreber sker på samme tid i et PHP array, 573 00:41:22,000 --> 00:41:27,000 og som et resultat, vi ofte kalder disse associative arrays 574 00:41:27,000 --> 00:41:33,000 hvor vi forbinder en nøgle i en værdi. 575 00:41:33,000 --> 00:41:39,000 I denne næste del vi taler om en simpel PHP array 576 00:41:39,000 --> 00:41:45,000 hvor vi har nøgler a, b og c, 577 00:41:45,000 --> 00:41:53,000 alle strenge, kortlægning til de hele tal 1, 2, og 3.. 578 00:41:53,000 --> 00:41:57,000 Og du kan få nøgler af forskellige typer. 579 00:41:57,000 --> 00:42:00,000 >> Du kan have nogle nøgler, der strenge, nogle nøgler, der er heltal. 580 00:42:00,000 --> 00:42:03,000 Kan have værdier af forskellige typer. 581 00:42:03,000 --> 00:42:06,000 Du kan have en værdi, der er en streng, en værdi, der er et heltal, 582 00:42:06,000 --> 00:42:11,000 en værdi, der er en genstand eller et andet array, for eksempel 583 00:42:11,000 --> 00:42:16,000 alle i samme array objekt, hvilket er lidt underligt. 584 00:42:16,000 --> 00:42:20,000 Du behøver ikke at have et array, der er lige fået én type element i det. 585 00:42:20,000 --> 00:42:26,000 Du kan have mange forskellige ting foregår derinde. 586 00:42:26,000 --> 00:42:33,000 Den anden ting at bemærke er, at når du ser noget som dette i din kode, 587 00:42:33,000 --> 00:42:38,000 som er gyldig PHP at erklære et array ligesom dette, 0, 1, 2, 3, 4, 5, 588 00:42:38,000 --> 00:42:43,000 der vil erklære en initialiseret $ arr at være denne array. 589 00:42:43,000 --> 00:42:48,000 Men hvad du faktisk får under kølerhjelmen er denne form for implicit 590 00:42:48,000 --> 00:42:55,000 generation af nøgler, hvor vi har fået fra 0 til 0, 1 til 1, 2 til 2, 3 til 3. 591 00:42:55,000 --> 00:42:59,000 Og det viser sig, at selv hvis du har et array som denne fyr op her 592 00:42:59,000 --> 00:43:03,000 hvor man har a, b og c som tasterne 593 00:43:03,000 --> 00:43:09,000 og så du begynder at bruge array push-metoden til at begynde at bruge dette array som en stak, 594 00:43:09,000 --> 00:43:12,000 så du kan se, at dette array objekt, er denne opstilling virkelig bliver overbelastet. 595 00:43:12,000 --> 00:43:15,000 Vi kan bruge det som en matrix. Vi kan bruge det som en hash-tabel. 596 00:43:15,000 --> 00:43:19,000 Vi kan bruge det som en stak. 597 00:43:19,000 --> 00:43:22,000 Når du begynder at skubbe tingene på denne opstilling 598 00:43:22,000 --> 00:43:30,000 den første ting du skubber på dette vil være indeks 0 og derefter index 1 og index 2. 599 00:43:30,000 --> 00:43:33,000 Du kan få denne form for implicit generation af nøgler 600 00:43:33,000 --> 00:43:38,000 medmindre du angiver dem eksplicit. 601 00:43:38,000 --> 00:43:43,000 Den måde du angiver nøglerne eksplicit selvfølgelig er ved hjælp af dette beslag notation, 602 00:43:43,000 --> 00:43:48,000 , der svarer til arrays undtagen i stedet for kun at tillade 603 00:43:48,000 --> 00:43:54,000 heltal indeks i her, nu vi tillader noget. 604 00:43:54,000 --> 00:43:57,000 Hvis du vil have din nøgle til at være en streng, ville du angive det på denne måde. 605 00:43:57,000 --> 00:44:06,000 Hvis du ønsker det skal være en int, angiver du det med int, du vil bruge. 606 00:44:06,000 --> 00:44:13,000 >> Spørgsmål om det indtil videre? 607 00:44:13,000 --> 00:44:18,000 En af de gode ting om denne idé 608 00:44:18,000 --> 00:44:26,000 er, at du kan altid kun have én værdi er gemt med en særlig nøgle. 609 00:44:26,000 --> 00:44:32,000 Hvis vi går tilbage over til vores appliance-lad mig slette nogle af disse ting. 610 00:44:32,000 --> 00:44:47,000 Og lad os sige jeg initialisere et array til at være 0, 1, 2, gjort. 611 00:44:47,000 --> 00:44:55,000 Hvis jeg nu ved, at for eksempel, hvis jeg echo $ arr. [0] 612 00:44:55,000 --> 00:44:59,000 Jeg har tænkt mig at få værdien 0 printes ud, 613 00:44:59,000 --> 00:45:05,000 og da der kun kan altid være en værdi lagret i en bestemt tast 614 00:45:05,000 --> 00:45:11,000 hvis jeg gemmer noget på $ arr [0], siger en, 615 00:45:11,000 --> 00:45:16,000 så jeg ved, når jeg echo $ arr. [0] igen 616 00:45:16,000 --> 00:45:19,000 Jeg har ikke tænkt mig at få 0 printes ud som før. 617 00:45:19,000 --> 00:45:24,000 Jeg vil kun få en. 618 00:45:24,000 --> 00:45:30,000 Så dette er dybest set siger, at jeg ikke kan få $ arr. [0] lagre 2 forskellige værdier. 619 00:45:30,000 --> 00:45:34,000 Det kan ikke gemme både 0 og strengen a, som denne bogstaveligt erstatter 620 00:45:34,000 --> 00:45:38,000 hvad der var på $ arr [0] tidligere. 621 00:45:38,000 --> 00:45:43,000 Grunden jeg bringe dette op køres det, se hvad der sker. 622 00:45:43,000 --> 00:45:47,000 Se her, at jeg fik 0 printes ud og derefter en hernede. 623 00:45:47,000 --> 00:45:51,000 Der er ingen nye linje der, fordi jeg var doven og ikke sætte det i. 624 00:45:51,000 --> 00:45:54,000 Hvad er fedt ved dette er, at vi kan bruge dette som en måde 625 00:45:54,000 --> 00:46:00,000 at fange denne idé om et sæt 626 00:46:00,000 --> 00:46:07,000 hvor vi ikke kan få flere nøgler i et array. 627 00:46:07,000 --> 00:46:10,000 Vi kan ikke have identiske nøgler i et array. 628 00:46:10,000 --> 00:46:17,000 Jeg kan ikke have tasten 0, og værdien 1 og tasten 0 og værdien af ​​en 629 00:46:17,000 --> 00:46:21,000 eller tast 0 og værdi sandt. 630 00:46:21,000 --> 00:46:27,000 Tasterne er all-der er kun 1 nøgle i array. 631 00:46:27,000 --> 00:46:32,000 Selvom du kan have den samme lagrede værdi 632 00:46:32,000 --> 00:46:35,000 flere gange i opstillingen under forskellige nøgler 633 00:46:35,000 --> 00:46:42,000 det er ikke muligt at have ens nøgler flere gange i din PHP array. 634 00:46:42,000 --> 00:46:47,000 >> Hvis vi ser på det næste problem, unique.php, 635 00:46:47,000 --> 00:46:51,000 hvor vi ønsker at åbne op for en PHP-fil 636 00:46:51,000 --> 00:46:54,000 indeholder en liste af strenge, en streng pr linje, 637 00:46:54,000 --> 00:47:01,000 og vi ønsker at finde alle de unikke strenge i denne fil 638 00:47:01,000 --> 00:47:06,000 alt, hvad vi skal gøre er at bruge en af ​​disse PHP arrays 639 00:47:06,000 --> 00:47:12,000 og bruge de strenge i filen som nøglerne til dette array 640 00:47:12,000 --> 00:47:17,000 og holde opdatere vores array som vi gemme disse nye nøgler. 641 00:47:17,000 --> 00:47:22,000 Når vi læser hver linje ud af den fil, vi kan gemme det i array, 642 00:47:22,000 --> 00:47:28,000 og i slutningen vi vil have som vores nøgler i vores array 643 00:47:28,000 --> 00:47:34,000 alle de unikke strenge i filen. 644 00:47:34,000 --> 00:47:37,000 Giver det mening? 645 00:47:37,000 --> 00:47:41,000 Lad os se hvordan det virker. 646 00:47:41,000 --> 00:47:49,000 Vi skal åbne op, ifølge spec, en ny fil kaldet unique.php. 647 00:47:49,000 --> 00:47:58,000 Åbn. Ups, undskyld, ny fil. 648 00:47:58,000 --> 00:48:03,000 Vi vil starte det ud med det samme start og slut tags. 649 00:48:03,000 --> 00:48:17,000 Vi kommer til at gemme det i afsnit 9, og vi vil kalde det unique.php. 650 00:48:17,000 --> 00:48:25,000 Okay, nu zoome ind 651 00:48:25,000 --> 00:48:32,000 Idéen her er åbne en fil, 652 00:48:32,000 --> 00:48:38,000 læse i filen linje for linje. 653 00:48:38,000 --> 00:48:46,000 For hver linje i fil 654 00:48:46,000 --> 00:48:51,000 vi vil have et array, hvor vi har 655 00:48:51,000 --> 00:49:03,000  den linje, som vores nøgle. 656 00:49:03,000 --> 00:49:09,000 Og så når vi kommer til slutningen her 657 00:49:09,000 --> 00:49:17,000 $ Arr. har taster er de unikke linjer 658 00:49:17,000 --> 00:49:25,000 af sagens akter, da vi ved, at hvis jeg sætter linje i dette array 659 00:49:25,000 --> 00:49:33,000 flere gange det vil bare holde tvingende den gamle værdi, 660 00:49:33,000 --> 00:49:46,000 og vi kan faktisk sætte array-linje i som selv bare sådan. 661 00:49:46,000 --> 00:49:48,000 >> Det er lidt underligt. 662 00:49:48,000 --> 00:49:52,000 Vi lagre samme nøgleværdi par igen og igen og igen, 663 00:49:52,000 --> 00:50:00,000 men da vi er garanteret, at der kun vil være 1 nøgle kaldet linie 664 00:50:00,000 --> 00:50:05,000 så hvis vi har en fil, der siger, en fil med dyrelyde og det har woof, woof, 665 00:50:05,000 --> 00:50:11,000 mjave, mjave, muh, muh, og hver gang vi læser et dyr støj ud 666 00:50:11,000 --> 00:50:15,000 ligesom woof og vi gemme det i vores array vi får woof, og derefter anden gang 667 00:50:15,000 --> 00:50:20,000 vi opbevarer woof det overskriver den første gang, at vi gemt det. 668 00:50:20,000 --> 00:50:25,000 I sidste ende vil vi kun have én indgang i arrayet 669 00:50:25,000 --> 00:50:33,000 for hver af de dyrelyde i vores dyrelyde fil. 670 00:50:33,000 --> 00:50:41,000 Tror du fyre føler tillid til, at du kan tackle åbningen af ​​en fil i PHP? 671 00:50:41,000 --> 00:50:45,000 En måde at gøre det på-lad os gå over dette hurtigt-én måde at gø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 Kan fopen some_file.txt. 674 00:50:55,000 --> 00:50:59,000 Du kan åbne den i skrivebeskyttet tilstand, ligesom i C. 675 00:50:59,000 --> 00:51:02,000 Det er én perfekt god måde at gøre det. 676 00:51:02,000 --> 00:51:05,000 Du er også derefter til læsning i filen linje for linje 677 00:51:05,000 --> 00:51:12,000 har de samme funktioner, mange af 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, selvom vi ikke kan lide at bruge denne 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 gøre det på samme måde, 682 00:51:25,000 --> 00:51:34,000 men her er en virkelig cool ting. 683 00:51:34,000 --> 00:51:41,000 Undskyld, jeg ikke ønsker at gøre $ fil, men der er en funktion kaldet fil i PHP, 684 00:51:41,000 --> 00:51:47,000 og denne funktion lige her er cool, fordi den læser hele indholdet 685 00:51:47,000 --> 00:51:52,000 på den fil, du angiver, så some_file.txt, 686 00:51:52,000 --> 00:51:56,000 læser hele indholdet af denne fil i et array 687 00:51:56,000 --> 00:52:03,000 og derefter kan du gentage over det, som er temmelig smart. 688 00:52:03,000 --> 00:52:07,000 >> Hvis vi går for eksempel til vores 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 vores manual siger, at fil læser hele filen ind i et array, 691 00:52:23,000 --> 00:52:27,000 og vi kan file_get_contents at returnere indholdet af en fil som en streng, 692 00:52:27,000 --> 00:52:30,000 men typisk bare få det som en matrix er virkelig rart, fordi hvad det gør 693 00:52:30,000 --> 00:52:33,000 er det bryder den op, så at hvert element 694 00:52:33,000 --> 00:52:37,000 i sættet er en linje af filen, 695 00:52:37,000 --> 00:52:41,000 så hvis vi ser på fil 0, det er den første linje af filen. 696 00:52:41,000 --> 00:52:46,000 Fil 1, anden linje, fil 2, tredje linje, og så videre og så videre. 697 00:52:46,000 --> 00:52:50,000 Ville det ikke være rart, hvis det var alle du havde at gøre i C? 698 00:52:50,000 --> 00:52:53,000 Temmelig smart. 699 00:52:53,000 --> 00:52:59,000 David viste dette i foredrag, og det formsprog, han viste var 700 00:52:59,000 --> 00:53:03,000 at der ud over vores standard for loop-in PHP, vi havde 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 gøre dette i PHP også samme ting- 703 00:53:16,000 --> 00:53:27,000 vi har også denne cool konstruktion kaldet foreach. 704 00:53:27,000 --> 00:53:32,000 Foreach er virkelig praktisk, når iteration over arrays eller disse datastrukturer 705 00:53:32,000 --> 00:53:36,000 fordi det giver dig mulighed for at trække sig ud hvert element i matrixen 706 00:53:36,000 --> 00:53:42,000 uden at skulle manuelt gøre indekseringen selv, 707 00:53:42,000 --> 00:53:46,000 uden at skulle manuelt at oprette et indeks variabel tilvækst det, 708 00:53:46,000 --> 00:53:51,000 trække sig ud af værdien i arrayet på dette punkt, fordi det er en meget almindelig ting at gøre. 709 00:53:51,000 --> 00:53:54,000 >> Du har sikkert gjort det tonsvis af gange, når du lavede C stuff 710 00:53:54,000 --> 00:54:00,000 i løbet af semestret med så denne foreach 711 00:54:00,000 --> 00:54:06,000 vi kan sløjfe over denne fil matrix, 712 00:54:06,000 --> 00:54:12,000 og syntaksen er, at vi gerne vil nu sløjfe over dette array 713 00:54:12,000 --> 00:54:18,000 og angive, at den variabel, vi vil bruge til at gemme 714 00:54:18,000 --> 00:54:27,000 Den del af dette array lokalt, gælder for anvendelsesområdet for denne foreach løkke, 715 00:54:27,000 --> 00:54:32,000 er vi vil kalde det linie. 716 00:54:32,000 --> 00:54:38,000 Hvis det er en fil med blot ord, og der er et ord i en linje 717 00:54:38,000 --> 00:54:43,000 Vi kunne kalde det ord så godt, egentlig bare du give dette et navn, 718 00:54:43,000 --> 00:54:49,000 hvad du vil kalde det, 719 00:54:49,000 --> 00:55:02,000 og derefter inde i løkken, du kan gøre hvad du vil med denne variable linje. 720 00:55:02,000 --> 00:55:08,000 Hvis det ikke er nok til at få værdien af ​​array, og du også ønsker at få 721 00:55:08,000 --> 00:55:17,000 indekset sammen med det du kan angive et navn til indekset 722 00:55:17,000 --> 00:55:22,000 samt værdien, og nu har du adgang 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 hvor $ i er indekset i arrayet, 725 00:55:30,000 --> 00:55:38,000 og er den linje, du har hentet fra filen. 726 00:55:38,000 --> 00:55:49,000 For eksempel, hvis vi ønskede at udskrive echo linie 0 i filen som dette 727 00:55:49,000 --> 00:55:57,000 vi kunne gøre det ligesom dette, "Line $ i af filen er $ linje," 728 00:55:57,000 --> 00:56:02,000 og her er noget, vi har heller ikke set endnu enten 729 00:56:02,000 --> 00:56:13,000 hvor jeg har bare helt springes over hele denne% s% d forretning 730 00:56:13,000 --> 00:56:16,000 at vi skulle beskæftige sig med i C, og i stedet har jeg gået direkte til 731 00:56:16,000 --> 00:56:19,000 skrive variablerne i linje i min streng. 732 00:56:19,000 --> 00:56:23,000 >> Dette kaldes variabel interpolation, string interpolation 733 00:56:23,000 --> 00:56:26,000 hvor du udstopning variablerne ret i, og PHP tolk 734 00:56:26,000 --> 00:56:31,000 er smart nok, når det er læsning gennem en streng, der begynder med anførselstegn- 735 00:56:31,000 --> 00:56:34,000 ikke enkelt citationstegn, med enkelte børsnoterede strenge du kan ikke gøre dette, 736 00:56:34,000 --> 00:56:38,000 men med strenge med dobbelte anførselstegn som det lyder igennem den leder variabler. 737 00:56:38,000 --> 00:56:42,000 Det er at jage dem ned, og hvis det ser variabler det vil tage værdien af ​​variablen 738 00:56:42,000 --> 00:56:47,000 og fylde den i strengen, hvis den kan konvertere den til en streng repræsentation, 739 00:56:47,000 --> 00:56:51,000 som er temmelig smart. 740 00:56:51,000 --> 00:56:56,000 For nu, lad os udkommentere resten af ​​alt, 741 00:56:56,000 --> 00:57:00,000 gemme denne, og hvad vi kan gøre nu, er at vi kan åbne op for en fil 742 00:57:00,000 --> 00:57:06,000 at vi kan kalde some_file.txt-let 's oprette en ny fil- 743 00:57:06,000 --> 00:57:15,000 og vi kan sætte i en masse nonsens ting her bare for at teste alt ud, 744 00:57:15,000 --> 00:57:25,000 gemme det, kalder det some_file.txt, som jeg gør heroppe på toppen, 745 00:57:25,000 --> 00:57:33,000 og nu, hvis jeg zoome ud blot at sørge for alt er i samme bibliotek, 746 00:57:33,000 --> 00:57:36,000 det ser ud som jeg har unique.php og some_file.txt i samme mappe. 747 00:57:36,000 --> 00:57:42,000 Hvis jeg kører php unique.php 748 00:57:42,000 --> 00:57:51,000 se, hvordan det udskrives hver linje i min fil, og hvad linjen er? 749 00:57:51,000 --> 00:57:56,000 >> Det er temmelig kraftig, right? 750 00:57:56,000 --> 00:58:03,000 Se, det tog 3 linjer kode til at åbne en fil. 751 00:58:03,000 --> 00:58:08,000 Nå, 4 linjer kode. Jeg kan ikke tælle i dag, klart. 752 00:58:08,000 --> 00:58:13,000 Men virkelig kun 2 interessante linjer kode, fordi de andre 2 var de krøllede parenteser, 753 00:58:13,000 --> 00:58:17,000 men i dette meget kode var vi i stand til at åbne en fil, gentage gennem det, 754 00:58:17,000 --> 00:58:20,000 trækkes ud linjenummer og linjen selv 755 00:58:20,000 --> 00:58:24,000 og printe det ud. 756 00:58:24,000 --> 00:58:26,000 Cool stuff. Charlotte. 757 00:58:26,000 --> 00:58:28,000 [Charlotte] Jeg har et spørgsmål om syntaksen. 758 00:58:28,000 --> 00:58:33,000 Så foreach beskæftiger sig med hver enkelt linje på den fil, du åbner, 759 00:58:33,000 --> 00:58:37,000 og derefter, når du ønsker at gøre ting med hver enkelt linje du bare gøre det som 760 00:58:37,000 --> 00:58:39,000 og derefter knytte værdien. 761 00:58:39,000 --> 00:58:41,000 [Nate H.] Hvad du kan gøre lige her-spørgsmålet var 762 00:58:41,000 --> 00:58:46,000 Den foreach har at gøre med arrayet, så den foreach syntaks 763 00:58:46,000 --> 00:58:51,000 er virkelig foreach, og bemærk, at der ikke er nogen plads 764 00:58:51,000 --> 00:58:53,000 eller noget mellem for og hver. 765 00:58:53,000 --> 00:58:56,000 De skal gå helt ved siden af ​​hinanden, 766 00:58:56,000 --> 00:59:00,000 og så det tager i et array, 767 00:59:00,000 --> 00:59:05,000 og så har du det andet søgeord indkaldt som der skal være der, 768 00:59:05,000 --> 00:59:11,000 og derefter efter som du kan enten sætte en variabel navn, 769 00:59:11,000 --> 00:59:14,000 i hvilket tilfælde du kommer til at trække værdierne af array, 770 00:59:14,000 --> 00:59:20,000 ikke de indekser, eller hvis du gør det, som vi har skrevet under 771 00:59:20,000 --> 00:59:24,000 får du nøglerne og de værdier. 772 00:59:24,000 --> 00:59:33,000 Du har foreach element i array eller et par matrixen som fastkilet til værdi 773 00:59:33,000 --> 00:59:38,000 eller som lige værdi. 774 00:59:38,000 --> 00:59:40,000 Afhængigt af hvad du har brug for, hvis du ikke har brug tasterne, 775 00:59:40,000 --> 00:59:42,000 så kan du gå med værdien. 776 00:59:42,000 --> 00:59:45,000 Hvis du vil have de taster, du kan gå med dem også. 777 00:59:45,000 --> 00:59:48,000 >> [Charlotte] Jeg indså også vi aldrig erklæret i eller linje. 778 00:59:48,000 --> 00:59:51,000 Hvordan det selv ved, hvad de er? 779 00:59:51,000 --> 00:59:53,000 [Nate H.] Hvad mener du med erklære? 780 00:59:53,000 --> 00:59:57,000 [Charlotte] Vi har aldrig fortalt dem hvad jeg eller linje betyder. 781 00:59:57,000 --> 01:00:01,000 [Nate H.] Vi har aldrig fortalt computeren, hvad jeg eller linje betyder i form af- 782 01:00:01,000 --> 01:00:05,000 [Charlotte] At de er indekseret, eller at they're- 783 01:00:05,000 --> 01:00:09,000 [Nate H.] Vi har aldrig fortalt det, at det formodes for at være det indeks eller nøglen, og værdien, 784 01:00:09,000 --> 01:00:13,000 og det er fordi det er den PHP tolk. 785 01:00:13,000 --> 01:00:17,000 Dette tjener som erklæringen og siger okay, er nøglen vil være 786 01:00:17,000 --> 01:00:20,000 en variabel kaldet jeg gemt i en variabel kaldet i. 787 01:00:20,000 --> 01:00:24,000 Værdien vil blive lagret i en variabel kaldet linie, 788 01:00:24,000 --> 01:00:28,000 så dette tjener som erklæringen af ​​disse variabler 789 01:00:28,000 --> 01:00:35,000 og siger $ i er en nøgle, og $ linje er en værdi. 790 01:00:35,000 --> 01:00:37,000 Ja, Ella. 791 01:00:37,000 --> 01:00:41,000 [Ella] Hvis tasterne er ikke gjort numerisk 792 01:00:41,000 --> 01:00:44,000 hvordan kan det beslutte hvilken rækkefølge det kommer til at udskrive alt? 793 01:00:44,000 --> 01:00:47,000 Er det ligesom den rækkefølge, det er opført i? 794 01:00:47,000 --> 01:00:51,000 [Nate H.] Lad os give det en chance. 795 01:00:51,000 --> 01:00:57,000 Lad os oprette en variabel kaldet arr., 796 01:00:57,000 --> 01:01:06,000 og vi kan gøre en går til 7. 797 01:01:06,000 --> 01:01:19,000 Lad os sige 0 går til et andet array med 1, 2 eller æble. 798 01:01:19,000 --> 01:01:30,000 Lad os sige 7 går til 1, b går 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 Det er lidt af en vanvittig leder eksempel fordi vi blande 801 01:01:44,000 --> 01:01:47,000 strygere og heltal over det hele. 802 01:01:47,000 --> 01:01:50,000 Der er ingen reel for at denne array. 803 01:01:50,000 --> 01:01:55,000 Jeg mener, vi kunne bestille alt i alfabetisk rækkefølge efter nøglerne. 804 01:01:55,000 --> 01:01:57,000 Vi kunne bestille alt alfabetisk efter værdien. 805 01:01:57,000 --> 01:02:00,000 >> Vi kunne forsøge at tage hensyn til, at nogle er strenge, nogle er int'er, 806 01:02:00,000 --> 01:02:03,000 og vi kunne prøve og konvertere dem alle til den samme type og se hvad der sker, 807 01:02:03,000 --> 01:02:09,000 eller vi kunne overveje dem i værdien, som vi allerede indtastet dem 808 01:02:09,000 --> 01:02:14,000 hvor vi sætter denne fyr i første, denne fyr på andenpladsen, denne fyr i tredje, 809 01:02:14,000 --> 01:02:19,000 denne fyr i fjerde, et cetera. 810 01:02:19,000 --> 01:02:23,000 Lad os se hvad der sker, når vi kører denne kode. 811 01:02:23,000 --> 01:02:29,000 Hvis vi rulle ned og gøre det samme slags ting, 812 01:02:29,000 --> 01:02:31,000 og her er det ikke udskrivning af nye linjer. 813 01:02:31,000 --> 01:02:35,000 Når det læste ting ud af den fil, det var også de nye linjer i de værdier, 814 01:02:35,000 --> 01:02:38,000 hvilket var grunden til det udskrives pænt, hvorimod her det gjorde 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 Lad os tilføje i den nye linje bare for at gøre tingene nice. 817 01:02:44,000 --> 01:02:51,000 Lad os køre det, og så her 818 01:02:51,000 --> 01:02:54,000 se på, hvad der skete. 819 01:02:54,000 --> 01:03:00,000 Det trykte alt ud i den rækkefølge, som vi sætter det ind i array. 820 01:03:00,000 --> 01:03:10,000 Det er opretholde orden i den forstand. 821 01:03:10,000 --> 01:03:15,000 >> Går tilbage til dette problem med uniques 822 01:03:15,000 --> 01:03:20,000 hvor vi ønsker at være i stand til at gentage over en fil, 823 01:03:20,000 --> 01:03:24,000 og vi vil give det some_file.txt, 824 01:03:24,000 --> 01:03:27,000 og vi vil gentage over det på denne måde. 825 01:03:27,000 --> 01:03:31,000 Vi sagde, at vi ønskede at bruge et array til at sikre, at vi havde fået alle de 826 01:03:31,000 --> 01:03:36,000 unikke linjer ud derfra, og vi kunne gøre det rigtig nemt 827 01:03:36,000 --> 01:03:49,000 ved blot lagring i et array, som vi naturligvis erklære uden for en løkke, 828 01:03:49,000 --> 01:03:55,000 og vi sagde, at hvis vi brugte linjerne i filen som nøglerne i vores array 829 01:03:55,000 --> 01:03:59,000 hvis vi gik ind i en dobbelt linje, vi ville gribe ind i den tidligere værdi. 830 01:03:59,000 --> 01:04:08,000 Det er ikke altid muligt at have 2 nøgler, som er identiske i samme array. 831 01:04:08,000 --> 01:04:13,000 Vi kan gøre netop det. 832 01:04:13,000 --> 01:04:17,000 Vi vil slippe af med denne ekko erklæring lige her. 833 01:04:17,000 --> 01:04:24,000 Her vil vi opbevare linje i filen i vores array 834 01:04:24,000 --> 01:04:28,000 bruger sig selv som nøgle. 835 01:04:28,000 --> 01:04:32,000 Intet at det, og det viser sig, at vi ikke engang behøver denne nøgle. 836 01:04:32,000 --> 01:04:38,000 Vi behøver ikke at jeg variabel. 837 01:04:38,000 --> 01:04:43,000 På dette tidspunkt, hvis vi skulle lave en anden foreach løkke 838 01:04:43,000 --> 01:04:48,000 og vi var at sløjfe over hver arr. 839 01:04:48,000 --> 01:04:56,000 og linje nu, hvis vi ekko-oops, sorry. 840 01:04:56,000 --> 01:05:00,000 Vi kan ikke bruge komma. Vi er nødt til at bruge dette som søgeord. 841 01:05:00,000 --> 01:05:05,000 Nu, hvis vi echo linje, vi bør få alle de unikke ord i filen. 842 01:05:05,000 --> 01:05:10,000 Hvis vi går op til some_file.txt, 843 01:05:10,000 --> 01:05:19,000 og lad os sige, vi gør æble, banan, æble, æble, banan, 844 01:05:19,000 --> 01:05:22,000 hvis vi udskrive alle de unikke ord i denne fil skal vi kun får 845 01:05:22,000 --> 01:05:30,000 æble og banan at printe ud. 846 01:05:30,000 --> 01:05:36,000 Hvis vi gemme dette, nu her vi vil ind 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 succes uniqued filen. 849 01:05:51,000 --> 01:05:55,000 >> Den sidste del af dette problem beder dig om at sortere dette array, før du udskrives det ud 850 01:05:55,000 --> 01:05:58,000 fordi der i dette simple eksempel, som vi lige har gjort 851 01:05:58,000 --> 01:06:04,000 vi var heldige i den forstand, at fil- 852 01:06:04,000 --> 01:06:06,000 vi gjorde dette konstruerede eksempel med æbler og bananer. 853 01:06:06,000 --> 01:06:08,000 Det blev allerede sorteret. 854 01:06:08,000 --> 01:06:19,000 Men ved hjælp af den simple slags funktion, du kan sortere et array, som er temmelig smart. 855 01:06:19,000 --> 01:06:24,000 Den sidste ting jeg ønskede at tale med jer om virkelig hurtigt 856 01:06:24,000 --> 01:06:31,000 er, at denne form for PHP er alt sammen meget godt, og det er super handy 857 01:06:31,000 --> 01:06:43,000 at vide, hvordan man skal gøre, hvis du nogensinde brug for at gøre små, hurtige ting programmering. 858 01:06:43,000 --> 01:06:48,000 For eksempel, hvis jeg har brug for at skrive et program, der siger 859 01:06:48,000 --> 01:06:53,000 sætter alle i sektioner Jeg har ikke tænkt mig at gå og skrive det i C. 860 01:06:53,000 --> 01:06:55,000 Det kommer til at være lang. 861 01:06:55,000 --> 01:06:57,000 Det kommer til at være lidt af en smerte, især hvis der er involveret filer, 862 01:06:57,000 --> 01:07:00,000 Ligesom du fyre har set. 863 01:07:00,000 --> 01:07:05,000 Det er så rart at med netop dette meget kode lige her 864 01:07:05,000 --> 01:07:08,000 vi var i stand til at rippe gennem en fil, skal du trække alle de unikke værdier 865 01:07:08,000 --> 01:07:11,000 og udskrive dem ud igen. 866 01:07:11,000 --> 01:07:16,000 >> Men for dine opgaver, for dine projekter 867 01:07:16,000 --> 01:07:20,000 hvis du bygger hjemmesider med PHP strømmen er at 868 01:07:20,000 --> 01:07:25,000 vi kører vores PHP-filer gennem denne tolk, 869 01:07:25,000 --> 01:07:29,000 og tolken behandler alt inden for PHP tags, 870 01:07:29,000 --> 01:07:34,000 forlader alt andet uberørt og spytte ud resultaterne. 871 01:07:34,000 --> 01:07:40,000 Vi kan gøre dette for at opbygge HTML programmering. 872 01:07:40,000 --> 01:07:46,000 Hvis vi nu går tilbage til spec, det sidste problem i spec 873 01:07:46,000 --> 01:07:56,000 taler om denne idé om fusioner 874 01:07:56,000 --> 01:08:01,000 og skabe en drop-down menu, 875 01:08:01,000 --> 01:08:06,000 som du måske eller måske ikke ønsker at gøre, afhængigt af hvad dit endelige projekt gør, 876 01:08:06,000 --> 01:08:13,000 som tillader brugeren at vælge på en liste over alle mulige koncentrationer 877 01:08:13,000 --> 01:08:15,000 deres én koncentration. 878 01:08:15,000 --> 01:08:21,000 Nu, dette er sådan en smerte at skrive dette ud 879 01:08:21,000 --> 01:08:25,000 og er nødt til at gøre alt dette manuelt, især når du har for at sikre, 880 01:08:25,000 --> 01:08:28,000 at du har alle de vinkelbeslagene på det rigtige sted og alle citater i det rigtige sted, 881 01:08:28,000 --> 01:08:34,000 så med PHP kan du gøre dette programmeringsmæssigt, og du kan gøre dette virkelig hurtigt. 882 01:08:34,000 --> 01:08:36,000 >> Lad os se, hvordan du gør dette. 883 01:08:36,000 --> 01:08:42,000 Vi vil åbne op for en ny fil. 884 01:08:42,000 --> 01:08:46,000 Vi kommer til at sætte i vores PHP tags. 885 01:08:46,000 --> 01:08:53,000 Vi vil kalde det concentrations.php, 886 01:08:53,000 --> 01:08:58,000 og nu når du gør dette, at sådan en god ting at tænke over 887 01:08:58,000 --> 01:09:02,000 når du forsøger at mikse og matche din PHP og din HTML 888 01:09:02,000 --> 01:09:08,000 er at finde ud, okay, hvad er den del, jeg ønsker at programmeringsmæssigt generere? 889 01:09:08,000 --> 01:09:11,000 Hvad er den del, jeg programmatisk kan generere? 890 01:09:11,000 --> 01:09:17,000 Det er sandt, at du kan gøre alle dine HTML 891 01:09:17,000 --> 01:09:19,000 indersiden af ​​PHP blokke. 892 01:09:19,000 --> 01:09:24,000 Du kan gentage alle HTML som strenge. 893 01:09:24,000 --> 01:09:30,000 For eksempel, hvis jeg ønsker at begynde at gøre de udvalgte mærker inde i PHP 894 01:09:30,000 --> 01:09:46,000 Jeg kan sige ekko, siger vælge navn = koncentration, 895 01:09:46,000 --> 01:09:49,000 og derefter ned under jeg kunne have en anden echo tag 896 01:09:49,000 --> 01:09:57,000 eller en anden ekko kaldet luk vælge. 897 01:09:57,000 --> 01:10:00,000 Dette er en måde at gøre det, fordi hvad dette bogstaveligt vil gøre 898 01:10:00,000 --> 01:10:09,000 er udskrive denne streng, når det køres gennem PHP tolk, 899 01:10:09,000 --> 01:10:12,000 så resultatet bliver HTML. 900 01:10:12,000 --> 01:10:18,000 Hvis jeg gemme denne fil, da det er lige nu 901 01:10:18,000 --> 01:10:24,000 og jeg kører php concentrations.php 902 01:10:24,000 --> 01:10:26,000 se på, hvad jeg fik. 903 01:10:26,000 --> 01:10:30,000 Jeg fik denne open Luk Vælg tag. 904 01:10:30,000 --> 01:10:36,000 >> Hvis jeg skulle gøre det, og jeg skulle gemme dette resultat til en fil, 905 01:10:36,000 --> 01:10:45,000 sige, concentrations.html-vent, det ligner l er gået over til den anden side, 906 01:10:45,000 --> 01:11:02,000 nu, hvis jeg åbner op her concentrations.html du se, at jeg har en gyldig HTML-fil. 907 01:11:02,000 --> 01:11:05,000 Er det lidt underligt? 908 01:11:05,000 --> 01:11:09,000 Vi bruger PHP til at skabe HTML, skal du oprette gyldig HTML. 909 01:11:09,000 --> 01:11:13,000 Den måde vi gør det, er vi bare have PHP print 910 01:11:13,000 --> 01:11:16,000 HTML, som vi ønsker det for at udskrive. 911 01:11:16,000 --> 01:11:20,000 Det er bogstaveligt talt hvordan PHP hjemmesider fungerer. 912 01:11:20,000 --> 01:11:24,000 Når du besøger et websted, der sender dig til noget lignende 913 01:11:24,000 --> 01:11:30,000 noget, noget, noget dot com slash index.php 914 01:11:30,000 --> 01:11:33,000 computeren er bogstaveligt talt ringer op index.php, 915 01:11:33,000 --> 01:11:38,000 kører det gennem PHP tolk, og hvad junk kommer ud 916 01:11:38,000 --> 01:11:49,000 det er at sende tilbage til browseren og sige hey, browser, fortolke det som HTML. 917 01:11:49,000 --> 01:11:54,000 Det gode er, at det kan være en smerte konstant at skrive ekko, ekko, ekko, ekko 918 01:11:54,000 --> 01:11:59,000 og vedlægge alt i citater som dette, så hvis du ønsker at skrive 919 01:11:59,000 --> 01:12:04,000 HTML, der kommer til at være statisk dig selv, du kan gøre det på denne måde, 920 01:12:04,000 --> 01:12:16,000 sætte det udenfor, luk det, 921 01:12:16,000 --> 01:12:21,000 og så her du kun sætte inde i PHP tags, som du kender 922 01:12:21,000 --> 01:12:26,000 du ønsker at programmæssigt generere, og i dette tilfælde er det disse optioner tags 923 01:12:26,000 --> 01:12:31,000 der er en smerte at generere. 924 01:12:31,000 --> 01:12:37,000 >> For eksempel kunne vi generere tusind option tags 925 01:12:37,000 --> 01:12:48,000 ved at gøre noget som dette, $ i <1000, i + + 926 01:12:48,000 --> 01:13:00,000 og siger ekko option value = $-Ups, jeg kan ikke gøre det. 927 01:13:00,000 --> 01:13:03,000 Nå, lad os give det en chance og se hvad der sker. 928 01:13:03,000 --> 01:13:22,000 $ I og derefter sige $ i 01:13:27,000 Snarere end at skulle skrive, at option tag tusind forskellige tidspunkter 930 01:13:27,000 --> 01:13:33,000 Jeg bruger PHP kode til at generere det automatisk, programmeringsmæssigt. 931 01:13:33,000 --> 01:13:38,000 Kind of fiks. Yeah. 932 01:13:38,000 --> 01:13:41,000 Jeg husker dette bliver nævnt i enten foredrag eller walkthrough, 933 01:13:41,000 --> 01:13:43,000 men hvad er forskellen mellem anførselstegnene, 934 01:13:43,000 --> 01:13:45,000 de normale og disse enlige ting? 935 01:13:45,000 --> 01:13:49,000 Det er faktisk noget, som jeg har gjort forkert her, at jeg skulle til at vise dig. 936 01:13:49,000 --> 01:13:52,000 De enkelte citater tillader ikke nogen særlige tegn, 937 01:13:52,000 --> 01:13:57,000 så alt i en enkelt streng i anførselstegn fortolkes bogstaveligt. 938 01:13:57,000 --> 01:14:02,000 Hvis jeg havde en \ n inde i enkelte anførselstegn, og jeg gemmer dette, for eksempel, 939 01:14:02,000 --> 01:14:07,000 og nu vil jeg gå ned her og køre det- 940 01:14:07,000 --> 01:14:12,000 oops, hvor skal jeg hen? 941 01:14:12,000 --> 01:14:19,000 Åh, det er fordi jeg glemte $. 942 01:14:19,000 --> 01:14:25,000 >> Nu hvis jeg åbner op-faktisk, her, vil vi slippe af med den skrive det til en fil. 943 01:14:25,000 --> 01:14:27,000 Vi vil bare læse den. 944 01:14:27,000 --> 01:14:34,000 Her kan du se, at jeg har fået denne bogstavelig \ n i strengen, ligesom ikke en egentlig ny linie, 945 01:14:34,000 --> 01:14:38,000 og ligeledes, i stedet for faktisk at interpolere værdien af ​​denne variabel 946 01:14:38,000 --> 01:14:42,000 det gav mig $ i sig selv, hvilket er lidt af en smerte. 947 01:14:42,000 --> 01:14:46,000 Den måde omkring dette er at bruge dobbelte anførselstegn, 948 01:14:46,000 --> 01:14:52,000 og så når du bruger anførselstegn det rent faktisk vil 949 01:14:52,000 --> 01:14:56,000 korrekt interpolere værdierne af alle disse variabler i her 950 01:14:56,000 --> 01:14:59,000 og anerkender også denne \ n til at være den nye linje, at det er 951 01:14:59,000 --> 01:15:02,000 og ikke \ n. 952 01:15:02,000 --> 01:15:07,000 Brug af enkelt dem er rart, når du har 953 01:15:07,000 --> 01:15:10,000 tegn, der kan fortolkes som specialtegn, fordi så du ikke behøver at 954 01:15:10,000 --> 01:15:15,000 undslippe dem konstant. 955 01:15:15,000 --> 01:15:18,000 Ting kan få rodet, og ofte den måde jeg gør det, 956 01:15:18,000 --> 01:15:24,000 bare for at gøre tingene let, er, at hvis jeg har tænkt mig at have noget 957 01:15:24,000 --> 01:15:31,000 HTML gerne i min kode jeg vil omfatte edit indenfor enkelte anførselstegn 958 01:15:31,000 --> 01:15:36,000 og derefter bruge denne Sammenkædningsoperator 959 01:15:36,000 --> 01:15:43,000 til at sammenkæde de variable i. 960 01:15:43,000 --> 01:15:47,000 Dette er en anden måde at gøre det 961 01:15:47,000 --> 01:15:52,000 hvor vi har fået den prik, der kommer til at forbinde det er en streng 962 01:15:52,000 --> 01:15:56,000 med det med dette med dette, 963 01:15:56,000 --> 01:15:59,000 og nu har jeg ikke behøver at undslippe disse dobbelte anførselstegn. 964 01:15:59,000 --> 01:16:02,000 Jeg behøver ikke at bruge denne fyr til at flygte. 965 01:16:02,000 --> 01:16:08,000 De vil bogstaveligt talt blive udskrevet ud som anførselstegn og derefter denne fyr lige her. 966 01:16:08,000 --> 01:16:11,000 Dette er en anden måde at blande det hele sammen. 967 01:16:11,000 --> 01:16:14,000 >> [Student] Også, når du gentog getType var der ingen anførselstegn på alle. 968 01:16:14,000 --> 01:16:22,000 Højre, så ekko er lidt speciel i den forstand, at du ikke behøver parenteser. 969 01:16:22,000 --> 01:16:29,000 Du behøver ikke at have anførselstegnene nødvendigvis omkring variabler, 970 01:16:29,000 --> 01:16:37,000 ligesom det er gyldigt at sige echo $ i, og det kommer til at fortolke dette som en streng. 971 01:16:37,000 --> 01:16:44,000 Det kommer til at gøre det stemmer, så vi kunne gøre dette, og det er gyldigt også, men vi har ikke brug for det. 972 01:16:44,000 --> 01:16:48,000 Det er valgfrit. 973 01:16:48,000 --> 01:16:53,000 I denne uges problem set se ud for en masse af den slags 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 ligesom dette, nu og hvis vi rulle tilbage og vi kører dette 976 01:17:08,000 --> 01:17:13,000 kan vi se, at vi har en hel bunke af optionsværdier 977 01:17:13,000 --> 01:17:15,000 der er lige blevet udskrevet. 978 01:17:15,000 --> 01:17:20,000 Vi har alt dette HTML, der fik skabt virkelig hurtigt for os. 979 01:17:20,000 --> 01:17:22,000 Jeg vil overlade det som en øvelse. 980 01:17:22,000 --> 01:17:24,000 Det er meget lig den fil læsning, som vi gjorde tidligere. 981 01:17:24,000 --> 01:17:31,000 >> Der er en concentrations.txt fil, som du kan trække ned fra CDN, 982 01:17:31,000 --> 01:17:34,000 og du kan åbne den ved hjælp af samme foreach trick, som vi gjorde tidligere, 983 01:17:34,000 --> 01:17:39,000 og foreach du bare nødt til at gentage en indstilling og tilslutte 984 01:17:39,000 --> 01:17:44,000 de relevante værdier, de passende taster og indekser, 985 01:17:44,000 --> 01:17:49,000 og derefter får du en drop down, der bogstaveligt talt skaber 986 01:17:49,000 --> 01:17:54,000 programmatisk for dig alle de forskellige koncentrationer på Harvard. 987 01:17:54,000 --> 01:17:57,000 En praktisk ting at have. 988 01:17:57,000 --> 01:18:02,000 Der er en masse af konfiguration ting til denne opgave. 989 01:18:02,000 --> 01:18:07,000 Hvis du ikke allerede har gjort det tage den næste halve time, time, 990 01:18:07,000 --> 01:18:10,000 nogen tid i aften definitivt sikker, 991 01:18:10,000 --> 01:18:14,000 gå gennem det problem indstillede spec, 992 01:18:14,000 --> 01:18:20,000 se, hvad der sker med etablering af de vhosts, den lokale vært, alt det der. 993 01:18:20,000 --> 01:18:24,000 Én ting at påpege lige nu er, at 994 01:18:24,000 --> 01:18:30,000 i de fleste problemområder sæt vi har stået i din Dropbox mappe 995 01:18:30,000 --> 01:18:34,000 og derefter downloade det problem indstillede zip-fil og udpakke den. 996 01:18:34,000 --> 01:18:36,000 For dette problem sæt, du ikke vil. 997 01:18:36,000 --> 01:18:40,000 Du ønsker at gå ind i denne vhosts bibliotek. 998 01:18:40,000 --> 01:18:45,000 Du ønsker at gå ind vhosts og gå ind i den lokale vært bibliotek i det, 999 01:18:45,000 --> 01:18:50,000 og det er her, du ønsker at trække ned zip-filen, 1000 01:18:50,000 --> 01:18:55,000 unzip det, og gør dig klar til at gå. 1001 01:18:55,000 --> 01:18:57,000 Du bliver nødt til at følge trinene nøje. 1002 01:18:57,000 --> 01:19:02,000 >> Hvis du har spørgsmål, send en mail, lægge det på Diskuter, kommer til kontortid. 1003 01:19:02,000 --> 01:19:08,000 Tak fyrene. I næste uge vil vi have en anmeldelse session for quizzen. 1004 01:19:08,000 --> 01:19:12,000 Nyd din sidste problem sæt. Jeg håber, at det hele går rigtig godt. 1005 01:19:12,000 --> 01:19:14,000 [CS50.TV]