[Powered by Google Translate] [Ενότητα 8] [λιγότερο άνετα] [Nate Hardison] [Πανεπιστήμιο του Χάρβαρντ] [Αυτό είναι CS50.] [CS50.TV] Καλώς ήρθατε στη δεύτερη μας στο τελευταίο τμήμα. Σε αυτή την εβδομάδα θα πάμε να μιλήσουμε για την PHP, και στη συνέχεια την επόμενη εβδομάδα θα κάνουμε μια μικρή ανασκόπηση για το Quiz 1. Εμείς πάμε για να ξεκινήσει στη σελίδα 3 του προβλήματος θέτει το πακέτο, και θα δουλέψουμε μέσα από την ενότητα των ερωτήσεων αρκετά γρήγορα. Στη σελίδα 3, αρχίσουμε να μιλάμε για αυτή τη διαφορά μεταξύ C και PHP με την έννοια ότι η PHP είναι μια δυναμικά δακτυλογραφημένη γλώσσα, λαμβάνοντας υπόψη ότι η C είναι στατικά πληκτρολογήσει, και έχει κανείς πολύ γρήγορα κάνει καμία κωδικοποίηση σε κάτι σαν PHP ή Python ή Ruby πριν, JavaScript; Εντελώς νέα; Εντάξει. Όλες αυτές οι γλώσσες που μόλις ανέφερα είναι πολύ διαφορετική από τις γλώσσες όπως η C και η C + + και Java με την έννοια ότι όταν δηλώνετε μια μεταβλητή δεν χρειάζεται να δηλώνουν τι είδους μεταβλητή είναι, τόσο σε C είχαμε κολλήσει χρειάζεται να λένε πάντα αυτό πρόκειται να είναι μια μεταβλητή int, ή αυτό πρόκειται να είναι μια μεταβλητή char *, ενώ με την PHP, την Python, Ruby με, με πολλές από αυτές τις πιο σύγχρονες γλώσσες δεν χρειάζεται να το κάνουμε αυτό σε όλα. Μπορείτε να δηλώσετε μόνο μεταβλητή σας, και στην περίπτωση της PHP δηλώνετε ότι είναι μια μεταβλητή με το πρόθεμα με ένα σημάδι $, και στη συνέχεια το είδος της μεταβλητής καθορίζεται από ό, τι αξία θα κρατάει, η οποία είναι είδος δροσερό. Για να παίξετε γύρω με αυτό το λίγο, έχουμε δείγμα κώδικα PHP εδώ στις μεταξύ των ετικετών έναρξης και λήξης. Είμαστε χρησιμοποιώντας αυτό το είδος, όπως HTML, με την έννοια ότι έχουμε αυτές γωνία παρένθεση εδώ για να ανοίξει και να κλείσει. Θα δείτε αυτό με την HTML. Θα δούμε το ίδιο είδος της σύνταξης με XML πάρα πολύ. Αυτό δείχνει την αρχή ενός PHP μπλοκ. Αυτό; php είναι ειδικά για PHP. Κλείνουμε τα πάντα με ένα>, καθώς και. Ας ανοίξουμε ένα αρχείο στη συσκευή μας με ό, τι θέλετε. Σε αυτό το πακέτο λέει να καλέσετε dynamic.php. Στην πραγματικότητα, μπορείτε να καλέσετε ό, τι θέλετε, αλλά το όνομα του αρχείου θα καταλήξει και είναι σημαντικό αργότερα, έτσι απλά να θυμάστε ό, τι αποκαλούμε. Πάω να στραφούν πάνω στη συσκευή, και πάω να κάνω έναν κατάλογο για κεφάλαιο 9 Πιστεύω ότι είμαστε στο τώρα. Και θα πάμε στην ενότητα 9, και είμαι πρόκειται να χρησιμοποιήσετε το gedit. Ας δούμε, gedit, και Πάω να καλέσετε ορυχείο dynamic.php. Boom. Μέσα dynamic.php, δεδομένου ότι αυτό είναι ένα PHP αρχείο και θέλω να τρέξει αυτό μέσω του διερμηνέα PHP Πρέπει να ξεκινήσει από ό, τι με τις ανοικτές ετικέτες, έτσι είμαι πρόκειται να ξεκινήσει αυτές αμέσως, δώσω στον εαυτό μου λίγο χώρο μεταξύ των ετικετών, και στη συνέχεια το σημείο αυτής της άσκησης ήταν να παίζουν με η λειτουργία αυτή ονομάζεται gettype, έτσι gettype, αυτή η λειτουργία ακριβώς εδώ. Σημειώστε ότι είναι εκεί ή όχι υπογραμμίζουν διάστημα ή παύλα ή κάτι τέτοιο διαχωρίζει τις 2 λέξεις, και να πάρει τον τύπο, μόνο μια λέξη εντελώς. Αλλά αυτό που θα κάνουμε είναι αν θα περάσει σε μια μεταβλητή να gettype, var $ λένε ή $ x, αυτό θα μου πείτε είδος του σε μορφή αποσφαλμάτωσης ποιο είναι το όνομα αυτού του τύπου είναι. Εμείς πάμε για να πειραματιστείτε εδώ. Συγκεκριμένα, αν κοιτάξουμε πίσω στο spec PSET έχουμε μερικές διαφορετικές γραμμές κώδικα εδώ. Στην πρώτη γραμμή του κώδικα που αρχικοποιεί αυτήν τη μεταβλητή, $ var, να είναι ίσο με 7, και τότε θα έχουμε αυτή την γραμμή printf που λέει hey, printf var είναι κενή. Printf είναι ένας από τους πολλούς τρόπους που μπορεί να εκτυπώσει τα πράγματα σε PHP. Συχνά θα δείτε τη λειτουργία ηχώ που χρησιμοποιείται αντί της printf, printf αλλά είμαστε όλοι εξοικειωμένοι με έχουν κωδικοποίηση σε C για λίγο. Τι μπορείτε πραγματικά να κάνετε είναι να δούμε αν τα έργα αντιγραφής και επικόλλησης. Πάω να δώσει σε αυτό μια δοκιμή. Θα πάμε πίσω πάνω στη συσκευή. Εντάξει, και εκεί πάμε. Και απόσταση είναι λίγο funky, αλλά εδώ πάμε. Έχουμε αυτόν τον κώδικα εδώ. [Φοιτητικό] Δεν είναι καλό στυλ στην καρτέλα αυτό; Συγνώμη; [Φοιτητικό] Είναι συμβατικά στην καρτέλα αυτό; Σωστά, έτσι Sam ρωτά αν είναι σύμβαση για την καρτέλα ή όχι. Συνήθως ναι. Σε αυτή την περίπτωση έχω επιλέξει να μην. Ειλικρινά, θα δείτε διαφορετικά πράγματα μεταξύ των διαφόρων προγραμματιστές. PHP είναι συνήθως χρησιμοποιείται συχνά σε συνδυασμό με την HTML και σε άλλες γλώσσες, και έτσι μερικές φορές η εκτύπωση θα δούμε μια μικρή funky αν σε περίπτωση PHP tags αρχής και τέλους. Εξαρτάται πραγματικά. Στην περίπτωση αυτή, η αντιγραφή και επικόλληση δεν επικολλήστε τις καρτέλες για μένα, αλλά αυτό σίγουρα, όπως είπατε, να είναι σαφέστερη. Εντάξει, αν μπορείτε να αποθηκεύσετε τον κωδικό αυτό σε dynamic.php τότε τι μπορείτε να κάνετε είναι να κατέβει στο παράθυρο του τερματικού σας, όπου είμαι εδώ κάτω δεξιά στο gedit, και να κάνει το ισοδύναμο της μεταγλώττισης χρησιμοποιώντας και στη συνέχεια να τρέχει κωδικό σας σε C Το μόνο που έχετε να κάνετε με το αρχείο PHP είναι εκκίνηση του διερμηνέα PHP, το οποίο είναι ένα μικρό πρόγραμμα που ονομάζεται PHP, και το επιχείρημα που δίνετε στον διερμηνέα είναι το αρχείο που θέλετε να ερμηνεύσει. Σε αυτή την περίπτωση, dynamic.php. Ωχ, πού το έβαλα; Ω, το έβαλα στο τμήμα 9, και εδώ είμαι. Αυτός είναι ο λόγος. Τώρα, αν τρέξω και πάλι ότι βλέπουμε ότι στην πρώτη κλήση της συνάρτησης gettype μου var είναι ένας ακέραιος. Στο επόμενο var είναι ένα string, και στη συνέχεια, στο τρίτο var είναι ένα boolean. Τι ενδιαφέρον σχετικά με αυτό είναι αν μετακινηθείτε προς τα πίσω μέχρι βλέπουμε ότι αυτά είναι τύποι παρόμοιες με αυτές που είχαμε στο C. Είχαμε ints σε C. Εμείς είδος είχε χορδές σε C, έτσι χορδές δεν ήταν εντελώς legit τύπου με την έννοια ότι CS50 σειρά μας ήταν πραγματικά τι; Συγνώμη; Δεσποινίς; [Missy] * Χαρ. Ναι, αυτό ήταν char * χρησιμοποιήσαμε. Στην αρχή του εξαμήνου μας χρησιμοποιώντας τον τύπο string, αλλά αυτό ήταν πραγματικά ένα char * κάτω από την κουκούλα. Εμείς απλά πληκτρολογήστε ορίζονται, ενώ στην PHP αυτές οι χορδές είναι ένα πραγματικό τύπο. Δεν υπάρχει περισσότερο από αυτό τον τύπο char * πράγματα. Θα δείτε ότι μπορούμε να κάνουμε πολλά περισσότερα πράγματα με χορδές πολύ πιο εύκολα από ό, τι σε PHP θα μπορούσαμε σε C, και, στη συνέχεια, τέλος, έχουμε αυτή την boolean τύπος, και η μεγάλη διαφορά εδώ είναι ότι αν μετακινηθείτε προς τα πίσω βλέπουμε ότι η ονομασία αυτών των τύπων τώρα είναι integer, string, boolean και αντί για int και bool, και όπως μπορείτε να πάρετε διαφορετικές γλώσσες προγραμματισμού, υποθέτοντας ότι σε κάποιο σημείο στη ζωή σας, θα έρθουν σε επαφή με διαφορετικά αυτά που θα παρατηρήσετε λίγο ιδιορρυθμίες, όπως αυτό όπου C καλεί ακέραιους αριθμούς ints. Μερικοί την αποκαλούν ακέραιοι. Υπάρχουν άλλοι όροι που θα τρέξει σε. Big int είδαμε σήμερα στην SQL. Υπάρχουν, επίσης, τον αριθμό και στη συνέχεια, bool, boolean, όλα τα είδη των διαφορών εκεί. Αυτό δεν είναι τρομερά ενδιαφέρον, αλλά τώρα είμαι πρόκειται να σας δώσω λίγο χρόνο αν μεγεθύνετε έξω-για να εργαστούν μέσω αυτής της άσκησης στο κάτω μέρος της σελίδας 3 όπου ρωτά τι τύποι αντιστοιχούν σε αυτές τις τιμές εδώ στο κάτω μέρος. Έχουμε 3,50. Έχουμε αυτό το πράγμα εδώ, η οποία είναι ενδιαφέρουσα. Δεν έχουμε δει ότι πριν, αν και, αν έχετε ακολουθήσει μαζί σε διάλεξη ίσως ήδη γνωρίζετε τι είναι αυτό. Στη συνέχεια, έχουμε αυτό, το οποίο είναι αυτό το είδος του funky. Μπορείτε αναγνωρίζουν αυτό. Τι είναι αυτό στο Γ; Sam; Τι θα ήταν αυτό που δίνετε σε C; Θα ανοίξει ένα αρχείο που ονομάζεται dynamic.php και καθιστούν ευανάγνωστο. Ναι, και ποιο θα είναι το είδος της μεταβλητής που θα αναθέσει αυτό; αστέρι Αρχείο >>. Ακριβώς, εμείς θα αναθέσει αυτό σε ένα αστέρι αρχείο. Αυτό είναι νόμιμο PHP πάρα πολύ. Εκτελέστε αυτό. Δείτε τι συμβαίνει όταν περνάτε ότι σε gettype. Και τότε επίσης να ελέγξετε έξω τι είναι μηδενική, τι μπορεί να είναι σε PHP. Θα σας δώσω μερικά λεπτά. Μπορείτε να κυριολεκτικά να αντιγράψετε και να επικολλήσετε αυτές τις αξίες σε, και στη συνέχεια θα κάνουμε μια μικρή τυχαία κλήση σε σας και να δούμε τι έχεις. [Φοιτητικό] Έχω μια ερώτηση. << Ναι. Σε μια από τις διαλέξεις, δήλωσε ο David υπάρχει κάτι που μπορείτε να βάλετε στην κορυφή του αρχείου σας έτσι ώστε να μην χρειάζεται να πληκτρολογείτε σε PHP κάθε φορά. Τι ήταν αυτό; Ήταν κατά πάσα πιθανότητα μιλάμε για την έκρηξη λίβρα, η hash Έκρηξη. Είναι μια οδηγία ότι αν επισημάνετε το αρχείο σας ως εκτελέσιμο τότε αυτό που κάνει είναι όταν εκτελείτε το αρχείο θα πει το πρόγραμμα κέλυφος να χρησιμοποιήσετε το PHP διερμηνέα για να ερμηνεύσει το περιεχόμενο του αρχείου. Το ερώτημα είναι τι ήταν αυτή η ειδική γραμμή ότι θα μπορούσαν να περιλαμβάνουν στην κορυφή της PHP αρχεία μας δεν πρέπει να περιλαμβάνουν αυτή η γραμμή PHP ή PHP αυτή η εντολή κάθε φορά που θέλετε να εκτελέσετε το αρχείο; Και μπορείτε να το κάνετε πραγματικά αυτό με ένα σωρό διαφορετικά αρχεία. Πιστεύω ότι εξαρτάται από το πού το PHP binary αποθηκεύεται, αλλά συχνά usr / bin / php είναι ένα καλό μέρος για να ξεκινήσετε. Μπορείτε να το καταλάβουν αυτό ακριβώς πηγαίνοντας πίσω στην συσκευή σας και δακτυλογράφηση που php. Η εντολή που υπολογίζει όταν είστε εκτέλεση δυαδικό ή μια εντολή όταν το αντίστοιχο αρχείο είναι. Αυτό μου λέει ότι η PHP είναι πραγματικά aliasing αυτό το δυαδικό αρχείο που είναι αποθηκευμένα στο usr / bin, το οποίο είναι όπου πολλά από τα εκτελέσιμα του συστήματος είναι εγκατεστημένα. Για παράδειγμα, αν μετακινηθείτε προς τα επάνω προς τα πάνω, τώρα που έχω βάλει αυτό το #! γραμμή εδώ Μπορώ να μετακινηθείτε προς τα κάτω, και δεν μπορώ να προσπαθήσετε να εκτελέσετε dynamic.php, αλλά παίρνω αυτό το σφάλμα σχετικά με την άδεια που αρνήθηκε, και τι σημαίνει αυτό είναι ότι αυτό το αρχείο δεν είναι εκτελέσιμο δίνοντας το παρόν άδειες. Δεν έχει επισημανθεί ως ένα αρχείο το οποίο κάποιος μπορεί να τρέξει. Όταν έτρεξε Μάρκα ή Clang και έχεις ένα εκτελέσιμο αρχείο από το ο compiler ήταν αρκετά έξυπνος για να ξέρω ότι hey, είμαι οικοδόμηση μιας εκτελέσιμο. Ίσως θέλετε να το εκτελέσει, γι 'αυτό θα διαμορφώσει αυτόματα τα δικαιώματα για σας. Αυτό δεν συμβαίνει, όμως, όταν δημιουργείτε ένα κανονικό αρχείο από το μηδέν, ο λόγος που συνήθως δεν θέλετε να έχετε οποιοδήποτε αρχείο στο σύστημά σας να είναι εκτελέσιμο, έτσι μπορείτε πραγματικά να πάει στο χέρι και να το κάνουμε. Ο ευκολότερος τρόπος να γίνει αυτό είναι με την εντολή chmod, και chmod + x λέει προσθέσετε το κομμάτι εκτελέσιμο επειδή υπάρχει η ανάγνωση bit, το bit εγγραφής και το bit εκτελέσιμο, r, νν και χ, και λέγοντας chmod + x θα ανάψει το κομμάτι εκτελέσιμο τότε για το αρχείο που ορίζουμε, το οποίο στην περίπτωση αυτή θα είναι dynamic.php. [Φοιτητικό] είναι ότι ενεργοποιημένη για όλους; Ας ελέγξουμε έξω, έτσι πώς θα ελέγξετε τα δικαιώματα; Ξέρετε πώς θα ελέγξετε τα δικαιώματα ενός αρχείου; [Ακούγεται ανταπόκριση των φοιτητών] Συγνώμη; >> [Φοιτητής] XSD. XSD μας δίνει το αρχείο σε αμυχές. Καταχώρηση όλα τα αρχεία,-l, ​​θα μου δείξει όλα τα αρχεία στον κατάλογο μου είδος του σε καιρό, σας verbose τους, έτσι και εδώ βλέπουμε ότι dynamic.php αυτό το αρχείο αυτή τροποποιήθηκε τελευταία φορά στις 5 Νοέμβρη 16:21. Ο ιδιοκτήτης αυτού του αρχείου jharvard. Αυτός είναι ο χρήστης που είναι συνδεδεμένος μέσα Αυτός είναι ο χρήστης εργάζομαι ως, και αν είστε, επίσης, στη συσκευή είστε, επίσης, εργάζεται ως jharvard χρήστη. Είσαι στην ομάδα φοιτητών, και αυτά είναι πράγματα που θα δείτε αρκετά συχνά. Μπορούμε να πάμε σε μια μεγάλη λεπτομέρεια εδώ, αλλά ως επί το πλείστον ό, τι θέλετε να δείτε, όταν ψάχνετε να δείτε εάν ή όχι ένα αρχείο είναι εκτελέσιμο είναι κατά κύριο λόγο ο χρήστης ο οποίος κατέχει το αρχείο, ο ιδιοκτήτης, έτσι αυτό jharvard, και τότε θα έχουμε τα δικαιώματα bits εδώ στα αριστερά, και ο τρόπος για να διαβάσει αυτό είναι ότι το τελευταίο bit τυπικά χρησιμοποιείται για τη σήμανση ή όχι-τουλάχιστον σε αυτήν την περίπτωση αυτό το τελευταίο κομμάτι θα συχνά να τεθεί σε διαφήμιση για να υποδείξει ότι το αρχείο είναι ένας κατάλογος και όχι απλώς ένα κανονικό αρχείο. Στη συνέχεια, τα επόμενα 3 bits εδώ καθορίσει τα δικαιώματα που ο ιδιοκτήτης του αρχείου έχει, οπότε σε αυτή την περίπτωση jharvard, καθώς ο ιδιοκτήτης του αρχείου, μπορεί να διαβάσει και να γράψει αυτό το αρχείο, αλλά υπάρχει μια παύλα λέγοντας ότι jharvard δεν μπορούν να εκτελέσουν αυτό το αρχείο. Οι επόμενες 3 bits είναι για την ομάδα, έτσι αυτό είναι η ομάδα σπουδαστών, οπότε αν υπήρχαν πολλαπλοί χρήστες με συσκευή μου, και είχαμε πολλούς χρήστες ως μέρος της ομάδας μαθητών, τότε μπορεί να διαβάσει όλο αυτό το αρχείο, αλλά δεν μπορούν να το γράψω, επίσης και οποιονδήποτε άλλο, ο κόσμος μπορεί μόνο να διαβάσει το αρχείο, καθώς και. Υπάρχει μια καλή, μεγάλη writeup γι 'αυτό, ώστε να μπορείτε να διαβάσετε online. Στο σύνολο spec πρόβλημα πάμε σε αυτό με περισσότερες λεπτομέρειες. [Φοιτητικό] Είναι το 218 που αναφέρεται στον κόσμο; Το 218 είναι-από την κορυφή του κεφαλιού μου, ξεχνάω, αλλά όχι. Ας δούμε. Εγώ είμαι τυφλή εκείνη τη στιγμή. Επιστροφή σε ό, τι ήμασταν έτοιμοι να κάνουμε με αυτό το chmod + x όπου θέλαμε να δώσουμε δικαιώματα dynamic.php εκτελέσιμο, και το ερώτημα ήταν κατά πόσον ή όχι αυτό θα δώσει δικαιώματα σε όλους εκτελέσιμο ή απλά να jharvard, και μπορούμε να δούμε αυτό από την εκτέλεση των εντολών και πληκτρολογώντας ls-l, και τώρα βλέπουμε ότι έχει επισημανθεί ως εκτελέσιμο. Βλέπετε ότι υπήρξε μια αλλαγή του χρώματος. Τώρα dynamic.php είναι εισηγμένη στο πράσινο, και μοιάζει με την απάντηση στο ερώτημα αυτό είναι, Charlotte; [Charlotte] Μόνο jharvard. >> Μόνο jharvard, ναι. Αν θέλαμε να μετατρέψει το εκτελέσιμο για λίγο για όλους πώς να το κάνουμε αυτό; Οποιεσδήποτε σκέψεις; >> A + x; Ναι, ακριβώς. Charlotte είπε μπορούμε να κάνουμε chmod a + x του dynamic.php, και τώρα αν τρέξουμε ls-l βλέπουμε ότι τα bits εκτελέσιμο πράγματι ενεργοποιηθεί για όλους. Και μπορείτε να το κάνετε πραγματικά το αντίθετο από αυτό, ώστε να μπορείτε να την απενεργοποιήσετε για όλους χρησιμοποιώντας μείον. Τώρα αυτό είναι απενεργοποιημένο, και τώρα μπορούμε να γυρίσουμε πίσω για την jharvard έτσι ώστε να μπορεί να τρέξει πραγματικά τώρα, και τώρα θα δείτε όταν τρέχουμε τον κώδικα αυτό το ειδικό #! γραμμή στο πάνω μέρος, #! γραμμή, είπε στο κέλυφος, τερματικό μας είπε hey, όταν αυτό το αρχείο εκτελείται, χρήση / usr / bin / php για να ερμηνεύσει αυτό το αρχείο και στη συνέχεια να εκτυπώσετε το αποτέλεσμα. [Ακούγεται ερώτηση φοιτητή] Σίγουρα, επιτρέψτε μου να μετακινηθείτε προς τα πίσω επάνω. Ακριβώς όπως αυτό. Θα δείτε όλες τις οδηγίες αυτές αρχίζουν με αυτό το κιλό και στη συνέχεια το θαυμαστικό, μερικές φορές ονομάζεται δουλεία, hash κτύπημα. [Φοιτητής] Πώς μπορούμε να το τρέξετε με dynamic.php php πριν κάνουμε εκτελέσιμο; Το ερώτημα ήταν πώς μπορούμε να εκτελέσουμε αυτό χρησιμοποιώντας το δυαδικό PHP dynamic.php ενώ δεν είναι εκτελέσιμο; Αυτό είναι εξαιρετικά σημαντικό, διότι αυτό είναι ακριβώς το πώς πρόκειται να λειτουργήσει όταν γράφετε σετ πρόβλημα 7. Τα περισσότερα από τα αρχεία χρόνου της PHP δεν είναι άμεσα εκτελέσιμο. Ο τρόπος που λειτουργεί είναι επειδή είναι το PHP binary που είναι εκτελέσιμο. Ο διερμηνέας είναι το πράγμα που είναι υπό εκτέλεση, και έτσι τι κάνει κυριολεκτικά ρουφάτε σε όλο το περιεχόμενο dynamic.php του αρχείου μας και θα γραμμή προς γραμμή και την εκτέλεση αυτών των εντολών, γι 'αυτό χρησιμοποιώντας PHP αρχείο μας ως μια λίστα με τις οδηγίες. Δεν είναι εκτελεί άμεσα. Αυτό είναι που λέμε ότι τα αρχεία αυτά ερμηνεύονται κατά το χρόνο εκτέλεσης. Είναι ένα τρέξιμο γλώσσα χρόνο αντί κάτι που καθορίζεται κατά τη μεταγλώττιση, δεν καταρτίζονται γλώσσα, όπως C. Είναι ένας τρόπος για να πάρετε μια γλώσσα χρόνου εκτέλεσης να ενεργεί σαν να είναι μια γλώσσα τη διάρκεια της μεταγλώττισης εκεί, όπως και αν έχετε όλη τη λειτουργία που έγινε στο διακομιστή αντί-ξέρετε τι εννοώ; Ναι, έτσι το ερώτημα είναι Είναι ένας τρόπος για να πάρετε τρέξει γλώσσες ώρα να δράσουμε περισσότερο σαν τύποι μεταγλώττισης χρόνο γλώσσες; Και εκεί, θέλω να πω, ότι είναι ένας ενεργός τομέας της έρευνας για πολλές από αυτές τις εταιρείες. Πιστεύω ότι το Facebook έχει κάνει πολλή δουλειά με την PHP και τη σύνταξη προς τα κάτω, καθιστώντας πιο γρήγορα, τη βελτιστοποίηση δεδομένου ότι η ιστοσελίδα τους είναι χτισμένο σε PHP. Αν έχετε ακολουθήσει Node.js καθόλου, η οποία είναι ένα είδος διερμηνέα JavaScript να είναι σε θέση να τρέξει το JavaScript έξω από το πρόγραμμα περιήγησης, εκτός του web browser σας, επειδή παραδοσιακά JavaScript θα τρέξει μόνο μέσα από τον Firefox ή Chrome, και θα πρέπει να χρησιμοποιούνται για να κάνουν δροσερό κινούμενα σχέδια συμβεί σε μια ιστοσελίδα και να κάνει την ιστοσελίδα σας δυναμική. Που είναι ήδη χτισμένο σε μια μεγάλη δουλειά που έχει κάνει η Google να κάνουν το JavaScript και C + + ενώνουν, έτσι υπάρχει μια πολύ ενεργή στην έρευνα πάρετε αυτές τις γλώσσες να αλληλεπιδρούν και να βελτιστοποιήσουν, κυρίως επειδή τόσοι πολλοί άνθρωποι μπορούν να κωδικοποιήσουν σε PHP και JavaScript γιατί είναι πολύ πιο εύκολο. Είναι πολύ καλύτερο. Δεν χρειάζεται υποδείξεις. Δεν έχετε είδη επιπλέουν γύρω. Ήθελαν να κερδίσουν τα οφέλη από αυτές τις γλώσσες του χρόνου μεταγλώττισης με όλα τον έλεγχο τύπο και την ταχύτητα και τη χαμηλότερη χρήση μνήμης και ότι όλα ενώ εξακολουθεί να διατηρεί την ευελιξία και την ευκολία της χρήσης αυτών νεώτερους. Επιστροφή στο αρχικό σχέδιο της επίθεσης μας. Έχουμε μερικές από αυτές τις ερωτήσεις εδώ στο spec σύνολο πρόβλημά μας. Ας πάμε μέσα από αυτά πολύ γρήγορα, και θα πάμε γύρω από το δωμάτιο. Charlotte, τι τύπος είναι 3,50? [Charlotte] Αυτό είναι ένα διπλό. >> Είναι ένα διπλό. Jimmy, τι είναι αυτό το επόμενο; >> Μια σειρά. Μια σειρά, φοβερό, και Jared, ποια είναι η fopen; [Jared] Είναι ένας πόρος. >> Είναι ένας πόρος. Αυτό είναι το είδος της ένα νέο και όχι ένα αστέρι αρχείο, όχι ένα αρχείο. Είναι ένας πόρος είναι ο τύπος σε PHP, και λυπάμαι, Ella, η τελευταία είναι άκυρη τι; Null. Null, πώς διατυπώνονται στην PHP; >> με τον ίδιο τρόπο. Με τον ίδιο τρόπο, πρωτεύουσες; >> Ναι. Ναι, εντάξει. Πάμε λοιπόν, έχουμε ένα διπλό, έχουμε μια σειρά, έχουμε έναν πόρο, και στη συνέχεια να έχουμε μηδενική. Ας δούμε τώρα έχετε δει- Ας δούμε, έτσι τώρα υποθέτω ότι αυτό που θέλω επίσης να κάνετε είναι να σηκώσει αυτή η ιστοσελίδα δικαίωμα εδώ, αυτό php.net / εγχειρίδιο, οπότε αν εσείς ότι αντιγράψετε και να ανοίξει ένα πρόγραμμα περιήγησης στο web. Πάω να σηκώσει Chrome, βάλτε ότι μέσα Θέλω να σας δείξω αυτό όχι μόνο επειδή μπορούμε να μιλάμε όλη μέρα για τους τύπους και όλα αυτά τα πράγματα διασκέδαση αλλά επειδή αυτό είναι το εγχειρίδιο της PHP, και υπάρχουν πολλά PHP προγραμματιστές εκεί έξω. Υπάρχουν πολλά PHP ιστοσελίδες εκεί έξω, και ως εκ τούτου, υπάρχει μια μεγάλη τεκμηρίωση για PHP, και το εγχειρίδιο, η php.net, είναι μια πολύ καλή θέση για να πάει κάθε φορά που είστε με ερωτήσεις σχετικά με το τι είναι ο καλύτερος τρόπος για να κάνει το Χ στην PHP ή τι κάνει μια λειτουργία μοιάζει; Ακριβώς το είδος του να πάρει εξοικειωμένοι με τι μοιάζει αυτό γιατί θα πρέπει να έρχονται συχνά εδώ, ένα κομμάτι για το πρόβλημα που 7. Εάν καταλήξετε να κάνει ένα τελικό σχέδιο που χρησιμοποιεί PHP αυτό θα είναι ένα μέρος που θα γίνει πολύ καλά εξοικειωμένοι με. Συχνά, ο τρόπος που οι άνθρωποι κάνουν αυτό είναι που χρησιμοποιούν το Google για να αναζητήσετε την ιστοσελίδα, και δεν χρησιμοποιούν το πλαίσιο αναζήτησης που είναι εδώ στην πάνω δεξιά γωνία, η οποία είναι το είδος των μικροσκοπικών. Αν είστε Googling γύρω για κάτι να κάνει με την PHP και να δείτε έναν από τους συνδέσμους εγχειρίδιο pop up μπορείτε να συνήθως βασίζονται σε ότι ως μια αρκετά καλή πηγή. Awesome, τόσο από αυτούς τους τύπους, απλά από περιέργεια, ποια δεν έχουμε δει; Ό, τι δεν έχουμε δει εδώ; [Φοιτητικό] Πόρων. >> Είδαμε πόρων με την κλήση fopen. [Φοιτητικό] αντικείμενα. Αντικείμενα >> δεν έχουμε δει στα σίγουρα. Επανακλήσεις δεν έχουμε δει. Υπάρχουν μερικά από αυτά τα ψευδο-τύπων. Εμείς σίγουρα μόνο είδε ακέραιο και διπλό. Δεν είδαμε μερικά από τα άλλα, οπότε αν κάνουμε κλικ στο ακέραιοι μπορούμε να δούμε υπάρχουν άλλοι ακέραιοι που έχουν εδώ; Είναι όλοι-έτσι ακέραιος, ακέραιος, ακέραιος. Μερικές γλώσσες έχουν μεγαλύτερο ακέραιο αριθμό τύπων, όπως είδαμε στην MySQL σήμερα υπήρχε και στη συνέχεια int int μεγάλη. Cool. Έτσι, το εγχειρίδιο της PHP. Ας πάμε πίσω στο πρόβλημά μας spec σύνολο, και τώρα θα μετακινηθείτε προς τα κάτω στη σελίδα 4. Ένα από τα πράγματα που συμβαίνουν όταν παίρνετε αυτές τις γλώσσες που δεν έχουν αυτήν τη στατική δακτυλογράφηση, έτσι ώστε αυτές οι γλώσσες, όπου θα πρέπει να δηλώνουν ο τύπος του ενός εμπρόσθιου μέχρι μεταβλητής είναι να πάρετε περιπτώσεις κατά τις οποίες μπορεί να αρχίσει να έχει μεταβλητές διαφόρων τύπων αλληλεπιδρούν μεταξύ τους, PHP και κάνει αυτό το πράγμα που προσπαθεί να κάνει αυτό που θεωρεί ότι είναι το πιο λογικό πράγμα που πρέπει να κάνετε όταν έχετε 2 διαφορετικούς τύπους αλληλεπιδρούν μεταξύ τους. Για παράδειγμα, αν κοιτάξουμε αυτές τις γραμμές κώδικα εδώ θα δείτε ότι έχουμε ό, τι συμβαίνει όταν προσπαθούμε και να προσθέσετε τη συμβολοσειρά 1 στο ακέραιο 2. Τι θα συμβεί αν προσπαθήσουμε και να προσθέσετε μια συμβολοσειρά που δεν είναι μια αριθμητική τιμή αλλά μάλλον πραγματικούς χαρακτήρες, CS με τον αριθμό 50; Στη συνέχεια θα δούμε είναι κάτι διαφορετικό που συμβαίνει όταν υπάρχει αντί της προσθήκης ενός string σε έναν αριθμό είμαστε προσθέτοντας έναν αριθμό σε ένα string, και ούτω καθεξής και ούτω καθεξής μέχρι το σημείο όπου παίρνουμε κάποια περίεργα πράγματα εδώ όπου έχουμε 7 + αλήθεια. Τι στο καλό σημαίνει αυτό; Αν εσείς πάτε μπροστά και να επικολλήσετε μερικά από αυτόν τον κώδικα σε συσκευή σας. Μπορείτε να το κρατήσετε στο dynamic.php. Θα δούμε τι θα συμβεί. [Φοιτητικό] Απλά χρησιμοποιήστε εκτύπωσης, δεν printf; Ναι, έτσι θα διαπιστώσετε ότι η εκτύπωση είναι επίσης μια έγκυρη λειτουργία για την εκτύπωση σε PHP. Υπάρχουν πολλοί διαφορετικοί τρόποι για να γίνει αυτό. Θα δούμε με μερικά παραδείγματα για αργότερα όταν θα αρχίσουμε να μιλάμε για το μοναδικό πρόβλημα που θα πάμε να γράψω και τότε το πρόβλημα συγκεντρώσεις ότι θα πάμε να γράψω ότι ακόμα κι αν έχουμε fopen και fclose αυτό είναι συχνά δεν είναι ο απλούστερος τρόπος για να διαβάσει τα περιεχόμενα ενός αρχείου. Η PHP έχει πολλά από αυτά τα C-σαν συνεχιστές. [Φοιτητικό] Όταν έβαλα σε όλα τα 6 από αυτά τα πράγματα έχω μόνο έναν αριθμό ως ένα έξοδο. [Nate H] Όταν βάζετε σε όλα τα 6 από αυτά τα πράγματα. Ας δούμε είναι γιατί είναι πιθανόν- ένα πράγμα είναι ότι αυτές οι κλήσεις εκτύπωσης τερματίζεται στο τέλος με νέες γραμμές. Δεν υπάρχει καμία νέα γραμμή που χωρίζει το καθένα από αυτά κλήσεις εκτύπωσης, έτσι ίσως έχετε πάρει ένα μεγάλο αριθμό, και αυτό είναι πραγματικά ακριβώς αμάλγαμα χαρακτήρες νέας γραμμής. [Φοιτητικό] Εντάξει, πώς μπορώ να βεβαιωθώ- Λοιπόν, υπάρχουν ένα σωρό διαφορετικούς τρόπους. Θα μπορούσατε να το χέρι που σε μια εκτύπωση από ένα νέο χαρακτήρα γραμμής, μια ηχώ ενός νέου χαρακτήρα της γραμμής, εκτύπωση της νέας γραμμής. [Φοιτητικό] Έτσι ηχώ είναι το ίδιο πράγμα με printf; Printf είναι σαν C printf Όπου και αν εκτυπώνετε ένα μορφοποιημένο string. Είσαι προμηθεύουν το string μορφή και στη συνέχεια όλες τις μεταβλητές κράτησης θέσης. Είναι κάτι που συχνά δεν χρησιμοποιείται- Ας δούμε, ως παραίτηση από κάθε ευθύνη, Δεν είμαι τόσο εξοικειωμένος με την PHP από ό, τι είμαι με άλλες γλώσσες Ιστού, και όταν έχω προγραμματίσει σε PHP που συνήθως δεν χρησιμοποιούν printf επειδή θεωρώ ότι είναι πιο γρήγορα για να χρησιμοποιήσετε τις δυνατότητες παρεμβολή σειρά που έχει, που θα πάμε μέσα και θα σας δείξω σε μόλις ένα δευτερόλεπτο, ενώ στο Γ 'αυτό το είδος του πρέπει να κάνουμε αυτό το πράγμα Hacky να το πάρει για να εκτυπώσετε σωστά. Μπορείτε να βάλετε πραγματικά μεταβλητές άμεσα σε χορδές σε PHP. Printf είναι το είδος της υπερβολικά πολύ για αυτό που κάνω συνήθως. Ναι, Ella. [Ella] Σε γενικές γραμμές, αν έχετε σφάλμα ανάλυσης σημαίνει αυτό- όπως στην C δεν σας πω ακριβώς πού είναι το λάθος και τι είναι, έτσι σημαίνει αυτό ματιά μέσα από ολόκληρο τον κώδικα σας και να καταλάβω; Είναι συνήθως πιο στοχευμένη από αυτό. Νομίζω ότι σε αυτή την περίπτωση ήταν λίγο μακριά, οπότε πιστεύω ότι σε αυτή την περίπτωση είχαμε λείπει ένα ερωτηματικό. Ήταν προσπαθούν να βγάλουν νόημα από όλα, έτσι όπως αυτές ερμηνεύονται γλώσσες, ο διερμηνέας θα προσπαθήσει και καταβάλει κάθε δυνατή προσπάθεια για να καταστεί η εργασία τα πάντα σωστά. Θα δείτε, για παράδειγμα, σε JavaScript Θα συχνά-line δηλώσεις τέλος με ένα ερωτηματικό ακριβώς όπως κάνουν σε PHP, ακριβώς όπως κάνουν σε C. Σε JavaScript μερικά από τα διερμηνείς JavaScript σε πολλά από τα προγράμματα περιήγησης θα θέσει σε ερωτηματικά για σας αν τύχει να τους λείπει. Θα προσπαθήσουμε και να φιλοξενήσει για κάποια προχειρότητα από την πλευρά σας. Αυτό είναι όπου θα μπορούσε να προσπαθεί και προσπαθεί και προσπαθεί να κάνει τα πράγματα να λειτουργήσουν, και τελικά θα φτάσουμε σε ένα σημείο όπου λέει εντάξει, Δεν μπορώ να κάνω πράγματα για διάσωση, και αυτό είναι όπου θα έχετε έναν αριθμό γραμμής που μπορεί να φαίνεται λίγο μακριά από την ακριβή θέση. Εντάξει, οπότε ας πάμε μέσα από αυτό πολύ γρήγορα. Έχουμε μείνει με Ella, οπότε ας πάμε πάνω να Missy, και Missy, τι εκτύπωσης της σειράς 1 συν τον αριθμό 2 δίνετε; [Missy] 3. >> 3. Μήπως αυτό έχει νόημα; Ταξινόμηση της; Μήπως να σας δώσω έναν αριθμό; Μήπως σας δώσει μια σειρά; [Missy] Ένας αριθμός. >> Είναι ένας αριθμός. Αλλά αξίζει τον εκτύπωση, έτσι πρόκειται να σας δώσω κάποια σειρά. Ένα πράγμα που μπορούμε να κάνουμε για να ελέγξετε αυτό έξω είναι αν κάνουμε $ var = 1 + 2 και τότε λέμε ηχώ του gettype, έτσι είμαστε χρησιμοποιώντας ένα τρίτο είδος της εκτύπωσης εδώ. Τώρα μπορούμε να δούμε τι συμβαίνει εδώ. Εδώ τι έχουμε είναι ότι έχεις έναν ακέραιο από αυτό. Ακόμα κι αν είχαμε την προσθήκη αυτής της σειράς σε έναν αριθμό, δεν είχαμε πάρει μια σειρά από αυτό, ακριβώς όπως Missy είπε. Είχαμε πάρει έναν ακέραιο. Εντάξει, γι 'αυτό ας δούμε, το επόμενο επάνω, Kevin. CS + 50? >> [Kevin] 50. [Nate H.] 50. Μήπως αυτό έχει νόημα; [Kevin] Ναι. [Nate H] Γιατί; Γιατί έχει νόημα για σας; [Kevin] Επειδή αυτό είναι που έχει μόνο τη συμβολοσειρά, αριθμός που έχει μηδενική αξία. Ναι, πολύ. Είδος διφορούμενες καταστάσεις, αλλά είναι καλό να γνωρίζουμε τι συμβαίνει. Στέλλα, τι θα συμβεί στη συνέχεια με τον αριθμό 1 + σειρά 2; [Στέλλα] 3. >> 3 ξανά. Και σε αυτή την περίπτωση, δεν θα έχουμε ένα string ή έναν αριθμό; Ας δώσει σε αυτό μια δοκιμή. Ο καθένας γρηγορότερα από ό, τι να πάρω την απάντηση; Charlotte; Ω, didn't-εντάξει, ας δούμε, θα πάμε να κάνουμε το ίδιο πράγμα όπου έχουμε έναν αριθμό συν ένα string, και θα πάμε να επαναλάβω τον τύπο, να δούμε τι έχουμε. Μπορούμε επίσης να πάρετε έναν ακέραιο. Δεν έχει σημασία ποια είναι η χορδή, η οποία το ένα είναι ο αριθμός. Είμαστε ακόμα πρόκειται να πάρει έναν ακέραιο. Είναι ακόμη σε εξέλιξη για να κάνουμε ό, τι μπορούμε να περιμένουμε. Εντάξει, έτσι Σαμ, τι περίπου 90 + 9 μπουκάλια μπύρας στον τοίχο; [Sam] 99. >> 99. Δεν μπουκάλια μπύρας στον τοίχο, όμως. Μας δίνει λίγο περισσότερες πληροφορίες για το τι συμβαίνει. [Sam] Αν είχε γράψει 9 σε επιστολές τότε θα έχετε 90, έτσι δεν είναι; [Nate Η.] Ναι. Το ερώτημα ήταν αν είχαμε γράψει 9 από το Ν-Ι-Ν-Ε θα έχουμε πάρει 99 ή 90; Θα έπαιρνα 90. Είναι κυριολεκτικά απλά ψάχνουν για ψηφίο χαρακτήρες. Δεν είναι αρκετά έξυπνος για να αναγνωρίσει τον αριθμό λέξεων και αυτό το πράγμα. Ναι. [Φοιτητικό] Υπάρχει ένα τέτοιο πράγμα ως typecasting στην PHP; Υπάρχει, και αυτό είναι ακριβώς ο τρόπος που θα το κάνει σε C. Τι γίνεται 10/7, Charlotte; [Charlotte] 1,4285. [Nate Η.] Ναι, ναι, τι θα μπορούσε να είναι έκπληξη για το θέμα αυτό; Τι θα συνέβαινε αν έκανε το ίδιο είδος του πράγματος σε C, αν το κάνατε 10/7 στο C; [Charlotte] Θα σας δώσω μόνο-ανάλογα με το πώς typecasted υποθέτω θα σας δώσει μόνο έναν περιορισμένο αριθμό των ψηφίων μετά την υποδιαστολή. Ναι, έτσι, ένα περιορισμένο αριθμό των ψηφίων μετά την υποδιαστολή. Τι άλλο θα μπορούσε να είναι-θα σας δώσει όλα τα ψηφία μετά την υποδιαστολή; Συχνά δεν είναι, οπότε και πάλι, ανάλογα με το πώς εσείς το typecasting μπορεί ή δεν μπορεί να το μετατρέψει σε ένα αριθμό κινητής υποδιαστολής. Εδώ ήταν το είδος της ωραίο που το έκανε. Αν είχαμε δείξει την πλάτη σας όταν αρχίσαμε να κάνουμε αυτό το είδος του πράγματα σε C κατά πάσα πιθανότητα θα έχουν κάνει λίγο περισσότερο νόημα ότι δεν πήγαινε προς 1. Και τελικά, Jamie, τι περίπου 7 + αλήθεια; [Jamie] 8. >> 8. Τι σημαίνει αυτό; Υποθέτω ότι δίνει ακριβώς ισχύει την τιμή 1. Ναι. Τι θα συμβεί αν το αλλάξουμε αυτό να false; [Φοιτητικό] 7. Ναι, ώστε να θυμάστε, όπου μιλάμε για αυτές τις δυαδικές τιμές, 1 είναι για, 0 είναι μακριά; Τώρα έχουμε αλήθεια είναι 1, 0 είναι ψευδής, και μπορεί να μην έχετε δει αυτό στα παραδείγματα C που έχουμε κάνει αυτό το παρελθόν εξάμηνο, αλλά ιστορικά ο τύπος bool στην C δεν έχει ένα πραγματικό τύπο, έτσι οι άνθρωποι έχουν χρησιμοποιήσει 0 και 1 στο χώρο του αληθές και ψευδές. Αυτό είναι μια εκδήλωση που. Εντάξει, έτσι ώστε το ένα σημαντικό μέρος για όλα αυτά είναι ότι έχουμε αυτούς τους διαφορετικούς τύπους. Μπορούν να αλληλεπιδρούν μεταξύ τους. Μπορούν συχνά αλληλεπιδρούν μεταξύ τους με τρόπους που είναι ωραία, όπως έχουμε δει εδώ. Είναι ωραίο να είναι σε θέση να έχουν σειρά 1 και τον αριθμό 2, προσθέστε τους μαζί και να πάρετε 3. Αυτό είναι λογικό. Ωστόσο, όταν είστε γραπτώς ιστοσελίδες, και ειδικά όταν είστε επεξεργασία είσοδο του χρήστη, έτσι λένε έχετε γράψει μια μορφή web που συλλέγει πληροφορίες από τον χρήστη και, στη συνέχεια πηγαίνει για την επεξεργασία στο πίσω άκρο, από την πλευρά του διακομιστή σε κώδικα PHP σας αν είστε αναμένει ότι η τιμή που ο χρήστης πληκτρολογήσει και υποβάλλεται στη φόρμα σας να είναι ένας ακέραιος ή να είναι ένας αριθμός κινητής υποδιαστολής ή κάτι τέτοιο θα πρέπει να ρίξει ρητά και στη συνέχεια, κάντε κάποιο είδος ελέγχου. Δεν θέλετε να βασίζεστε μόνο σε αυτό το σύστημα juggling τύπου για να κάνει τα πράγματα λειτουργούν, κυρίως για λόγους ασφαλείας και μόνο για την ευρωστία της ιστοσελίδας σας. Απλά κάτι που πρέπει να θυμάστε ότι κάθε φορά που είστε χειρισμό δεδομένων φόρμας, κάτι που έρχεται στη θέση τους ή get superglobals βεβαιωθείτε ότι έχετε επικυρώσει πάντα και να το μετατρέψει και να typecast. Και ακριβώς όπως μιλούσαμε για μια στιγμή πριν την στοιχειοθεσία στην PHP είναι ακριβώς η ίδια όπως και στην C, όπου έχετε τις παρενθέσεις και τότε ο τύπος. Κρατήστε αυτό κατά νου. Μια λειτουργία που θα έρθει σε πρακτικό όταν το κάνετε αυτό το έχουμε χρησιμοποιήσει-και αυτό είναι το είδος του σαν ένα μέρος- έχουμε τη χρήση αυτής της λειτουργίας gettype εδώ να καταλάβω τον τύπο μιας μεταβλητής, και ενώ αυτό είναι βολικό για τον εντοπισμό σφαλμάτων και να δούμε τι είδους μιας μεταβλητής είναι δεν θέλετε να χρησιμοποιήσετε αυτήν, για παράδειγμα, σε μια κατάσταση όπου είστε έλεγχο για να δούμε αν gettype των $ var = ακέραιος κάνουμε κάτι. Αυτό είναι κακό, κακό, κακό. Αντ 'αυτού υπάρχουν αυτές οι λειτουργίες είναι ακέραιος αριθμός που ονομάζεται, είναι string, Είναι σειρά που θέλετε να χρησιμοποιήσετε αντ 'αυτού, οπότε σε αυτή την περίπτωση ό, τι θα ήθελα να κάνω αντί αυτόν τον τύπο εδώ είναι η χρήση είναι ακέραιος var. Και από όπου και αν συχνά αναφέρεται είναι is_ * με την έννοια ότι θα μπορούσε να αντικαταστήσει την * με ακέραιο αριθμό, string, κ.λπ., και μόνο για να βεβαιωθείτε ότι πραγματικά γρήγορα είναι αυτό είναι int php. Μοιάζει που μπορείτε να κάνετε είναι είτε int ή υπάρχει ακέραιος, καθώς; Ναι, το ψευδώνυμο, έτσι ακέραιο int ψευδώνυμα. Cool. Πώς τα πάμε; Ας επιταχύνει το ρυθμό λίγο. Τώρα θα πάμε να μιλήσουμε για πίνακες, έτσι ώστε να μπορείτε να δείτε στο επόμενο μέρος του spec μιλάμε για το πώς συστοιχίες σε PHP είναι ελαφρώς διαφορετικές απ 'ότι είναι στο C. Στην πραγματικότητα, είναι το είδος του ένα αμάλγαμα του οι πίνακες που έχετε έρθει να ξέρουμε και αγαπάμε σε C όπου όλα είναι του ίδιου τύπου αποθηκεύονται διαδοχικά και συνεχόμενα στη μνήμη, και έχετε αυτά τα αριθμητικά δείκτες. Έχετε δείκτη 0, ο δείκτης 1, δείκτης 2, και μπορείτε να αποθηκεύσετε αυτές τις τιμές σε δείκτες. Μπορείτε επίσης σε C, όταν έγραψε Ορθογράφος, πολλοί από εσάς έκανε την προσέγγιση hash πίνακα, και είδατε ότι εκεί είχε ένα διαφορετικό είδος της αποθήκευσης, όπου ήμασταν χαρτογράφηση το κλειδί για μια τιμή, έτσι ώστε όταν προσπάθησε να αποθηκεύσετε κάτι σε πίνακα κατακερματισμού θα έπρεπε να διευκρινιστεί ότι θα ήθελε να το αποθηκεύσετε με ένα ειδικό κλειδί, και ότι οι βασικές καθοριστεί η θέση της αξίας και όπου θα πρέπει να αποθηκεύονται. Έχετε είδος πήρε και τις δύο αυτές έννοιες που συμβαίνουν την ίδια στιγμή σε μια σειρά PHP, και ως εκ τούτου, καλούμε συχνά αυτές τις συνεταιριστικές συστοιχίες όπου είμαστε συνδέει ένα κλειδί σε μια τιμή. Σε αυτό το επόμενο μέρος μιλάμε για μια απλή σειρά PHP όπου έχουμε πλήκτρα a, b, και c, όλες οι χορδές, χαρτογράφηση για τους ακέραιους αριθμούς 1, 2, και 3. Και μπορείτε να έχετε τα κλειδιά διαφόρων τύπων. Μπορείτε να έχετε μερικά πλήκτρα που είναι χορδές, μερικά πλήκτρα που είναι ακέραιοι αριθμοί. Μπορείτε να έχετε τις τιμές των διαφόρων τύπων. Μπορείτε να έχετε μια τιμή που είναι ένα string, μια τιμή που είναι ένας ακέραιος, μια τιμή που είναι ένα αντικείμενο ή άλλο συστοιχία, για παράδειγμα, όλα στο ίδιο αντικείμενο array, το οποίο είναι το είδος της παράξενο. Δεν χρειάζεται να έχετε έναν πίνακα που πήρε μόνο έναν τύπο στοιχείου σε αυτό. Μπορείτε να έχετε πολλά διαφορετικά πράγματα που συμβαίνουν εκεί. Το άλλο πράγμα που πρέπει να σημειωθεί είναι ότι όταν βλέπεις κάτι σαν αυτό στον κώδικά σας, η οποία ισχύει σε PHP για να δηλώσει έναν πίνακα ακριβώς όπως αυτό, 0, 1, 2, 3, 4, 5, που θα δηλώνουν την αρχική τιμή $ arr να είναι αυτή η σειρά. Αλλά αυτό που είστε πραγματικά να πάρει κάτω από το καπό είναι αυτό το είδος της έμμεσης γενιά των κλειδιών, όπου έχουμε 0-0, 1 έως 1, 2 για 2, 3 έως 3. Και αποδεικνύεται ότι ακόμα και αν έχετε μια σειρά σαν αυτόν τον τύπο εδώ όπου έχετε ένα, β και γ, όπως τα πλήκτρα και στη συνέχεια μπορείτε να αρχίσετε να χρησιμοποιείτε τη μέθοδο array ώθηση για να αρχίσετε να χρησιμοποιείτε αυτό το array όπως μια στοίβα, ώστε να μπορείτε να δείτε ότι αυτό το αντικείμενο πίνακα, αυτή η σειρά είναι πραγματικά υπερβολικής επιβάρυνσης. Μπορούμε να το χρησιμοποιήσετε ως μια σειρά. Μπορούμε να το χρησιμοποιήσετε ως ένα πίνακα κατακερματισμού. Μπορούμε να το χρησιμοποιήσετε ως μια στοίβα. Όταν ξεκινάτε πιέζει τα πράγματα σε αυτό το φάσμα το πρώτο πράγμα που ωθεί σε αυτό θα είναι δείκτης 0 και, στη συνέχεια δείκτη 1 και δείκτη 2. Μπορείτε να πάρετε αυτό το είδος της έμμεσης παραγωγής των κλειδιών εκτός και αν αναφέρεται ρητά τους. Ο τρόπος που έχετε καθορίσει ρητά κλειδιά, φυσικά, είναι με τη χρήση αυτής της σημειογραφίας βραχίονα, η οποία είναι παρόμοια με συστοιχίες εκτός του ότι αντί να επιτρέπει μόνο ακέραιος εδώ, τώρα θα αφήσουμε τίποτα. Αν θέλετε να σας κλειδί είναι ένα string, θα το ορίσετε σαν αυτό. Αν θέλετε να είναι ένα int, μπορείτε να καθορίσετε με το int που θέλετε να χρησιμοποιήσετε. Ερωτήσεις σχετικά με την μέχρι τώρα; Ένα από τα ωραία πράγματα για αυτή την ιδέα είναι ότι μπορείτε μόνο να έχετε πάντα μία τιμή αποθηκεύεται με ένα συγκεκριμένο κλειδί. Αν πάμε πίσω για να μας συσκευή, επιτρέψτε μου να διαγράψετε κάποια από αυτά τα πράγματα. Και ας πούμε ότι προετοιμάσει μια σειρά για να είναι 0, 1, 2, γίνει. Αν τώρα ξέρω ότι, για παράδειγμα, αν έχω echo $ arr [0] Είμαι πρόκειται να πάρει η τιμή 0 εκτυπώνονται, και δεδομένου ότι δεν μπορεί να υπάρξει μόνο ποτέ να είναι μια τιμή που είναι αποθηκευμένη για ένα συγκεκριμένο κλειδί αν έχω αποθηκεύσει κάτι στο $ arr [0], πω, τότε ξέρω πότε echo $ arr [0] και πάλι Είμαι δεν πρόκειται να πάρετε 0 εκτυπωθεί όπως και πριν. Είμαι μόνο πρόκειται να πάρει ένα. Έτσι, αυτό είναι σαν να λέει ότι δεν μπορώ να έχω $ arr [0] αποθήκευση 2 διαφορετικές αξίες. Δεν μπορεί να αποθηκεύσει τόσο 0 και το string ένα, όπως αυτό αντικαθιστά κυριολεκτικά ό, τι ήταν στα $ arr [0] προηγουμένως. Ο λόγος Φέρνω αυτό επάνω είναι να τρέξει, να δούμε τι θα συμβεί. Δείτε εδώ ότι πήρα 0 εκτυπώνονται και στη συνέχεια εδώ κάτω. Δεν υπάρχει καμία νέα γραμμή εκεί επειδή ήμουν τεμπέλης και δεν τίθεται ότι μέσα Τι είναι δροσερό για αυτό είναι που μπορούμε να χρησιμοποιήσουμε αυτό ως έναν τρόπο να συλλάβει την ιδέα ενός συνόλου όπου δεν μπορούμε να έχουμε πολλαπλά κλειδιά εντός μιας συστοιχίας. Δεν μπορούμε να έχουμε ίδια πλήκτρα μέσα σε έναν πίνακα. Δεν μπορώ να έχω πλήκτρο 0 και 1 και αξία πλήκτρο 0 και την αξία ενός ή το πλήκτρο 0 και αξία αλήθεια. Τα πλήκτρα είναι όλα-υπάρχει μόνο 1 κλειδί στον πίνακα. Ακόμα κι αν μπορείτε να έχετε την ίδια αποθηκευμένη αξία πολλές φορές στο κάτω συστοιχία διαφορετικών κλειδιών δεν είναι δυνατόν να έχουν την ίδια πλήκτρα πολλές φορές σε PHP-array σας. Αν δούμε σε αυτό το επόμενο πρόβλημα, unique.php, όπου θέλουμε να ανοίξουμε ένα αρχείο PHP που περιέχει μια λίστα των χορδών, μια σειρά ανά γραμμή, και θέλουμε να βρούμε όλες τις μοναδικές σειρές σε αυτό το αρχείο το μόνο που έχουμε να κάνουμε είναι να χρησιμοποιήσουμε μία από αυτές τις PHP συστοιχίες και να χρησιμοποιήσετε τις χορδές στο αρχείο ως τα κλειδιά αυτού του πίνακα και να κρατήσει την ενημέρωση σειρά μας, καθώς αποθηκεύουν αυτά τα νέα κλειδιά. Όπως διαβάζουμε κάθε γραμμή από το αρχείο μπορούμε να το αποθηκεύσετε στη συστοιχία, και στο τέλος θα έχουμε τα κλειδιά μας σε σειρά μας το σύνολο των μοναδικών ταινιών εντός του αρχείου. Μήπως αυτό έχει νόημα; Ας δούμε πώς αυτό λειτουργεί. Εμείς πάμε για να ανοίξει, σύμφωνα με την προδιαγραφή, ένα νέο αρχείο που ονομάζεται unique.php. Open. Ωχ, συγνώμη, νέο αρχείο. Εμείς πάμε για να ξεκινήσει με το ίδιο έναρξης και λήξης ετικέτες. Εμείς πάμε για να το αποθηκεύσετε στο τμήμα 9, και θα πάμε να το ονομάσουμε unique.php. Εντάξει, τώρα μεγεθύνετε Η ιδέα εδώ είναι να ανοίξετε ένα αρχείο, διαβάζονται σε συνδυασμό με το αρχείο γραμμή. Για κάθε γραμμή στο αρχείο θα έχουμε μια σειρά όπου έχουμε  η γραμμή ως βασική μας. Και στη συνέχεια, όταν φτάσουμε στο τέλος εδώ Κλειδιά $ arr είναι οι μοναδικές γραμμές από το αρχείο αφού γνωρίζουμε ότι αν έβαλα σε γραμμή αυτού του πίνακα πολλές φορές θα κρατήσει μόνο παρακάμπτοντας την παλιά τιμή, και μπορούμε να βάλουμε πραγματικά γραμμή σε σειρά, όπως η ίδια ακριβώς έτσι. Αυτό είναι το είδος της παράξενο. Είμαστε αποθήκευση το ίδιο ζεύγος κλειδιών αξία ξανά και ξανά και ξανά, αλλά από τη στιγμή που είναι εγγυημένο ότι θα υπάρξουν μόνο 1 κλειδί που ονομάζεται γραμμή οπότε αν έχουμε ένα αρχείο που να λέει-ένα αρχείο από τους θορύβους των ζώων και έχει υφάδι, υφάδι, νιαούρισμα, νιαούρισμα, moo, moo, και κάθε φορά που διαβάζουμε ένα θόρυβο έξω ζώων όπως υφάδι και να το αποθηκεύσετε σε σειρά μας έχουμε υφάδι, και στη συνέχεια η δεύτερη φορά αποθηκεύουμε το υφάδι θα αντικαταστήσει την πρώτη φορά που θα αποθηκευτεί. Στο τέλος θα έχουμε μόνο μία καταχώρηση στον πίνακα για καθένα από τα θορύβους ζώων σε ζώο αρχείο θορύβους μας. Μήπως εσείς αισθάνεστε σίγουροι ότι μπορείτε να αντιμετωπίσουν το άνοιγμα ενός αρχείου σε PHP; Ένας τρόπος για να γίνει αυτό, ας πάμε πάνω από αυτό τον τρόπο γρήγορα-ένα για να το κάνει είναι με fopen, όπως είδαμε νωρίτερα. Μπορείτε να fopen some_file.txt. Μπορείτε να το ανοίξετε σε κατάσταση ανάγνωσης, όπως ακριβώς και στην C. Αυτό είναι ένα απολύτως καλός τρόπος για να το κάνουμε. Μπορείτε, επίσης, στη συνέχεια, για την ανάγνωση στη γραμμή από το αρχείο της γραμμής έχουν τις ίδιες λειτουργίες, πολλοί από αυτούς, που σας έκανε σε C. Έχετε fgets. Έχετε feof, αν δεν μας αρέσει με χρήση της διότι, θυμηθείτε, αυτό δεν ήταν μεγάλη σε C. Μπορείτε να το κάνετε με τον ίδιο τρόπο, αλλά εδώ είναι ένα πραγματικά δροσερό πράγμα. Λυπούμαστε, αλλά δεν θέλω να κάνω $ file, αλλά υπάρχει μια λειτουργία που ονομάζεται αρχείο σε PHP, και αυτή η λειτουργία ακριβώς εδώ είναι δροσερό, γιατί διαβάζει όλο το περιεχόμενο του αρχείου που θα ορίσετε, τόσο some_file.txt, διαβάζει όλο το περιεχόμενο αυτού του αρχείου σε μια σειρά και στη συνέχεια σας επιτρέπει να επαναλάβει πάνω του, η οποία είναι αρκετά ικανό. Αν πάμε, για παράδειγμα, του πλοηγού μας και κοιτάμε το Google για αυτό το αρχείο PHP μπορείτε να δείτε εδώ ότι το εγχειρίδιο μας λέει ότι το αρχείο διαβάζει ολόκληρο το αρχείο σε μια σειρά, και μπορούμε να file_get_contents να επιστρέψει τα περιεχόμενα ενός αρχείου ως συμβολοσειρά, αλλά συνήθως παίρνει απλώς ως μια σειρά είναι πραγματικά ωραία, επειδή ό, τι κάνει είναι αυτό που σπάει έτσι ώστε κάθε στοιχείο στη διάταξη είναι μία γραμμή του αρχείου, οπότε αν κοιτάξουμε αρχείο 0, αυτή είναι η πρώτη γραμμή του αρχείου. File 1, δεύτερη γραμμή, φάκελος 2, τρίτη γραμμή, και ούτω καθεξής και ούτω καθεξής. Δεν θα ήταν ωραίο αν αυτό ήταν το μόνο που είχε να κάνει σε C; Αρκετά ικανό. David έδειξε αυτό σε διάλεξη, και το ιδίωμα που έδειξε ήταν ότι, παράλληλα με το πρότυπο μας για βρόχου στην PHP να τις είχαμε και για ($ i = 0? θ <10? i + +), και μπορείτε να το κάνετε αυτό σε PHP πάρα πολύ, το ίδιο πράγμα- έχουμε και αυτό το δροσερό κατασκεύασμα που ονομάζεται foreach. Foreach είναι πολύ βολικό όταν πάνω από την επανάληψη ή συστοιχίες αυτές τις δομές δεδομένων επειδή σας επιτρέπει να τραβήξετε έξω κάθε στοιχείο του πίνακα χωρίς να χρειάζεται να το κάνετε μόνοι σας με μη αυτόματο τρόπο τη δημιουργία ευρετηρίου, χωρίς να χρειάζεται να δημιουργήσετε με μη αυτόματο τρόπο μια μεταβλητή δείκτη, την αύξησή της, τραβήξτε προς τα έξω την τιμή στον πίνακα σε εκείνο το σημείο, γιατί αυτό είναι ένα πολύ κοινό πράγμα που κάνει. Πιθανώς να έχετε κάνει ότι τόνοι φορές όταν κάνατε πράγματα C πάνω από το εξάμηνο, οπότε με αυτό το foreach μπορούμε βρόχο πάνω από το αρχείο αυτού του πίνακα, και η σύνταξη είναι ότι θέλουμε τώρα βρόχο πάνω από αυτού του πίνακα και διευκρινίζει ότι η μεταβλητή θα πάμε να χρησιμοποιήσετε για να αποθηκεύσετε το στοιχείο αυτής της συστοιχίας τοπικά, τοπικά στο πεδίο αυτού του βρόχου foreach, είναι θα πάμε να το ονομάσουμε γραμμή. Εάν είναι ένα αρχείο του μόνο λόγια και υπάρχει μια λέξη σε μια γραμμή θα μπορούσαμε να το ονομάσουμε λέξη, καθώς, πραγματικά ακριβώς να σας δώσει αυτό το όνομα, ό, τι θέλετε να το ονομάσετε, και στη συνέχεια, μέσα στο βρόχο που μπορείτε να κάνετε ό, τι θέλετε με αυτή τη μεταβλητή γραμμή. Αν αυτό δεν είναι αρκετό για να πάρει την αξία του πίνακα και μπορείτε επίσης να θελήσετε να πάρετε ο δείκτης μαζί με αυτό μπορείτε να καθορίσετε ένα όνομα για το ευρετήριο καθώς και την αξία, και τώρα έχετε πρόσβαση σε 2 μεταβλητές. Έχετε $ i γραμμή και όπου $ i είναι ο δείκτης στον πίνακα, και η γραμμή είναι η γραμμή που ανακτώνται από το αρχείο. Για παράδειγμα, αν θέλαμε να εκτυπώσετε 0 ηχώ γραμμή του αρχείου όπως αυτό, θα μπορούσαμε να το κάνουμε ακριβώς όπως αυτό, "Γραμμή $ i του αρχείου είναι $ γραμμή," και εδώ είναι κάτι που επίσης δεν έχουν δει ακόμα ούτε όπου έχω μόνο εντελώς αγνοούνται πάνω από% d όλο αυτό το% s επιχείρηση ότι θα έπρεπε να ασχοληθεί με το C, και αντ 'αυτού έχω πάει κατ' ευθείαν στο γραπτώς τις μεταβλητές στην ουρά σειρά μου. Αυτό ονομάζεται μεταβλητή παρεμβολή, παρεμβολή σειρά Όπου και αν γέμιση τις μεταβλητές δεξιά, και ο διερμηνέας PHP Είναι αρκετά έξυπνος, όταν διαβάζει μέσα από μια σειρά που αρχίζει με διπλά εισαγωγικά- δεν μονά εισαγωγικά, με ενιαίο εισαγωγικά δεν μπορείτε να το κάνετε αυτό- αλλά με διπλά εισαγωγικά, όπως να διαβάζει μέσα από αυτό ψάχνει για τις μεταβλητές. Είναι το κυνήγι τους κάτω, και αν βλέπει μεταβλητές θα πάρει την τιμή της μεταβλητής και πράγματα στη σειρά, αν μπορεί να το μετατρέψει σε μια παράσταση συμβολοσειράς, η οποία είναι αρκετά ικανό. Προς το παρόν, ας σχολιάσει το υπόλοιπο των πάντων, αποθηκεύσετε αυτό, και τι μπορούμε να κάνουμε τώρα είναι να μπορούμε να ανοίξουμε ένα αρχείο ότι μπορούμε να ονομάσουμε some_file.txt-ας δημιουργήσουμε ένα νέο αρχείο- και μπορούμε να βάλουμε σε ένα μάτσο ανοησίες πράγματα εδώ μόνο για να δοκιμάσουν τα πάντα, αποθηκεύσετε, καλέστε το some_file.txt, όπως κάνω εδώ στην κορυφή, και τώρα αν σμίκρυνση ακριβώς για να βεβαιωθείτε ότι όλα είναι στον ίδιο κατάλογο- μοιάζει έχω unique.php και some_file.txt στον ίδιο κατάλογο. Αν τρέξω php unique.php δούμε πώς θα εκτυπώνει κάθε γραμμή στο αρχείο μου και τι είναι η γραμμή; Αυτό είναι αρκετά ισχυρό, έτσι δεν είναι; Κοιτάξτε, πήρε 3 γραμμές του κώδικα για να ανοίξει ένα αρχείο. Λοιπόν, 4 γραμμές κώδικα. Δεν μπορώ να μετρήσω σήμερα, σαφώς. Αλλά πραγματικά ενδιαφέρουσα μόλις 2 γραμμές κώδικα, επειδή τα άλλα 2 ήταν τα άγκιστρα, αλλά σε αυτή την πολύ κωδικό ήμασταν σε θέση να ανοίξετε ένα αρχείο, αντικείμενα σε αυτό, τραβήξτε προς τα έξω τον αριθμό της γραμμής και τη γραμμή ίδια και να το εκτυπώσετε. Cool πράγματα. Charlotte. [Charlotte] Έχω μια ερώτηση σχετικά με τη σύνταξη. Έτσι foreach ασχολείται με κάθε γραμμή του αρχείου που ανοίγετε, και στη συνέχεια, όταν θέλετε να κάνετε τα πράγματα με κάθε γραμμή το κάνετε ακριβώς όπως και στη συνέχεια, συνδέουν την τιμή. [Nate H] Τι μπορείτε να κάνετε εδώ, το ερώτημα ήταν η foreach έχει να κάνει με τη σειρά, έτσι ώστε η σύνταξη foreach είναι πραγματικά foreach, και παρατηρήστε ότι δεν υπάρχει χώρος ή οτιδήποτε μεταξύ του και για την κάθε μία. Θα πρέπει να πάει δεξιά δίπλα στο άλλο, και στη συνέχεια παίρνει σε μία συστοιχία, και στη συνέχεια να έχετε αυτήν την άλλη λέξη-κλειδί, όπως ονομάζεται, που πρέπει να είναι εκεί, και στη συνέχεια, μετά την ως μπορείτε να βάλετε είτε ένα όνομα μεταβλητής, στην οποία περίπτωση θα πάμε να το τράβηγμα από τις τιμές του πίνακα, όχι οι δείκτες, ή αν το κάνεις όπως έχουμε γράψει κάτω μπορείτε να πάρετε τα κλειδιά και τις τιμές. Έχετε foreach στοιχείο του πίνακα ή το ζευγάρι του πίνακα ως πληκτρολογηθεί στην αξία ή απλά ως αξία. Ανάλογα με το τι χρειάζεστε, αν δεν χρειάζεστε τα πλήκτρα, τότε μπορείτε να πάτε με την αξία. Αν θέλετε τα πλήκτρα μπορείτε να πάτε μαζί τους πάρα πολύ. [Charlotte] Επίσης, συνειδητοποιήσαμε ότι ποτέ δεν δήλωσε το i ή γραμμή. Πώς γνωρίζουν καν τι είναι; [Nate H] Τι εννοείτε με τον όρο δηλώνουν; [Charlotte] Εμείς ποτέ δεν τους είπε τι θ ή γραμμή μέσα. [Nate H] Ποτέ δεν είπα τον υπολογιστή ή το τι θ γραμμή σημαίνει από την άποψη της- [Charlotte] ότι είναι ή ότι ευρετήριο αλλά επιλέγουν να φτιάξουν- [Nate H] Εμείς ποτέ δεν είπε ότι αυτό υποτίθεται ότι είναι ο δείκτης ή το κλειδί και η αξία, και αυτό γιατί αυτή είναι η PHP διερμηνέα. Αυτό χρησιμεύει ως δήλωση και λέει εντάξει, το κλειδί θα είναι μια μεταβλητή που ονομάζεται i αποθηκεύεται σε μια μεταβλητή που ονομάζεται i. Η τιμή πρόκειται να αποθηκεύονται σε μια μεταβλητή που ονομάζεται γραμμή, έτσι αυτό χρησιμεύει ως δήλωση αυτών των μεταβλητών και λέει $ i είναι ένα κλειδί, και $ γραμμή είναι μια αξία. Ναι, Ella. [Ella] Αν δεν τα πλήκτρα γίνονται αριθμητικά πώς να αποφασίσει ποια σειρά πρόκειται να εκτυπώσετε τα πάντα; Είναι ακριβώς όπως τη σειρά που μπήκε μέσα; [Nate H] Ας δώσει μια δοκιμή. Ας δημιουργήσουμε μια μεταβλητή που ονομάζεται σύλλ, και μπορούμε να κάνουμε ένα πηγαίνει στο 7. Ας πούμε 0 πηγαίνει σε άλλο πίνακα με 1, 2, ή μήλο. Ας πούμε 7 πηγαίνει προς 1, β πηγαίνει στο 2, και 3 πηγαίνει στο 4. Αυτό είναι το είδος του ένα τρελό αναζητούν παράδειγμα επειδή είμαστε ανάμειξη χορδές και ακέραιοι σε όλη τη χώρα. Δεν υπάρχει καμία πραγματική τάξη σε αυτό το φάσμα. Θέλω να πω, θα μπορούσαμε να παραγγείλετε τα πάντα σε αλφαβητική σειρά με τα πλήκτρα. Θα μπορούσαμε να παραγγείλετε ό, τι αλφαβητικά από την αξία. Θα μπορούσαμε να προσπαθήσουμε και να λάβει υπόψη το γεγονός ότι κάποιοι είναι χορδές, μερικά είναι ints, και θα μπορούσαμε να προσπαθήσουμε και να τα μετατρέψετε όλες στον ίδιο τύπο και να δούμε τι θα συμβεί, ή θα μπορούσαμε να τους εξετάσει στην αξία στην οποία μπήκαμε ήδη τους όπου βάζουμε αυτόν τον τύπο στην πρώτη, αυτός ο τύπος στο δεύτερο, αυτός ο τύπος στην τρίτη θέση, αυτός ο τύπος στην τέταρτη θέση, κ.λπ.. Ας δούμε τι θα συμβεί όταν θα εκτελέσετε αυτόν τον κώδικα. Αν μετακινηθείτε προς τα κάτω και να κάνουμε το ίδιο είδος του πράγματος, και εδώ δεν είναι η εκτύπωση των νέων γραμμών. Όταν το διάβασα τα πράγματα από το αρχείο ήταν συμπεριλαμβανομένων των νέων γραμμών στις τιμές, η οποία γι 'αυτό εκτυπωθούν όμορφα, ενώ εδώ δεν το έκανε, έτσι ώστε να είναι ο λόγος που όλα μαζί smushed. Ας προσθέσουμε σε αυτό νέα γραμμή μόνο για να κάνει τα πράγματα ωραία. Ας επανάληψη, έτσι και εδώ δούμε τι συνέβη. Είναι τυπωμένα τα πάντα στην σειρά με την οποία βάζουμε στη σειρά. Κάνει διαφυλάξουν την τάξη σε αυτή την έννοια. Πηγαίνοντας πίσω σε αυτό το πρόβλημα της uniques όπου θέλουμε να είμαστε σε θέση να επαναλάβει πάνω από ένα αρχείο, και θα σας δώσουμε το some_file.txt, και θα πάμε να επαναλάβει πάνω του σαν αυτό. Είπαμε ότι ήθελε να χρησιμοποιήσει μια σειρά για να βεβαιωθείτε ότι είχαμε πήρε όλα του τα μοναδικές γραμμές από εκεί, και θα μπορούσαμε να το κάνουμε αυτό πολύ εύκολα με μόνο την αποθήκευση σε έναν πίνακα που δηλώνουν φυσικά εκτός του πεδίου εφαρμογής του βρόχου, και είπαμε ότι αν χρησιμοποιούσαμε τις γραμμές στο αρχείο, όπως τα κλειδιά σε σειρά μας αν έχουμε εισέλθει σε μια γραμμή αντίγραφο θα ήμασταν παρακάμπτοντας την προηγούμενη τιμή. Δεν είναι ποτέ δυνατόν να έχουν 2 κλειδιά τα οποία είναι πανομοιότυπα με την ίδια σειρά. Μπορούμε να κάνουμε ακριβώς αυτό. Θα απαλλαγούμε από αυτή τη δήλωση ηχώ εδώ. Εδώ είμαστε αποθήκευση τη γραμμή στο αρχείο σειρά μας χρησιμοποιώντας τον εαυτό του ως το κλειδί. Τίποτα σε αυτό, και αποδεικνύεται ότι δεν χρειάζεται καν αυτό το κλειδί. Δεν χρειαζόμαστε ότι i μεταβλητή. Σε αυτό το σημείο, αν επρόκειτο να κάνουμε ένα άλλο βρόχο foreach και ήμασταν σε βρόχο πάνω από κάθε σύλλ γραμμή και τώρα αν echo-ουπς, συγγνώμη. Δεν μπορείτε να χρησιμοποιήσετε το κόμμα. Πρέπει να χρησιμοποιήσουμε αυτό ως λέξη-κλειδί. Τώρα αν echo γραμμή θα πρέπει να πάρει όλα τα μοναδικά λόγια στο αρχείο. Αν πάμε μέχρι some_file.txt, και ας πούμε ότι κάνουμε μήλο, μπανάνα, μήλο, μήλο, μπανάνα, αν είμαστε εκτύπωση από όλα τα μοναδικά λόγια σε αυτό το αρχείο θα πρέπει να πάρει μόνο μήλο και μπανάνα για να εκτυπώσετε. Εάν αποθηκεύσετε αυτό, τώρα εδώ θα σε μεγεθύνετε, php unique.php, και ta-da. Έχουμε uniqued επιτυχώς το αρχείο. Το τελευταίο μέρος αυτού του προβλήματος σας ζητά να ταξινομήσετε αυτή σειρά προτού να εκτυπωθούν επειδή σε αυτό το απλό παράδειγμα ότι έχουμε κάνει μόνο ήμασταν τυχεροί, υπό την έννοια ότι ο φάκελος- κάναμε αυτή την σκηνοθετημένη παράδειγμα με μήλα και μπανάνες. Ήταν ήδη ταξινομημένο. Αλλά χρησιμοποιώντας την απλή λειτουργία του είδους, μπορείτε να ταξινομήσετε μια σειρά, η οποία είναι αρκετά ικανό. Το τελευταίο πράγμα που ήθελα να μιλήσω μαζί σας για πολύ γρήγορα είναι ότι αυτό το είδος της PHP είναι όλα ωραία και καλά, και είναι εξαιρετικά βολικό να γνωρίζουμε πώς να το κάνουμε, αν ποτέ χρειαστεί να κάνετε λίγο, τα πράγματα γρήγορα προγραμματισμού. Για παράδειγμα, αν χρειάζεται να γράψετε ένα πρόγραμμα το οποίο, ας πούμε, βάζει τους πάντες σε τμήματα Είμαι δεν πρόκειται να πάει και να το γράψετε σε C. Είναι πρόκειται να είναι μακρά. Είναι πρόκειται να είναι το είδος του πόνου, ειδικά αν υπάρχουν αρχεία που εμπλέκονται, ακριβώς όπως εσείς έχετε δει. Είναι τόσο ωραίο που με ακριβώς αυτό το πολύ κώδικα εδώ ήμασταν σε θέση να σχίσει μέσω ενός αρχείου, τραβήξτε προς τα έξω όλες τις μοναδικές τιμές και να τις εκτυπώσετε από πίσω. Ωστόσο, για τις αναθέσεις σας, για τα έργα σας, αν είστε δημιουργία ιστοσελίδων με την PHP είναι η δύναμη που είμαστε τρέχει PHP αρχεία μας μέσα από αυτό το διερμηνέα, και ο διερμηνέας επεξεργασία πάντα μέσα στις ετικέτες PHP, αφήνοντας όλα τα άλλα άθικτη και φτύσιμο από τα αποτελέσματα. Μπορούμε να το κάνουμε αυτό για να οικοδομήσουμε HTML προγραμματισμού. Τώρα, αν πάμε πίσω στο spec, το τελευταίο πρόβλημα στο spec συνομιλίες σχετικά με αυτή την ιδέα των συγκεντρώσεων και τη δημιουργία ενός drop-down μενού, το οποίο θα μπορεί να είναι ή να μην θέλουν να κάνουν, ανάλογα με το τι τελικά το έργο σας κάνει, που επιτρέπει στο χρήστη να επιλέξει από μια λίστα με όλες τις πιθανές συγκεντρώσεις μία συγκέντρωση τους. Τώρα, αυτό είναι το είδος του πόνου για να πληκτρολογήσετε αυτό έξω και πρέπει να τα κάνουμε όλα αυτά το χέρι, ειδικά όταν έχετε να βεβαιωθείτε ότι έχετε όλα τα στηρίγματα γωνία στο σωστό μέρος και όλα τα εισαγωγικά στο σωστό μέρος, Έτσι με την PHP, μπορείτε να το κάνετε αυτό με προγραμματισμό, και μπορείτε να το κάνετε αυτό πολύ γρήγορα. Ας δούμε πώς μπορείτε να το κάνετε αυτό. Εμείς πάμε για να ανοίξει ένα νέο αρχείο. Εμείς πάμε για να θέσει σε PHP ετικέτες μας. Εμείς πάμε για να το ονομάσουμε concentrations.php, και τώρα, όταν το κάνετε αυτό, το είδος του ένα καλό πράγμα για να σκεφτεί για όταν προσπαθείτε να συνδυάσετε και να ταιριάξετε PHP σας και HTML σας υπολογίζει, εντάξει, αυτό είναι το μέρος που θέλω να παράγουν προγραμματισμού; Ποιο είναι το μέρος που μπορώ να δημιουργήσει προγραμματισμού; Είναι αλήθεια ότι μπορείτε να κάνετε πάντα για την HTML σας μέσα από PHP μπλοκ. Μπορείτε να επαναλάβω όλα τα HTML ως συμβολοσειρές. Για παράδειγμα, αν θέλω να αρχίσουν να κάνουν τις ετικέτες επιλέξτε μέσα από PHP Μπορώ να πω ηχώ, ας πούμε επιλέξτε το όνομα = συγκέντρωση, και στη συνέχεια κάτω θα μπορούσα να έχω μια άλλη ετικέτα ηχούς ή ένα άλλο που ονομάζεται ηχώ κλείστε το επιλέξετε. Αυτός είναι ένας τρόπος για να το κάνουμε αυτό, γιατί ό, τι είναι κυριολεκτικά πρόκειται να κάνουμε είναι εκτυπώσετε αυτή τη σειρά όταν είναι τρέχει μέσω του διερμηνέα PHP, έτσι το αποτέλεσμα θα είναι HTML. Εάν αποθηκεύσετε αυτό το αρχείο ως έχει αυτή τη στιγμή και τρέχω php concentrations.php κοιτάξτε τι έχω. Πήρα αυτό το άνοιγμα κλείσιμο επιλέξτε ετικέτα. Αν ήμουν στη θέση να το κάνουμε αυτό και εγώ επρόκειτο να σώσει αυτό το αποτέλεσμα σε ένα αρχείο, ας πούμε, concentrations.html-αναμονή, μοιάζει με το l έχει περάσει στην άλλη πλευρά, τώρα αν θα ανοίξει εδώ concentrations.html βλέπετε έχω ένα έγκυρο αρχείο HTML. Είναι αυτό το είδος της παράξενο; Είμαστε χρησιμοποιώντας PHP για να δημιουργήσετε HTML, να δημιουργήσει έγκυρο HTML. Ο τρόπος που το κάνουμε εμείς είναι που έχει ακριβώς την εκτύπωση PHP η HTML που θέλουμε να εκτυπώσετε. Αυτό είναι κυριολεκτικά πώς PHP ιστοσελίδες εργάζονται. Όταν επισκέπτεστε μια ιστοσελίδα που σας στέλνει σε κάτι σαν κάτι, κάτι, κάτι dot com κάθετο index.php ο υπολογιστής είναι κυριολεκτικά πρόσκληση προς index.php, τρέχει μέσω του διερμηνέα PHP, σκουπίδια και ό, τι βγει αυτό είναι στέλνοντας πίσω στο πρόγραμμα περιήγησης και λέγοντας hey, πρόγραμμα περιήγησης, ερμηνεύουν αυτό ως HTML. Το ωραίο είναι ότι μπορεί να είναι ένας πόνος για να γράψει συνεχώς ηχώ, ηχώ, ηχώ, ηχώ και περικλείει τα πάντα σε εισαγωγικά σαν αυτό, οπότε αν θέλετε να γράψετε η HTML που πρόκειται να είναι στατική τον εαυτό σας μπορείτε να το κάνετε αυτό, όπως, έβαλε έξω, κλείστε το, και στη συνέχεια, εδώ το μόνο που τίθεται στο εσωτερικό των PHP tags αυτό που ξέρετε θέλετε να δημιουργήσετε μέσω προγραμματισμού, και σε αυτή την περίπτωση είναι οι ετικέτες επιλογή που είναι ένας πόνος για να δημιουργήσει. Για παράδειγμα, θα μπορούσε να δημιουργήσει χιλιάδες ετικέτες επιλογή κάνοντας κάτι τέτοιο, $ i <1000, i + + και λέγοντας ηχώ αξίας των δικαιωμάτων προαίρεσης = $ κραυγών, δεν μπορώ να το κάνω αυτό. Λοιπόν, ας δώσουμε ένα προσπαθήσουμε και να δούμε τι θα συμβεί. $ I και στη συνέχεια, λέγοντας $ i