[Powered by Google Translate] [Avsnitt 8] [mindre bekväm]
[Nate Hardison] [Harvard University]
[Detta är CS50.] [CS50.TV]
>> Välkommen till vår näst sista avsnittet.
I denna vecka ska vi prata om PHP, och sedan nästa vecka
vi ska göra en liten recension för Quiz 1.
Vi kommer att börja på sidan 3 av problemet ställer pack,
och vi kommer att arbeta igenom den del av frågorna ganska snabbt.
På sidan 3, börjar vi prata om denna skillnad mellan C och PHP
i den meningen att PHP är ett dynamiskt skrivit språk,
medan C statiskt skrivit,
och har någon verkligen snabbt gjort några kodning i något som PHP
eller Python eller Ruby innan, Javascript?
Helt nytt? Okej.
>> Alla dessa språk som jag nyss nämnde
skiljer sig mycket från språk som C och C + + och Java
i den meningen att när du deklarerar en variabel behöver du inte deklarera
vilken typ av variabel det är, så i C vi hade fastnat med att alltid säga
Detta kommer att bli en int variabel eller det kommer att bli en char * variabel,
medan med PHP, med Python, med Ruby,
med många av dessa mer moderna språk behöver du inte göra det alls.
Du deklarerar bara din variabel, och i fallet med PHP
förklarar du att det är en variabel genom att inleda med en $ tecken,
och sedan den typ av variabeln bestäms av det värde det innehar,
vilket är ganska häftigt.
Att leka med detta lite, vi har prov PHP-kod här
mellan början och slut-taggar.
Vi använder denna typ av som HTML i den meningen att
vi har dessa fästvinklarna här för att öppna och stänga.
Du ser detta med HTML.
Du ser samma sorts syntax med XML också.
>> Detta indikerar början på ett PHP-block.
Detta? Php är specifikt för PHP.
Vi stänger allt med en?> Också.
Vi öppnar upp en fil i vår apparaten med vad du vill.
I detta paket står att ringa dynamic.php.
I sanning, kan du kalla det vad du vill, men filnamnet kommer upp
och vara viktigt senare, så kom ihåg vad du kallar det.
Jag ska gå över till apparaten,
och jag kommer att göra en katalog för
§ 9 Jag tror att vi är på nu.
Och vi kommer att gå in i 9 §,
och jag kommer att använda gedit.
Låt oss se, gedit, och jag kommer att ringa min dynamic.php.
Boom.
Inom dynamic.php, eftersom detta är en PHP-fil
och jag vill köra detta genom PHP tolken
Jag måste börja allting med de öppna taggar,
så jag ska börja de genast,
ge mig lite utrymme mellan taggarna,
och sedan poängen med denna övning var att leka med
denna funktion som kallas getType, så getType, denna funktion här.
>> Observera att det inte någon är understreck eller utrymme eller bindestreck eller nåt sånt
separera de 2 ord får och skriv, bara ett ord helt och hållet.
Men vad detta kommer att göra är om jag passerar i en variabel till getType,
säger $ var eller $ x,
detta kommer att berätta typ av i en felsökning format
vad namnet av den typen är.
Vi kommer att experimentera här.
I synnerhet om man ser tillbaka på pset spec
vi har några olika rader kod här.
I den första kodraden vi initierar denna variabel, $ var,
vara lika med 7, och sedan har vi denna printf linje
som säger hej, är printf var tom.
Printf är en av de många sätt vi kan skriva ut saker i PHP.
Ofta ser du eko-funktionen används i stället för printf,
men printf vi alla känner till att ha kodning i C för en stund.
Vad du kan faktiskt göra är låt oss se om kopiera och klistra in fungerar.
Jag ska ge det ett försök.
Vi ska gå tillbaka till apparaten.
Okej, och där vi går.
Och avståndet är lite funky, men nu kör vi.
Vi har den här koden i här.
>> [Student] Är det inte bra stil till fliken det?
Ursäkta?
[Student] Är det vanligt att fliken det?
Rätt, så Sam frågar om det är konvention att fliken eller inte.
Vanligtvis ja.
I det här fallet har jag valt att inte.
Ärligt talat, ser du olika saker mellan olika programmerare.
PHP används vanligtvis ofta i kombination med HTML
och andra språk, och så ibland utskriften kommer att se lite funky
Om du strecksatsen inom PHP start-och sluttaggar.
Det beror egentligen.
I detta fall kopiera och klistra inte klistra flikarna i för mig,
men det definitivt gör, som du sa, gör det tydligare.
Okej, om du sparar den här koden i dynamic.php
sedan vad du kan göra är att komma ner till din terminal fönster där jag är just här nere
i gedit, och att göra motsvarande sammanställa
med att göra och sedan köra din kod i C
allt du har att göra med PHP-filen är igång PHP tolken,
vilket är ett litet program som kallas PHP,
och argumentet du ger tolken är den fil du vill tolka.
I det här fallet, dynamic.php.
Hoppsan, vart jag uttrycka det?
Åh, jag satte den i punkt 9, och här är jag. Det är därför.
>> Nu om jag kör det igen
Vi ser att i mitt första getType funktionsanrop
var är ett heltal.
I nästa var en sträng, och sedan i den tredje var en boolean.
Det intressanta med detta är om vi bläddra tillbaka upp ser vi att
dessa är olika typer liknande de som vi hade i C.
Vi hade Ints i C.
Vi sorts hade strängar i C,
så strängar var inte en helt legit typ i den meningen att
vår CS50 sträng var verkligen vad?
Ursäkta? Missy?
[Missy] Char *.
Ja, det var det char * vi använt.
I början av terminen var vi med sträng typ,
men det var verkligen en char * under huven.
Vi bara skriva definierade det, medan i PHP dessa strängar är en verklig typ.
Det finns ingen mer av denna char * typ grejer.
>> Du kommer att se att vi kan göra många fler saker med strängar
mycket lättare i PHP än vi kunde i C,
och slutligen har vi den här boolesk typ och den stora skillnaden här är att
om vi bläddra tillbaka ner ser vi att namnet på dessa typer
Nu heltal, sträng, och boolesk istället för int och bool,
och som du plockar upp olika programmeringsspråk,
antar att någon gång i ditt liv kommer du att komma i kontakt med
olika som du kommer att märka små egenheter som denna
där C kallar heltal Ints.
Vissa kallar det heltal.
Det finns andra termer som du kommer att stöta på.
Stor int vi såg idag i SQL.
Det finns även nummer och sedan bool, boolean,
alla sorters skillnader där.
>> Detta är inte särskilt intressant, men nu ska jag ge er lite tid
Om vi ​​what ut-att arbeta igenom denna övning längst ned på sidan 3
där den frågar vilka typer motsvarar dessa värden här i botten.
Vi har 3,50.
Vi har den här saken här, vilket är intressant.
Vi har inte sett det förut, men om du har följt med i föreläsning
du förmodligen redan vet vad det är.
Sedan har vi detta, vilket det är typ av funky.
Du känner igen det här.
Vad är det i C?
Sam? Vad skulle detta ge dig i C?
Det skulle öppna en fil som heter dynamic.php och göra den läsbar.
Ja, och vad skulle vara den typ av variabel som vi skulle överlåta detta till? >> Fil stjärna.
Exakt, skulle vi ge det till en fil stjärna.
Detta är legitimt PHP också.
Kör det. Se vad som händer när du passerar det till getType.
Och sedan också kolla vad null är, vad det kan vara i PHP.
Jag ska ge er ett par minuter.
Du kan bokstavligen kopiera och klistra in dessa värden i,
och då ska vi göra lite slumpmässigt uppmanar er
och se vad du har.
>> [Student] Jag har en fråga. << Ja.
I en av föreläsningarna David sade finns det något du kan sätta på toppen av din fil
så att du inte behöver skriva in PHP varje gång.
Vad var det?
Han var antagligen talar om pundet bang, hash smäll.
Det är ett direktiv att om du markerar filen som exekverbar
vad den gör är när du kör filen
det kommer att berätta skalet programmet
att använda PHP tolken att tolka innehållet i filen.
Frågan är vad som var denna speciella linje
att vi skulle kunna innefatta överst på våra PHP-filer att inte behöva omfatta
detta PHP linje eller detta PHP kommando när vi vill köra filen?
Och du kan faktiskt göra detta med en massa olika filer.
Jag tror att det beror på var PHP binära lagras,
men ofta usr / bin / php är ett bra ställe att börja.
Du kan lista ut exakt genom att gå tillbaka till din apparat
och skriva ut vilken php.
Den som Kommandot räknar ut när du utför binära
eller ett kommando där motsvarande fil är.
Detta säger mig att PHP är verkligen aliasing detta binär fil
som lagras i usr / bin, som är där mycket av systemets binärfilerna är installerade.
Till exempel, om jag bläddra upp till toppen, nu när jag har lagt det #! linje i här
Jag kan rulla nedåt, och jag kan försöka köra
dynamic.php, men jag får detta felmeddelande om tillstånd nekas,
och vad det betyder är att den här filen för närvarande inte ger körbara behörigheter.
Det är inte markerad som en fil som någon kan köra.
>> När du körde göra eller klang och du fick en körbar från det
kompilatorn var smart nog att veta att hey, jag bygger ett körbart.
Du vill förmodligen köra det, så det skulle automatiskt konfigurera
behörigheterna för dig.
Detta är inte fallet, men när du skapar en vanlig fil från grunden,
Orsaken är oftast att du inte vill ha alla filer på ditt system vara körbara,
så du måste verkligen gå in och manuellt göra det.
Det enklaste sättet att göra det är med kommandot chmod,
och chmod + x säger lägger den körbara bitar
eftersom det är den läsbiten, skriv lite och körbara bitar,
R, W och X,
och säger chmod + x tänds den körbara bitar
för då filen vi anger, som i detta fall kommer att vara dynamic.php.
>> [Student] Är det slås på för alla?
Låt oss kolla in det här, så hur skulle jag kontrollera behörigheterna?
Vet du hur jag skulle kontrollera behörigheterna för en fil?
[Ohörbart elev svar]
Förlåt? >> [Student] XSD.
XSD ger oss filen i hackar.
Lista alla filer,-l, kommer att visa mig alla filer i min katalog
typ av i deras långa, verbose notering och så här ser vi att
detta dynamic.php fil
ändrades senast 5 november kl 16:21.
Ägaren av denna fil jharvard.
Det är den användare som är inloggad
Det är användaren arbetar jag som,
och om du är också i apparaten som du arbetar också som användare jharvard.
Du är i studenternas gruppen,
och det är saker som du kommer att se tillräckligt ofta.
>> Vi kan gå in i en massa detaljer här,
men för det mesta vad du vill titta på när du vill se
huruvida en fil är körbar främst
användaren som äger filen, ägaren,
så detta jharvard, och sedan har vi
behörighetsinställningarna bitar över här till vänster,
och sättet att läsa detta är att den sista biten
typiskt används för märkning huruvida eller ej, åtminstone i det här fallet
denna sista biten kommer ofta in på annonsen för att ange
att filen är en katalog och inte bara en vanlig fil.
Då följande 3 bitar här
bestämma de behörigheter som ägaren av filen har,
så i detta fall jharvard, som ägare till filen, kan läsa och skriva denna fil,
men det finns ett streck som säger att jharvard inte kan köra den här filen.
De nästa 3 bitar för koncernen, så detta är studenterna gruppen,
så om det fanns flera användare på min apparat,
och vi hade flera användare som en del av studenternas gruppen,
Då kan alla läsa denna fil, men de kan inte skriva det,
och likaså alla andra, världen
kan bara läsa den här filen.
Det finns en bra, lång writeup om detta,
så du kan läsa på nätet.
I problembild spec vi går in i detta mer i detalj.
>> [Student] Är 218 hänvisar till världen?
Den 218 är-från toppen av mitt huvud att jag glömmer,
men nej.
Låt oss se. Jag blanking på det just nu.
Tillbaka till vad vi skulle göra med detta chmod + x
där vi ville ge dynamic.php körbara behörigheter,
och frågan var huruvida detta skulle ge körbara behörigheter till alla
eller bara jharvard, och vi kan se detta genom att
köra kommandon och skriva ls-l,
och nu ser vi att det är markerat som körbar.
Du ser att det fanns en färgförändring.
Nu dynamic.php listas i grönt,
och det ser ut svaret på frågan är vad, Charlotte?
[Charlotte] Endast jharvard. >> Endast jharvard, ja.
>> Om vi ​​ville slå på körbara bit på för alla
hur kan vi göra det?
Några tankar? >> A + x?
Ja, exakt.
Charlotte sa att vi kan göra chmod en + x av dynamic.php,
och nu när vi kör ls-l ser vi att körbara bitar
är verkligen slås på för alla.
Och du kan faktiskt göra baksidan av detta, så att du kan stänga av den för alla
med minus.
Nu är avstängd, och nu kan vi slå på den igen för jharvard
så att vi verkligen kan köra det nu,
och nu ser när vi kör koden här speciella #! längst upp,
#! linje, sade skalet,
berättade vår terminal hey, när denna fil körs,
Använd / usr / bin / php att tolka den här filen
och sedan skriva ut resultatet.
[Ohörbart elev fråga]
Visst, låt mig rulla tillbaka upp. Precis som här.
Du kommer att se alla dessa direktiv börjar med denna pund och sedan utropstecken,
ibland kallas Shebang, hash smäll.
>> [Student] Hur kan vi köra det med PHP dynamic.php innan vi gör den körbar?
Frågan var hur vi kan köra med PHP binära
medan dynamic.php är inte körbar?
Detta är super viktigt eftersom det är exakt hur
det kommer att fungera när du skriver problembild 7.
För det mesta PHP-filerna inte är direkt körbar.
Det sätt som fungerar är att det är PHP binära som är körbar.
Tolken är det som är exekveras,
och så vad det gör är bokstavligen sörplande i hela innehållet
vår dynamic.php fil och gå rad för rad
och verkställande dessa kommandon, så det använder vår PHP-fil
som en lista med instruktioner.
Det är inte direkt köra den.
Det är där vi säger att dessa filer tolkas vid körning.
Det är en körning språk i stället för något som är bestämd vid kompileringen,
inte ett kompilerat språk som C.
>> Finns det något sätt att få ett språk körtid att agera som om det är en kompilering språk,
som om du har alla driften görs på servern
snarare än du vet vad jag menar?
Ja, så frågan är
Finns det något sätt att få körtid språk att agera mer som kompileringen typer av språk?
Och det är, jag menar, det är ett aktivt forskningsområde för många av dessa företag.
Jag tror att Facebook har gjort en hel del arbete med PHP
och sammanställning ner, vilket gör det snabbare, optimera den
eftersom deras webbplats är byggd på PHP.
Om du har följt node.js alls,
som är typ av ett JavaScript tolk
att kunna köra JavaScript utanför webbläsaren, utanför din webbläsare,
eftersom traditionellt Javascript skulle bara köra inne i Firefox eller Chrome,
och det skulle kunna användas för att göra häftiga animationer hända på en webbsida
och gör din webbsida dynamisk.
Det är byggt på en hel del arbete som Google har gjort
att göra JavaScript och C + +
binda samman, så det finns en hel del aktivt forskning
få dessa språk att interagera och optimera dem,
främst eftersom så många människor kan koda i PHP och JavaScript
eftersom det är mycket enklare.
Det är mycket trevligare. Du har inte pekare.
Du har inte typ flyter runt.
De ville få fördelarna med dessa kompilering språk
med alla typkontroll och hastigheten och den nedre minnesanvändning och allt det
samtidigt bibehålla flexibilitet och användning av dessa nyare.
>> Tillbaka till vår ursprungliga plan för angrepp.
Vi har några av dessa frågor här i vårt problem set spec.
Låt oss gå igenom dem väldigt snabbt, och vi ska gå runt i rummet.
Charlotte, är vilken typ 3,50?
[Charlotte] Det är en dubbel. >> Det är en dubbel.
Jimmy, vad är det här nästa? >> En array.
En array, fantastisk, och Jared, vad är fopen?
[Jared] Det är en resurs. >> Det är en resurs.
Det är typ av en ny, inte en fil stjärna, inte en fil.
Det är en resurs är den typ i PHP,
och jag är ledsen, Ella, är det sista noll vad?
Null.
Null, hur är det stavas i PHP? >> På samma sätt.
På samma sätt, huvudstäder? >> Ja.
Ja, okej.
Nu kör vi, vi har en dubbel, vi har en matris,
vi har en resurs, och sedan har vi noll.
Låt oss se nu du sett,
låt oss se, så nu har jag gissa vad jag också vill göra är att dra upp
denna webbsida här, här php.net / manuell,
så om ni kopierar det och öppna upp en webbläsare.
Jag ska dra upp Chrome, sätta det i.
Jag vill visa dig det här inte bara för att
vi kan prata hela dagen om typer och allt det roliga grejer
utan snarare för att det är PHP manual,
och det finns en hel del PHP programmerare där ute.
Det finns en hel del PHP-webbplatser där ute,
och som ett resultat finns det en hel del dokumentation om PHP,
och handboken denna php.net är ett riktigt bra ställe att gå
när du har frågor om vad som är det bästa sättet att göra X i PHP
eller hur ser en funktion ut?
Bara typ av att bekanta sig med hur det ser ut eftersom
du kommer att komma hit ofta, som lite för problem 7.
>> Om du hamnar gör ett lärdomsprov som använder PHP
detta kommer att vara en plats som du kommer att bli mycket väl förtrogen med.
Ofta hur människor gör detta är att de använder Google för att söka efter platsen,
och de använder inte sökrutan som är här uppe i övre högra, som är typ av små.
Om du googla runt efter något att göra med PHP och du ser
en av de manuella länkarna dyker upp du normalt kan lita på det
som en ganska bra resurs.
Awesome, så av dessa typer, bara av nyfikenhet,
vilka har vi inte sett?
Allt vi har inte sett här?
[Student] Resurs. >> Vi såg resurs med fopen samtalet.
[Student] Objekt. >> Objekt vi inte sett säkert.
Återuppringning vi inte har sett.
Det är några av dessa pseudo-typer.
Vi definitivt bara såg heltal och dubbel.
Vi såg några av de andra, så om vi klickar på heltal
Vi kan se är det några andra heltal som de har här?
Är de helt så heltal, heltal, heltal.
Vissa språk har större heltal typer,
som vi såg på MySQL idag var int och sedan stora int.
Cool.
>> Så, PHP manual.
Låt oss gå tillbaka till vår problembild spec, och vi kommer nu rulla ner på sidan 4.
En av de saker som händer när du får dessa språk
som inte har denna statiska skriva, så dessa språk där man måste deklarera
typen av en variabel på framsidan
är att få dig fall du kan börja ha variabler av olika typer
interagera med varandra,
och PHP gör denna sak där man försöker göra
vad den anser vara det mest förnuftiga att göra
när du har 2 olika typer interagerar med varandra.
Till exempel, om vi ser på dessa kodrader här
Ni ser att vi har vad som händer när
Vi försöker lägga till strängen 1 till heltalet 2.
Vad händer om vi försöker lägga en sträng som inte är ett numeriskt värde
utan snarare verkliga karaktärer, CS till antalet 50?
Sedan får vi se är det något annat som händer där
stället för att lägga en sträng till ett antal som vi lägger ett nummer till en sträng,
och så vidare och så vidare till den punkt där vi får
någon form av konstiga saker här där vi har 7 + sant.
Vad sjutton betyder det?
>> Om ni går vidare och klistra del av denna kod i din apparat.
Du kan hålla den i dynamic.php.
Vi får se vad som händer.
[Student] Använd bara skriva ut, inte printf?
Ja, så finner du att utskriften är också ett giltigt funktion för utskrift i PHP.
Det finns många olika sätt att göra det.
Vi får se med ett par av de exempel som senare när vi börjar prata
om den unika problem som vi kommer att skriva
och sedan koncentrationer problem som vi kommer att skriva
att även om vi har fopen och fclose
Det är ofta inte det enklaste sättet att läsa i innehållet i en fil.
PHP har många av dessa C-liknande holdovers.
[Student] När jag sätter i alla 6 av de saker jag bara få ett nummer som en utgång.
[Nate H] När du sätter i alla 6 av dessa saker.
Låt oss se är det eftersom det är möjligen-
en sak är att dessa tryckta samtal inte avslutas i slutet med nya linjer.
Det finns ingen ny rad mellan varje av dessa tryckta samtal,
så kanske du får en stort antal,
och det är egentligen bara blandning av nya linjer tecken.
[Student] Okej, hur gör jag se-
Nåväl, det finns en massa olika sätt.
Du kunde manuellt lägga in en utskrift av en ny rad tecken,
ett eko av en ny rad tecken,
utskrift av ny rad.
[Student] Så eko är samma sak som printf?
>> Printf är som C printf
där du skriver en formaterad sträng.
Du levererar det formatsträng och alla variabler platshållare.
Det är ofta något som inte används,
låt oss se, en ansvarsfriskrivning,
Jag är mindre bekant med PHP än jag med andra web språk,
och när jag har programmerat i PHP Jag brukar inte använda printf
eftersom jag tycker att det är snabbare att använda sträng interpolering funktioner som den har,
som vi kommer att gå in och jag ska visa dig på bara en sekund,
medan i C vi slags måste göra detta Hacky sak att få det att skriva ut på rätt sätt.
Du kan faktiskt sätta variabler direkt i strängar i PHP.
Printf är typ av alltför lång för vad jag brukar göra. Ja, Ella.
[Ella] Generellt om du får tolka fel betyder det-
som på C det inte berätta exakt var felet är och vad det är,
så betyder det titta igenom hela din kod och räkna ut det?
Det är oftast mer riktade än så.
Jag tror i det fallet var lite utanför,
så jag tror i så fall vi saknade ett semikolon.
Det försökte vettigt av allt,
så som dessa tolkade språk, är tolken ska försöka
och gör sitt bästa för att få allt att fungera korrekt.
>> Du kommer att se, till exempel, i JavaScript
Du kommer ofta online uttalanden avslutas med ett kommatecken precis som de gör i PHP,
precis som de gör i C.
I JavaScript vissa av JavaScript tolkar
i många av de webbläsare sätta i semikolon för dig
Om du råkar vara saknas dem.
De ska försöka rymma för några slarv från din sida.
Det är där det kan vara att försöka och försöka och försöka göra saker och ting fungerar,
och slutligen kommer det att komma till en punkt där det står okej,
Jag kan inte göra saker och ting fungerar på ösa, och det är där du får ett radnummer
som kan verka lite off från den exakta platsen.
Okej, så låt oss gå igenom det här verkligen snabbt.
Vi slutade med Ella, så låt oss gå över till Missy,
och Missy, vad utskrift av sträng 1 plus antalet 2 ge dig?
[Missy] 3. >> 3.
Verkar det vettigt? Sortera på?
Ger det dig ett nummer? Ger det dig en sträng?
[Missy] Ett tal. >> Det är en siffra.
Men det är att skriva ut det, så det kommer att ge dig någon form av snöre.
>> En sak vi kan göra för att kontrollera detta
är om vi gör $ var = 1 + 2
och då säger vi eko av getType,
så vi använder tredjedel sorts skriva här.
Nu kan vi se vad som händer här.
Här är vad vi har är att vi fick ett heltal av detta.
Även om vi lägger denna sträng till ett tal,
vi fick inte en sträng av det, precis som Missy sa.
Vi fick ett heltal.
Okej, så låt oss se, nästa upp, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H] 50. Verkar det vettigt?
[Kevin] Ja.
[Nate H] Varför? Varför gör det meningsfullt för dig?
[Kevin] Eftersom det bara är att ha strängen med noll numeriskt värde.
Ja, bra.
Typ av tvetydiga situationer, men det är bra att veta vad som händer.
Stella, vad som händer härnäst med nummer 1 + string 2?
[Stella] 3. >> 3 igen.
Och i detta fall, får vi en sträng eller ett nummer?
>> Låt oss ge det ett försök.
Någon snabbare än mig få svaret? Charlotte?
Åh, jag didn't-Okej, låt oss se, vi kommer att göra samma sak
där vi har en rad plus en sträng, och vi kommer att upprepa den typ,
se vad vi får.
Vi får också ett heltal.
Det spelar ingen roll vilken som är den sträng, som en är antalet.
Vi kommer fortfarande att få ett heltal.
Det kommer fortfarande att göra vad vi kan förvänta oss.
Okej, så Sam, hur 90 + 9 flaskor öl på väggen?
[Sam] 99. >> 99.
Inga flaskor öl på väggen, men.
Det ger oss lite mer information om vad som händer.
[Sam] Om du hade skrivit 9 med bokstäver
då skulle du ha 90, eller hur?
[Nate H] Ja.
Frågan var om vi hade skrivit 9 ut som N-I-N-E
skulle vi ha fått 99 eller 90?
Vi skulle få 90.
Det är bokstavligen bara ute efter siffra tecken.
Det är inte smart nog att inse antal ord och det där. Ja.
>> [Student] Finns det något sådant som typecasting i PHP?
Det finns, och det är precis som du skulle göra det i C.
Vad sägs om 10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H] Ja, så vad kan vara förvånande om det här?
Vad skulle hända om du gjorde samma saker i C,
om du gjorde 10/7 i C?
[Charlotte] Det skulle bara ge dig-beroende på hur du typecasted antar jag
Det skulle ge dig endast ett begränsat antal siffror efter decimalkommat.
Ja, så ett begränsat antal siffror efter decimalkommat.
Vad kan vara-skulle det ge dig några siffror efter decimalkommat?
Ofta inte, så igen, beroende på hur du typecasting det
Det kan eller inte kan konvertera den till ett flyttal.
Här var det typ av trevligt att det gjorde.
Hade vi visat dig detta tillbaka när vi började göra den här typen av saker i C
det förmodligen skulle ha gjort lite mer känsla
att det inte bara gå till 1.
Och slutligen, Jamie, hur 7 + sant?
[Jamie] 8. >> 8.
Vad betyder det?
Jag antar att det bara ger sann värdet 1.
Ja. Vad händer om vi ändrar det till false?
[Student] 7.
Ja, så kom ihåg var vi talar om dessa binära värden,
1 är på, 0 är avstängd?
Nu har vi riktigt är 1, 0 falsk,
och du kanske inte har sett detta i C-exempel som vi har gjort detta tidigare termin,
men historiskt bool typ i C inte har varit en riktig typ,
så att folk har använt 0 och 1 i stället för sant och falskt.
Detta är en manifestation av detta.
>> Okej, så en viktig del om allt detta
är att vi har dessa olika typer.
De kan samverka med varandra.
De kan ofta interagera med varandra på ett sätt som är bra, som vi har sett här.
Det är trevligt att kunna ha snöre 1 och nummer 2, lägga ihop dem och få 3.
Som är vettigt.
Men när du skriver webbplatser och speciellt när du bearbetar
indata, så att du har skrivit ett webbformulär
som samlar in information från användaren och sedan går att bearbeta den
på baksidan slutet, på serversidan i PHP-kod
om du förväntar värdet som användaren skrivit in och lämnas
till formuläret för att vara ett heltal eller att vara ett flyttal eller något liknande
måste du explicit kasta den
och gör sedan någon typ kontroll.
>> Du vill inte att bara förlita sig på denna typ av jonglering för att göra saker och ting fungerar,
särskilt av säkerhetsskäl och bara för robusthet på din webbplats.
Bara något att tänka på att när du hanterar formulärdata,
allt som kommer i inlägget eller GET superglobals
se till att du alltid validera den och omvandla den och typecast det.
Och precis som vi pratade om en stund sedan att typecasting
i PHP är exakt samma som i C, där du har parenteser
och sedan typen.
Kom ihåg det.
En funktion som kommer väl till pass när du gör detta
är att vi har använt, och det är typ av som en parentes,
Vi har använt denna getType funktion här
att räkna ut vilken typ av en variabel,
och medan detta är praktiskt för felsökning och för att se vad en variabel är av typen
du inte vill använda detta, till exempel i ett tillstånd där
du kontrollera om getType av $ var = heltal göra något.
Detta är dålig, dålig, dålig.
Istället finns dessa funktioner kallas är heltal, är sträng,
är array som du vill använda i stället, så i det här fallet
vad jag skulle vilja göra i stället för den här killen här
är att använda är heltal var.
Och de är ofta kallas är is_ * i den meningen att man skulle kunna ersätta * med heltal,
sträng, et cetera, och bara för att se riktigt snabb
Detta är int php.
Ser ut som du kan göra antingen är int eller finns heltal också?
Ja, alias, så int heltal alias.
Cool.
>> Hur gör vi?
Låt oss öka takten lite.
Nu ska vi prata om arrayer, så att du kan se
i nästa del av spec vi talar om hur arrayer i PHP
är lite annorlunda än de är i C.
I sanning, de är typ av en blandning av
de matriser som du har lärt känna och älska i C
där allt är av samma typ
lagras i följd och intilliggande i minnet,
och du har dessa numeriska index.
Du har index 0, 1 index, index 2,
och du lagra värden på dessa index.
Du också i C, när du skrev Speller, många av er
gjorde hash-tabell strategi, och du såg att det hade vi
en annan typ av lagring där vi kartlägga
en nyckel till ett värde, så när du försökte spara något i hashtabell
var du tvungen att ange att du ville spara den med en särskild nyckel,
och att nyckeln bestäms platsen för värdet och där det skulle lagras.
Du har typ av fick båda dessa begrepp som händer på samma gång i en PHP-array,
och som ett resultat, kallar vi ofta dessa associativa arrayer
där vi associera en nyckel i ett värde.
I nästa del vi talar om en enkel PHP-array
där vi har nycklar a, b, och c,
alla strängar, kartläggning av heltalen 1, 2, och 3.
Och du kan få nycklarna av olika slag.
>> Du kan ha vissa tangenter som är strängar, vissa nycklar som heltal.
Du kan ha värden av olika slag.
Du kan ha ett värde som är en sträng, ett värde som är ett heltal,
ett värde som är ett föremål eller annan matris, till exempel,
alla i samma Array-objekt, är vilken typ av konstigt.
Du behöver inte ha en array som bara har fått en typ av element i den.
Du kan ha många olika saker på gång där.
Den andra sak att notera är att när du ser något liknande i din kod,
som är giltig PHP att förklara en rad precis som denna, 0, 1, 2, 3, 4, 5,
som kommer att förklara en initierad $ arr vara här arrayen.
Men vad du faktiskt får under huven är den här typen av implicita
generering av nycklar där vi fick 0 till 0, 1 till 1, 2 till 2, 3 till 3.
Och det visar sig att även om du har en array som den här killen här uppe
där du har a, b och c som tangenterna
och då du börjar använda metoden array tryck för att börja använda denna array som en skorsten,
så att du kan se att denna array objektet är denna matris verkligen blir överbelastad.
Vi kan använda det som en array. Vi kan använda det som en hashtabell.
Vi kan använda det som en stapel.
När du börjar trycka saker på denna rad
det första du trycker på denna kommer att vara index 0 och sedan index 1 och index 2.
Du kan få den här typen av implicit generationen av nycklar
om du inte anger dem explicit.
Det sätt du anger nycklar uttryckligen naturligtvis är att använda detta fäste notation,
som liknar arrayer utom i stället för endast tillåta
heltal index i här, nu låter vi något.
Om du vill att din nyckel till en sträng, skulle du ange det så här.
Om du vill att det ska vara en int anger du den med int du vill använda.
>> Frågor om det så här långt?
En av de trevliga sakerna med denna idé
är att du kan alltid bara ha ett värde som lagras med en viss nyckel.
Om vi ​​går tillbaka till vår apparat-Låt mig ta bort en del av det här.
Och låt oss säga att jag initiera en array som 0, 1, 2, gjort.
Om jag vet nu att, till exempel, om jag echo $ arr [0]
Jag kommer att få värdet 0 skrivs ut,
och eftersom det kan alltid bara vara ett värde som lagras för en viss nyckel
Om jag lagrar något på $ arr [0], säger en,
då vet jag när jag echo $ arr [0] igen
Jag tänker inte få 0 skrivas ut som tidigare.
Jag kommer bara att få en.
Så detta är i grunden att säga att jag inte kan ha $ arr [0] lagring 2 olika värden.
Det kan inte lagra både 0 och strängen en, som denna bokstavligen ersätter
vad var på $ arr [0] tidigare.
Anledningen till att jag tar upp detta körs det, se vad som händer.
Se här att jag fick 0 skrivas ut och sedan en här nere.
Det finns ingen ny linje där eftersom jag var lat och inte lägga det i.
Vad är coolt om detta är att vi kan använda detta som ett sätt
att fånga denna idé av en uppsättning
där vi inte kan ha flera nycklar i en matris.
Vi kan inte ha samma nycklar i en matris.
Jag kan inte ha nyckel 0 och värdet 1 och viktiga 0 och värde en
eller nyckel 0 och värdet true.
Nycklarna är all-det finns bara 1 nyckel i arrayen.
Även om du kan ha samma värde som lagras
flera gånger i rad under olika nycklar
det är inte möjligt att ha identiska nycklar flera gånger i din PHP-array.
>> Om vi ​​tittar på det här nästa problem, unique.php,
där vi vill öppna upp en PHP-fil
innehåller en lista med strängar, en sträng per rad,
och vi vill hitta alla unika strängar i filen
allt vi behöver göra är att använda en av dessa PHP arrayer
och använda strängar i filen som nycklarna till denna array
och hålla uppdatera vår array som vi lagrar dessa nya nycklar.
När vi läser varje rad ur filen kan vi lagra det i arrayen,
och i slutet kommer vi att ha som våra nycklar i vår grupp
alla de unika strängar i filen.
Verkar det vettigt?
Låt oss se hur det fungerar.
Vi kommer att öppna upp, enligt spec, kallas en ny fil unique.php.
Öppna. Oj, förlåt, ny fil.
Vi kommer att börja den med samma start och slut-taggar.
Vi kommer att spara den i 9 §, och vi kommer att kalla det unique.php.
Okej, nu zooma in
Tanken här är att öppna en fil,
Läs i filen rad för rad.
För varje rad i fil
Vi kommer att ha en matris där vi har
linjen som vår nyckel.
Och sedan när vi kommer till slutet här
$ Arr nycklar är unika linjer
från filen eftersom vi vet att om jag sätter linje i denna array
flera gånger det kommer bara fortsätta åsidosätta det gamla värdet,
och vi kan faktiskt sätta array linje som själv bara så.
>> Detta är lite konstigt.
Vi lagrar samma nyckel värde par om och om och om igen,
men eftersom vi är garanterade att det bara kommer att finnas 1 nyckel heter linje
så om vi har en fil som säger-en fil av animaliska tongångar och det har woof, woof,
mjau, mjau, mu, mu, och varje gång vi läser ett djur brus
Liksom woof och vi lagrar det i vår grupp får vi woof, och sedan andra gången
Vi lagrar woof skriver den över den första gången som vi lagrat det.
I slutet kommer vi bara att ha en post i arrayen
för varje djur tongångar i vår djur ljud-fil.
Har ni lita på att du kan ta itu med öppnandet av en fil i PHP?
Ett sätt att göra det-låt oss gå över detta snabbt-ett sätt att göra det
är med fopen, som vi såg tidigare.
Du kan fopen some_file.txt.
Du kan öppna den i läsläge, precis som i C.
Det är en mycket bra sätt att göra det.
Du kan även då för att läsa i filen rad för rad
har samma funktioner, många av dem, som du gjorde i C.
Du har fgets.
Du har feof, även om vi inte gillar att använda den
eftersom, kom ihåg, det var inte bra i C.
Du kan göra det på samma sätt,
men här är en riktigt cool grej.
Tyvärr, jag vill inte göra $ fil, men det finns en funktion som kallas fil i PHP,
och denna funktion här är coolt eftersom den läser hela innehållet
för filen som du anger, så some_file.txt,
läser hela innehållet i denna fil i en array
och sedan kan du iterera över den, vilket är ganska tjusig.
>> Om vi ​​går till exempel till vår webbläsare
och vi ser på Google för PHP-fil
ni kan se här att vår handbok säger att filen läses hela filen i en array,
och vi kan file_get_contents att returnera innehållet i en fil som en sträng,
men typiskt bara få det som en matris är riktigt trevligt eftersom vad den gör
är den bryter upp det så att varje element
i arrayen är en rad i filen,
så om vi ser på fil 0, det är den första raden i filen.
Fil 1, andra raden, fil 2, tredje raden, och så vidare och så vidare.
Skulle det inte vara trevligt om det var allt du hade att göra i C?
Ganska tjusig.
David visade detta i föreläsning och formspråk han visade var
att utöver vår standard för loop-i PHP hade vi att
för ($ i = 0; i <10, i + +),
och du kan göra detta i PHP även samma sak-
Vi har även denna coola konstruktion som kallas foreach.
Foreach är verkligen praktiskt när iteration över arrayer eller dessa datastrukturer
eftersom det tillåter dig att dra ut varje element i arrayen
utan att manuellt behöva göra indexering själv,
utan att manuellt behöva skapa ett index variabel öka den,
dra ut värdet i arrayen vid den tidpunkten, eftersom det är en mycket vanlig sak att göra.
>> Du har förmodligen gjort att massor av gånger när du gjorde C grejer
över terminen, så med denna foreach
vi kan slinga över den här filen array,
och syntaxen är att vi vill nu slinga över denna rad
och ange att variabeln ska vi använda för att lagra
inslaget av denna array lokalt lokal till tillämpningsområdet för denna foreach loop,
är att vi kommer att kalla det linje.
Om det är en fil med bara ord och det finns ett ord i en linje
Vi kan kalla det ord också, egentligen bara du ger det ett namn,
vad du vill kalla det,
och sedan inuti slingan kan du göra vad du vill med denna variabel linje.
Om det inte tillräckligt för att få värdet i matrisen och du också vill få
indexet tillsammans med det du kan ange ett namn för indexet
liksom värdet, och nu har du tillgång till 2 variabler.
Du har $ i och linje
där $ i är indexet i arrayen,
och linjen är den linje som du hämtat från filen.
Till exempel, om vi ville skriva ut eko rad 0 i filen som denna,
vi kunde göra det precis så här, "är Linje $ i av filen $ raden"
och här är något som vi inte heller sett ännu heller
där jag bara helt hoppat över hela denna% s% d affärer
att vi var tvungna att ta itu med i C, och i stället har jag gått direkt till
skriva variabler i rad i min sträng.
>> Detta kallas variabel interpolering, sträng interpolering
där du fyllning variablerna rätt i, och PHP tolken
är smart nog när det läsa igenom en sträng som börjar med citationstecken,
inte apostrof, med enkla noterade strängar du inte kan göra detta,
men med dubbla citerade strängar som läser igenom det ser för variabler.
Det jagar ner dem, och om den ser variabler kommer det att ta värdet av variabeln
och stoppa in den i strängen om det kan omvandla den till en sträng representation,
vilket är ganska tjusig.
För nu, låt oss kommentera ut resten av allt,
spara, och vad vi kan göra nu är att vi kan öppna upp en fil
som vi kan kalla some_file.txt-låt oss skapa en ny fil-
och vi kan sätta i en massa nonsens grejer här bara för att testa allting,
spara den, kalla det some_file.txt, som jag gör här uppe i toppen,
och nu om jag zooma ut bara för att kontrollera att allt är i samma katalog-
det ser ut som jag har unique.php och some_file.txt i samma katalog.
Om jag kör php unique.php
se hur det skriver ut varje rad i min fil och vad linjen är?
>> Det är ganska kraftfull, eller hur?
Titta, det tog 3 rader kod för att öppna upp en fil.
Tja, 4 rader kod. Jag kan inte räkna idag, tydligt.
Men egentligen bara 2 intressanta rader kod, eftersom de andra 2 var klammerparenteser,
men i detta mycket kod kunde vi öppna en fil, iterera igenom den,
dra ut radnummer och själva linjen
och skriva ut den.
Cool stuff. Charlotte.
[Charlotte] Jag har en fråga om syntaxen.
Så foreach behandlar varenda rad i filen som du öppnar,
och sedan när du vill göra saker med varenda linje du göra just det som
och sedan associera värdet.
[Nate H] Vad du kan göra här, frågan var
den foreach har att göra med arrayen, så foreach syntaxen
är foreach verkligen, och märker att det finns inget utrymme
eller något mellan för och var.
De måste gå bredvid varandra,
och sedan tar i en array,
och då har du här andra sökord kallas det måste finnas där,
och sedan efter det så kan du antingen lägga en variabelnamn,
i vilket fall du kommer att dra ut värdena i matrisen,
inte de index, eller om du gör det som vi har skrivit under
du får nycklar och värden.
Du har foreach-element i arrayen eller paret av arrayen som fastkilad till värde
eller som bara värde.
Beroende på vad du behöver, om du inte behöver nycklarna,
då kan du gå med värdet.
Om du vill att knapparna kan du gå med dem också.
>> [Charlotte] Jag insåg också att vi aldrig förklarade i eller linjen.
Hur vet ens vad de är?
[Nate H] Vad menar du med deklarera?
[Charlotte] Vi har aldrig berättade vad jag eller linje medel.
[Nate H] Vi sa aldrig datorn vad jag eller linje innebär i termer av-
[Charlotte] att de är indexerade eller att Dom-
[Nate H] Vi berättade aldrig att detta är tänkt att vara indexet eller nyckeln och värdet,
och det beror på att det är PHP tolken.
Detta fungerar som deklarationen och säger okej, är nyckeln kommer att vara
en variabel kallas i lagras i en variabel som kallas i..
Värdet kommer att lagras i en variabel som kallas linje,
så detta fungerar som förklaring av dessa variabler
och säger $ i är en nyckel, och $ linje är ett värde.
Ja, Ella.
[Ella] Om tangenterna inte görs numeriskt
Hur avgör man vilken ordning det kommer att skriva ut allt?
Är som det bara ordning det in i?
[Nate H] Låt oss ge det ett försök.
Låt oss skapa en variabel som heter arr,
och vi kan göra en går till 7.
Låt oss säga 0 går till en annan array med 1, 2 eller äpple.
Låt oss säga 7 går till 1, går b 2,
och 3 går till 4.
Detta är lite av en galen ser exempel eftersom vi blandar ihop
strängar och heltal överallt.
Det finns ingen riktig ordning på detta arrayen.
Jag menar, vi kan beställa allt i alfabetisk ordning efter nycklarna.
Vi kunde beställa allt alfabetiskt efter värdet.
>> Vi kan försöka ta hänsyn till att vissa är strängar, vissa är Ints,
och vi kunde försöka omvandla dem alla till samma typ och se vad som händer,
eller vi kan betrakta dem i värdet som vi redan angett dem
där vi sätter den här killen i första, den här killen i andra, den här killen i tredje,
den här killen i fjärde, et cetera.
Låt oss se vad som händer när vi kör den här koden.
Om vi ​​bläddra ner och göra samma sak,
och här är inte skriva ut de nya linjerna.
När det läser saker ur filen det inklusive de nya linjerna i de värderingar,
som varför det skrivs ut fint, medan här är det inte,
så det är därför allt är smushed ihop.
Låt oss lägga till i den nya linjen bara för att göra saker och ting bra.
Låt oss köra den och så här
titta på vad som hände.
Det tryckta ut allt i den ordning som vi sätter in det i arrayen.
Det bevarar ordningen i den meningen.
>> Att gå tillbaka till problemet med Uniques
där vi vill kunna iterera över en fil,
och vi ska ge det some_file.txt,
och vi kommer att iterera över det så här.
Vi sade att vi ville använda en array för att se till att vi hade fått alla
unika linjer ur det, och vi skulle kunna göra det riktigt lätt
genom att bara lagra i en array som vi naturligtvis förklara utanför en slinga,
och vi sa att om vi använde raderna i filen som nycklar i vår grupp
om vi gick in i en dubblett linje vi skulle åsidosätta det tidigare värdet.
Det är inte alltid möjligt att ha 2 nycklar som är identiska i samma matris.
Vi kan göra just det.
Vi ska bli av med denna eko uttalande här.
Här vi lagra rad i filen i vår grupp
använda sig själv som nyckeln.
Inget att den, och det visar sig att vi inte ens behöver denna nyckel.
Vi behöver inte jag variabel.
Vid denna punkt om vi skulle göra en annan foreach loop
och vi skulle slinga över varje arr
och linje nu om vi ECHO oops, sorry.
Vi kan inte använda kommatecken. Vi måste använda detta som sökord.
Nu om vi upprepar linje vi bör få alla unika ord i filen.
Om vi ​​går upp till some_file.txt,
och låt oss säga att vi äpple, banan, äpple, äpple, banan,
om vi skriva ut alla unika ord i denna fil vi bara få
äpple och banan för att skriva ut.
Om vi ​​rädda denna, nu här ska vi in ​​igen i,
php unique.php och ta-da.
Vi har lyckats uniqued filen.
>> Den sista delen av detta problem ber dig att sortera denna array innan du skrev ut
eftersom i detta enkla exempel som vi har just gjort
Vi hade tur i den meningen att fil-
vi gjorde detta krystat exempel med äpplen och bananer.
Det var redan sorterade.
Men att använda den enkla sorteringsfunktionen kan du sortera en array, vilket är ganska tjusig.
Det sista jag ville prata med er om riktigt snabbt
är att denna typ av PHP är allt gott och väl, och det är super praktiskt
att veta hur man ska göra om du någonsin behöver göra lite, snabba saker programmatiskt.
Till exempel, om jag behöver skriva ett program som, säg,
sätter alla i sektioner Jag tänker inte gå och skriva det i C.
Det kommer att vara lång.
Det kommer att bli lite av en smärta, speciellt om det finns inblandade filer,
precis som ni har sett.
Det är så trevligt att med bara så mycket kod här
vi kunde rippa genom en fil, dra ut alla unika värden
och skriva ut dem tillbaka ut.
>> Men för era uppdrag, för dina projekt,
om du bygga webbplatser med PHP strömmen är att
Vi kör våra PHP-filer genom denna tolk
och tolken bearbetar allt inom PHP-taggar,
lämnar allt annat orört och spotta ut resultaten.
Vi kan göra detta för att bygga HTML programmering.
Nu, om vi går tillbaka till spec, det sista problemet i spec
talar om denna idé av koncentrationer
och skapa en rullgardinsmeny,
som du kanske eller kanske inte vill göra, beroende på vad din slutliga projekt gör,
som tillåter användaren att välja från en lista över alla möjliga koncentrationer
deras en koncentration.
Nu är denna typ av en smärta att skriva ut det här
och måste göra allt detta manuellt, speciellt när du har att se
att du har alla fästvinklarna på rätt plats och alla citat på rätt plats,
så med PHP kan du göra detta programmatiskt, och du kan göra detta riktigt snabbt.
>> Låt oss se hur man gör detta.
Vi kommer att öppna upp en ny fil.
Vi kommer att sätta i våra PHP-taggar.
Vi kommer att kalla det concentrations.php,
och nu när du gör detta, typ av det goda tänka
när du försöker att mixa och matcha din PHP och HTML
är att räkna ut, okej, vad är den del som jag vill programmässigt generera?
Vad är den del som jag programmässigt kan generera?
Det är sant att du kan göra alla dina HTML
insidan av PHP block.
Du kan upprepa alla HTML som strängar.
Till exempel, om jag vill börja göra de utvalda taggar inuti PHP
Jag kan säga eko, säger välj namn = koncentration,
och sedan ner under jag kunde ha en annan eko-taggen
eller annan eko kallas stänga välja.
Detta är ett sätt att göra det eftersom det här är bokstavligen kommer att göra
är skriva ut denna sträng när det körs via PHP-tolken,
så blir resultatet HTML.
Om jag sparar filen som det är just nu
och jag kör php concentrations.php
titta på vad jag fick.
Jag fick denna öppna stäng Välj tagg.
>> Om jag skulle göra detta och jag skulle spara resultatet till en fil,
säger concentrations.html-vänta, ser det ut som på l har gått över till andra sidan,
nu om jag öppnar upp här concentrations.html ser jag har en giltig HTML-fil.
Är det slags konstig?
Vi använder PHP för att skapa HTML, skapa giltig HTML.
Det sätt vi gör det är vi bara ska ha PHP utskrift
HTML som vi vill att det ska skrivas ut.
Detta är bokstavligen hur PHP-webbplatser fungerar.
När du besöker en webbplats som skickar dig till något liknande
något, något, något dot com slash index.php
datorn bokstavligen ringa upp index.php,
kör det genom PHP tolken och vad skräp kommer ut
det skickar tillbaka till webbläsaren och säger hej, webbläsare, tolkar detta som HTML.
Det fina är att det kan vara jobbigt att ständigt skriva eko, eko, eko, eko
och bifoga allt citat som detta, så om du vill skriva
HTML som kommer att vara statiska själv kan du göra det så här,
sätta den utanför, stänga den,
och så här du sätter bara in PHP-taggar det som du vet
du vill programmatiskt skapa, och i detta fall är det de alternativ taggar
som är en smärta att generera.
>> Till exempel skulle vi kunna skapa tusen alternativ taggar
genom att göra något sådant, $ i <1000, i + +
och säger value echo option = $-hoppsan, jag kan inte göra det.
Nåväl, låt oss ge det ett försök och se vad som händer.
$ I och sedan säga $ i </ option.
I stället för att behöva skriva ut det alternativet tag tusen olika tider
Jag använder PHP-kod för att skapa det automatiskt, programmatiskt.
Typ av tjusig. Ja.
Jag minns det som nämns i antingen föreläsningen eller genomgång,
men vad är skillnaden mellan citattecknen,
de normala och de enda saker?
Det är faktiskt något som jag har gjort fel här att jag ska visa dig.
De enskilda citat tillåter inte några specialtecken,
så allt inuti en noterad enda sträng tolkas bokstavligt.
Om jag hade en \ n insidan av enkla citationstecken, och jag sparar det till exempel
och nu går jag ner hit och kör det-
oops, där ska jag?
Åh, det är för att jag har glömt $.
>> Nu om jag öppnar upp-faktiskt, här kommer vi bli av med att skriva det i en fil.
Vi ska bara läsa det.
Här ser du att jag har denna bokstavliga \ n i strängen, som inte en faktisk ny linje,
och likaså, i stället för att faktiskt interpolera värdet av denna variabel
Det gav mig $ i sig, som är typ av en smärta.
Vägen runt detta är att använda citationstecken,
och sedan när du använder citationstecken det kommer faktiskt
korrekt interpolera värdena för alla dessa variabler här
och även erkänna denna \ n att vara den nya linjen att det är
och inte \ n.
Använda enda de är trevligt när du har
tecken som kan tolkas som specialtecken för då behöver du inte
undkomma dem hela tiden.
Saker kan bli rörigt, och ofta som jag gör det,
bara för att göra det enkelt, är att om jag ska ha något
HTML som i min kod jag inkludera edit inom enkla citattecken
och sedan använda denna sammanslagning operatör
att sammanfoga de variabler i.
Detta är ett annat sätt att göra det
där vi har punkten som kommer att ansluta denna är en sträng
med detta med detta med detta,
och nu har jag inte att undkomma dessa dubbla citattecken.
Jag behöver inte använda den här killen att fly.
De kommer bokstavligen skrivas ut som citationstecken och sedan denna killen här.
Detta är ett annat sätt att blanda allting tillsammans.
>> [Student] Även när du ekade getType fanns inga citattecken alls.
Rätt, så eko är typ av speciell i den meningen att du inte behöver parenteser.
Du behöver inte ha citationstecken nödvändighet runt variabler,
som det är giltigt att säga echo $ i, och det kommer att tolka detta som en sträng.
Det kommer att göra rösterna, så vi kunde göra detta, och det är giltigt också, men vi behöver inte det.
Det är valfritt.
I denna veckas problembild utkik efter en hel del denna typ av saker
där du mixa och matcha HTML med PHP
precis som denna, och nu när vi rullar tillbaka och vi kör detta
kan vi se att vi har en massa alternativ värden
som bara blev skrivs ut.
Vi har allt detta HTML som fick genererat verkligen snabbt för oss.
Jag lämnar det som en övning.
Det är mycket lik den fil läsning som vi gjorde tidigare.
>> Det finns en concentrations.txt fil som du kan dra ner från CDN,
och du kan öppna den med samma foreach trick som vi gjorde tidigare,
och foreach du bara upprepa ett alternativ och koppla in
lämpliga värden, lämpliga nycklar och index,
och då får du en rullgardinsmeny som bokstavligen skapar
programmatiskt för er alla de olika koncentrationer vid Harvard.
En praktisk sak att ha.
Det finns en hel del konfiguration grejer för detta uppdrag.
Om du inte har gjort det ta redan nästa halvtimme, timme,
tid ikväll definitivt för säker,
gå igenom problemet inställda spec,
se vad som händer med att sätta upp vhosts, den lokala värden, allt det där.
En sak att påpeka just nu är att
i de flesta problem set vi har pågått i din Dropbox-mappen
och sedan ladda ner problemet filuppsättning zip och packa den.
För detta problem uppsättning som du inte vill.
Vill du gå in på detta vhosts katalogen.
Du vill gå in vhosts och gå in i lokala värden katalogen i den,
och det är där du kommer att vilja dra ner zip-filen,
packa upp den, och gör dig redo att gå.
Du måste följa stegen noga.
>> Om du har några frågor, skicka e-post, lägga upp den på Diskutera, kom till kontorstid.
Tack killar. Nästa vecka ska vi ha en översyn session för testet.
Njut av din sista problemet set. Jag hoppas att allt går riktigt bra.
[CS50.TV]