[Powered by Google Translate] [Deel 8] [minder comfortabel]
[Nate Hardison] [Harvard University]
[Dit is CS50.] [CS50.TV]
>> Welkom op onze voorlaatste hoofdstuk.
In deze week gaan we praten over PHP, en dan volgende week
we doen een beetje beoordeling voor Quiz 1.
We gaan om te beginnen op pagina 3 van het probleem stelt pack,
en wij werken via de rubriek van vragen vrij snel.
Op pagina 3, beginnen we het over dit verschil tussen C en PHP
in die zin dat PHP een dynamisch getypeerde taal
terwijl C is statisch getypt,
en heeft iemand echt snel gedaan een codering in iets als PHP
of Python of Ruby eerder JavaScript?
Totaal nieuw? Oke.
>> Al deze talen die ik net noemde
zijn zeer verschillend van talen zoals C en C + + en Java
in de zin dat wanneer u een variabele declareren je hoeft niet te verklaren
wat voor soort variabele het is, dus in C we hadden pech hebt dat u altijd zeggen
dit gaat om een ​​int variabele te zijn, of dit gaat om een ​​char * variabele,
terwijl met PHP, met Python, met Ruby,
met veel van de volgende moderne talen die u niet hoeft te dat te doen.
U zojuist verklaart de variabele en in het geval van PHP
je dat het een variabele declareren door voor aan het met een $-teken,
en het type van de variabele wordt bepaald door welke waarde het belemmert,
dat is wel cool.
Om te spelen met deze een beetje, we hebben monster PHP-code hier
tussen begin en eind tags.
We gebruiken dit soort van HTML in de zin dat
we hebben deze punthaken hier om te openen en te sluiten.
Je ziet dit met HTML.
Je ziet dezelfde soort syntax met XML ook.
>> Dit geeft het begin van een blok PHP.
Dit? Php is specifiek voor PHP.
We sluiten alles met een?> Ook.
Laten we het openen van een bestand in onze apparaat met behulp van wat je wilt.
In dit pakket het zegt te bellen dynamic.php.
In werkelijkheid kun je het noemen wat je wilt, maar de bestandsnaam zal komen
en later van belang zijn, dus vergeet hoe je het noemen.
Ik ga om over te schakelen van het apparaat,
en ik ga naar een map te maken voor
hoofdstuk 9 Ik geloof dat we op nu.
En we gaan in artikel 9,
en ik ga gedit gebruiken.
Laten we eens kijken, gedit, en ik ga de mijne dynamic.php bellen.
Boom.
Binnen dynamic.php, want dit is een PHP-bestand
en ik wil deze lopen door de PHP-interpreter
Ik moet alles beginnen met die open-tags,
dus ik ga aan die direct aan de slag,
geef mezelf een beetje ruimte tussen de tags,
en dan de punt van deze oefening was om te rotzooien met
deze functie genaamd gettype, dus gettype, deze functie hier.
>> Merk op dat er geen is of ruimte of koppelteken of iets dergelijks underscore
het scheiden van de 2 woorden, te krijgen en te typen, slechts een woord helemaal.
Maar wat dit zal doen, is als ik langs in een variabele te gettype,
zeggen $ var of $ x,
dit zal mij vertellen soort in een debugging-formaat
wat de naam van dat type is.
We gaan hier experimenteren.
In het bijzonder, als je kijkt terug op de PSET spec
we hebben een paar verschillende regels code hier.
In de eerste regel van de code initialiseren we deze variabele, $ var,
gelijk aan 7, en dan hebben we dit printf lijn
dat hey zegt: printf var leeg.
Printf is een van de vele manieren waarop we dingen kunnen afdrukken in PHP.
Vaak zie je de echo functie in plaats van printf gebruikt,
maar printf we zijn allemaal bekend met te zijn codering in C voor een tijdje.
Wat kun je eigenlijk doen is laten we eens kijken of kopiëren en plakken werkt.
Ik ga dit eens te proberen.
We zullen terug te gaan naar het apparaat.
Oke, en daar gaan we.
En afstand is een beetje funky, maar hier gaan we.
We hebben deze code hier.
>> [Student] Is het niet een goede stijl naar het tabblad het?
Sorry?
[Student] Is het gebruikelijk om het tabblad het?
Juist, dus Sam vraagt ​​of het verdrag tabblad of niet.
Typisch ja.
In dit geval heb ik ervoor gekozen niet te doen.
Eerlijk gezegd, zie je verschillende dingen tussen verschillende programmeurs.
PHP wordt meestal vaak gebruikt in combinatie met HTML
en andere talen, en dus soms het afdrukken wordt er een beetje funky
als je streepje binnen PHP start en eind tags.
Het hangt echt.
In dit geval is de kopiëren en plakken niet plak de tabs in voor mij,
maar het is zeker, zoals je zei, het duidelijker.
Goed, als u bespaart deze code in dynamic.php
dan wat je kunt doen is naar beneden gekomen om uw terminal venster waar ik gelijk heb hier beneden
in gedit, en doen het equivalent van compile
met behulp van te maken en dan het runnen van uw code in C
alles wat je hoeft te doen met de PHP-bestand is het opstarten van de PHP-interpreter,
dat is een klein programma genaamd PHP,
en het argument geef je aan de interpreter is het bestand dat u wilt interpreteren.
In dit geval dynamic.php.
Oeps, ik heb waar het ook alweer?
Oh, ik zet het in artikel 9, en hier ben ik. Dat is waarom.
>> Nu als ik zonder dat opnieuw
zien we dat in mijn eerste gettype functie-aanroep
var een geheel getal.
In de volgende var een string is, en vervolgens in de derde var een boolean.
Wat interessant aan is, is als we schuiven een back-up te zien we dat
Dit zijn types vergelijkbaar met degenen die we hadden in C.
We hadden ints in C.
We hadden soort van strings in C,
dus snaren waren niet een totaal legit type in de zin dat
onze CS50 reeks was echt wat?
Sorry? Missy?
[Missy] Char *.
Ja, het was dit char * we gebruikten.
Helemaal aan het begin van het semester waren we met behulp van de string type,
maar het was echt een char * onder de motorkap.
We hebben net het type gedefinieerd is, terwijl in PHP deze snaren zijn een echte type.
Er is niet meer van deze char * soort dingen.
>> Je zult zien dat we nog veel meer dingen te doen met snaren
veel gemakkelijker in PHP dan konden we in C,
en dan eindelijk, we hebben dit boolean type, en het grote verschil hier is dat
Als we scrollen naar beneden zien we dat de naam van deze typen
zijn nu integer, string, en boolean in plaats van int en bool,
en als je pick-up verschillende programmeertalen,
in de veronderstelling dat op een bepaald punt in je leven zul je in contact komen met
verschillende die je zult merken kleine eigenaardigheden als dit
waarbij C gehele getallen ints noemt.
Sommigen noemen het gehele getallen.
Er zijn andere termen die je zult tegenkomen.
Big int zagen we vandaag in SQL.
Er zijn ook tal en dan bool, boolean,
allerlei verschillen zijn.
>> Dit is niet erg interessant, maar nu ga ik om u een beetje tijd-
Als we weer uit te zoomen-om te werken via deze oefening aan de onderkant van de pagina 3
waar het vraagt ​​welke soorten hier overeenkomen met deze waarden aan de onderkant.
Wij hebben 3,50.
We hebben dit ding hier, dat is interessant.
Wij hebben dat niet eerder gezien, maar als je hebt gevolgd mee in lezing
u waarschijnlijk al weet wat dat is.
Dan hebben we dit, dat dit is een soort van funky.
Je herkent dit.
Wat is dit in C?
Sam? Wat zou dit je in C?
Het zou openen een bestand met de naam dynamic.php en leesbaar te maken.
Ja, en wat zou het type variabele dat we deze toe te wijzen aan? >> Bestand ster te zijn.
Precies, zouden we toewijzen aan een bestand ster.
Dit is legitiem PHP ook.
Run dat. Zie wat er gebeurt als je voorbij dat in gettype.
En dan ook controleren wat null is, wat dat zou kunnen zijn in PHP.
Ik geef je een paar minuten.
U kunt letterlijk kopiëren en plakken deze waarden in,
en dan zullen we wel een beetje willekeurige oproep op u
en zien wat je hebt.
>> [Student] Ik heb een vraag. << Ja.
In een van de lezingen David zei dat er iets is wat je kunt zetten op de top van uw dossier
zodat je niet hoeft te typen in PHP elke keer.
Wat was dat?
Hij was waarschijnlijk over het pond knal, de hash bang.
Het is een richtlijn dat als je markeert het bestand als uitvoerbaar
dan wat het doet is als je uit te voeren van het bestand
het zal u vertellen de shell-programma
de PHP interpreter gebruiken om de inhoud van het bestand te interpreteren.
De vraag is wat was deze bijzondere lijn
dat we ten bovenaan onze PHP bestanden niet opnemen
dit PHP lijn of dit PHP commando wanneer we willen het bestand uit te voeren?
En kun je eigenlijk doen met een bos van verschillende bestanden.
Ik denk dat het hangt af van waar de PHP binary wordt opgeslagen,
maar vaak usr / bin / php is een goede plek om te beginnen.
U kunt dit oplossen precies door terug te gaan naar uw apparaat
en typen welke php.
De welke opdracht cijfers uit als je het uitvoeren van binaire
of een opdracht waar het betreffende bestand is.
Dit vertelt me ​​dat het PHP is echt aliasing dit binair bestand
die is opgeslagen in usr / bin, dat is waar een groot deel van de binaire systeembestanden zijn geïnstalleerd.
Bijvoorbeeld, als ik omhoog naar de top, nu ik dit # gezet! lijn hier
Ik kan naar beneden scrollen, en ik kan proberen te lopen
dynamic.php, maar krijg ik deze foutmelding over toestemming wordt geweigerd,
en wat dat betekent is dat dit bestand op dit moment niet uitvoerbaar permissies geven.
Het is niet gemarkeerd als een bestand dat iemand kan draaien.
>> Wanneer u liep maken of Clang en je hebt een uitvoerbaar van het
de compiler was slim genoeg om te weten dat he, ik ben een uitvoerbaar bouwen.
U wilt waarschijnlijk het uit te voeren, dus het zou automatisch te configureren
de machtigingen voor jou.
Dit is niet het geval, echter, wanneer u een normaal bestand vanuit het niets,
De reden hiervoor is meestal dat u niet wilt dat een bestand op uw systeem uitvoerbaar,
zodat je eigenlijk moeten gaan en handmatig doen.
De eenvoudigste manier om het te doen is met het chmod commando,
en chmod + x zegt toe de uitvoerbare bit
want er is de lees-bit, de schrijf bit en de uitvoerbare bit,
r, w en x,
en zeggen chmod + x gaat branden en de uitvoerbare bit
voor het bestand dat we geven, die in dit geval dynamic.php zijn.
>> [Student] Is dat aangezet voor iedereen?
Laten we dit zien, dus hoe zou ik controleren om de machtigingen te zien?
Weet je hoe ik zou controleren om de permissies van een bestand zien?
[Onverstaanbaar student reactie]
Sorry? >> [Student] XSD.
XSD geeft ons het bestand in hacks.
Een lijst van alle bestanden,-l, maakt mij alle bestanden in mijn directory
soort in hun lange, uitgebreide lijst, en dus even zien we dat
dit dynamic.php bestand
is het laatst bewerkt 5 november om 16:21.
De eigenaar van dit bestand is jharvard.
Dat is de gebruiker die is ingelogd
Dat is de gebruiker Ik ben net zo werken,
en als je ook in het apparaat dat je ook werkzaam als gebruiker jharvard.
Je bent in de studenten-groep,
en dit zijn dingen die je vaak genoeg zien.
>> We kunnen hier gaan in een veel detail,
maar voor het grootste deel wat je wilt kijken wanneer u op zoek bent om te zien
of een uitvoerbaar bestand is voornamelijk
de gebruiker die eigenaar van het bestand, de eigenaar,
dus dit jharvard, en dan hebben we
de rechten bits over hier links,
en de manier om dit te lezen, is dat het laatste stukje
gewoonlijk wordt gebruikt voor het markeren of, althans in dit geval
dit laatste stukje zal vaak worden ingesteld op de ad om aan te geven
dat het bestand is een directory en niet alleen een normaal bestand.
Dan is de volgende 3 bits hier
bepalen de machtigingen die de eigenaar van het bestand,
dus in dit geval jharvard, als eigenaar van het bestand, kan lezen en schrijven dit bestand,
maar er is een vleugje zeggen dat jharvard niet kan dit bestand uit te voeren.
De volgende 3 bits zijn voor de groep, dus dit is de studenten-groep,
dus als er meerdere gebruikers op mijn toestel,
en we meerdere gebruikers hadden als onderdeel van de groep studenten,
dan kunnen ze allemaal lezen dit bestand, maar ze kunnen niet schrijven,
en ook iemand anders, de wereld
kan alleen lezen dit bestand ook.
Er is een goede, lange writeup over dit,
zodat u kunt lezen online.
In het probleem set spec gaan we in dit in meer detail.
>> [Student] Is de 218 verwijst naar de wereld?
De 218 is-uit de top van mijn hoofd ben ik vergeten,
maar nee.
Laten we eens kijken. Ik ben blanking op dat moment.
Terug naar waar we stonden op het doen met dit chmod + x
waar we wilden dynamic.php uitvoerbare permissies te geven,
en de vraag was of dit, dat uitvoerbaar permissies te geven aan iedereen
of om gewoon jharvard, en we kunnen dit zien door
het uitvoeren van de opdrachten en het typen van ls-l,
en nu zien we dat het is gemarkeerd als uitvoerbaar.
Je ziet dat er een kleurverandering.
Nu dynamic.php is opgenomen in groen,
en het lijkt erop dat het antwoord op de vraag is wat, Charlotte?
[Charlotte] Alleen jharvard. >> Alleen jharvard, ja.
>> Als we wilden de uitvoerbare bit te schakelen voor iedereen
hoe kunnen we dat doen?
Elke gedachten? >> A + x?
Ja, precies.
Charlotte zei dat we kunnen chmod doen van a + x van dynamic.php,
en nu als we lopen ls-l zien we dat de uitvoerbare bits
zijn inderdaad ingeschakeld voor iedereen.
En kun je eigenlijk het omgekeerde doen van dit, dus je kunt uitschakelen voor iedereen
met behulp van min.
Nu is het uitgeschakeld, en nu kunnen we weer aan voor jharvard
zodat we daadwerkelijk kunnen nu draaien,
en nu zie je wanneer we de code uitvoert deze speciale #! lijn aan de top,
#! lijn, vertelde de schaal,
vertelde onze terminal hey, wanneer dit bestand wordt uitgevoerd,
Gebruik / usr / bin / php om dit bestand te interpreteren
en druk vervolgens de uitgang.
[Onverstaanbaar student vraag]
Tuurlijk, laat me omhoog terug. Net als dit.
Je ziet al deze richtlijnen te beginnen met deze pond en dan het uitroepteken,
ook wel een keet, hash bang.
>> [Student] Hoe kunnen we draaien met php dynamic.php voordat we het uitvoerbaar?
De vraag was hoe kunnen we run this behulp van de PHP binary
terwijl dynamic.php is niet uitvoerbaar?
Dit is super belangrijk, want dit is precies hoe
het gaat werken wanneer je schrijft probleem set 7.
De meeste van de tijd PHP-bestanden zijn niet direct uitvoerbaar.
De manier waarop dat werkt is omdat het de PHP binary dat is uitvoerbaar.
De tolk is het ding dat wordt uitgevoerd,
en dus wat het doet is letterlijk slurpen in de volledige inhoud
van onze dynamic.php bestand en gaat regel voor regel
en het uitvoeren van deze opdrachten, dus het is het gebruik van onze PHP-bestand
een lijst van instructies.
Het is niet direct uit kan voeren.
Dat is waar we zeggen dat deze bestanden worden geïnterpreteerd tijdens runtime.
Het is een runtime taal in plaats van iets dat bepaald tijdens het compileren,
niet een gecompileerde taal als C
>> Is er een manier om een ​​runtime taal te krijgen om op te treden alsof het een compilatie taal,
graag als je alle lopende gedaan op de server
in plaats van-je weet wat ik bedoel?
Ja, dus de vraag is
is er een manier om runtime talen te krijgen om op te treden meer op de compilatie vormen van talen?
En er zijn, ik bedoel, dat is een actief gebied van onderzoek voor veel van deze bedrijven.
Ik denk dat Facebook is veel werk gedaan met PHP
en samenstellen van het naar beneden, waardoor het sneller, het optimaliseren van het
omdat hun site is gebouwd op PHP.
Als u hebt gevolgd node.js helemaal niet,
dat is een soort van een JavaScript-interpreter
in staat zijn om JavaScript uit te voeren buiten de browser, buiten uw web browser,
omdat van oudsher JavaScript zou alleen nog maar de binnenkant van Firefox of Chrome,
en het zou worden gebruikt om koele animaties gebeuren op een webpagina
en maak uw webpagina dynamisch.
Dat is al gebouwd op een hoop werk dat Google heeft gedaan
je JavaScript en C maken + +
samenbinden, dus er is veel actief onderzoek naar
krijgen deze talen te communiceren en te optimaliseren,
in de eerste plaats omdat er zoveel mensen kunnen coderen in PHP en JavaScript
want het is een stuk makkelijker.
Het is een stuk mooier. Je hoeft niet pointers.
Je hoeft niet typen rondzweven.
Ze wilden de voordelen van deze compilatie talen te winnen
alle type checking en de snelheid en de onderste geheugengebruik en dat alles
met behoud van de flexibiliteit en het gemak van het gebruik van deze nieuwere.
>> Terug naar onze oorspronkelijke plan van aanval.
We hebben een paar van deze vragen hier in ons probleem set spec.
Laten we gaan door hen heel snel, en dan gaan we in de kamer.
Charlotte, wat voor soort is 3,50?
[Charlotte] Dat is een dubbele. >> Het is een dubbele.
Jimmy, wat is dit volgende? >> Een array.
Een array, geweldig, en Jared, wat is de fopen?
[Jared] Het is een bron. >> Het is een bron.
Dat is een soort van een nieuwe, niet een bestand ster, niet een bestand.
Het is een bron is het type in PHP,
en het spijt me, Ella, de laatste nul is wat?
Null.
Null, hoe wordt het gespeld in PHP? >> Op dezelfde manier.
Op dezelfde manier, hoofdsteden? >> Ja.
Ja, oke.
Daar gaan we, we hebben een dubbele, we hebben een array,
we hebben een bron, en dan hebben we null.
Laten we eens kijken nu heb je gezien-
laten we eens kijken, dus nu ik denk dat wat ik ook wil doen is omhoog te trekken
deze webpagina hier, dit php.net / handleiding,
dus als jullie kopiëren dat en het openen van een web browser.
Ik ga trekken Chrome, zet dat binnen
Ik wil je laten zien dat niet alleen omdat
kunnen we de hele dag praten over soorten en al die leuke dingen
maar omdat dit de PHP handleiding,
en er zijn een heleboel van PHP programmeurs die er zijn.
Er zijn een heleboel van PHP-websites die er zijn,
en als gevolg daarvan is er veel documentatie over PHP,
en de handleiding, dit php.net, is echt een goede plek om te gaan
wanneer je met vragen over wat is de beste manier om X te doen in PHP
of hoe ziet een functie eruit?
Gewoon een soort van kennis te maken met hoe dit eruit ziet, omdat
je zult hier komen vaak een beetje voor te stellen probleem 7.
>> Als je uiteindelijk het doen van een afstudeeropdracht die PHP gebruikt
zal dit een plaats waar je je erg goed op de hoogte zijn.
Vaak is de manier waarop mensen dit doen is dat ze gebruik maken van Google om te zoeken naar de site,
en ze maken geen gebruik van het zoekvak dat is hier in de rechterbovenhoek, dat is een beetje klein.
Als je rond Googlen naar iets te doen met PHP en je ziet
een van de handmatige koppelingen pop-up kunt u meestal beroep doen op deze
als een redelijk goede bron.
Geweldig, dus uit deze types, gewoon uit nieuwsgierigheid,
welke hebben we niet gezien?
Alles wat we niet hebben gezien hier?
[Student] Resource. >> We zagen hulpbron worden voor de fopen gesprek.
[Student] Objecten. >> Objecten we niet gezien hebben zeker.
Callbacks hebben we niet gezien.
Er zijn enkele van deze pseudo-types.
We zijn zeker zagen alleen integer en dubbele.
We hebben niet een aantal van de anderen te zien, dus als we op gehele getallen
we kunnen zien zijn er nog andere getallen die ze hier hebben?
Zijn ze allemaal-zo integer, integer, integer.
Sommige talen hebben grotere integer types,
zoals we zagen op MySQL vandaag was er int en vervolgens grote int.
Cool.
>> Dus, PHP handleiding.
Laten we terug gaan naar ons probleem set spec, en we zullen nu naar beneden scrollen naar pagina 4.
Een van de dingen die er gebeurt als je de volgende talen
dat dit niet statisch te typen, dus de volgende talen waar je moet aangeven
het type van een variabele vooraan
wordt krijg je wanneer je zou kunnen beginnen met variabelen van verschillende types
interactie met elkaar,
en PHP doet dit ding waar het probeert te doen
wat het beschouwt als de meest verstandige om te doen
wanneer u 2 verschillende types met elkaar.
Bijvoorbeeld, als we kijken naar de volgende regels code hier
zie je dat we hebben wat er gebeurt als
we proberen en voeg de string 1 tot en met het gehele getal 2.
Wat gebeurt er als we proberen en voeg een string die niet is een numerieke waarde
maar eigenlijke betekenis, CS het nummer 50?
Dan zullen we zien is er iets anders dat gebeurt waar
in plaats van het toevoegen van een string naar een getal dat we een nummer toe te voegen aan een string,
en zo verder en zo voort tot het punt waar we krijgen
een soort van rare dingen hier, waar we hebben 7 + waar.
Wat de heck betekent dat?
>> Als jullie doorgaan en plak een deel van deze code op uw apparaat.
U kunt houd het in dynamic.php.
We zullen zien wat er gebeurt.
[Student] Gewoon gebruik maken van afdrukken, niet printf?
Ja, dus je zult zien dat print is ook een geldige functie voor het afdrukken van in PHP.
Er zijn veel verschillende manieren om het te doen.
We zullen zien met een paar van de voorbeelden later als we eenmaal beginnen te praten
over de unieke probleem dat we gaan schrijven
en dan de concentraties probleem dat we gaan schrijven
dat ook al hebben we fopen en fclose
dat vaak niet de eenvoudigste manier te lezen in de inhoud van een bestand.
PHP heeft veel van deze C-achtige overblijfselen.
[Student] Toen ik in alle 6 van die dingen die ik alleen maar een nummer als een uitgang.
[Nate H.] Als je in alle 6 van deze dingen.
Laten we eens kijken is het omdat het mogelijk-
een ding is dat deze afdruk oproepen niet worden beëindigd op het einde met nieuwe lijnen.
Er is geen nieuwe lijn tussen elk van deze afdruk oproepen,
dus misschien dat je het krijgen van een groot aantal,
en het is echt gewoon amalgaam van nieuwe lijn karakters.
[Student] Oke, hoe kan ik er zeker van-
Nou, er zijn een heleboel verschillende manieren.
Je zou handmatig in een afdruk van een nieuwe lijn karakter,
een echo van een nieuwe lijn karakter,
af te drukken van de nieuwe lijn.
[Student] Dus echo is hetzelfde als printf?
>> Printf is als C printf
waar je het afdrukken van een geformatteerde string.
Je levert het de format string en vervolgens alle tijdelijke aanduiding variabelen.
Het is vaak iets dat niet wordt gebruikt-
laten we eens kijken, als een disclaimer,
Ik ben minder vertrouwd zijn met PHP dan ik ben met andere web talen,
en toen heb ik geprogrammeerd in PHP ik meestal niet printf gebruiken
want ik vind het sneller in het gebruik de string interpolatie mogelijkheden die het heeft,
die gaan we in en ik zal je laten zien in slechts een seconde,
terwijl in C hebben we soort van moeten dit hacky ding te doen om het te krijgen om goed te printen.
Je kunt eigenlijk direct gezet variabelen in strings in PHP.
Printf is een soort van overdreven verlangen naar wat ik meestal doe. Ja, Ella.
[Ella] In het algemeen als je parse error krijgt wil dat zeggen-
zoals op C het niet u precies vertellen waar de fout is en wat het is,
zodat betekent dat kijken door je hele code en figure it out?
Het is meestal meer gericht dan dat.
Ik denk dat in dat geval was het een beetje af,
dus ik denk dat in dat geval waren we een puntkomma ontbreekt.
Het was proberen te begrijpen van alles te maken,
dus als deze geïnterpreteerde talen, wordt de tolk gaan proberen
en doet haar best om alles werk op de juiste wijze te maken.
>> Je zult, zie bijvoorbeeld, in JavaScript
Je zult vaak-line verklaringen eindigen met een puntkomma, net zoals ze doen in PHP,
net zoals ze doen in C.
In JavaScript een aantal van de JavaScript-tolken
in een groot deel van de browsers zal in puntkomma's voor u
als je toevallig te ontbreken ze.
Ze zullen proberen en geschikt voor een aantal slordigheden van uw kant.
Dat is waar het zou kunnen worden proberen en proberen en proberen om dingen te laten werken,
en dan eindelijk het zal tot een punt waar het zegt oke,
Ik kan geen dingen werken op bail, en dat is waar krijg je een regelnummer
dat misschien een beetje af van de exacte plaats lijken.
Oke, dus laten we gaan door dit heel snel.
We vertrokken af ​​met Ella, dus laten we over te gaan naar Missy,
en Missy, is afdruk van string 1 plus het aantal wat 2 geven?
[Missy] 3. >> 3.
Is dat logisch? Sorteren van?
Geeft het je een nummer? Geeft het je een string?
[Missy] Een getal. >> Het is een nummer.
Maar het is deze af te drukken, zodat het gaat om u een soort van string.
>> Een ding dat we kunnen doen om dit uit te checken
is als we $ var = 1 + 2
en dan zeggen we echo van gettype,
dus we zijn met behulp van een derde soort afdrukken hier.
Nu kunnen we zien wat er gebeurt hier.
Hier is wat we hebben is dat we een geheel getal uit deze.
Ook al waren we het toevoegen van deze string naar een getal,
we hebben niet een string van te maken, net als Missy zei.
We kregen een geheel getal.
Oke, dus laten we eens kijken, next up, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H.] 50. Is dat logisch?
[Kevin] Ja.
[Nate H.] Waarom? Waarom is het zinvol voor u?
[Kevin] Omdat het gewoon de string met, met getal nul.
Ja, geweldig.
Kind van ambigue situaties, maar het is goed om te weten wat er gebeurt.
Stella, wat er vervolgens gebeurt met nummer 1 + string 2?
[Stella] 3. >> 3 opnieuw.
En in dit geval, krijgen we een string of een nummer?
>> Laten we dit eens te proberen.
Iedereen sneller dan ik het antwoord te krijgen? Charlotte?
Oh, ik didn't-oke, laten we eens kijken, we gaan naar dezelfde soort te doen
waar we hebben een aantal plus een string, en we gaan het type echo,
zien wat we krijgen.
We krijgen ook een geheel getal.
Het maakt niet uit welke de string, die een is het nummer.
We zijn nog steeds gaan naar een geheel getal te krijgen.
Het is nog steeds te doen wat we kunnen verwachten.
Oke, dus Sam, wat ongeveer 90 + 9 flessen bier op de muur?
[Sam] 99. >> 99.
Geen flessen bier op de muur, dat wel.
Het geeft ons een beetje meer informatie over wat er gebeurt.
[Sam] Als je had geschreven 9 in brieven
dan zou je 90, toch?
[Nate H.] Ja.
De vraag was of we hadden geschreven 9 op als N-I-N-E
zouden we hebben gekregen 99 of 90?
We zouden krijgen 90.
Het is letterlijk gewoon op zoek naar cijfers karakters.
Het is niet slim genoeg om het aantal woorden en dat soort dingen te herkennen. Ja.
>> [Student] Is er zoiets als typecasting in PHP?
Er is, en het is precies zoals u zou doen in C.
Hoe zit het met 10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H.] Ja, dus wat zou verrassend zijn over dit?
Wat zou er gebeuren als je dat deed ditzelfde soort dingen in C,
als je wel 10/7 in C?
[Charlotte] Het zou alleen geven u-afhankelijk van hoe je typecasted denk ik
het zou geven u slechts een beperkt aantal cijfers achter de komma.
Ja, dus een beperkt aantal cijfers achter de komma.
Wat zou kunnen zijn, zou het geeft je de cijfers na de komma?
Vaak niet, dus nogmaals, afhankelijk van hoe je typecasting het
het al dan niet om te zetten in een getal met drijvende komma.
Hier was het wel leuk dat het deed.
Hadden we zien je dit terug toen we begonnen met dit soort dingen in C
het waarschijnlijk zou hebben gemaakt een beetje meer gevoel
dat het niet gewoon naar 1.
En dan tot slot, Jamie, hoe zit het met 7 + waar?
[Jamie] 8. >> 8.
Wat betekent dat?
Ik denk dat het gewoon waar is geeft de waarde van 1.
Ja. Wat gebeurt er als we dat veranderen op false?
[Student] 7.
Ja, dus onthouden waar we praten over deze binaire waarden,
1 is op, 0 is uit?
Nu hebben we waar is 1, 0 is vals,
en je misschien niet hebben gezien dit in de C-voorbeelden die we in het afgelopen semester gedaan,
maar historisch gezien het bool type C is niet een echte soort,
dus mensen gebruik hebben gemaakt van 0 en 1 in de plaats van waar en onwaar.
Dit is een manifestatie van dat.
>> Oke, dus het een belangrijk deel over dit alles
dat we deze verschillende types hebben.
Ze kunnen met elkaar.
Ze kunnen vaak met elkaar op een manier die zijn mooi, zoals we hier hebben gezien.
Het is leuk om te kunnen snaar 1 en de nummer 2 te hebben, ze bij elkaar optellen en 3 te krijgen.
Dat klinkt logisch.
Echter, wanneer je websites schrijven, en vooral als je de verwerking van
input van de gebruiker, dus dat je een webformulier schriftelijke
die verzamelt informatie van de gebruiker en gaat dan naar verwerken
op de back-end, op de server in uw PHP-code
als je verwacht dat de waarde die de gebruiker heeft ingevoerd in en ingediend
om uw formulier naar een geheel getal te zijn of om een ​​floating point getal of iets dergelijks zijn
je nodig hebt om expliciet wierp hem
en doe dan een soort controle.
>> U wilt niet alleen vertrouwen op dit soort jongleren systeem om dingen uit te werken,
vooral om redenen van veiligheid en alleen voor de robuustheid van uw website.
Gewoon iets om in gedachten te houden dat wanneer u de behandeling formuliergegevens,
alles wat komt in de post of de get superglobals
Zorg ervoor dat u altijd het valideren en te converteren en typeren het.
En net als we het over een moment geleden dat typecasting
in PHP is precies hetzelfde als in C waar de haakjes
en dan het type.
Hou dat in gedachten.
Een functie die van pas komen wanneer je dit doet
is dat we al gebruik van-en dit is een soort van als een terzijde-
We hebben gebruik gemaakt van deze gettype functie hier
om erachter te komen het type van een variabele,
en terwijl dit is handig voor het debuggen en te zien wat een variabele type is
u niet wilt dat deze, gebruik bijvoorbeeld in een toestand waarbij
je controleren of gettype van $ var = geheel getal iets doen.
Dit is slecht, slecht, slecht.
In plaats daarvan zijn er deze functies aangeroepen is integer, is string,
is array die u wilt gebruiken in plaats, dus in dit geval
wat ik zou willen doen in plaats van deze kerel hier
is gebruik maken van de is integer var.
En ze zijn vaak aangeduid is is_ * in de zin dat je de * te vervangen door geheel getal is,
string, et cetera, en gewoon om er zeker heel snel
Dit is int php.
Het lijkt erop dat je kunt doen is ofwel int of wordt er geheel getal ook?
Ja, alias, dus int geheel getal aliassen.
Cool.
>> Hoe doen we het?
Laten we halen het tempo een beetje.
Nu gaan we het hebben over arrays, zodat u kunt zien
in het volgende deel van het spec we praten over hoe arrays in PHP
zijn iets anders dan in C.
In werkelijkheid, ze zijn soort van een amalgaam van
de arrays die u hebt leren kennen en liefhebben in C
waar alles van hetzelfde type
achtereenvolgens aaneengesloten en in het geheugen,
en je hebt deze numerieke indices.
U heeft index 0, index 1, index 2,
en u de waarden opslaan op die indices.
U kunt ook in C, als je Speller schreef, veel van je
deed de hash-tabel benadering, en je zag dat daar hadden we
een ander soort opslag waar we in kaart brengen
een sleutel tot een waarde, dus als je geprobeerd om iets op te slaan in hash-tabel
je moest opgeven dat je wilde het op te slaan met een specifieke sleutel,
en toets bepaalt de plaats van de waarde en waar het opgeslagen.
Je hebt soort van kreeg zowel van die begrippen gebeurt op hetzelfde moment in een PHP array,
en als gevolg daarvan, hebben we vaak noemen deze associatieve arrays
waar we het associëren van een sleutel in een waarde.
In het volgende deel gaan we praten over een eenvoudige PHP array
waar we toetsen a, b en c,
alle snaren, het in kaart brengen van de gehele getallen 1, 2, en 3.
En kunt u sleutels van verschillende types.
>> U kunt een aantal toetsen die zijn snaren, een aantal toetsen die zijn gehele getallen.
Kunt u waarden van verschillende types.
U kunt een waarde die een string, een waarde die is een geheel getal,
een waarde die een object of een andere array, bijvoorbeeld
allemaal in dezelfde array object, dat is een beetje raar.
Je hoeft niet naar een array dat is gewoon een soort element kreeg in hebben.
U kunt veel verschillende dingen aan de hand daar.
Het andere ding om op te merken is dat wanneer je iets als dit in uw code,
die geldig te verklaren PHP een array zoals deze, 0, 1, 2, 3, 4, 5,
dat zal verklaren een geïnitialiseerd $ arr deze array.
Maar wat je eigenlijk krijgt onder de motorkap is dit soort van impliciete
generatie toetsen waar we heeft 0 tot 0, moet een 1, 2 op 2, 3 en 3.
En het blijkt dat zelfs als je een array als deze kerel hebben hier
waar je a, b en c als de toetsen
en dan begin je met behulp van de array push-methode om met behulp van deze array te starten als een stapel,
zodat u kunt zien dat deze array object, deze array is echt overbelast wordt.
We kunnen het gebruiken als een array. We kunnen het gebruiken als een hash-tabel.
We kunnen het gebruiken als een stapel.
Als je begint te duwen dingen op deze array
het eerste wat je te duwen op dit index 0 en vervolgens index 1 en index 2.
U kunt dit soort impliciete generatie van sleutels
tenzij u expliciet specificeren.
De manier waarop je expliciet toetsen, is natuurlijk door het gebruik van deze beugel notatie,
die vergelijkbaar is met arrays behalve in plaats van alleen toestaan
integer indices in hier, nu we ervoor dat er niets.
Als u wilt dat uw sleutel tot een string te zijn, zou je opgeven als dit.
Als je wilt dat het een int zijn, geeft u het met de int die u wilt gebruiken.
>> Vragen over dat tot nu toe?
Een van de leuke dingen over dit idee
is dat je alleen maar over een waarde die is opgeslagen met een bepaalde sleutel.
Als we terug gaan naar onze appliance-laat me verwijdert u een aantal van dit spul.
En laten we zeggen dat ik een array initialiseren op 0, 1, 2, gedaan.
Als ik weet nu dat, bijvoorbeeld, als ik echo $ arr [0]
Ik ga om de waarde 0 uitgeprint,
en aangezien er altijd maar een opgeslagen waarde voor een bepaalde toets
als ik bewaar er iets op $ arr [0], laten we zeggen een,
dan weet ik wanneer ik echo $ arr [0] te drukken
Ik ga niet in op 0 afgedrukt als voorheen te krijgen.
Ik ben alleen gaan om een ​​te krijgen.
Dus dit is eigenlijk te zeggen dat ik niet kan $ arr [0] het opslaan van 2 verschillende waarden hebben.
Het kan niet opslaan zowel 0 als de string een, zoals deze letterlijk vervangt
wat er op $ arr [0] eerder.
De reden dat ik breng dit naar voren wordt het uit te voeren, zien wat er gebeurt.
Zie hier dat ik kreeg 0 uitgeprint en dan een hier beneden.
Er is geen nieuwe regel er, want ik was lui en niet zet dat binnen
Wat heb je aan dit is dat we kunnen gebruiken als een manier om
om dit idee van een set vast te leggen
waar we niet kunnen meerdere sleutels in een array.
We kunnen geen identieke sleutels in een array.
Ik kan geen toets 0 en waarde 1 en toets 0 en de waarde van een
of de toets 0 en waarde true.
De toetsen zijn all-er is maar 1 sleutel in de array.
Ook al kunt u de opgeslagen dezelfde waarde
meerdere keren in de array onder verschillende sleutels
het is niet mogelijk om identieke sleutels meerdere keren in uw PHP array.
>> Als we kijken naar het volgende probleem, unique.php,
waar we willen openen van een PHP-bestand
met een lijst van strings, een snaar per regel,
en we willen allemaal van de unieke snaren te vinden in het bestand
alles wat we hoeven te doen is het gebruik van een van deze PHP arrays
en het gebruik van de snaren in het bestand als de sleutels om deze array
en zorgen voor een actualisering ons aanbod zoals we slaan deze nieuwe sleutels.
Zoals we lezen elke regel uit het bestand kunnen we opslaan in de array,
en aan het eind zullen hebben als sleutels in ons aanbod
alle unieke snaren in het bestand.
Is dat logisch?
Laten we eens kijken hoe dit werkt.
We gaan open te stellen, op basis van de specificaties, een nieuw bestand met de naam unique.php.
Open. Oeps, sorry, nieuw bestand.
We gaan het beginnen met dezelfde begin-en eind tags.
We gaan het op te slaan in artikel 9, en we gaan om te spreken van unique.php.
Oke, nu zoomen
Het idee hier is het openen van een bestand,
lezen in bestand regel voor regel.
Voor elke regel in het bestand
we hebben een scala waar we
de lijn als onze belangrijkste.
En toen we aan het einde hier
$ Arr de sleutels zijn de unieke regels
uit het bestand, omdat we weten dat als ik lijn in deze array
meerdere keren het zal gewoon blijven het overschrijven van de oude waarde,
en we kunnen scala lijn daadwerkelijk ingevoerd als zich net zo.
>> Dit is een beetje raar.
We slaan onder dezelfde toets bevindt waarde paar over en over en weer,
maar omdat we hebben de garantie dat er maar 1 sleutel genaamd lijn
dus als we een bestand dat zegt-een bestand van dierengeluiden en het heeft woof, woof,
miauw, miauw, boe, boe, en elke keer dat we lezen een dier lawaai
zoals inslag en we opslaan in ons aanbod krijgen we inslag, en vervolgens de tweede keer
slaan we inslag zal het de eerste keer dat we het opgeslagen te overschrijven.
Uiteindelijk zullen we slechts een vermelding in de array
voor elk van de dierengeluiden in onze dierengeluiden file.
Hebben jullie er zeker van dat u de opening van een dossier in PHP aan te pakken?
Een manier om het te doen, laten we gaan over deze snel een manier om het te doen
is met fopen, zoals we eerder zagen.
U kunt fopen some_file.txt.
U kunt het openen in de leesmodus, net als in C.
Dat is een heel goede manier om het te doen.
Ook dan voor het lezen in het bestand regel voor regel
hebben dezelfde functie, velen van hen, die u deed in C.
Je hebt fgets.
Je hebt feof, hoewel we niet graag met behulp van dat
want, vergeet niet, dat was niet groot in C.
Je kunt het op dezelfde manier,
maar hier is echt een cool ding.
Sorry, ik wil niet te $ do-bestand, maar er is een functie genaamd bestand in PHP,
en deze functie hier is cool want het leest de volledige inhoud
van het bestand dat u opgeeft, zo some_file.txt,
leest de volledige inhoud van dit bestand in een array
en dan laat je itereren over het, dat is vrij handig.
>> Als we bijvoorbeeld naar onze web browser
en we kijken naar Google voor PHP-bestand
kun je hier zien dat onze handleiding zegt dat bestand leest hele bestand in een array,
en we kunnen file_get_contents de inhoud van een bestand terug als string,
maar meestal net als een array is echt mooi, want wat het doet
wordt het breekt het op, zodat elk element
in de array een regel van het bestand,
dus als we kijken naar bestand 0, dat is de eerste regel van het bestand.
Bestand 1, tweede regel, bestand 2, derde lijn, enzovoort, enzovoort.
Zou het niet mooi zijn als dat was alles wat je moest doen in C?
Mooie handige.
David liet dit in lezing, en het idioom dat hij liet zien was
dat in aanvulling op onze standaard voor loop-in PHP hadden we dat
for ($ i = 0; i <10; i + +),
en je kunt ook dit doen in PHP, hetzelfde:
we hebben ook deze coole constructie genaamd foreach.
Foreach is echt handig als itereren over arrays of deze datastructuren
omdat het u toestaat te trekken uit elk element van de array
zonder dat u handmatig doen het indexeren zelf,
zonder dat u handmatig een index variabele, verhoog dit met
trek de waarde in de array op dat moment, want dat is een veel voorkomend ding om te doen.
>> Je hebt waarschijnlijk gedaan hebben ton van momenten waarop je C stuff doen
over het semester, dus met deze foreach
kunnen we lus over dit bestand array,
en de syntaxis is dat we willen nu lus over deze array
en aangeven dat de variabele die we gaan gebruiken om op te slaan
het element van de matrix lokaal plaatselijke het toepassingsgebied van deze foreach lus,
is gaan we noemen lijn.
Als het een bestand van alleen maar woorden en er is een woord in een lijn
konden we noemen het woord ook, eigenlijk gewoon geef je deze een naam,
wat je ook wilt noemen,
en dan in de lus kun je wat je wilt doen met deze variabele lijn.
Als het niet genoeg is om de waarde van de array te krijgen en u ook wilt krijgen
de index, samen met deze functie kunt u een naam voor de index
alsmede de waarde, en nu heb je toegang tot 2 variabelen.
Je hebt $ i en lijn
waarbij $ i de index in de array,
en lijn is de lijn die u opgehaald uit het bestand.
Bijvoorbeeld, als we wilden om uit te printen echo regel 0 van het bestand als dit,
we kunnen het doen net als dit, "regel $ i van het bestand is $ lijn,"
en hier is iets wat we ook nog niet gezien, hetzij
waar ik heb gewoon helemaal overgeslagen% dit hele% s d bedrijf
dat we te maken gehad met in C, en in plaats daarvan heb ik meteen gegaan naar
het schrijven van de variabelen in de lijn in mijn string.
>> Dit is de zogenaamde variabele interpolatie, string interpolatie
waar je vulling van de variabelen rechts in, en de PHP interpreter
is slim genoeg als het lezen door middel van een string die begint met dubbele aanhalingstekens-
niet enkele aanhalingstekens, met enkele aanhalingstekens kunt u dit niet doen-
maar met dubbele aanhalingstekens als het leest doorheen zoekt variabelen.
Het jacht op ze, en als zij dat variabelen zal de waarde van de variabele nemen
en spullen in de string als het kan omzetten in een string representatie,
dat is vrij handig.
Voor nu, laten we commentaar uit de rest van alles,
sla dit, en wat we nu kunnen doen is dat we kunnen openen van een bestand
dat we kunnen bellen some_file.txt-laten we een nieuw file-
en we kunnen in een hoop onzin dingen hier alleen maar om alles uit te testen,
opslaan, noem het some_file.txt, zoals ik aan het doen ben hier tot aan de top,
en nu als ik gewoon uit te zoomen om ervoor te zorgen alles is in dezelfde directory-
het lijkt erop dat ik heb unique.php en some_file.txt in dezelfde directory.
Als ik zonder php unique.php
zien hoe het drukt elke regel in mijn dossier en wat de lijn is?
>> Dat is vrij krachtig, toch?
Kijk, het duurde 3 regels code om het openen van een bestand.
Nou, 4 regels code. Ik kan niet tellen vandaag de dag, duidelijk.
Maar echt alleen maar 2 interessante lijnen van de code, omdat de andere 2 waren de accolades,
maar in dit veel code waren we in staat om een ​​bestand te openen, door middel van het herhalen,
trek het lijnnummer en de lijn zelf
en print het uit.
Cool stuff. Charlotte.
[Charlotte] Ik heb een vraag over de syntaxis.
Dus foreach deals met elke regel van het bestand dat u opent,
en dan als je wilt om dingen te doen met elke lijn die je gewoon doen als
en vervolgens koppelen de waarde.
[Nate H.] Wat u kunt goed doen hier-de vraag was
de foreach heeft te maken met het array, waardoor de foreach syntax
is echt foreach, en merk op dat er geen ruimte
of iets tussen de voor-en de elk.
Ze moeten rechtsaf naast elkaar,
en dan duurt in een array,
en dan heb je die andere zoekwoord genoemd als dat moet er zijn,
en dan na het als je kunt zetten een variabele naam,
in welk geval je gaat worden het uittrekken van de waarden van de array,
niet de indices, of als je het zoals we hebben geschreven hieronder
krijg je de sleutels en de waarden.
Je hebt foreach element van de array of het paar van de array als verwijzen naar waarde
of gewoon waarde.
Afhankelijk van wat je nodig hebt, als je het niet nodig hebt de sleutels,
dan kan je met de waarde.
Als u wilt dat de toetsen die u kunt ook gaan met hen.
>> [Charlotte] Ik realiseerde me ook dat we nooit de i of lijn verklaard.
Hoe werkt het eens weet wat ze zijn?
[Nate H.] Wat bedoel je met te verklaren?
[Charlotte] We hebben nooit verteld wat ik of lijn middelen.
[Nate H.] We hebben nooit verteld de computer wat ik of lijn betekent in termen van-
[Charlotte] Dat ze geïndexeerd of dat Ze zijn-
[Nate H.] Wij hebben nooit verteld dat het dat dit wordt verondersteld om de index of de sleutel en de waarde,
en dat is, want dat is de PHP-interpreter.
Dit dient als de verklaring en zegt oke, is de sleutel zal zijn
een variabele genaamd i opgeslagen in een variabele genaamd i.
De waarde zal worden opgeslagen in een variabele genaamd lijn
dus dit dient als verklaring van deze variabelen
en zegt $ i is een sleutel, en $ lijn is een waarde.
Ja, Ella.
[Ella] Als de toetsen niet numeriek gedaan
hoe werkt het beslissen welke volgorde het gaat om alles af te drukken?
Is het net als de bestelling het is ingeschreven in?
[Nate H.] Laten we het eens proberen.
Laten we een variabele genaamd arr,
en wat we kunnen doen een gaat naar 7.
Stel 0 naar een andere array met 1, 2 of appel.
Stel 7 gaat naar 1, b gaat naar 2,
en 3 gaat naar 4.
Dit is een soort van een gek op zoek voorbeeld omdat we het mengen van
strings en integers all over the place.
Er is geen echte Om deze array.
Ik bedoel, we kunnen alles bestellen in alfabetische volgorde op de toetsen.
We konden alfabetisch alles bestellen door de waarde.
>> We kunnen proberen en rekening mee houden dat sommige strings, sommige zijn ints,
en we konden proberen om te zetten ze allemaal naar hetzelfde type en zien wat er gebeurt,
of we kunnen overwegen ze in de waarde waarin wij reeds ingevoerde hen
waar we deze man zet in de eerste, deze man in de tweede, deze man in de derde,
deze man in de vierde, et cetera.
Laten we eens kijken wat er gebeurt als we deze code uitvoert.
Als we naar beneden scrollen en doen hetzelfde soort dingen,
en hier is het niet afdrukken van de nieuwe lijnen.
Wanneer dingen uitgelezen uit het bestand werd inclusief de nieuwe lijnen in de waarden,
die werd waarom het uitgeprint mooi, terwijl het hier niet,
dus dat is waarom alles samen is smushed.
Laten we toevoegen in die nieuwe lijn gewoon om er leuke dingen.
Laten we het opnieuw uit te voeren, en dus even
kijken naar wat er gebeurde.
Het gedrukte alles uit in de volgorde waarin we het plaatsen in de array.
Het doet behouden om in die zin.
>> Terug te gaan naar het probleem van de uniques
waar we willen in staat zijn om itereren over een bestand,
en we geven het some_file.txt,
en we gaan over het herhalen als dit.
We zeiden dat we wilden om een ​​array te gebruiken om ervoor te zorgen dat we allemaal van de gekregen
unieke lijnen er uit, en we konden die echt gemakkelijk doen
door gewoon te slaan in een matrix die we natuurlijk verklaren buiten het bestek van een lus,
en we zeiden dat als we de regels in het bestand gebruikt als de toetsen in ons aanbod
Als we in een dubbele lijn zouden we het overschrijven van de vorige waarde.
Het is niet altijd mogelijk om 2 toetsen die identiek zijn in dezelfde array.
We kunnen dat te doen.
We zullen zich te ontdoen van deze echo statement hier.
Hier zijn we het opslaan van de regel in het bestand in ons aanbod
met zich als sleutel.
Niets om het, en het blijkt dat we niet eens nodig deze sleutel.
We hebben geen behoefte dat ik variabele.
Op dit punt als we naar een ander foreach lus te doen
en we moesten lus over elk arr
en lijn nu als we-oops echo, sorry.
We kunnen geen gebruik maken van de komma. We hebben om dit te gebruiken als zoekwoord.
Als we nu echo lijn die we moeten krijgen alle unieke woorden in het bestand.
Als wij gaan op naar some_file.txt,
en laten we zeggen dat we doen appel, banaan, appel, appel, banaan,
als we het afdrukken van alle unieke woorden in dit bestand moeten we alleen maar
appel en banaan af te drukken.
Als we sla dit, nu we hier weer terug in te zoomen,
php unique.php, en ta-da.
We hebben met succes uniqued het bestand.
>> Het laatste deel van dit probleem is de vraag of u deze array te sorteren voordat u uitgeprint
want in dit eenvoudige voorbeeld dat we net gedaan
we hadden het geluk in de zin dat de file-
we deden dit gekunstelde voorbeeld met appels en bananen.
Het was al gesorteerd.
Maar het gebruik van de eenvoudige soort functie u kunt sorteren een array, dat is vrij handig.
Het laatste wat ik wilde met jullie praten over echt snel
is dat dit soort PHP is allemaal goed en wel, en het is super handig
om te weten hoe dat te doen als je ooit nodig hebt om programmatisch weinig doen, snelle dingen.
Bijvoorbeeld, als ik een programma dat, laten we zeggen schrijven,
zet alles en iedereen in secties Ik ben niet van plan om te gaan en te schrijven in C.
Het zal lang duren.
Het gaat om een ​​soort van pijn, vooral als er betrokken zijn bij bestanden,
net zoals jullie gezien hebben.
Het is zo leuk dat met slechts dit veel code hier
waren we in staat om te rippen door middel van een bestand, trek alles uit de unieke waarden
en print ze weer naar buiten.
>> Echter, voor uw opdrachten, voor uw projecten,
als je het bouwen van websites met PHP de macht is dat
we lopen onze PHP-bestanden via deze tolk,
en de tolk is de verwerking van alles wat binnen de PHP-tags,
waardoor al het andere onaangeroerd en uitspugen van de resultaten.
We kunnen dit doen om programmatisch te bouwen HTML.
Nu, als we terug gaan naar de spec, de laatste probleem in de spec
praat over dit idee van concentraties
en het creëren van een drop-down menu,
die u wel of niet te doen, willen afhankelijk van wat je uiteindelijke project aan het doen is,
waarmee de gebruiker kiezen uit een lijst van alle mogelijke concentraties
hun een concentratie.
Nu, dit is een soort van een pijn om dit uit te typen
en moet dit handmatig doen dit alles, vooral als je met om ervoor te zorgen
dat je alle hoekbeugels op de juiste plaats en alle citaten op de juiste plaats,
dus met PHP kunt u programmatisch doen, en je kunt dit doen heel snel.
>> Laten we eens kijken hoe dit te doen.
We gaan het openen van een nieuw bestand.
We gaan in onze PHP-tags.
We gaan noemen concentrations.php,
en nu wanneer je dit doet, om een ​​soort van een goede zaak na te denken over
als je probeert te mixen en matchen uw PHP en HTML
is het uitzoeken, oke, wat is het deel dat ik wil programmatisch te genereren?
Wat is het deel dat ik programmatisch kan genereren?
Het is waar dat je kunt doen al uw HTML-
binnenkant van PHP blokken.
U kunt echo alle HTML-als strings.
Bijvoorbeeld, als ik wil om te beginnen met het doen van de select-tags binnenkant van PHP
Ik kan echo zeggen hebt, zeg selecteer naam = concentratie,
en dan beneden kon ik nog een echo tag
of een andere echo genoemd sluit de kiezen.
Dit is een manier om het te doen, want wat dit is letterlijk gaat doen
wordt afgedrukt deze string als het lopen door de PHP-interpreter,
zo zal het resultaat HTML.
Als ik sla dit bestand op als het goed is nu
en ik run php concentrations.php
kijken naar wat ik heb.
Ik heb deze open dicht select tag.
>> Als ik om dit te doen en ik waren om dit resultaat te slaan in een bestand,
zeggen, concentrations.html-wachten, het lijkt erop dat de l is overgeschakeld op de andere zij-
Nu, als ik open hier concentrations.html zie je ik heb een geldige HTML-bestand.
Is dat een beetje raar?
We gebruiken PHP naar HTML te creëren, geldige HTML te creëren.
De manier waarop we het doen is dat we gewoon de PHP afdrukken met
de HTML die we willen om te printen.
Dit is letterlijk hoe PHP websites werken.
Wanneer u een website bezoekt die u stuurt naar iets als
iets, iets, iets dot com slash index.php
de computer is letterlijk het oproepen van index.php,
het runnen van het door de PHP-interpreter, en wat rommel komt uit
het is terug sturen naar de browser en zeggen hey, browser, interpreteren dit als HTML.
Het leuke is dat het kan een pijn zijn om constant schrijven echo, echo, echo, echo
en omsluiten alles in citaten als deze, dus als je wilt schrijven
de HTML die gaat worden statische jezelf dat je het kunt als dit,
buiten het stelde, sluit,
en dan hier je alleen zet in de PHP-tags die waarvan je weet
u wilt programmatisch te genereren, en in dit geval is het de optie-tags
die lastig te genereren.
>> Zo kunnen we genereren duizend optie labels
door iets te doen als dit, $ i <1000, i + +
en zeggen echo optie value = $-whoops, dat kan ik niet doen.
Nou, laten we het eens proberen en zien wat er gebeurt.
$ I en dan zeggen $ i </ option.
In plaats van te typen die optie tag duizend verschillende tijden
Ik ben met behulp van PHP-code voor het automatisch genereren het, programmatisch.
Soort handige. Ja.
Ik herinner me dat dit wordt vermeld in zowel het college of de walkthrough,
maar wat is het verschil tussen de aanhalingstekens,
de normale cellen en deze enkele dingen?
Dat is eigenlijk iets dat ik heb verkeerd hier gedaan dat ik ga laten zien.
De enkele aanhalingstekens staan ​​geen speciale tekens,
dus alles binnen een enkele tekenreeks tussen aanhalingstekens wordt letterlijk geïnterpreteerd.
Als ik een \ n binnenkant van enkele aanhalingstekens en ik spaar deze, bijvoorbeeld,
en nu ik hier naar beneden en voer het uit-
oops, waar ga ik heen?
Oh, het is omdat ik vergat de $.
>> Nu als ik open-eigenlijk, hier zullen we te ontdoen van de typen in een bestand.
We zullen gewoon lezen.
Hier zie je dat ik deze letterlijke \ n kreeg in de string, als geen echte nieuwe lijn,
en ook, in plaats van daadwerkelijk interpoleren van de waarde van deze variabele
het gaf me de $ i zelf, dat is een soort van een pijn.
De manier om dit is het gebruik van de dubbele aanhalingstekens,
en dan bij het gebruik van dubbele aanhalingstekens zal het eigenlijk
goed interpoleren de waarden van al deze variabelen in here
en erkennen ook deze \ n aan de nieuwe lijn die het moet
en niet \ n.
Met behulp van de single die is leuk als je
tekens die kunnen worden geïnterpreteerd als speciale tekens, want dan hoef je je geen zorgen te
voortdurend ontsnappen.
Dingen kunnen krijgen rommelig, en vaak de manier waarop ik het doe,
gewoon dingen makkelijk te maken, is dat als ik ga om iets te hebben
HTML als in mijn code zal ik bewerken zijn binnen enkele aanhalingstekens
en vervolgens deze samenvoegingsoperator
de variabelen samen te voegen binnen
Dit is een andere manier van doen
waar we de stip die gaat aansluiten heb dit is een string
deze met deze hiermee
en nu heb ik geen van deze dubbele aanhalingstekens te ontsnappen.
Ik heb geen om deze man te gebruiken om te ontsnappen.
Ze zullen letterlijk worden afgedrukt als dubbele aanhalingstekens en dan deze man hier.
Dit is een andere manier van het mengen alles samen.
>> [Student] Ook als u gettype weerklonk er geen aanhalingstekens at all.
Juist, dus echo is een beetje speciaal in de zin dat je niet tussen haakjes nodig.
U hoeft niet om de aanhalingstekens noodzakelijk om variabelen,
alsof het geldig om te zeggen $ i echo, en het zal dit interpreteren als een string.
Het gaat om de cast te doen, dus we konden doen, en dat geldig is ook, maar we hebben het niet nodig.
Het is optioneel.
In probleem van deze week set uit te kijken naar veel van dit soort dingen
waar je mixen en matchen HTML met PHP
net als dit, en nu als we terugbladeren en we run this
kunnen we zien dat we een hele hoop van optie waarden
die net werd afgedrukt.
We hebben allemaal deze HTML dat werd heel snel gegenereerd voor ons.
Ik laat het als een oefening.
Het is zeer vergelijkbaar met het bestand lezen dat we eerder deden.
>> Er is een concentrations.txt bestand dat u kunt naar beneden te trekken van de CDN,
en kunt u het openen met behulp van dezelfde foreach truc die we eerder deden,
en foreach je hoeft alleen een optie en sluit echo
de juiste waarden, de betreffende toetsen en indices,
en dan krijg je een drop-down die letterlijk creëert
programmatisch voor jullie allemaal van de verschillende concentraties aan Harvard.
Een handige ding om te hebben.
Er is veel van de configuratie spullen voor deze opdracht.
Als u nog niet gedaan al neem de volgende half uur, uur,
enige tijd vanavond zeker zeker,
wandeling door het probleem set spec,
zien wat er aan de hand met het opzetten van de vhosts, de lokale host, al dat spul.
Een ding om erop te wijzen op dit moment is dat
in de meeste problemen sets we al in te gaan op je Dropbox map
en dan het downloaden van het probleem set zip-bestand en uitpakken het.
Voor dit probleem set die u niet wilt.
U wilt gaan in dit vhosts directory.
U wilt gaan in vhosts en in de lokale host directory te gaan binnen het,
en dit is waar je wilt pull-down het zip-bestand,
unzip het, en maak je klaar om te gaan.
Je moet op de voet volgen van de stappen.
>> Als u vragen heeft, stuur e-mail, post het op Bespreek, kom dan naar de kantooruren.
Thanks guys. Volgende week gaan we een review-sessie hebben voor de quiz.
Geniet van uw laatste probleem set. Ik hoop dat het allemaal gaat heel goed.
[CS50.TV]