[Powered by Google Translate] [Afsnit 8] [mindre behagelig] [Nate Hardison] [Harvard University] [Dette er CS50.] [CS50.TV] Velkommen til vores andet til sidste afsnit. I denne uge vil vi snakke om PHP, og derefter næste uge vi vil gøre en lille anmeldelse til Quiz 1. Vi vil starte på side 3 af problemet sætter pack, og vi vil arbejde gennem den del af spørgsmålene forholdsvis hurtigt. På side 3, begynder vi at tale om denne forskel mellem C og PHP i den forstand, at PHP er et dynamisk skrevet sprog, hvorimod C statisk indtastes, og har nogen virkelig hurtigt gjort nogen kodning i noget som PHP eller Python eller Ruby før, JavaScript? Helt nyt? Okay. Alle disse sprog, som jeg lige har nævnt er meget forskellige fra sprog som C og C + + og Java i den forstand, at når du angiver en variabel, du ikke nødt til at erklære hvilken form for variabel det er, så i C vi var fast at skulle altid sige dette vil være en int variabel, eller det vil være en char * variabel, hvorimod med PHP, med Python, med Ruby, med en masse af disse mere moderne sprog, du ikke behøver at gøre det på alle. Du skal bare erklære din variabel, og i tilfælde af PHP De erklærer, at det er en variabel ved forudfastsætte det med en $ tegn, og derefter typen af ​​variablen afhænger af den værdi det er holder, der er lidt cool. For at spille rundt med det en lille smule, har vi prøve PHP-kode lige her i mellem start og slut tags. Vi bruger denne form for som HTML i den forstand, at vi har fået disse vinkelbeslagene her for at åbne og lukke. Du vil se dette med HTML. Du vil se den samme slags syntaks med XML også. Dette indikerer begyndelsen af ​​en PHP blok. Dette? Php er specifik for PHP. Vi lukker alt med en?> Så godt. Lad os åbne op for en fil i vores apparatet ved hjælp uanset hvad du gerne vil. I denne pakke den siger at kalde dynamic.php. I sandhed, kan du kalde det hvad du vil, men filnavnet vil komme op og være vigtigt senere, så bare huske hvad du kalder det. Jeg har tænkt mig at skifte over til apparatet, og jeg har tænkt mig at lave en mappe til § 9 Jeg tror, ​​vi er på nu. Og vi vil gå ind i afsnit 9, og jeg har tænkt mig at bruge gedit. Lad os se, gedit, og jeg har tænkt mig at kalde mine dynamic.php. Boom. Inden dynamic.php, dette da er en PHP-fil og jeg vil køre dette gennem PHP tolk Jeg er nødt til at starte det hele ud med disse åbne tags, så jeg har tænkt mig at starte dem med det samme, give mig selv en lille plads i mellem tags, og derefter pointen med denne øvelse var at lege med denne funktion kaldet getType, så getType, denne funktion lige her. Bemærk, at der ikke er understregning eller mellemrum eller bindestreg eller noget lignende adskille de 2 ord, og få skrive, bare ét ord helt. Men hvad dette vil gøre, er, hvis jeg passere i en variabel til getType, sige $ var eller $ x, Dette vil fortælle mig slags i en debugging format hvad navnet på denne type er. Vi vil eksperimentere her. Især, hvis du ser tilbage på Pset spec vi har fået et par forskellige linjer kode her. I den første linje kode vi initialisere denne variabel, $ var, at være lig med 7, og så har vi denne printf linje der siger hey, printf var tomt. Printf er en af ​​de mange måder, vi kan udskrive ting i PHP. Ofte vil du se ekko funktion, der bruges i stedet for printf, men printf vi kender alle have været kodning i C for et stykke tid. Hvad du rent faktisk kan gøre, er at Lad os se om kopiere og indsætte værker. Jeg har tænkt mig at give det en chance. Vi vil gå tilbage over til apparatet. Okay, og der går vi. Og afstanden er lidt funky, men here we go. Vi har fået denne kode herinde. [Student] Er det ikke god stil at fane det? Undskyld? [Student] Er det almindeligt at fane det? Højre, så Sam spørger, om det er konvention til fane det eller ej. Typisk ja. I dette tilfælde har jeg valgt at lade være. Ærligt, vil du se forskellige ting mellem forskellige programmører. PHP bruges typisk ofte i kombination med HTML og andre sprog, og så nogle gange udskrivningen vil se lidt funky hvis du led i PHP start og slut tags. Det er virkelig afhænger af. I dette tilfælde kopiere og indsætte ikke indsætte fanerne i for mig, men det helt sikkert gør, som du sagde, gør det klarere. Okay, hvis du gemmer denne kode i dynamic.php så hvad du kan gøre, er at komme ned til din terminal vindue hvor jeg er lige hernede i gedit, og gøre hvad der svarer til compile hjælp gøre og derefter kører din kode i C alt hvad du skal gøre med PHP-fil er at starte op PHP tolk, der er et lille program kaldet PHP, og det argument, du giver til tolken er den fil, du vil fortolke. I dette tilfælde dynamic.php. Whoops, hvor har jeg sige det? Åh, jeg sætte det i afsnit 9, og her er jeg. Det er derfor. Nu hvis jeg løber det igen vi se, at i min første getType funktionskald VaR er et heltal. I det næste var er en streng, og derefter i den tredje var en boolean. Hvad er interessant ved dette er, hvis vi rulle tilbage op ser vi, at disse er typer, svarende til dem, som vi havde i C. Vi havde int'er i C. Vi slags havde strenge i C, så strenge var ikke en helt legit type i den forstand, at vores CS50 streng var virkelig hvad? Undskyld? Missy? [Missy] Char *. Ja, det var denne char * vi bruges. I begyndelsen af ​​semestret vi brugte strengen type, men det var virkelig en char * under kølerhjelmen. Vi har lige typen defineret det, mens det i PHP disse strenge er en egentlig type. Der er ikke mere af denne char * type stuff. Du vil se, at vi kan gøre mange flere ting med strygere meget lettere i PHP, end vi kunne i C, og så endelig, har vi denne boolean type, og den store forskel her er, at hvis vi rulle tilbage ned ser vi, at navnet på disse typer er nu heltal, streng, og boolean i stedet for int og bool, og da du afhenter forskellige programmeringssprog, det antages, at på et tidspunkt i jeres liv, vil du komme i kontakt med forskellige dem, du vil opdage særheder som denne hvor C kalder heltal int'er. Nogle kalder det heltal. Der er andre udtryk, som du vil løbe ind. Big int vi så i dag i SQL. Der er også nummer og derefter bool, boolean, alle mulige forskelle der. Det er ikke frygtelig interessant, men nu vil jeg give dig en lille smule tid- Hvis vi ind igen ud-at arbejde gennem denne øvelse nederst på side 3 hvor den beder hvilke typer svarer til disse værdier her nederst. Vi har 3.50. Vi har denne ting lige her, der er interessant. Vi har ikke set det før, men hvis du har fulgt med i foredrag du sikkert allerede ved, hvad det er. Så har vi det, som det er lidt funky. Du anerkender dette. Hvad er det i C? Sam? Hvad ville det give dig i C? Det ville åbne en fil kaldet dynamic.php og gøre det læsbart. Ja, og hvad vil være den type variabel, at vi ville overdrage dette til? >> File stjerne. Præcis, vi ville overdrage denne til en fil stjerne. Det er legitimt PHP også. Kør det. Se hvad der sker, når du passerer det ind i getType. Og så også tjekke ud af, hvad null er, hvad der kan være i PHP. Jeg vil give dig et par minutter. Du kan bogstaveligt talt kopiere og indsætte disse værdier i, og så vil vi gøre lidt tilfældig samtale på dig og se, hvad du fik. [Student] Jeg har et spørgsmål. << Yeah. I en af ​​de foredrag David sagde, at der er noget, du kan sætte på toppen af ​​din fil så du ikke behøver at skrive i PHP hver gang. Hvad var det? Han var sandsynligvis tale om pund bang, hash bang. Det er et direktiv, hvis du markerer din fil som eksekverbar så hvad det gør, er, når du køre filen det vil fortælle skallen program at bruge PHP tolk til at fortolke indholdet af filen. Spørgsmålet er, hvad der var denne særlige linje at vi kunne omfatte øverst på vores PHP-filer til ikke at medtage dette PHP linje eller denne PHP kommando, når vi ønsker at køre filen? Og du kan faktisk gøre dette med en masse forskellige filer. Jeg tror, ​​det afhænger af, hvor PHP binære er gemt, men ofte usr / bin / php er et godt sted at starte. Du kan finde ud af dette netop ved at gå tilbage til dit apparat og skrive ud som php. Den hvilken kommando tal ud, når du udfører binære eller en kommando, hvor den tilsvarende fil er. Det fortæller mig, at PHP er virkelig aliasing denne binære fil der er gemt i usr / bin, hvilket er hvor en masse af systemets binære filer er installeret. For eksempel, hvis jeg ruller op til toppen, nu hvor jeg har lagt dette # linje i here Jeg kan rulle ned, og jeg kan prøve at køre dynamic.php, men jeg får denne fejl om tilladelse nægtes, og hvad det betyder, er, at denne fil ikke i øjeblikket give eksekverbare tilladelser. Det er ikke markeret som en fil, at nogen kan køre. Når du kørte foretager eller Dunk og du fik en eksekverbar fra det compileren var smart nok til at vide, at hey, jeg bygger en eksekverbar. Du har sikkert ønsker at udføre det, så det ville automatisk konfigurere tilladelserne til dig. Dette er ikke tilfældet, selv om, når du opretter en normal fil fra bunden, Årsagen er typisk, du ikke ønsker at have nogen fil på dit system være eksekverbar, så du faktisk nødt til at gå ind og manuelt gøre det. Den nemmeste måde at gøre det på er med kommandoen chmod, og chmod + x siger tilføje eksekverbare bit fordi der er read bit, skrivebeskyttelsen bit og eksekverbare bit, r, w og x, og siger chmod + x vil tænde den eksekverbare bit for derefter filen som vi angiver, hvilket i dette tilfælde vil være dynamic.php. [Student] Er der tændt for alle? Lad os kontrollere dette ud, så hvordan ville jeg tjekke at se tilladelser? Ved du hvordan jeg ville kontrollere at se tilladelserne for en fil? [Uhørlig student svar] Undskyld? >> [Student] XSD. XSD giver os filen i hacks. En liste over alle de filer,-l, vil vise mig alle filer i mit bibliotek slags i deres lange, ordrige notering, og så her ser vi, at denne dynamic.php fil blev senest ændret 5. november kl 16:21. Ejeren af ​​denne fil er jharvard. Det er den bruger, der er logget ind Det er brugeren arbejder jeg som, og hvis du er også i apparatet, du arbejder også som bruger jharvard. Du er i de studerende i gruppen og disse er ting, du vil se ofte nok. Vi kan gå ind i en masse detaljer her, men for det meste hvad du ønsker at se på, når du søger at se , om en fil er eksekverbar primært den bruger, der ejer filen, ejer, så denne jharvard, og så har vi tilladelserne bits herovre til venstre, og den måde at læse dette er, at den sidste bit typisk anvendes til mærkning også i hvert fald i dette tilfælde denne sidste bit vil ofte være indstillet til ad for at angive at filen er et katalog og ikke bare en normal fil. Så de følgende 3 bit lige her fastlægge de tilladelser, som ejeren af ​​filen har, så i dette tilfælde jharvard som ejer af filen, læse og kan skrive denne fil, men der er en streg siger, at jharvard ikke kan eksekvere denne fil. De næste 3 bit er for gruppen, så dette er den studerende i gruppen så hvis der var flere brugere på min apparat, og vi havde flere brugere som en del af de studerende i gruppen så kan de alle læse denne fil, men de kan ikke skrive det, og ligeledes andre, verden kan kun læse denne fil så godt. Der er en god, lang writeup om dette, så du kan læse online. I det problem indstillede spec vi går ind i dette i flere detaljer. [Student] Er 218 henviser til verden? De 218 er-off toppen af ​​mit hoved, jeg glemmer, men ingen. Lad os se. Jeg afblænding på det lige nu. Tilbage til hvad vi var ved at gøre med dette chmod + x hvor vi ønskede at give dynamic.php eksekverbare tilladelser, og spørgsmålet var, hvorvidt dette ville give eksekverbare tilladelser til alle eller bare jharvard, og vi kan se dette ved kører kommandoerne og skrive ls-l, og nu ser vi, at den er markeret som eksekverbar. Du kan se, at der var en farveændring. Nu dynamic.php er opført i grøn, og det ligner svaret på spørgsmålet er, hvad, Charlotte? [Charlotte] Kun jharvard. >> Only jharvard, yeah. Hvis vi ønskede at vende den eksekverbare smule på for alle hvordan kan vi gøre det? Nogen tanker? >> A + x? Ja, præcis. Charlotte sagde vi kan gøre chmod af a + x af dynamic.php, og nu, hvis vi kører ls-l ser vi, at de eksekverbare bits er faktisk tændt for alle. Og du kan faktisk gøre det modsatte af dette, så du kan slå den fra for alle ved hjælp minus. Nu er det slukket, og nu kan vi slå det til igen for jharvard således at vi rent faktisk kan køre det nu, og nu kan du se, når vi kører koden denne særlige #! linje øverst, #! linje, fortalte skallen, fortalte vores terminal hey, når denne fil køres, bruge / usr / bin / php til at fortolke denne fil og derefter udskrive output. [Uhørlig student spørgsmål] Sure, lad mig rulle op igen. Ligesom dette. Du kan se alle disse direktiver starte med denne pund og derefter udråbstegn, undertiden kaldes en molevitten, hash bang. [Student] Hvordan kan vi køre det med php dynamic.php før vi gør det eksekverbar? Spørgsmålet var, hvordan kan vi køre denne bruger PHP binære mens dynamic.php ikke er eksekverbar? Det er super vigtigt, fordi det er præcis, hvordan det kommer til at arbejde, når du skriver problem set 7. Det meste af tiden PHP-filer er ikke direkte eksekverbar. Den måde, der virker, er fordi det er den PHP binære fil, der er eksekverbar. Tolken er den ting, der bliver henrettet, og så hvad det gør bogstaveligt talt slurping i hele indholdet af vores dynamic.php fil og går linje for linje og udføre disse kommandoer, så det er ved hjælp af vores PHP-fil som en liste over instruktioner. Det er ikke direkte at udføre det. Det er, hvor vi siger, at disse filer er fortolket på kørselstidspunktet. Det er en køretid sprog i stedet for noget, der er fastlagt påkompileringstidspunktet, ikke et kompileret sprog som C. Er der en måde at få en køretid sprog til at handle, som om det er en kompilere tid sprog, gerne, hvis du har alle driften gøres på serveren snarere end du ved hvad jeg mener? Ja, så spørgsmålet er er der en måde at få drifttid sprog til at handle mere som påkompileringstidspunktet typer sprog? Og der er, mener jeg, det er et aktivt forskningsområde for en masse af disse selskaber. Jeg tror, ​​Facebook har gjort et stort arbejde med PHP og kompilere den ned, hvilket gør det hurtigere, optimering det eftersom deres site er bygget på PHP. Hvis du har fulgt node.js på alle, der er lidt af en JavaScript-fortolkeren at være i stand til at køre JavaScript uden for browseren, uden for din web-browser, fordi der traditionelt JavaScript ville bare køre inde i Firefox eller Chrome, og det vil blive anvendt til at lave fede animationer ske på en webside og gør din webside dynamisk. Det er blevet bygget på en masse arbejde, som Google har gjort at gøre JavaScript og C + + binde sammen, så der er en masse af aktiv forskning til få disse sprog til at interagere og optimere dem, primært fordi så mange mennesker kan kode i PHP og JavaScript fordi det er meget nemmere. Det er meget pænere. Du har ikke pointers. Du har ikke typer, svæver rundt. De ønskede at opnå fordelene ved disse påkompileringstidspunktet sprog med alle typekontrol og hastigheden og den nedre hukommelse og alt dette samtidig bibeholde fleksibiliteten og brugervenligheden af ​​disse nyere. Tilbage til vores oprindelige plan for angreb. Vi har et par af disse spørgsmål her i vores problem set spec. Lad os gå igennem dem virkelig hurtigt, og vi vil gå rundt i lokalet. Charlotte, hvilken type er 3,50? [Charlotte] Det er en dobbelt. >> Det er en dobbelt. Jimmy, hvad er det næste? >> Et array. Et array, awesome, og Jared, hvad er fopen? [Jared] Det er en ressource. >> Det er en ressource. Det er lidt en ny, ikke en fil stjerne, ikke en fil. Det er en ressource er den type i PHP, og jeg er ked af det, Ella, den sidste null er hvad? Null. Null, hvordan er det staves i PHP? >> På samme måde. På samme måde, hovedstæder? >> Yeah. Ja, okay. Her går vi, vi har en dobbelt, så har vi en matrix, har vi en ressource, og så har vi null. Lad os se nu har du set, lad os se, så nu jeg gætte, hvad jeg også vil gøre, er trække op denne webside lige her, denne php.net / manual, så hvis du fyre kopiere det og åbne en webbrowser. Jeg har tænkt mig at trække op Chrome, sætte det i. Jeg vil gerne vise dig dette ikke bare fordi vi kan snakke hele dagen om typer og alt det sjove men snarere fordi det er den PHP manual, og der er en masse af PHP programmører derude. Der er en masse af PHP hjemmesider derude, og som et resultat er der meget dokumentation PHP, og manualen, denne php.net, er et rigtig godt sted at gå når du har spørgsmål om, hvad er den bedste måde at gøre X i PHP eller hvad betyder en funktion ud? Bare slags blive fortrolig med hvordan det ser ud, fordi du vil komme her ofte, lidt for problem indstille 7. Hvis du ender med at gøre et afsluttende projekt, der bruger PHP dette vil være et sted, du vil blive meget godt bekendt med. Ofte den måde, folk gøre dette er de bruger Google til at søge efter webstedet, og de ikke bruge søgefeltet, der er heroppe i øverste højre, som er form for lille. Hvis du google rundt efter noget at gøre med PHP og du kan se en af ​​de manuelle links poppe op, kan du typisk påberåbe sig denne som en temmelig god ressource. Awesome, så ud af disse typer, lige ud af nysgerrighed, hvilke har vi ikke set? Noget vi ikke har set her? [Student] Resource. >> Vi oplevede ressource med fopen opkaldet. [Student] Objekter. >> Objekter, vi ikke har set i sikker. Noteringer vi ikke har set. Der er nogle af disse pseudo-typer. Vi definitivt kun oplevede heltal og dobbelt. Vi ikke se nogle af de andre, så hvis vi klikker på heltal vi kan se, er der andre heltal, som de har her? Er de alle-så heltal, integer, heltal. Nogle sprog har større integer typer, ligesom vi så på MySQL i dag var der int og derefter stor int. Cool. Så, PHP manual. Lad os gå tilbage til vores problem set spec, og vi vil nu rulle ned til side 4. En af de ting, der sker, når du får disse sprog der ikke har denne statiske skrive, så disse sprog, hvor du er nødt til at erklære typen af ​​en variabel op foran er du får de tilfælde, hvor du kan begynde at få variabler af forskellige typer interagere med hinanden, og PHP gør denne ting, hvor den forsøger at gøre hvad det anser for at være den mest fornuftige ting at gøre når du har 2 forskellige typer interagerer med hinanden. For eksempel, hvis vi ser på disse linjer kode lige her du se, at vi har, hvad der sker, når vi forsøger og tilføje snor 1 til det hele tal 2. Hvad sker der, hvis vi prøver og tilføje en streng, der ikke er en numerisk værdi men snarere faktiske tegn, CS til tallet 50? Så må vi se, er der noget anderledes, der sker, når stedet for at tilføje en streng til et tal vi tilføjer et nummer til en streng, og så videre og så videre til det punkt, hvor vi kommer en slags underlige ting lige her, hvor vi har fået 7 + sandt. Hvad dælen betyder det? Hvis du fyre gå videre og indsætter noget af denne kode i dit apparat. Du kan holde den i dynamic.php. Vi får se, hvad der sker. [Student] Bare bruge print, ikke printf? Ja, så vil du opdage, at print er også en gyldig funktion til udskrivning i PHP. Der er mange forskellige måder at gøre det. Vi vil se med et par af de eksempler senere, når vi begynder at tale om den unikke problem, at vi kommer til at skrive og derefter koncentrationerne problem, at vi kommer til at skrive at selv om vi har fopen og fclose Det er ofte ikke den enkleste måde at læse på indholdet af en fil. PHP har en masse af disse C-lignende holdovers. [Student] Når jeg sætter i alle 6 af de ting jeg kun får ét nummer som et output. [Nate H.] Når du lægger i alle 6 af disse ting. Lad os se, er det, fordi det er muligvis, én ting er, at disse print opkald ikke bliver afsluttet ved udgangen af ​​nye linjer. Der er ingen ny linje, der adskiller hver af disse trykte opkald, så måske du får en stort antal, og det er egentlig bare amalgam af nye linje tegn. [Student] Okay, hvordan kan jeg være sikker- Nå, der er en masse forskellige måder. Du kan manuelt sætte i en udskrift af en ny linje karakter, et ekko af en ny linje karakter, udskrivning af ny linje. [Student] Så ekko er det samme som printf? Printf er ligesom C printf hvor du udskriver en formateret streng. Du leverer det format string og derefter alle pladsholderen variabler. Det er ofte noget, der ikke bruges, lad os se, som en ansvarsfraskrivelse, Jeg er mindre fortrolige med PHP, end jeg er med andre web-sprog, og når jeg har programmeret i PHP jeg typisk ikke bruger printf fordi jeg finder det hurtigere at bruge strengen interpolationsfiltre kapaciteter, at det har, som vi vil gå ind og jeg vil vise dig på bare et sekund, hvorimod i C vi slags nødt til at gøre dette Hacky ting at få det til at udskrive korrekt. Du kan faktisk sætte variabler direkte ind strenge i PHP. Printf er slags alt for lang for hvad jeg plejer at gøre. Ja, Ella. [Ella] Normalt, hvis du får tolkningsfejl betyder det- ligesom på C det ikke fortælle dig præcis, hvor fejlen er, og hvad det er, så betyder det udseende gennem hele din kode og finde ud af det? Det er typisk mere målrettet end det. Jeg tror i dette tilfælde var det en smule off, så jeg tror i dette tilfælde vi mangler et semikolon. Det forsøgte at få mening ud af alt, så ligesom disse fortolkede sprog, er tolk vil forsøge og gøre sit bedste for at få det hele til en passende arbejdsdeling. Du vil se, for eksempel i JavaScript Du vil ofte-line udsagn ende med et semikolon ligesom de gør i PHP, ligesom de gør i C. I JavaScript nogle af JavaScript-tolke i en masse af de browsere vil sætte i semikoloner for dig hvis du tilfældigvis til at mangle dem. De vil forsøge at rumme for nogle sjusk fra din side. Det er, hvor det kan være at forsøge og forsøger og forsøger at gøre tingene til at fungere, og så endelig det vil komme til et punkt, hvor der står okay, Jeg kan ikke gøre tingene fungerer på at redde, og det er her du får et linjenummer der kan synes en smule off fra det nøjagtige sted. Okay, så lad os gå igennem dette virkelig hurtigt. Vi slap med Ella, så lad os gå over til Missy, og Missy, hvad print af streng 1 plus tallet 2 give dig? [Missy] 3. >> 3. Giver det mening? Sortering af? Betyder det give dig et nummer? Betyder det give dig en streng? [Missy] En række. >> Det er et tal. Men det er at udskrive det, så det kommer til at give dig en form for snor. Én ting vi kan gøre for at kontrollere dette er, hvis vi gør $ var = 1 + 2 og så siger vi ekko af getType, så vi bruger en tredje slags udskrivning her. Nu kan vi se hvad der sker her. Her hvad vi har, er vi fik et heltal ud af dette. Selvom vi tilføje denne streng til et tal, vi ikke fik en streng ud af det, ligesom Missy sagde. Vi fik et heltal. Okay, så lad os se, næste op, Kevin. CS + 50? >> [Kevin] 50. [Nate H.] 50. Giver det mening? [Kevin] Yeah. [Nate H.] Hvorfor? Hvorfor giver det mening for dig? [Kevin] Fordi det bare er at have strengen, der talværdi nul. Ja, godt. Kind of tvetydige situationer, men det er godt at vide, hvad der sker. Stella, hvad der sker næste med nummer 1 + streng 2? [Stella] 3. >> 3 igen. Og i dette tilfælde, får vi en streng eller et tal? Lad os give det en chance. Nogen hurtigere end mig med at få svaret? Charlotte? Åh, jeg didn't-okay, lad os se, vi kommer til at gøre det samme slags ting hvor vi har fået et nummer plus en streng, og vi vil gentage den type, se, hvad vi får. Vi får også et heltal. Det er ligegyldigt, hvilken en er den streng, hvoraf den ene er nummeret. Vi vil stadig få et heltal. Det er stadig kommer til at gøre, hvad vi kunne forvente. Okay, så Sam, hvad omkring 90 + 9 flasker øl på væggen? [Sam] 99. >> 99. Ingen flasker øl på væggen, selv om. Det giver os lidt mere information om hvad der sker. [Sam] Hvis du havde skrevet 9 i breve så ville du have 90, right? [Nate H.] Yeah. Spørgsmålet var, om vi havde skrevet 9 ud som N-I-N-E ville vi have fået 99 eller 90? Vi ville få 90. Det er bogstavelig talt lige på udkig efter cifrede tegn. Det er ikke smart nok til at genkende tal ord og den slags. Ja. [Student] Er der sådan en ting som typecasting i PHP? Der er, og det er præcis den måde, du ville gøre det i C. Hvad med 10/7, Charlotte? [Charlotte] 1,4285. [Nate H.] Yeah, så hvad kan være overraskende om dette? Hvad ville der ske, hvis du gjorde det samme slags ting i C, hvis du gjorde 10/7 i C? [Charlotte] Det vil kun give dig, afhængigt af hvordan du typecasted jeg gætte det ville give dig kun et begrænset antal cifre efter kommaet. Ja, så et begrænset antal cifre efter kommaet. Hvad ellers kunne være, ville det give dig eventuelle cifre efter kommaet? Ofte ikke, så igen, afhængigt af hvordan du typecasting det det måske eller måske ikke konvertere det til et decimaltal. Her var det lidt rart, at det gjorde. Havde vi vist dig denne tilbage, når vi startede med at lave denne slags ting i C det sandsynligvis ville have gjort lidt mere mening at det ikke bare gå til 1. Og så endelig, Jamie, hvad 7 + sandt? [Jamie] 8. >> 8. Hvad betyder det? Jeg tror det bare giver sande værdi af 1. Yeah. Hvad sker der, hvis vi ændrer det til falsk? [Student] 7. Ja, så huske, hvor vi taler om disse binære værdier, 1 er på, hvor 0 er slukket? Nu har vi sandt, er 1, 0 er falsk, og du måske ikke har set det i C eksempler, vi har gjort dette tidligere semester, men historisk bool type i C har ikke været en reel type, så folk har brugt 0 og 1 i stedet for sandt og falsk. Dette er en manifestation af denne. Okay, så den ene vigtig del om alt dette er, at vi har disse forskellige typer. De kan interagere med hinanden. De kan ofte interagerer med hinanden på måder, som er rart, som vi har set her. Det er rart at være i stand til at have snor 1 og nummer 2, føje dem sammen og få 3. Det giver mening. Men når du skriver hjemmesider, og især når du behandler brugerinput, så siger du har skrevet en webformular der indsamler oplysninger fra brugeren og derefter går til at behandle det på bagsiden ende, på serveren side i din PHP-kode Hvis du forventer, at værdi, som brugeren har skrevet i og indsendes til formularen til at være et heltal eller at være et decimaltal eller sådan noget skal du eksplicit kastede den og derefter gøre nogle type kontrol. Du ønsker ikke at bare stole på denne type jonglering system til at gøre tingene fungerer ud, især af sikkerhedsmæssige årsager, og bare for robustheden af ​​din hjemmeside. Bare noget at huske på, at når du håndterer formulardata, noget, der kommer med posten eller få superglobals sørg for, at du altid validere det og omdanne det og typecast det. Og ligesom vi talte om for et øjeblik siden, at typecasting i PHP er nøjagtig den samme som i C, hvor du har parenteserne og derefter typen. Hold det i tankerne. En funktion, der vil komme i handy, når du gør dette er vi har brugt-og det er slags som en sidebemærkning- vi har brugt denne getType funktion lige her at finde ud af, hvilken type af en variabel, og mens dette er praktisk til debugging og at se, hvad en variabels type er du ikke ønsker at bruge denne, for eksempel i en tilstand, hvor du tjekker for at se om getType af $ var = heltal gøre noget. Det er skidt, dårlige, dårlige. I stedet er der disse funktioner kaldes, er heltal, er streng, er array, som du vil bruge i stedet, så i dette tilfælde hvad jeg ønsker at gøre i stedet for denne fyr lige her er at bruge, er heltal var. Og de er ofte omtales, er is_ * i den forstand, at du kunne erstatte * med heltal, streng, et cetera, og bare for at sikre virkelig hurtig Dette er int php. Ligner du kan gøre enten er int eller at der er heltal så godt? Ja, alias, så int heltal aliaser. Cool. Hvordan gør vi? Lad os afhente tempoet en lille smule. Nu skal vi til at tale om arrays, så du kan se i den næste del af spec, vi taler om, hvordan arrays i PHP er lidt anderledes end i C. I sandhed, de er sådan en blanding af de arrays, du er kommet til at kende og elske i C hvor alt er af samme type opbevaret fortløbende og tilstødende i hukommelsen, og du har disse numeriske indeks. Du har indeks 0, indeks 1, indeks 2, og du kan gemme værdier i disse indeks. Du kan også i C, da du skrev Speller, en masse af jer gjorde hash tabellen tilgang, og du så, at der havde vi en anden slags opbevaring, hvor vi var kortlægning en nøgle til en værdi, så når du forsøgte at gemme noget i hashtabel De var nødt til at angive, at du ønsker at gemme den med en bestemt nøgle, og at nøglen bestemmes placeringen af ​​værdi, og hvor det lagres. Du har slags fik både af disse begreber sker på samme tid i et PHP array, og som et resultat, vi ofte kalder disse associative arrays hvor vi forbinder en nøgle i en værdi. I denne næste del vi taler om en simpel PHP array hvor vi har nøgler a, b og c, alle strenge, kortlægning til de hele tal 1, 2, og 3.. Og du kan få nøgler af forskellige typer. Du kan have nogle nøgler, der strenge, nogle nøgler, der er heltal. Kan have værdier af forskellige typer. Du kan have en værdi, der er en streng, en værdi, der er et heltal, en værdi, der er en genstand eller et andet array, for eksempel alle i samme array objekt, hvilket er lidt underligt. Du behøver ikke at have et array, der er lige fået én type element i det. Du kan have mange forskellige ting foregår derinde. Den anden ting at bemærke er, at når du ser noget som dette i din kode, som er gyldig PHP at erklære et array ligesom dette, 0, 1, 2, 3, 4, 5, der vil erklære en initialiseret $ arr at være denne array. Men hvad du faktisk får under kølerhjelmen er denne form for implicit generation af nøgler, hvor vi har fået fra 0 til 0, 1 til 1, 2 til 2, 3 til 3. Og det viser sig, at selv hvis du har et array som denne fyr op her hvor man har a, b og c som tasterne og så du begynder at bruge array push-metoden til at begynde at bruge dette array som en stak, så du kan se, at dette array objekt, er denne opstilling virkelig bliver overbelastet. Vi kan bruge det som en matrix. Vi kan bruge det som en hash-tabel. Vi kan bruge det som en stak. Når du begynder at skubbe tingene på denne opstilling den første ting du skubber på dette vil være indeks 0 og derefter index 1 og index 2. Du kan få denne form for implicit generation af nøgler medmindre du angiver dem eksplicit. Den måde du angiver nøglerne eksplicit selvfølgelig er ved hjælp af dette beslag notation, , der svarer til arrays undtagen i stedet for kun at tillade heltal indeks i her, nu vi tillader noget. Hvis du vil have din nøgle til at være en streng, ville du angive det på denne måde. Hvis du ønsker det skal være en int, angiver du det med int, du vil bruge. Spørgsmål om det indtil videre? En af de gode ting om denne idé er, at du kan altid kun have én værdi er gemt med en særlig nøgle. Hvis vi går tilbage over til vores appliance-lad mig slette nogle af disse ting. Og lad os sige jeg initialisere et array til at være 0, 1, 2, gjort. Hvis jeg nu ved, at for eksempel, hvis jeg echo $ arr. [0] Jeg har tænkt mig at få værdien 0 printes ud, og da der kun kan altid være en værdi lagret i en bestemt tast hvis jeg gemmer noget på $ arr [0], siger en, så jeg ved, når jeg echo $ arr. [0] igen Jeg har ikke tænkt mig at få 0 printes ud som før. Jeg vil kun få en. Så dette er dybest set siger, at jeg ikke kan få $ arr. [0] lagre 2 forskellige værdier. Det kan ikke gemme både 0 og strengen a, som denne bogstaveligt erstatter hvad der var på $ arr [0] tidligere. Grunden jeg bringe dette op køres det, se hvad der sker. Se her, at jeg fik 0 printes ud og derefter en hernede. Der er ingen nye linje der, fordi jeg var doven og ikke sætte det i. Hvad er fedt ved dette er, at vi kan bruge dette som en måde at fange denne idé om et sæt hvor vi ikke kan få flere nøgler i et array. Vi kan ikke have identiske nøgler i et array. Jeg kan ikke have tasten 0, og værdien 1 og tasten 0 og værdien af ​​en eller tast 0 og værdi sandt. Tasterne er all-der er kun 1 nøgle i array. Selvom du kan have den samme lagrede værdi flere gange i opstillingen under forskellige nøgler det er ikke muligt at have ens nøgler flere gange i din PHP array. Hvis vi ser på det næste problem, unique.php, hvor vi ønsker at åbne op for en PHP-fil indeholder en liste af strenge, en streng pr linje, og vi ønsker at finde alle de unikke strenge i denne fil alt, hvad vi skal gøre er at bruge en af ​​disse PHP arrays og bruge de strenge i filen som nøglerne til dette array og holde opdatere vores array som vi gemme disse nye nøgler. Når vi læser hver linje ud af den fil, vi kan gemme det i array, og i slutningen vi vil have som vores nøgler i vores array alle de unikke strenge i filen. Giver det mening? Lad os se hvordan det virker. Vi skal åbne op, ifølge spec, en ny fil kaldet unique.php. Åbn. Ups, undskyld, ny fil. Vi vil starte det ud med det samme start og slut tags. Vi kommer til at gemme det i afsnit 9, og vi vil kalde det unique.php. Okay, nu zoome ind Idéen her er åbne en fil, læse i filen linje for linje. For hver linje i fil vi vil have et array, hvor vi har  den linje, som vores nøgle. Og så når vi kommer til slutningen her $ Arr. har taster er de unikke linjer af sagens akter, da vi ved, at hvis jeg sætter linje i dette array flere gange det vil bare holde tvingende den gamle værdi, og vi kan faktisk sætte array-linje i som selv bare sådan. Det er lidt underligt. Vi lagre samme nøgleværdi par igen og igen og igen, men da vi er garanteret, at der kun vil være 1 nøgle kaldet linie så hvis vi har en fil, der siger, en fil med dyrelyde og det har woof, woof, mjave, mjave, muh, muh, og hver gang vi læser et dyr støj ud ligesom woof og vi gemme det i vores array vi får woof, og derefter anden gang vi opbevarer woof det overskriver den første gang, at vi gemt det. I sidste ende vil vi kun have én indgang i arrayet for hver af de dyrelyde i vores dyrelyde fil. Tror du fyre føler tillid til, at du kan tackle åbningen af ​​en fil i PHP? En måde at gøre det på-lad os gå over dette hurtigt-én måde at gøre det er med fopen, som vi så tidligere. Kan fopen some_file.txt. Du kan åbne den i skrivebeskyttet tilstand, ligesom i C. Det er én perfekt god måde at gøre det. Du er også derefter til læsning i filen linje for linje har de samme funktioner, mange af dem, som du gjorde i C. Du har fgets. Du har feof, selvom vi ikke kan lide at bruge denne fordi husk, det var ikke stor i C. Du kan gøre det på samme måde, men her er en virkelig cool ting. Undskyld, jeg ikke ønsker at gøre $ fil, men der er en funktion kaldet fil i PHP, og denne funktion lige her er cool, fordi den læser hele indholdet på den fil, du angiver, så some_file.txt, læser hele indholdet af denne fil i et array og derefter kan du gentage over det, som er temmelig smart. Hvis vi går for eksempel til vores web browser og vi ser på Google for PHP-fil du kan se her, at vores manual siger, at fil læser hele filen ind i et array, og vi kan file_get_contents at returnere indholdet af en fil som en streng, men typisk bare få det som en matrix er virkelig rart, fordi hvad det gør er det bryder den op, så at hvert element i sættet er en linje af filen, så hvis vi ser på fil 0, det er den første linje af filen. Fil 1, anden linje, fil 2, tredje linje, og så videre og så videre. Ville det ikke være rart, hvis det var alle du havde at gøre i C? Temmelig smart. David viste dette i foredrag, og det formsprog, han viste var at der ud over vores standard for loop-in PHP, vi havde at for ($ i = 0; i <10; i + +), og du kan gøre dette i PHP også samme ting- vi har også denne cool konstruktion kaldet foreach. Foreach er virkelig praktisk, når iteration over arrays eller disse datastrukturer fordi det giver dig mulighed for at trække sig ud hvert element i matrixen uden at skulle manuelt gøre indekseringen selv, uden at skulle manuelt at oprette et indeks variabel tilvækst det, trække sig ud af værdien i arrayet på dette punkt, fordi det er en meget almindelig ting at gøre. Du har sikkert gjort det tonsvis af gange, når du lavede C stuff i løbet af semestret med så denne foreach vi kan sløjfe over denne fil matrix, og syntaksen er, at vi gerne vil nu sløjfe over dette array og angive, at den variabel, vi vil bruge til at gemme Den del af dette array lokalt, gælder for anvendelsesområdet for denne foreach løkke, er vi vil kalde det linie. Hvis det er en fil med blot ord, og der er et ord i en linje Vi kunne kalde det ord så godt, egentlig bare du give dette et navn, hvad du vil kalde det, og derefter inde i løkken, du kan gøre hvad du vil med denne variable linje. Hvis det ikke er nok til at få værdien af ​​array, og du også ønsker at få indekset sammen med det du kan angive et navn til indekset samt værdien, og nu har du adgang til 2 variabler. Du har $ i og linje hvor $ i er indekset i arrayet, og er den linje, du har hentet fra filen. For eksempel, hvis vi ønskede at udskrive echo linie 0 i filen som dette vi kunne gøre det ligesom dette, "Line $ i af filen er $ linje," og her er noget, vi har heller ikke set endnu enten hvor jeg har bare helt springes over hele denne% s% d forretning at vi skulle beskæftige sig med i C, og i stedet har jeg gået direkte til skrive variablerne i linje i min streng. Dette kaldes variabel interpolation, string interpolation hvor du udstopning variablerne ret i, og PHP tolk er smart nok, når det er læsning gennem en streng, der begynder med anførselstegn- ikke enkelt citationstegn, med enkelte børsnoterede strenge du kan ikke gøre dette, men med strenge med dobbelte anførselstegn som det lyder igennem den leder variabler. Det er at jage dem ned, og hvis det ser variabler det vil tage værdien af ​​variablen og fylde den i strengen, hvis den kan konvertere den til en streng repræsentation, som er temmelig smart. For nu, lad os udkommentere resten af ​​alt, gemme denne, og hvad vi kan gøre nu, er at vi kan åbne op for en fil at vi kan kalde some_file.txt-let 's oprette en ny fil- og vi kan sætte i en masse nonsens ting her bare for at teste alt ud, gemme det, kalder det some_file.txt, som jeg gør heroppe på toppen, og nu, hvis jeg zoome ud blot at sørge for alt er i samme bibliotek, det ser ud som jeg har unique.php og some_file.txt i samme mappe. Hvis jeg kører php unique.php se, hvordan det udskrives hver linje i min fil, og hvad linjen er? Det er temmelig kraftig, right? Se, det tog 3 linjer kode til at åbne en fil. Nå, 4 linjer kode. Jeg kan ikke tælle i dag, klart. Men virkelig kun 2 interessante linjer kode, fordi de andre 2 var de krøllede parenteser, men i dette meget kode var vi i stand til at åbne en fil, gentage gennem det, trækkes ud linjenummer og linjen selv og printe det ud. Cool stuff. Charlotte. [Charlotte] Jeg har et spørgsmål om syntaksen. Så foreach beskæftiger sig med hver enkelt linje på den fil, du åbner, og derefter, når du ønsker at gøre ting med hver enkelt linje du bare gøre det som og derefter knytte værdien. [Nate H.] Hvad du kan gøre lige her-spørgsmålet var Den foreach har at gøre med arrayet, så den foreach syntaks er virkelig foreach, og bemærk, at der ikke er nogen plads eller noget mellem for og hver. De skal gå helt ved siden af ​​hinanden, og så det tager i et array, og så har du det andet søgeord indkaldt som der skal være der, og derefter efter som du kan enten sætte en variabel navn, i hvilket tilfælde du kommer til at trække værdierne af array, ikke de indekser, eller hvis du gør det, som vi har skrevet under får du nøglerne og de værdier. Du har foreach element i array eller et par matrixen som fastkilet til værdi eller som lige værdi. Afhængigt af hvad du har brug for, hvis du ikke har brug tasterne, så kan du gå med værdien. Hvis du vil have de taster, du kan gå med dem også. [Charlotte] Jeg indså også vi aldrig erklæret i eller linje. Hvordan det selv ved, hvad de er? [Nate H.] Hvad mener du med erklære? [Charlotte] Vi har aldrig fortalt dem hvad jeg eller linje betyder. [Nate H.] Vi har aldrig fortalt computeren, hvad jeg eller linje betyder i form af- [Charlotte] At de er indekseret, eller at they're- [Nate H.] Vi har aldrig fortalt det, at det formodes for at være det indeks eller nøglen, og værdien, og det er fordi det er den PHP tolk. Dette tjener som erklæringen og siger okay, er nøglen vil være en variabel kaldet jeg gemt i en variabel kaldet i. Værdien vil blive lagret i en variabel kaldet linie, så dette tjener som erklæringen af ​​disse variabler og siger $ i er en nøgle, og $ linje er en værdi. Ja, Ella. [Ella] Hvis tasterne er ikke gjort numerisk hvordan kan det beslutte hvilken rækkefølge det kommer til at udskrive alt? Er det ligesom den rækkefølge, det er opført i? [Nate H.] Lad os give det en chance. Lad os oprette en variabel kaldet arr., og vi kan gøre en går til 7. Lad os sige 0 går til et andet array med 1, 2 eller æble. Lad os sige 7 går til 1, b går til 2, og 3 går til 4. Det er lidt af en vanvittig leder eksempel fordi vi blande strygere og heltal over det hele. Der er ingen reel for at denne array. Jeg mener, vi kunne bestille alt i alfabetisk rækkefølge efter nøglerne. Vi kunne bestille alt alfabetisk efter værdien. Vi kunne forsøge at tage hensyn til, at nogle er strenge, nogle er int'er, og vi kunne prøve og konvertere dem alle til den samme type og se hvad der sker, eller vi kunne overveje dem i værdien, som vi allerede indtastet dem hvor vi sætter denne fyr i første, denne fyr på andenpladsen, denne fyr i tredje, denne fyr i fjerde, et cetera. Lad os se hvad der sker, når vi kører denne kode. Hvis vi rulle ned og gøre det samme slags ting, og her er det ikke udskrivning af nye linjer. Når det læste ting ud af den fil, det var også de nye linjer i de værdier, hvilket var grunden til det udskrives pænt, hvorimod her det gjorde ikke, så det er derfor alt er smushed sammen. Lad os tilføje i den nye linje bare for at gøre tingene nice. Lad os køre det, og så her se på, hvad der skete. Det trykte alt ud i den rækkefølge, som vi sætter det ind i array. Det er opretholde orden i den forstand. Går tilbage til dette problem med uniques hvor vi ønsker at være i stand til at gentage over en fil, og vi vil give det some_file.txt, og vi vil gentage over det på denne måde. Vi sagde, at vi ønskede at bruge et array til at sikre, at vi havde fået alle de unikke linjer ud derfra, og vi kunne gøre det rigtig nemt ved blot lagring i et array, som vi naturligvis erklære uden for en løkke, og vi sagde, at hvis vi brugte linjerne i filen som nøglerne i vores array hvis vi gik ind i en dobbelt linje, vi ville gribe ind i den tidligere værdi. Det er ikke altid muligt at have 2 nøgler, som er identiske i samme array. Vi kan gøre netop det. Vi vil slippe af med denne ekko erklæring lige her. Her vil vi opbevare linje i filen i vores array bruger sig selv som nøgle. Intet at det, og det viser sig, at vi ikke engang behøver denne nøgle. Vi behøver ikke at jeg variabel. På dette tidspunkt, hvis vi skulle lave en anden foreach løkke og vi var at sløjfe over hver arr. og linje nu, hvis vi ekko-oops, sorry. Vi kan ikke bruge komma. Vi er nødt til at bruge dette som søgeord. Nu, hvis vi echo linje, vi bør få alle de unikke ord i filen. Hvis vi går op til some_file.txt, og lad os sige, vi gør æble, banan, æble, æble, banan, hvis vi udskrive alle de unikke ord i denne fil skal vi kun får æble og banan at printe ud. Hvis vi gemme dette, nu her vi vil ind i, php unique.php, og ta-da. Vi har med succes uniqued filen. Den sidste del af dette problem beder dig om at sortere dette array, før du udskrives det ud fordi der i dette simple eksempel, som vi lige har gjort vi var heldige i den forstand, at fil- vi gjorde dette konstruerede eksempel med æbler og bananer. Det blev allerede sorteret. Men ved hjælp af den simple slags funktion, du kan sortere et array, som er temmelig smart. Den sidste ting jeg ønskede at tale med jer om virkelig hurtigt er, at denne form for PHP er alt sammen meget godt, og det er super handy at vide, hvordan man skal gøre, hvis du nogensinde brug for at gøre små, hurtige ting programmering. For eksempel, hvis jeg har brug for at skrive et program, der siger sætter alle i sektioner Jeg har ikke tænkt mig at gå og skrive det i C. Det kommer til at være lang. Det kommer til at være lidt af en smerte, især hvis der er involveret filer, Ligesom du fyre har set. Det er så rart at med netop dette meget kode lige her vi var i stand til at rippe gennem en fil, skal du trække alle de unikke værdier og udskrive dem ud igen. Men for dine opgaver, for dine projekter hvis du bygger hjemmesider med PHP strømmen er at vi kører vores PHP-filer gennem denne tolk, og tolken behandler alt inden for PHP tags, forlader alt andet uberørt og spytte ud resultaterne. Vi kan gøre dette for at opbygge HTML programmering. Hvis vi nu går tilbage til spec, det sidste problem i spec taler om denne idé om fusioner og skabe en drop-down menu, som du måske eller måske ikke ønsker at gøre, afhængigt af hvad dit endelige projekt gør, som tillader brugeren at vælge på en liste over alle mulige koncentrationer deres én koncentration. Nu, dette er sådan en smerte at skrive dette ud og er nødt til at gøre alt dette manuelt, især når du har for at sikre, at du har alle de vinkelbeslagene på det rigtige sted og alle citater i det rigtige sted, så med PHP kan du gøre dette programmeringsmæssigt, og du kan gøre dette virkelig hurtigt. Lad os se, hvordan du gør dette. Vi vil åbne op for en ny fil. Vi kommer til at sætte i vores PHP tags. Vi vil kalde det concentrations.php, og nu når du gør dette, at sådan en god ting at tænke over når du forsøger at mikse og matche din PHP og din HTML er at finde ud, okay, hvad er den del, jeg ønsker at programmeringsmæssigt generere? Hvad er den del, jeg programmatisk kan generere? Det er sandt, at du kan gøre alle dine HTML indersiden af ​​PHP blokke. Du kan gentage alle HTML som strenge. For eksempel, hvis jeg ønsker at begynde at gøre de udvalgte mærker inde i PHP Jeg kan sige ekko, siger vælge navn = koncentration, og derefter ned under jeg kunne have en anden echo tag eller en anden ekko kaldet luk vælge. Dette er en måde at gøre det, fordi hvad dette bogstaveligt vil gøre er udskrive denne streng, når det køres gennem PHP tolk, så resultatet bliver HTML. Hvis jeg gemme denne fil, da det er lige nu og jeg kører php concentrations.php se på, hvad jeg fik. Jeg fik denne open Luk Vælg tag. Hvis jeg skulle gøre det, og jeg skulle gemme dette resultat til en fil, sige, concentrations.html-vent, det ligner l er gået over til den anden side, nu, hvis jeg åbner op her concentrations.html du se, at jeg har en gyldig HTML-fil. Er det lidt underligt? Vi bruger PHP til at skabe HTML, skal du oprette gyldig HTML. Den måde vi gør det, er vi bare have PHP print HTML, som vi ønsker det for at udskrive. Det er bogstaveligt talt hvordan PHP hjemmesider fungerer. Når du besøger et websted, der sender dig til noget lignende noget, noget, noget dot com slash index.php computeren er bogstaveligt talt ringer op index.php, kører det gennem PHP tolk, og hvad junk kommer ud det er at sende tilbage til browseren og sige hey, browser, fortolke det som HTML. Det gode er, at det kan være en smerte konstant at skrive ekko, ekko, ekko, ekko og vedlægge alt i citater som dette, så hvis du ønsker at skrive HTML, der kommer til at være statisk dig selv, du kan gøre det på denne måde, sætte det udenfor, luk det, og så her du kun sætte inde i PHP tags, som du kender du ønsker at programmæssigt generere, og i dette tilfælde er det disse optioner tags der er en smerte at generere. For eksempel kunne vi generere tusind option tags ved at gøre noget som dette, $ i <1000, i + + og siger ekko option value = $-Ups, jeg kan ikke gøre det. Nå, lad os give det en chance og se hvad der sker. $ I og derefter sige $ i