[Powered by Google Translate] [§ 8] [weniger komfortabel]
[Nate Hardison] [Harvard University]
[Dies ist CS50.] [CS50.TV]
>> Herzlich Willkommen auf unserer vorletzten Abschnitt.
In dieser Woche werden wir über PHP sprechen, und dann nächste Woche
wir ein wenig Rezension für Quiz 1.
Wir werden auf Seite 3 des Problems beginnen setzt pack,
und wir werden durch den Abschnitt von Fragen ziemlich schnell arbeiten.
Auf Seite 3, beginnen wir über diesen Unterschied zwischen C und PHP sprechen
in dem Sinne, dass PHP eine dynamisch typisierte Sprache ist,
während C ist statisch typisiert,
und hat jemand wirklich schnell keine Codierung in so etwas wie PHP getan
oder Python oder Ruby vor, JavaScript?
Völlig neu? Okay.
>> Alle diese Sprachen, die ich gerade erwähnt
sind sehr verschieden von Sprachen wie C und C + + und Java
in dem Sinne, dass, wenn Sie eine Variable deklarieren müssen Sie nicht zu erklären
welche Art von Variablen ist es, so in C waren wir stecken mit immer sagen
dies wird eine int-Variable, oder das wird ein char * Variable sein,
während mit PHP, mit Python, mit Ruby,
mit einer Menge von diesen modernen Sprachen, die Sie nicht haben, um das überhaupt zu tun.
Sie müssen nur erklären Sie variabel, und im Fall von PHP
erklären Sie, dass es sich um eine Variable ist durch Voranstellen mit einem $-Zeichen,
und dann der Typ der Variable mit welchen Wert es hält bestimmt,
das ist irgendwie cool.
Zu spielen, um mit diesem ein wenig, haben wir Probe PHP-Code hier
zwischen den Start-und End-Tags.
Wir verwenden diese Art von wie HTML in dem Sinne, dass
wir haben diese spitzen Klammern hier, um zu öffnen und zu schließen.
Du wirst dies mit HTML zu sehen.
Du wirst die gleiche Art von Syntax mit XML zu sehen.
>> Dies kennzeichnet den Beginn eines PHP-Blocks.
This? Php ist spezifisch für PHP.
Wir schließen alles mit einem> als gut.
Wir öffnen eine Datei in unserem Gerät mit was auch immer Sie möchten.
In diesem Paket es sagt dynamic.php nennen.
In Wahrheit kann man es nennen, was Sie möchten, aber der Name der Datei wird kommen
und später wichtig, so denken Sie daran, was Sie es nennen.
Ich werde zum Umstieg auf das Gerät,
und ich werde ein Verzeichnis für Make
§ 9 Ich glaube, wir sind am jetzt.
Und wir werden in § 9 gehen,
und ich werde gedit verwenden.
Mal sehen, gedit, und ich werde mir dynamic.php nennen.
Boom.
Innerhalb dynamic.php, denn dies ist eine PHP-Datei
und ich möchte dies durch die PHP-Interpreter ausgeführt
Ich muss alles beginnen mit diesen offenen Tags,
so werde ich diese richtig loslegen,
gebe mich ein wenig Platz zwischen den Tags
und dann der Sinn dieser Übung war zu spielen, um mit
diese Funktion aufgerufen gettype, so gettype, diese Funktion hier.
>> Beachten Sie, dass es keinen Unterstrich oder Leerzeichen oder Bindestriche oder ähnliches
Trennung von den 2 Worten, erhalten und geben, nur ein Wort überhaupt.
Aber was wird dies tun, ist, wenn ich in einer Variablen gettype passieren,
sagen, $ var oder $ x,
dies wird mir sagen, irgendwie in einer Debug-Format
was der Name dieser Art ist.
Wir gehen hier experimentieren.
Insbesondere, wenn Sie einen Rückblick auf die pset spec
wir haben ein paar verschiedene Zeilen Code hier.
In der ersten Zeile des Codes initialisieren wir diese Variable $ var,
um gleich 7, und dann haben wir diese printf Linie
das sagt hey, das ist printf var leer.
Printf ist eine der vielen Möglichkeiten, wie wir die Dinge in PHP ausdrucken können.
Oft sehen Sie die Echo-Funktion anstelle von printf,
aber printf wir alle kennen nachdem in C Codierung für eine Weile.
Was Sie konkret tun können ist mal sehen, ob Kopieren und Einfügen funktioniert.
Ich werde geben diesem einen Versuch.
Wir gehen zurück auf das Gerät.
Okay, und es geht los.
Und der Abstand ist ein wenig funky, aber hier gehen wir.
Wir haben diesen Code hier.
>> [Student] Ist es nicht gut Stil Registerkarte es?
Sorry?
[Student] Ist es üblich, Registerkarte es?
Richtig, so Sam fragt, ob es Konvention Registerkarte es ist oder nicht.
Normalerweise ja.
In diesem Fall habe ich entschieden, nicht.
Ehrlich gesagt, wirst du verschiedene Dinge unter verschiedenen Programmierern zu sehen.
PHP ist in der Regel oft in Kombination mit HTML verwendet
und andere Sprachen, und so manchmal der Druck aussehen wird ein wenig funky
wenn Sie Gedankenstrich innerhalb von PHP Start-und End-Tags.
Es hängt wirklich davon.
In diesem Fall wird die Copy & Paste nicht die Registerkarten für mich fügen,
aber es ist definitiv nicht, wie du gesagt hast, machen es klarer.
Alle Rechte, wenn Sie speichern Sie diesen Code in dynamic.php
dann, was Sie tun können, ist überliefert Ihrem Terminal-Fenster, wo ich hin bin hier
in gedit, und zu tun das Äquivalent von compile
mit zu machen und dann Ihren Code in C
Sie müssen nur mit der PHP-Datei zu tun ist, Sie starten den PHP-Interpreter,
das ist ein kleines Programm namens PHP,
und das Argument geben Sie den Interpreter ist die Datei, die Sie interpretieren.
In diesem Fall dynamic.php.
Whoops, wo habe ich es sagen?
Oh, habe ich sie in Abschnitt 9, und hier bin ich. Das ist, warum.
>> Nun, wenn ich erneut ausführen,
sehen wir, dass in meinem ersten gettype Aufruf der Funktion
var ist ein Integer.
In den nächsten ein var ist eine Zeichenfolge, und dann in der dritten ein var ist ein boolean.
Was ist interessant daran ist, wenn wir wieder nach oben sehen wir, dass
diese sind Typen ähnlich denen, die in C hatten
Wir hatten ints in C.
Wir Art hatten Streicher in C,
so Saiten nicht eine völlig legitime Art in dem Sinne, dass
unserer CS50 String war wirklich was?
Sorry? Missy?
[Missy] Char *.
Ja, es war dies char * haben wir genutzt.
Am Anfang des Semesters waren wir mit den String-Typ,
aber es war wirklich ein char * unter der Haube.
Wir haben gerade sie definiert Typ, während in PHP diese Saiten eine tatsächliche Typ sind.
Es ist nicht mehr dieser char * type stuff.
>> Du wirst sehen, dass wir viel mehr Dinge mit Strings zu tun
viel leichter in PHP als könnten wir in C,
und schließlich haben wir diese boolean Typ und der große Unterschied hier ist, dass
wenn wir wieder nach unten scrollen sehen wir, dass der Name dieser Typen
sind nun integer, string und boolean anstelle von int und bool
und als Sie abholen verschiedenen Programmiersprachen
davon aus, dass an einem gewissen Punkt in Ihrem Leben werden Sie in Kontakt kommen
verschiedene, werden Sie feststellen, kleine Macken wie diese
wobei C Zahlen ints nennt.
Manche nennen es Zahlen.
Es gibt auch andere Begriffe, die Sie stoßen werde.
Big int sahen wir heute in SQL.
Es gibt auch die Nummer und dann bool, boolean,
alle Arten von Unterschieden gibt.
>> Dies ist nicht sonderlich interessant, aber jetzt werde ich Ihnen ein wenig Zeit-
wenn wir heranzoomen out-durch diese Übung an der Unterseite von Seite 3 zu arbeiten
, wo er fragt, welche Arten auf diese Werte entsprechen hier an der Unterseite.
Wir haben 3,50.
Wir haben dieses Ding hier, das ist interessant.
Wir haben nicht gesehen, aber wenn Sie verfolgt haben zusammen in der Vorlesung
Sie wahrscheinlich bereits wissen, was das ist.
Dann haben wir diese, die diese Art von funky ist.
Sie erkennen dies.
Was ist das in C?
Sam? Was würde das Ihnen in C?
Es wäre zu öffnen eine Datei namens dynamic.php und machen es lesbar.
Ja, und was wäre der Typ der Variablen, dass wir dies? >> Datei Sterne vergeben werden.
Genau, würden wir dies in einer Datei Sterne vergeben.
Das ist legitim PHP zu.
Führen Sie, dass. Sehen Sie, was passiert, wenn Sie, dass in gettype passieren.
Und dann auch prüfen, was null ist, was das sein könnte in PHP sein.
Ich gebe Ihnen ein paar Minuten.
Sie können buchstäblich kopieren und fügen Sie diese Werte in,
und dann werden wir ein wenig zufälligen Anruf auf Sie
und sehen, was du drauf hast.
>> [Student] Ich habe eine Frage. << Yeah.
In einem der Vorträge David sagte, es ist etwas, das Sie am Anfang der Datei stellen können
so dass Sie sich nicht in PHP geben jeder Zeit.
Was war das?
Er war wahrscheinlich reden über die Pfund-bang, die Hash-bang.
Es ist eine Richtlinie, wenn Sie markieren Sie Ihre Datei als ausführbare
dann, was es tut, ist, wenn Sie die Datei ausführen
es wird Ihnen sagen das Shell-Programm
um den PHP-Interpreter zu verwenden, um den Inhalt der Datei zu interpretieren.
Die Frage ist, was diese besondere Linie
dass wir an der Spitze unserer PHP-Dateien enthalten, nicht zu zählen
Diese PHP Linie oder diese PHP-Befehl, wenn wir die Datei ausführen möchten?
Und man kann tatsächlich tun dies mit einer Reihe von verschiedenen Dateien.
Ich glaube, es hängt davon ab, wo das PHP-Binary gespeichert ist,
aber oft usr / bin / php ist ein guter Ort, um zu beginnen.
Sie können diese Zahl genau, indem Sie wieder auf Ihr Gerät
und geben Sie an, welche PHP.
Der Befehl which herausfindet, wenn Sie die Ausführung binärer sind
oder ein Befehl, wo die entsprechende Datei ist.
Das sagt mir, dass das PHP wirklich Aliasing ist diese Binärdatei
Das ist in usr / bin, was, wo ein Großteil der System-Binärdateien installiert werden, ist gespeichert.
Zum Beispiel, wenn ich scrollen nach oben, jetzt, da ich diese put #! Linie hier
Ich kann nach unten scrollen, und ich kann versuchen zu laufen
dynamic.php, aber ich bekomme diese Fehlermeldung über Berechtigung verweigert,
und was das bedeutet, ist, dass diese Datei ist derzeit nicht geben ausführbare Berechtigungen.
Es ist nicht als Datei, dass jemand angezeichnet.
>> Wenn Sie rannte zu machen oder Clang und Sie haben eine ausführbare daraus
Der Compiler war klug genug zu wissen, dass hey, ich baue eine ausführbare.
Sie wollen wahrscheinlich, um ihn auszuführen, so wäre es automatisch zu konfigurieren
die Berechtigungen für Sie.
Dies ist nicht der Fall, obwohl, wenn Sie eine normale Datei von Grund auf neu erstellen,
Der Grund dafür ist in der Regel Sie nicht wollen, um jede Datei auf Ihrem System haben ausführbar sein,
so haben Sie eigentlich zu gehen und manuell tun.
Der einfachste Weg, es zu tun mit dem Befehl chmod,
und chmod + x sagt fügen Sie die ausführbare Bit
weil es die Lese-bit, die Schreib-Bit-und die ausführbare Bit,
r, w und x,
und sagen chmod + x wird anhand des ausführbaren schalten
denn dann die Datei, die wir angeben, was in diesem Fall wird dynamic.php.
>> [Student] Ist das eingeschaltet für alle?
Lasst check this out, so wie würde ich überprüfen, um die Berechtigungen zu sehen?
Weißt du, wie ich überprüfen, um die Zugriffsrechte einer Datei zu sehen?
[Unverständlich Studenten Antwort]
Sorry? >> [Student] XSD.
XSD gibt uns die Datei in Hacks.
Auflistung aller Dateien,-l, zeigst mir alle Dateien in meinem Verzeichnis
Art in ihren langen, ausführlichen Auflistung, und so sehen wir, dass
Diese dynamic.php Datei
wurde im November letzten Jahres den 5. Platz bei 4.21 geändert.
Der Besitzer dieser Datei wird jharvard.
Das ist der Benutzer, der angemeldet ist
Das ist der Benutzer arbeite ich als ich,
und wenn man auch in dem Gerät sind Sie arbeiten auch als Benutzer jharvard.
Du bist in der Studenten-Gruppe,
und das sind Dinge, die Sie oft genug sehen werden.
>> Wir können in einer Menge von Detail gehen,
aber zum größten Teil, was Sie wollen, zu betrachten, wenn Sie schauen, um zu sehen sind
ob eine Datei ausführbar ist vor allem
der Benutzer, der die Datei besitzt, der Besitzer,
so dass diese jharvard, und dann haben wir
die Berechtigungen Bits über hier auf der linken Seite,
und die Art und Weise, dies zu lesen ist, dass das letzte Bit
typischerweise wird zum Markieren ob wenigstens in diesem Fall verwendete
diese letzte Bit wird oft ad gesetzt werden, um anzuzeigen,
dass die Datei ein Verzeichnis ist und nicht nur eine normale Datei.
Dann sind die folgenden 3 Bits hier
bestimmen die Berechtigungen, die der Besitzer der Datei hat,
so in diesem Fall jharvard als Eigentümer der Datei lesen und schreiben kann diese Datei
aber es gibt ein Strich sagen, dass jharvard nicht ausführen kann diese Datei.
Die nächsten 3 Bits sind für die Gruppe, so ist dies die Schüler-Gruppe,
so gäbe es mehrere Benutzer auf meinem Gerät,
und wir hatten mehrere Benutzer als Teil der Studenten-Gruppe,
dann können sie all diese Datei lesen, aber sie können es nicht geschrieben,
und ebenso alle anderen, die Welt
können nur gelesen diese Datei als gut.
Es gibt eine gute, lange writeup darüber,
so können Sie online lesen.
In das Problem Satz spec wir in diese gehen im Detail.
>> [Student] Ist das 218 Bezugnahme auf die Welt?
Die 218 ist-off der Spitze von meinem Kopf Ich vergesse,
aber keine.
Mal sehen. Ich bin auf dieses Recht Blanking jetzt.
Zurück zu dem, was wir waren zu dieser chmod + x zu tun
wo wir dynamic.php ausführbare Berechtigungen geben wollte,
und die Frage war, ob dies ausführbare Berechtigungen für alle geben,
oder einfach nur jharvard, und wir können dies durch sehen
Ausführung der Befehle und geben ls-l,
und jetzt sehen wir, dass es als ausführbare markiert.
Sie sehen, dass es einen Farbwechsel.
Jetzt dynamic.php wird grün aufgeführt,
und es sieht aus wie die Antwort auf die Frage ist, was, Charlotte?
[Charlotte] Nur jharvard. >> Nur jharvard, yeah.
>> Wenn wir wollten, um die ausführbare Bit für alle machen
wie können wir das tun?
Irgendwelche Gedanken? >> A + x?
Ja, genau.
Charlotte sagte, wir können chmod a + x der dynamic.php tun,
und jetzt, wenn wir ls-l laufen wir sehen, dass die ausführbaren Bits
tatsächlich auf für jedermann geworden.
Und man kann tatsächlich tun das Gegenteil davon, so können Sie ihn sich für alle
mit minus.
Jetzt ist es ausgeschaltet, und jetzt können wir es wieder einschalten für jharvard
so dass wir tatsächlich laufen sie jetzt,
und jetzt sehen Sie, wenn wir den Code dieses spezielle # laufen! Zeile am oberen,
#! Linie, sagte der Schale,
sagte unser Terminal hey, wenn diese Datei ausgeführt wird,
/ usr / bin / php, um diese Datei zu interpretieren
und drucken Sie dann den Ausgang.
[Unverständlich Studenten stellen]
Klar, lass mich scrollen wieder nach oben. Genau wie diese.
Du wirst sehen, alle diese Anweisungen beginnen mit diesem Pfund und dann die Ausrufezeichen,
manchmal auch eine Shebang, hash bang.
>> [Student] Wie können wir führen Sie es mit php dynamic.php bevor wir es ausführbar zu machen?
Die Frage war, wie können wir führen Sie dieses mit dem PHP-Binary
während dynamic.php ist nicht ausführbar?
Das ist super wichtig, denn dies ist genau, wie
es wird funktionieren, wenn Sie Probleme Satz 7 zu schreiben.
Die meiste Zeit PHP-Dateien sind nicht direkt ausführbar.
Der Weg, der funktioniert, ist, weil es das PHP-Binary, die ausführbaren ist.
Der Dolmetscher ist die Sache, die gerade ausgeführt hat,
und so, was er tut ist buchstäblich schlürfen in den gesamten Inhalt
unserer dynamic.php Datei und gehen Zeile für Zeile
und Ausführen dieser Befehle, so ist es mit unserem PHP-Datei
als eine Liste von Anweisungen.
Es ist nicht direkt der Ausführung.
Das ist, wo wir sagen, dass diese Dateien zur Laufzeit interpretiert werden.
Es ist ein Laufzeit Sprache statt etwas, das beim Kompilieren bestimmt ist,
keine kompilierten Sprache wie C
>> Gibt es eine Möglichkeit, eine Laufzeit Sprache zu erhalten, zu handeln, als ob es ein Kompilierzeit Sprache ist,
wie wenn Sie alle auf einem Server ausgeführt getan haben
statt, wissen Sie was ich meine?
Ja, so ist die Frage
Gibt es eine Möglichkeit, um die Laufzeit Sprachen bringt mehr wie Kompilierzeit Arten von Sprachen zu handeln?
Und es gibt, ich meine, das ist ein aktives Gebiet der Forschung für viele dieser Unternehmen.
Ich glaube, Facebook hat eine Menge Arbeit mit PHP
und Kompilieren it down, so dass es schneller, optimieren sie
seit ihrer Website basiert auf PHP gebaut.
Wenn Sie schon nach node.js überhaupt,
das ist eine Art JavaScript-Interpreter
zu können JavaScript außerhalb des Browsers laufen, außerhalb Ihres Web-Browser,
weil traditionell JavaScript würde nur innerhalb von Firefox oder Chrome laufen,
und es würde verwendet werden, um coole Animationen auf einer Webseite passieren
und machen Sie Ihre Web-Seite dynamisch.
Das ist auf eine Menge von Arbeit gebaut worden, dass Google getan hat
JavaScript und C + + zum
miteinander verbinden, so gibt es eine Menge der aktiven Forschung
erhalten diese Sprachen zu interagieren und zu optimieren,
vor allem, weil so viele Menschen in PHP und JavaScript-Code
denn es ist viel einfacher.
Es ist viel schöner. Sie haben noch kein Zeiger.
Sie haben noch Typen im Umlauf.
Sie wollten die Vorteile dieser Kompilierung Sprachen zu gewinnen
mit allen Typüberprüfung und der Geschwindigkeit und dem unteren Speichernutzung und alle daß
unter Beibehaltung der Flexibilität und Benutzerfreundlichkeit dieser neueren.
>> Zurück zu unserem ursprünglichen Plan des Angriffs.
Wir haben ein paar dieser Fragen hier in unserem Problem Satz spec.
Lasst uns durch sie sehr schnell gehen, und wir werden um den Raum zu gehen.
Charlotte, ist, welche Art 3,50?
[Charlotte] Das ist eine doppelte. >> Es ist eine doppelte ist.
Jimmy, was ist das nächste? >> Ein Array.
Ein Array, awesome, und Jared, was ist das fopen?
[Jared] Es ist eine Ressource. >> Es ist eine Ressource.
Das ist irgendwie eine neue, nicht eine Datei Stern, keine Datei.
Es ist eine Ressource ist die Art in PHP,
und es tut mir leid, Ella, ist die letzte null, was?
Null.
Null, wie wird es in PHP geschrieben? >> Die gleiche Weise.
Auf die gleiche Weise, Hauptstädte? >> Ja.
Ja, alles in Ordnung.
Hier gehen wir, wir haben eine doppelte, haben wir ein Array,
wir haben eine Ressource, und dann haben wir null.
Lassen Sie uns jetzt sehen, haben Sie gesehen-
mal sehen, so dass ich jetzt denke, was ich auch tun möchte, ist nach oben ziehen
Diese Web-Seite hier, diese php.net / manual,
so, wenn euch kopieren, und öffnen Sie einen Web-Browser.
Ich werde nach oben zu ziehen Chrome, setzen, dass in.
Ich möchte Ihnen zeigen, nicht nur wegen
können wir reden den ganzen Tag über Typen und alles, was fun stuff
sondern weil dies die PHP-Handbuch,
und es gibt eine ganze Reihe von PHP-Programmierer da draußen.
Es gibt eine Menge von PHP Websites gibt,
und als Folge gibt es eine Vielzahl von Dokumentationen in PHP,
und das Handbuch, diese php.net, ist ein wirklich guter Ort, um zu gehen
wenn Sie mit Fragen, was ist der beste Weg, um X in PHP zu tun
oder was eine Funktion aussehen?
Nur irgendwie immer mit dem, was es aussieht, weil vertraute
Sie hierher kommen oft, ein Bit für den problemlosen 7.
>> Wenn Sie am Ende dabei eine endgültige Projekt, das PHP verwendet
wird dies ein Ort, den Sie sehr gut kennen werde.
Oft ist die Art, wie Menschen dies tun, ist sie nutzen Google, um für den Standort zu suchen,
und sie haben nicht das Suchfeld, die bis hier ist in der oberen rechten, welche Art von winzig ist.
Wenn Sie rund googeln etwas mit PHP zu tun, und Sie sehen
eine der manuellen Links Pop-up können Sie in der Regel darauf verlassen
als eine ziemlich gute Ressource.
Awesome, damit von diesen Typen, nur aus Neugier,
welche davon haben wir nicht gesehen?
Alles, was wir nicht gesehen haben, hier?
[Student] Resource. >> Wir sahen Ressource mit dem Aufruf von fopen.
[Student] Objekte. >> Objekte wir nicht sicher gesehen haben.
Callbacks haben wir nicht gesehen.
Es gibt einige dieser Pseudo-Typen ein.
Wir haben definitiv sah nur Integer-und Doppelzimmer.
Wir haben nicht einige von den anderen, so dass, wenn wir auf ganze Zahlen auf
können wir sehen, gibt es irgendwelche anderen Zahlen, die sie hier haben?
Sind sie alle-so integer, integer, integer.
Einige Sprachen haben größere Integer-Typen,
wie wir auf MySQL heute sah es int und dann große int.
Cool.
>> So, PHP Handbuch.
Gehen wir zurück zu unserem Problem Satz spec, und wir werden jetzt nach unten scrollen auf Seite 4.
Eines der Dinge, wenn Sie diese Sprachen zu bekommen passiert
dass nicht über diese statische Typisierung, so dass diese Sprachen, in denen Sie haben zu erklären,
der Typ einer Variablen vorn
wird man Fällen, wo Sie anfangen könnte mit Variablen unterschiedlichen Typs
miteinander wechselwirken,
und PHP funktioniert dieses Ding, wo es versucht zu tun
was sie als das Vernünftigste, was zu tun ist
Sie haben, wenn zwei unterschiedliche Arten miteinander interagieren.
Zum Beispiel, wenn wir uns mit diesen Zeilen Code hier
Sie sehen, dass wir haben, was passiert, wenn
wir versuchen, fügen Sie die Zeichenfolge ein, um die ganze Zahl 2.
Was passiert, wenn wir versuchen, eine Zeichenfolge hinzuzufügen, die nicht ist ein numerischer Wert
sondern die tatsächlichen Zeichen, CS auf die Zahl 50?
Dann werden wir sehen, ist es etwas anderes, das, wo passiert
anstatt eine Zeichenfolge in eine Zahl fügen wir eine Reihe sind in einen String,
und so weiter und so fort bis zu dem Punkt, wo wir immer
irgendeine Art von weird stuff hier wo wir 7 + wahren habe.
Was zum Teufel soll das bedeuten?
>> Wenn euch voran gehen und fügen Sie einige dieser Code in Ihr Gerät.
Sie können es behalten in dynamic.php.
Wir werden sehen, was passiert.
[Student] Verwenden Sie einfach ausdrucken, nicht printf?
Yeah, so dass Sie werden feststellen, dass Druck ist auch eine gültige Funktion zum Drucken in PHP.
Es gibt viele verschiedene Möglichkeiten, es zu tun.
Wir werden mit ein paar der Beispiele später, wenn wir reden sehen
über die einzigartige Problem, dass wir gehen zu schreiben
und dann die Konzentration Problem, dass wir gehen zu schreiben
dass, obwohl wir fopen und fclose
das ist oft nicht der einfachste Weg, um in den Inhalt einer Datei lesen.
PHP hat eine Menge von diesen C-like Überbleibsel.
[Student] Wenn ich in allen 6 von diesen Dingen bekomme ich nur eine Zahl als Ausgang setzen.
[Nate H.] Wenn Sie in allen 6 dieser Sachen.
Lasst uns sehen, ist es, weil es vielleicht-ist
eine Sache ist, dass diese Druck Anrufe nicht am Ende mit neuen Linien beendet.
Es ist keine neue Trennlinie zwischen jeder dieser Druck Anrufe,
so vielleicht sind Sie immer ein große Zahl,
und es ist wirklich nur Amalgam neue Zeile Zeichen.
[Student] Okay, wie kann ich sicher-
Nun, es gibt eine Reihe von verschiedenen Möglichkeiten.
Sie können manuell in einer Auflage von einer neuen Zeile Charakter gelegt,
ein Echo einer neuen Zeile Charakter,
Drucken der neuen Linie.
[Student] So Echo ist dasselbe wie printf?
>> Printf ist wie C printf
wo Sie drucken einen formatierten String.
Sie liefert es die Format-String und dann all die Platzhaltervariablen.
Es ist oft etwas, das nicht genutzt-wird
mal sehen, wie ein Haftungsausschluss,
Ich bin weniger vertraut mit PHP als ich mit anderen Web-Sprachen bin,
und wenn ich in PHP programmiert ich in der Regel nicht printf
weil ich finde, es schneller zu bedienen die String-Interpolation Fähigkeiten, die es hat,
die wir in zu gehen und ich werde Ihnen in nur einer Sekunde zeigen,
während in C wir irgendwie müssen diese hacky etwas tun, um es auszudrucken richtig.
Sie können tatsächlich legte Variablen direkt in Strings in PHP.
Printf ist eine Art von überlangen für das, was ich normalerweise tue. Ja, Ella.
[Ella] Im Allgemeinen, wenn Sie parse error bekommen bedeutet das-
wie auf C es nicht genau sagen, wo der Fehler ist und was es ist,
so bedeutet das Aussehen Ihrer gesamten Code und es herausfinden?
Es ist in der Regel gezielter als die.
Ich denke, in diesem Fall ist es ein wenig abseits war,
so dass ich denke in diesem Fall fehlte uns ein Semikolon.
Es wurde versucht, Sinn für alles zu machen,
so wie diese interpretiert Sprachen, ist der Dolmetscher werde versuchen
und tun ihr Bestes, um alles, was Arbeit angemessen zu machen.
>> Du wirst sehen, zum Beispiel in JavaScript
Sie werden oft-line-Anweisungen enden mit einem Semikolon, so wie sie in PHP zu tun,
wie sie in C.
In JavaScript einige der JavaScript-Interpreter
in vielen Browsern wird in Semikolons für Sie zusammengestellt
Wenn Sie zu fehlen ihnen geschehen wird.
Sie werde versuchen, für einige Schlamperei auf Ihrer Seite unterbringen.
Das ist, wo es vielleicht versuchen und versucht und versucht, die Dinge Arbeit,
und schließlich wird es zu einem Punkt kommen, wo es in Ordnung, sagt,
Ich kann die Dinge nicht auf Rettung zu arbeiten, und das ist, wo Sie eine Zeilennummer bekommen
das vielleicht ein wenig aus dem genauen Ort sein.
Okay, also lasst uns über das wirklich schnell gehen.
Wir aufgehört mit Ella, so gehen wir über zu Missy,
und Missy, was macht Druck String 1 plus der Nummer 2 geben?
[Missy] 3. >> 3.
Macht das Sinn? Sortieren von?
Hat es Ihnen eine Nummer? Ist es Ihnen einen String?
[Missy] Eine Reihe. >> Es ist eine Zahl ist.
Aber es ist zu drucken, also wird es Ihnen irgendeine Art von String.
>> Eine Sache, die wir tun, um dieses heraus überprüfen können
ist, wenn wir tun, $ var = 1 + 2
und dann sagen wir Echo gettype,
so dass wir mit einer dritten Art von Druck hier.
Jetzt können wir sehen, was hier passiert.
Hier, was wir haben ist, dass wir bekamen eine ganze Zahl aus diesem heraus.
Obwohl wir das Hinzufügen dieser String in eine Zahl,
wir haben nicht einen String aus ihm heraus, wie Missy sagte.
Wir waren immer eine ganze Zahl ist.
Okay, also schauen wir mal, next up, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H.] 50. Macht das Sinn?
[Kevin] Yeah.
[Nate H.] Warum? Warum macht es Sinn?
[Kevin] Weil es nur mit der Zeichenfolge, mit Zahlenwert Null.
Yeah, great.
Art von mehrdeutigen Situationen, aber es ist gut zu wissen, was passiert.
Stella, was als nächstes passiert mit der Nummer 1 + String 2?
[Stella] 3. >> 3 wieder.
Und in diesem Fall, bekommen wir einen String oder eine Zahl?
>> Geben wir diesem einen Versuch.
Wer schneller als ich die Antwort bekommen? Charlotte?
Oh, ich didn't-okay, lasst uns sehen, werden wir die gleiche Art von Sache zu tun
wo wir haben eine Zahl plus eine Zeichenfolge, und wir werden die Art Echo,
sehen, was wir bekommen.
Wir bekommen auch eine ganze Zahl.
Es spielt keine Rolle, welche die Zeichenfolge, die eine ist die Zahl ist.
Wir immer noch um eine ganze Zahl zu erhalten.
Es ist immer noch zu tun, was wir erwarten.
Alle Rechte, so Sam, was etwa 90 + 9 Flaschen Bier an der Wand?
[Sam] 99. >> 99.
Keine Flaschen Bier an der Wand, though.
Es gibt uns ein wenig mehr Informationen über das, was passiert ist.
[Sam] Wenn Sie hatte 9 in Buchstaben geschrieben
dann müsste man 90, richtig?
[Nate H.] Yeah.
Die Frage war, ob wir 9 geschrieben hatte als N-I-N-E
würden wir 99 oder 90 bekommen haben?
Wir würden erhalten 90.
Es ist buchstäblich nur auf der Suche nach nummerische Zeichen.
Es ist nicht klug genug, um Zahlwörter und das Zeug zu erkennen. Ja.
>> [Student] Gibt es so etwas wie eine Typisierung in PHP?
Es gibt, und es ist genau so, wie Sie es in C tun würde
Was ist 10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H.] Ja, so was mag vielleicht überraschend sein über diese?
Was würde passieren, wenn Sie die gleiche Art von Dingen getan in C,
wenn Sie getan haben 10/7 in C?
[Charlotte] Es wäre nur Ihnen-je nachdem wie man typecasted Ich denke,
es würde Ihnen nur eine begrenzte Anzahl von Stellen nach dem Komma.
Ja, so eine begrenzte Anzahl von Nachkommastellen.
Was sonst könnte-würde es Ihnen keine Nachkommastellen?
Oft nicht, so wieder, je nachdem, wie Sie Typumwandlung es
es kann oder auch nicht wandeln es in eine Gleitkommazahl.
Hier war es ganz nett, dass es tat.
Hätten wir gezeigt, Ihnen diese zurück, wenn wir tun, diese Art von Sachen in C begonnen
wäre es wahrscheinlich ein wenig mehr Sinn gemacht,
dass es nicht nur um 1 gehen.
Und dann endlich, Jamie, was 7 + wahr?
[Jamie] 8. >> 8.
Was bedeutet das?
Ich denke, es ist nur eine wahre den Wert 1.
Yeah. Was passiert, wenn wir ändern, dass auf false?
[Student] 7.
Yeah, so erinnern, wo wir über diese binären Werte zu sprechen,
Wobei 1, 0 ist aus?
Jetzt haben wir wahr ist 1, 0 false,
und man könnte dies nicht in den C Beispielen gesehen haben, dass wir diesen letzten Semesters,
aber historisch Typ bool in C hat nicht ein echter Typ,
so Leute haben 0 und 1 an der Stelle wahr und falsch verwendet.
Dies ist eine Manifestation davon.
>> Okay, so dass die ein wichtiger Teil über all dies
ist, dass wir diese verschiedenen Typen haben.
Sie können miteinander interagieren.
Sie können oft miteinander interagieren in einer Weise, die nett sind, wie wir hier gesehen haben.
Es ist schön, in der Lage sein String 1 und die Nummer 2 haben, fügen sie zusammen und erhalten 3.
Das macht Sinn.
Allerdings, wenn du schreibst Websites, und vor allem, wenn Sie die Bearbeitung
Benutzereingaben, so sagen, Sie haben ein Web-Formular geschrieben
daß sammelt Informationen von dem Benutzer und geht dann zu verarbeiten
am hinteren Ende auf der Server-Seite in Ihrem PHP-Code
Wenn Sie erwarten, dass Wert, dass der Benutzer eingetippt und eingereicht
Ihre Form eine ganze Zahl sein oder eine Gleitkommazahl oder etwas ähnliches sein
müssen Sie explizit warf es
und dann einige Typprüfung.
>> Sie wollen nicht nur auf diese Art Jonglage-System verlassen, um Dinge zu erarbeiten,
vor allem aus Gründen der Sicherheit und gerade für die Robustheit Ihrer Webseite ein.
Nur etwas im Hinterkopf behalten, dass, wann immer Sie die Handhabung von Formulardaten,
alles, was in der Post oder den get superglobals kommt
stellen Sie sicher, dass Sie immer zu validieren und konvertieren und typecast es.
Und genauso wie wir über einen Moment sprechen vor diesem typecasting
in PHP ist genau das gleiche wie in C, wo Sie die Klammern müssen
und dann der Typ.
Denken Sie daran.
Eine Funktion, die sich als nützlich erweisen wird, wenn Sie dies tun
ist wir haben mit, und dies ist eine Art als neben-
wir haben mit dieser gettype Funktion hier
um herauszufinden, welche Art von einer Variablen,
und während das ist praktisch für die Fehlersuche und zu sehen, was der Typ einer Variablen ist
Sie wollen nicht, diese zum Beispiel zu verwenden, in einem Zustand, wo
Sie überprüfen, ob gettype von $ var = integer etwas zu tun.
Das ist schlecht, schlecht, schlecht.
Stattdessen gibt es diese Funktionen aufgerufen wird, integer, string ist,
ist Array, das Sie stattdessen verwenden möchten, so dass in diesem Fall
was ich möchte zu tun, anstatt von diesem Kerl hier
wird verwenden Sie die ganzzahlig ist var.
Und sie oft genannt wird is_ * im Sinne, dass man das * mit ganzzahligen ersetzen,
string, et cetera, und nur um sicherzugehen, wirklich schnell
ist dies int php.
Sieht aus wie Sie tun können, ist entweder int oder gibt es Integer-als auch?
Ja, alias, so int integer Aliase.
Cool.
>> Wie sollen wir tun?
Lassen Sie das Tempo ein wenig.
Jetzt werden wir über Arrays zu sprechen, so wie man sehen kann
im nächsten Teil der Spezifikation sprechen wir darüber, wie Arrays in PHP
sind leicht unterschiedlich, als sie in C sind
In Wahrheit sind sie Art von Amalgam
die Arrays, dass Sie gekommen sind, kennen und in C liebe
wo alles des gleichen Typs
nacheinander und zusammenhängend in einem Speicher gespeichert,
und Sie haben diese numerischen Indizes.
Sie haben Index 0, Index 1, Index 2,
und das Speichern von Werten an diesen Indizes.
Sie können auch in C, wenn Sie Speller schrieb, viele von euch
hat die Hash-Tabelle Ansatz, und man sah, dass dort hatten wir
eine andere Art von Speicher, in dem wir waren Mapping
ein Schlüssel zu einem Wert, so dass, wenn Sie versucht haben, etwas in Hash-Tabelle speichern
Sie mussten angeben, dass Sie es mit einem bestimmten Schlüssel speichern wollte,
und daß Taste ermittelt die Position des Wertes und es ihm gespeichert werden.
Sie haben Art bekam diesen beiden Konzepten geschieht zur gleichen Zeit in einem PHP-Array,
und als Ergebnis haben wir oft nennen diese assoziative Arrays
wo wir assoziieren einen Schlüssel in einem Wert.
Im nächsten Teil werden wir reden über eine einfache PHP-Array
wo wir haben Schlüssel a, b und c,
alle Saiten, Zuordnen zu den ganzen Zahlen 1, 2 und 3.
Und Sie können Tasten von verschiedenen Arten.
>> Sie können einige Tasten, Saiten, einige Tasten, die Zahlen sind.
Sie kann Werte unterschiedlichen Typs.
Sie können einen Wert, der eine Zeichenkette ist, ein Wert, der eine ganze Zahl ist,
ein Wert, der ein Objekt oder eine andere Anordnung ist beispielsweise
alle im gleichen Array-Objekt ist das irgendwie seltsam.
Sie müssen nicht ein Array, das gerade ist ein Typ des Elements in ihm haben.
Sie können viele verschiedene Dinge in dort.
Die andere Sache zu beachten ist, dass, wenn Sie etwas sehen, wie dies in Ihrem Code zu tun
wobei gilt PHP ein Array einfach so, 0, 1, 2, 3, 4, 5 festzustellen,
das wird deklarieren initialisiert $ arr dies Array sein.
Aber was du eigentlich immer unter der Haube ist diese Art der impliziten
Erzeugung von Schlüsseln, wo wir haben 0 bis 0, 1 bereits in 1, 2 bis 2, 3 bis 3 liegt.
Und es stellt sich heraus, dass selbst wenn Sie ein Array wie diesen Kerl hier oben
wo man a, b und c als Schlüssel
und dann beginnst du mit dem Array Push-Methode verwenden zu beginnen dieses Array wie ein Stapel,
so können Sie sehen, dass dieses Array-Objekt, dieses Array wirklich überlastet wird.
Wir können es als ein Array zu verwenden. Wir können es als eine Hash-Tabelle zu verwenden.
Wir können es als Stack verwenden.
Wenn Sie anfangen zu pressen Dinge auf diesem Array
das erste, was Sie drücken auf dies Index 0 und dann Index 1 und Index 2 sein.
Sie können diese Art von impliziter Erzeugung von Schlüsseln
sofern Sie sie explizit.
Die Art und Weise geben Sie Schlüssel explizit, ist natürlich mit dieser Klammer-Notation,
das ist ähnlich wie Arrays, außer, statt nur so
Integer-Indizes in hier, jetzt lassen wir nichts.
Wenn Sie Ihren Schlüssel ein String sein wollen, sollten Sie es wie folgt angeben.
Wenn Sie es ein int sein wollen, legen Sie es mit dem int die Sie verwenden möchten.
>> Fragen zu diesem so weit?
Eines der schönen Dinge über diese Idee
ist, dass man immer nur einen Wert mit einem bestimmten Schlüssel gespeichert.
Wenn wir wieder über Sie auf unserer Appliance-lassen Sie mich löschen Sie einige von diesem Zeug.
Und lassen Sie uns sagen, dass ich ein Array initialisieren 0, 1, 2, getan sein.
Wenn ich jetzt weiß, dass zum Beispiel, wenn ich echo $ arr [0]
Ich werde, um den Wert 0 ausgedruckt,
und da kann immer nur ein Wert für einen bestimmten Schlüssel gespeichert werden
wenn ich etwas auf $ arr speichern [0], sagen,
dann werde ich wissen, wenn ich $ arr echo erneut [0]
Ich werde nicht auf 0 wie bisher ausgedruckt bekommen.
Ich werde nur eine erhalten.
Das ist also im Grunde sagen, dass ich keine $ arr [0] speichert 2 verschiedene Werte.
Es kann nicht speichern sowohl 0 als auch die Zeichenfolge ein, wie dies wörtlich ersetzt
was auf $ arr [0] zuvor.
Der Grund, warum ich diese bis sie ausgeführt wird, sehen, was passiert.
Sehen Sie hier, dass ich 0 heraus und dann ein hier unten gedruckt.
Es gibt keine neue Linie dort, weil ich faul war und nicht, dass in. setzen
Was ist cool daran ist, wir können dies als einen Weg benutzen
diese Idee eines Satzes zu erfassen
wo wir können nicht mehrere Tasten innerhalb eines Arrays.
Wir können nicht identische Schlüssel innerhalb eines Arrays.
Ich kann nicht den Schlüssel 0 und den Wert 1 und die Taste 0 und den Wert einer
oder die Taste 0 und dem Wert true.
Die Tasten sind all-es gibt nur 1 Schlüssel im Array.
Auch wenn Sie den gleichen Wert gespeichert
mehrfach in der Anordnung unter verschiedenen Schlüsseln
es ist nicht möglich, dass identische Schlüssel mehrmals in Ihrem PHP-Array.
>> Wenn wir diese nächste Problem betrachten, unique.php,
Wo wollen wir eröffnen eine PHP-Datei
enthält eine Liste von Strings, ein String pro Zeile,
und wir wollen alle eindeutigen Strings in dieser Datei zu finden
alles, was wir tun müssen, ist eine dieser PHP Arrays
und verwenden Sie die Zeichenfolgen in der Datei als den Schlüssel zu diesem Array
und halten Aktualisierung unser Angebot, wie wir diese neuen Schlüssel zu speichern.
Da wir jede Zeile ausgelesen der Datei können wir es im Array zu speichern,
und am Ende werden wir als unsere Schlüssel in unserem Array
alle eindeutigen Strings innerhalb der Datei.
Macht das Sinn?
Mal sehen, wie das funktioniert.
Wir gehen zu öffnen, nach dem spec, rief eine neue Datei unique.php.
Zu öffnen. Oops, sorry, neue Datei.
Wir werden es starten mit der gleichen Start-und End-Tags.
Wir werden es in Abschnitt 9 zu retten, und wir werden es nennen unique.php.
Okay, jetzt hineinzuzoomen
Die Idee hier ist eine Datei öffnen,
Lesen in der Datei Zeile für Zeile.
Für jede Zeile in der Datei
wir haben eine Reihe, wo wir
die Linie als unseren Schlüssel.
Und dann, wenn wir bis zum Ende hier
$ Arr die Schlüssel sind die einzigartigen Linien
aus der Datei, da wir wissen, dass wenn ich so sagen Zeile in diesem Array
mehrfach wird es nur halten das Überschreiben der alten Wert,
und wir können tatsächlich legte Array-Zeile als selbst wie genau dies.
>> Dies ist irgendwie seltsam.
Wir speichern den gleichen Schlüssel-Wert-Paar wieder und wieder und wieder,
aber da wir die Garantie, dass es nur ein Schlüssel namens Linie
Wenn wir also eine Datei, die sagt, eine Datei von Tierstimmen und es hat wuff, wuff,
meow, meow, moo, moo, und jedes Mal lesen wir ein Tier Lärm draußen
wie woof und wir speichern sie in unser Angebot erhalten wir woof, und dann ein zweites Mal
speichern wir woof wird es das erste Mal, dass wir darauf gespeicherten überschreiben.
Am Ende werden wir nur noch ein Eintrag in dem Array
für jede der Tierstimmen in unserem Tiergeräusche Datei.
Do you guys sind zuversichtlich, dass Sie das Öffnen einer Datei in PHP zu bewältigen?
Ein Weg, es zu tun, lasst uns über diesen schnell-ein Weg zu gehen, es zu tun
ist mit fopen, wie wir bereits gesehen haben.
Sie können fopen some_file.txt.
Sie können es im Lesemodus öffnen, genau wie in C.
Das ist ein ganz guter Weg, es zu tun.
Sie dann auch für das Lesen in der Datei Zeile für Zeile
haben die gleichen Funktionen, viele von ihnen, dass Sie wie in C.
Sie haben fgets.
Sie haben feof, obwohl wir nicht mögen mit, dass
Denn erinnern, das war nicht so toll in C.
Sie können es auf die gleiche Weise,
aber hier ist eine wirklich coole Sache.
Sorry, ich will nicht zu $ ​​Datei zu tun, aber es gibt eine Funktion namens Datei in PHP,
und diese Funktion hier ist cool, weil es den gesamten Inhalt gelesen
der Datei, die Sie angeben, so some_file.txt,
liest den gesamten Inhalt dieser Datei in einem Array
und dann können Sie über sie iterieren, das ist ziemlich raffiniert.
>> Wenn wir zum Beispiel auf unserer Web-Browser
und wir freuen Bei Google nach PHP-Datei
Sie können hier sehen, dass unser Handbuch sagt, dass Datei liest die gesamte Datei in ein Array,
und wir können file_get_contents, um den Inhalt einer Datei als String zurück,
aber in der Regel nur immer es als ein Array ist wirklich nett, weil, was sie tut
wird es bricht es so, dass jedes Element
in der Anordnung ist einer Zeile der Datei,
Wenn wir also auf Datei 0 aussehen, das ist die erste Zeile der Datei.
File 1, zweite Zeile, Datei 2, dritte Zeile, und so weiter und so fort.
Wäre es nicht schön, wenn das alles war musste man in C zu tun?
Ziemlich raffiniert.
David zeigte dies in der Vorlesung, und das Idiom er zeigte, war
dass zusätzlich zu unserem Standard für Loop-in PHP wir hatten,
for ($ i = 0; i <10; i + +),
und Sie können diese in PHP zu tun, dasselbe-
haben wir auch dieses coole Konstrukt namens foreach.
Foreach ist wirklich praktisch, wenn Iteration über Arrays oder diesen Datenstrukturen
weil es Ihnen erlaubt, sich aus jedes Element des Arrays
ohne manuell kann die Indizierung selbst,
ohne manuell einen Index erstellen Variable inkrementieren,
ziehen Sie den Wert im Array an dieser Stelle, denn das ist eine sehr gewöhnliche Sache zu tun.
>> Sie haben wahrscheinlich gemacht, dass Tonnen von Zeiten, in denen Sie taten C stuff
über das Semester, so mit diesem foreach
können wir eine Schleife über Datei-Array,
und die Syntax ist, dass wir jetzt eine Schleife über dieses Array möchten
und angeben, dass die Variable werden wir verwenden, um zu speichern
das Element dieses Arrays lokal, lokal auf dem Umfang dieser foreach-Schleife
wird werden wir es nennen Linie.
Wenn es eine Datei nur Worte und es gibt ein Wort in einer Zeile
wir könnten es Wort als gut, wirklich nur Ihnen dies einen Namen,
was auch immer Sie es nennen wollen,
und dann innerhalb der Schleife können Sie tun, was Sie wollen mit dieser Variablen Linie.
Wenn es nicht genug, um den Wert des Feldes zu bekommen und Sie wollen auch zu bekommen
der Index zusammen mit ihm können Sie einen Namen für den Index
sowie der Wert, und jetzt haben Sie Zugang zu 2 Variablen.
Sie haben $ i und Zeile
wobei $ i der Index in dem Array,
und Linie ist die Linie, die Sie aus der Datei abgerufen werden.
Zum Beispiel, wenn wir zu drucken echo Zeile 0 der Datei, da dies wollte,
wir konnten es einfach so machen ", ist Line $ i der Datei $ line"
und hier ist etwas, was wir auch noch nicht gesehen haben entweder
wo ich gerade total über diese ganze% s% d Business übersprungen
dass wir mussten mit in C umgehen und stattdessen habe ich gerade gegangen
Schreiben der Variablen in Zeile in meinem String.
>> Dies wird als variable Interpolation, String-Interpolation
wo Sie stopfte die Variablen direkt und der PHP-Interpreter
ist intelligent genug, wenn es durch eine Zeichenfolge, die mit Doppel beginnt liest Zitate-
nicht einfache Anführungszeichen, mit single-quoted Strings können Sie dies nicht tun-
aber mit doppelten Anführungszeichen, wie es heißt durch sie für Variablen schaut.
Es ist die Jagd nach ihnen ab, und wenn es Variablen sieht, wird es den Wert der Variablen wird
und stopfen sie in den String, wenn es in eine String-Repräsentation umwandeln kann,
das ist ziemlich raffiniert.
Denn jetzt, lasst uns kommentieren Sie die Ruhe von allem,
speichern Sie diese, und was wir jetzt tun können, ist, dass wir eröffnen können eine Datei
dass wir rufen some_file.txt-let 's erstellen Sie eine neue Datei-
und wir können in einem Haufen Unsinn Zeug hier, nur um alles auszuprobieren,
speichern Sie diese, nennen wir es some_file.txt, wie mache ich hier oben an der Spitze,
und jetzt, wenn ich zoomen, nur um sicherzustellen, dass alles in das gleiche Verzeichnis-
es sieht aus wie ich unique.php und some_file.txt im gleichen Verzeichnis haben.
Wenn ich laufen php unique.php
sehen, wie es druckt jede Zeile in meiner Akte und was die Leitung?
>> Das ist ziemlich mächtig, nicht wahr?
Schauen Sie, es dauerte 3 Zeilen Code zum Öffnen einer Datei.
Nun, 4 Zeilen Code. Ich kann nicht zählen heute deutlich.
Aber wirklich nur 2 interessante Zeilen Code, da die anderen 2 waren die geschweiften Klammern,
aber in diesem viel Code konnten wir eine Datei zu öffnen, durchlaufen sie,
Ziehen Sie die Zeilennummer und die Linie selbst
und drucken Sie es aus.
Cool stuff. Charlotte.
[Charlotte] Ich habe eine Frage zu der Syntax.
So foreach beschäftigt sich mit jeder einzelnen Zeile der Datei, die Sie öffnen,
und dann, wenn Sie die Dinge mit jeder einzelnen Zeile wollen Sie tun es einfach als
und ordnen Sie dann den Wert.
[Nate H.] Was Sie können hier tun-die Frage war
die foreach hat mit dem Array zu tun, so dass die foreach-Syntax
wirklich foreach, und beachten Sie, dass es keinen Platz
oder irgendetwas zwischen dem für und jeden.
Sie haben nach rechts nebeneinander gehen,
und dann dauert es in einem Array,
und dann haben Sie diese andere Schlüsselwort als dass muss da sein heißt,
und dann nach dem, wie Sie können entweder man ein Variablenname,
in welchem ​​Fall wirst du werden Herausziehen die Werte des Arrays,
nicht die Indizes, oder wenn Sie es tun, wie wir weiter unten geschrieben habe
erhalten Sie die Schlüssel und die Werte.
Sie foreach Element des Arrays oder des Feldes Paares um eingegebene Wert
oder einfach als Wert.
Je nachdem, was Sie brauchen, wenn Sie nicht brauchen die Schlüssel,
dann können Sie mit dem Wert gehen.
Wenn Sie die Tasten möchten, können Sie mit ihnen zu gehen.
>> [Charlotte] Ich erkannte auch, wir haben nie erklärt, die i oder Linie.
Wie kommt es überhaupt, was sie sind?
[Nate H.] Was meinst du mit erklären, bedeuten?
[Charlotte] Wir haben nie gesagt, was ich oder Linie Mittel.
[Nate H.] Wir haben nie gesagt, den Computer, was ich oder Linie in Bezug auf Mittel der-
[Charlotte] Dass sie indiziert oder, dass sie sind-
[Nate H.] Wir haben nie gesagt, dass es sich hierbei um den Index oder den Schlüssel und der Wert sein,
und das ist, denn das ist der PHP-Interpreter.
Dies dient als Erklärung und sagt okay, wird der Schlüssel sein wird
a Variable namens i in eine Variable namens i gespeichert.
Der Wert wird in einer Variablen namens Zeile gespeichert werden,
so dient dies als Erklärung dieser Variablen
und sagt $ i ist ein Schlüssel, und $ line ist ein Wert.
Yeah, Ella.
[Ella] Wenn die Tasten nicht getan numerisch
wie kommt es zu entscheiden, in welcher Reihenfolge es geht um alles, was gedruckt werden?
Ist es genauso wie die Reihenfolge in eingegebenen geht?
[Nate H.] Geben wir es zu versuchen.
Lassen Sie uns eine Variable namens arr,
und was wir tun können a geht an 7.
Lassen Sie uns sagen 0 geht zu einem anderen Array mit 1, 2, oder Apfel.
Sagen wir 7 auf 1 geht, geht b bis 2,
und 3 bis 4 geht.
Dies ist eine Art verrückt aussehenden beispielsweise weil wir durcheinander sind
Strings und Integers ganz über dem Platz.
Es gibt keinen wirklichen um dieses Arrays.
Ich meine, wir konnten alles in alphabetischer Reihenfolge zu bestellen über die Tasten.
Wir konnten alles alphabetischer Reihenfolge nach dem Wert.
>> Wir könnten versuchen, und berücksichtigen, dass einige Strings sind, sind einige ints,
und wir könnten versuchen, und konvertieren Sie sie alle auf die gleiche Art und sehen, was passiert,
oder wir könnten sie im Wert, in dem wir bereits eingegeben haben prüfen
wo wir diesen Kerl legte in der ersten, dieser Kerl in der zweiten, dieser Kerl in der dritten,
dieser Kerl in der vierten, et cetera.
Mal sehen, was passiert, wenn wir diesen Code ausführen.
Wenn wir nach unten scrollen und nicht die gleiche Art von Ding,
und hier ist es nicht Ausdruck der neuen Linien.
Wenn es Dinge zu lesen aus der Datei wurde einschließlich der neuen Linien in den Werten,
das war, warum es ausgedruckt schön, während es hier nicht tat,
so das ist, warum alles zusammen ist smushed.
Fügen wir in dieser neuen Linie nur um die Dinge schön.
Lassen Sie uns erneut, und so hier
schauen, was passiert.
Es bedruckt alles in der Reihenfolge, in der wir es in das Array.
Es ist, um in diesem Sinne zu bewahren.
>> Gehen wir zurück zu diesem Problem der uniques
Wo wollen wir in der Lage sein zu iterieren eine Datei,
und wir geben es some_file.txt,
und wir werden über das so durchlaufen.
Wir haben gesagt, dass wir ein Array zu verwenden, um sicherzustellen, wollte, dass wir würde haben alle der
einzigartige Linien von dort, und wir konnten das wirklich leicht tun
nur durch Speichern in einem Array, die wir natürlich außerhalb des Bereichs einer Schleife zu deklarieren,
und wir sagten, dass wenn wir nutzten die Zeilen in der Datei als Schlüssel in unser Angebot
wenn wir eine doppelte Zeile eingegeben würden wir das Überschreiben der vorherigen Wert.
Es ist nicht immer möglich, 2 Tasten, die identisch in demselben Array befinden haben.
Wir können genau das zu tun.
Wir loszuwerden dieser Echo-Anweisung finden Sie hier.
Hier speichern wir die Zeile in der Datei in unser Angebot
Verwendung selbst als Schlüssel.
Nichts, und es stellt sich heraus, dass wir brauchen noch nicht einmal auf diese Taste.
Wir brauchen nicht, dass ich variabel.
An diesem Punkt, wenn wir einen anderen foreach-Schleife zu tun
und wir waren in einer Schleife über jede arr
und Linie jetzt, wenn wir-oops echo, sorry.
Wir können nicht das Komma. Wir müssen dies als Schlüsselwort verwenden.
Nun, wenn wir Zeile echo sollten wir uns alle eindeutigen Wörter in der Datei.
Wenn wir gehen bis zu some_file.txt,
und lassen Sie uns sagen, dass wir tun, Apfel, Banane, Apfel, Apfel, Banane,
wenn wir Ausdrucken sind alle der einzigartigen Wörter in dieser Datei sollten wir nur erhalten
Apfel und Banane zum Ausdrucken.
Wenn wir das zu retten, jetzt hier wir heranzoomen in,
php unique.php und ta-da.
Wir haben die Datei erfolgreich uniqued.
>> Der letzte Teil dieses Problems ist gefragt, um dieses Feld zu sortieren, bevor Sie es ausgedruckt
denn in diesem einfachen Beispiel, dass wir gerade getan haben
Wir waren in dem Sinne, das Glück, dass die Datei-
wir haben dieses konstruiertes Beispiel mit Äpfeln und Bananen.
Es wurde bereits sortiert.
Aber mit der einfachen Art Funktion können Sie sortieren ein Array, das ist ziemlich raffinierte ist.
Das letzte, was ich wollte mit euch über wirklich schnell zu sprechen,
ist, dass diese Art von PHP alles schön und gut ist, und es ist super handlich
zu wissen, wie zu tun, wenn Sie jemals brauchen werden, um kleine, schnelle Dinge programmatisch tun.
Zum Beispiel, wenn ich ein Programm, das, sagen wir schreiben,
stellt alle in Abschnitte werde ich nicht zu gehen und schreiben Sie es in C.
Es wird lange dauern.
Es wird eine Art Schmerz, vor allem wenn es sich um Dateien beteiligt,
wie euch gesehen haben.
Es ist so schön, dass nur mit diesem viel Code hier
konnten wir durch eine Datei rippen, ziehen alle eindeutigen Werte
und drucken Sie sie wieder heraus.
>> Doch für Ihre Aufgaben, für Ihre Projekte,
wenn Sie bauen Webseiten sind mit PHP die Macht ist, dass
wir laufen unsere PHP-Dateien über diesen Interpreter,
und der Interpreter verarbeitet alles innerhalb der PHP-Tags,
Verlassen alles unberührt und spuckt die Ergebnisse.
Wir können dies tun, um HTML programmgesteuert zu erstellen.
Nun, wenn wir wieder in der Spezifikation zu gehen, das letzte Problem in der spec
Gespräche über diese Idee der Konzentration
und die Schaffung einer Drop-Down-Menü
die Sie kann oder auch nicht tun wollen, je nachdem, was das endgültige Projekt tut,
Das erlaubt dem Benutzer, aus einer Liste von allen möglichen Konzentration zu wählen
ihre ein-Konzentration.
Nun, dies ist eine Art Schmerz, um dies herauszufinden geben
und müssen all dies manuell zu tun, vor allem wenn man mit, um sicherzustellen,
Sie haben alle die spitzen Klammern an der richtigen Stelle und alle die Anführungszeichen an der richtigen Stelle,
so mit PHP können Sie dies programmgesteuert tun, und Sie können dies sehr schnell tun.
>> Mal sehen, wie dies zu tun.
Wir gehen zu öffnen eine neue Datei.
Wir werden in unserem PHP-Tags setzen.
Wir werden es nennen concentrations.php,
und jetzt, wenn du das tust, die Art von einer guten Sache zu denken
wenn Sie versuchen zu mischen und anzupassen PHP und HTML
ist es, herauszufinden, okay, was ist der Teil, den ich will, um programmgesteuert zu generieren?
Was ist der Teil, den ich kann programmgesteuert zu generieren?
Es ist wahr, dass Sie alle Ihre HTML zu tun
Innere PHP-Blöcke.
Sie können echo alle HTML als Zeichenfolgen.
Zum Beispiel, wenn ich will, zu tun beginnen die select-Tags innerhalb von PHP
Ich kann echo sage, das sage auswählen Name = Konzentration,
und dann unten, ich könnte noch einen Echo tag
oder ein anderes Echo als nah das auszuwählen.
Dies ist eine Möglichkeit, es zu tun, denn was wörtlich los ist zu tun
ist Ausdruck dieser Zeichenfolge, wenn es durch den PHP-Interpreter ausgeführt ist,
so wird das Ergebnis HTML.
Wenn ich diese Datei speichern, wie es jetzt ist,
und ich laufe php concentrations.php
schauen, was ich bekam.
Ich habe diese open close select-Tag.
>> Wenn ich dies zu tun und ich waren, um dieses Ergebnis in einer Datei speichern,
sagen, concentrations.html-wait, es sieht aus wie der l hat auf die andere verschwunden side-
Jetzt, wenn ich hier oben öffnen concentrations.html Sie sehen, ich habe eine gültige HTML-Datei.
Ist das irgendwie komisch?
Wir verwenden PHP in HTML zu erstellen, erstellen gültigen HTML.
Die Art, wie wir es tun ist, dass wir nur mit der PHP-Druck
die HTML, dass wir es drucken möchten.
Das ist buchstäblich, wie PHP-Websites arbeiten.
Wenn Sie eine Website besuchen, die Sie sendet so etwas wie
etwas, etwas, was dot com slash index.php
der Computer ist buchstäblich Aufruf index.php,
läuft es durch den PHP-Interpreter, und was Junk kommt
Es ist wieder das Senden an den Browser und sagen hey, Browser interpretieren dies als HTML.
Das Schöne daran ist, dass es ein Schmerz sein, ständig zu schreiben Echo, Echo, Echo, Echo
und legen Sie alles in Anführungszeichen wie diese, so dass, wenn Sie schreiben wollen
die HTML, werde statisch sein selbst können Sie es wie folgt tun hat,
legte es draußen, schließen Sie es
und dann hier nur innerhalb der PHP-Tags, denen Sie wissen, setzen
Sie programmatisch zu erzeugen, und in diesem Fall ist es diese Option Tags
das sind ein Schmerz zu erzeugen.
>> Zum Beispiel könnten wir erzeugen tausend Option Tags
by doing so etwas wie dieses, $ i <1000, i + +
und sagen echo Option value = $-hoppla, das kann ich nicht tun.
Nun, lasst uns etwas ausprobieren und sehen was passiert.
$ I und dann sagen, $ i </ option.
Anstatt zu tippen diese Option tag tausend verschiedenen Zeiten
Ich bin mit PHP-Code, um es automatisch zu generieren, programmatisch.
Kind of nifty. Yeah.
Ich erinnere mich an diese wird entweder in der Vorlesung oder der Komplettlösung erwähnt,
aber was ist der Unterschied zwischen den Anführungszeichen,
die normalen und diese einzelnen Dinge?
Das ist eigentlich etwas, was ich falsch hier getan habe, dass ich werde Ihnen zeigen.
Die einfachen Anführungszeichen erlauben keine Sonderzeichen,
so alles in einem einzigen String in Anführungszeichen buchstäblich interpretiert.
Wenn ich einen \ n innerhalb von einfachen Anführungszeichen und ich spare dies zum Beispiel,
und jetzt gehe ich hier unten und führen Sie es-
oops, wo gehe ich hin?
Oh, es ist, weil ich die $ vergaß.
>> Nun, wenn ich öffnen, eigentlich, hier werden wir loswerden indem Sie es in eine Datei.
Wir müssen nur lesen.
Hier sehen Sie, dass ich habe diese wörtliche \ n in der Zeichenfolge, wie nicht eine tatsächliche neue Linie
und ebenso, anstatt wirklich Interpolieren der Wert dieser Variablen
es gab mir die $ i selbst, die Art von Schmerz ist.
Der Weg, um dieses ist es, die doppelte Anführungszeichen verwenden,
und dann, wenn Sie Anführungszeichen verwenden, wird es tatsächlich
richtig interpolieren die Werte aller dieser Variablen in hier
und erkennen auch diese \ n, um die neue Linie, die sie ist
und nicht \ n.
Mit den einzelnen diejenigen ist schön, wenn Sie
Zeichen, die als Sonderzeichen interpretiert werden könnte, denn dann müssen Sie nicht auf
entziehen sie ständig.
Dinge können sich chaotisch, und oft, wie ich es tun,
nur um die Dinge einfach, dass, wenn ich werde alles haben
HTML gerne in meinem Code ich bearbeiten in einfache Anführungszeichen einschließen
und dann diese Verkettungsoperator
die Variablen in. verketten
Dies ist ein weiterer Weg, es zu tun
wo wir haben den Punkt, die gehen zu verbinden ist dies ist ein String
damit mit diesem mit diesem,
und jetzt habe ich nicht, um diese doppelte Anführungszeichen zu entkommen.
Ich habe nicht diesen Kerl zu verwenden, um zu entkommen.
Sie werden buchstäblich als doppelte Anführungszeichen und dann dieser Kerl gedruckt direkt hier.
Dies ist eine weitere Möglichkeit der Vermischung alles zusammen.
>> [Student] Auch wenn Sie gettype hallte es gab keine Anführungszeichen überhaupt.
Richtig, also Echo ist eine Art von speziellen in dem Sinne, dass Sie nicht brauchen, Klammern.
Sie brauchen nicht zu haben, die Anführungszeichen notwendig um Variablen,
wie es ist gültig zu sagen echo $ i, und es wird dies als String zu interpretieren.
Es wird um die Besetzung zu tun, so dass wir dies tun könnte, und das ist auch gültig, aber wir brauchen es nicht.
Es ist optional.
In dieser Woche gestellten Aufgabe Ausschau nach einer Menge von dieser Art des Materials
wo du Mischen und Anpassen von HTML mit PHP
einfach so, und jetzt, wenn wir zurück und blättern laufen wir diese
können wir sehen, dass wir eine ganze Reihe von Option Werte
, dass gerade erst gedruckt.
Wir haben alle diese HTML, die wirklich schnell für uns wurde generiert.
Ich werde es als eine Übung zu verlassen.
Es ist sehr ähnlich zu der Datei lesen, dass wir früher.
>> Es ist ein concentrations.txt Datei, die Sie nach unten ziehen aus dem CDN,
und öffnen Sie es mit dem gleichen foreach Trick, dass wir früher getan hat,
und foreach müssen Sie nur eine Option und Stecker in echo
die entsprechenden Werte, die entsprechenden Tasten und Indizes
und dann bekommst du ein Dropdown, dass buchstäblich schafft
programmatisch für Sie alle von den verschiedenen Konzentrationen in Harvard.
Eine praktische Sache zu haben.
Es gibt eine Menge von Konfigurations-Zeug für diese Aufgabe.
Wenn Sie noch nicht getan haben es schon die nächste halbe Stunde, Stunde,
einige Zeit heute Abend auf jeden Fall sicher,
Spaziergang durch das Problem Satz spec,
sehen, was los ist mit der Einrichtung der vhosts, der lokale Host, all das Zeug.
Eine Sache, die darauf hinweisen, gerade jetzt ist, dass
in den meisten Problemstellungen haben wir in Ihrem Dropbox-Ordner gegangen
und dann den Download der gestellten Aufgabe ZIP-Datei und entpacken es.
Für dieses Problem, die Sie nicht wollen.
Sie wollen in diesem vhosts Verzeichnis.
Sie wollen in die vhosts gehen und gehen in die lokale Host-Verzeichnis darin,
und das ist, wo Sie wollen werden, ziehen Sie die zip-Datei,
entpacken Sie es und machen Sie sich bereit zu gehen.
Sie müssen die Schritte genau verfolgen.
>> Wenn Sie Fragen haben, senden Sie E-Mail, per Post auf Diskutieren, komm zu Bürozeiten.
Danke Jungs. Nächste Woche werden wir eine Review-Sitzung für das Quiz haben.
Genießen Sie Ihren letzten Problems Set. Ich hoffe, es geht alles sehr gut.
[CS50.TV]