DOUG LLOYD: έτσι έχουμε γίνει πολλή δουλειά σε C, και C είναι ένα πραγματικά δροσερό γλώσσα επειδή σας δίνει η ικανότητα να βουτήξει πραγματικά χαμηλού επιπέδου σε προγράμματα σας. Παίρνουμε να κάνουμε τα πράγματα όπως Πραγματικά λεπτό χειρισμό επιμέρους bytes της μνήμης. Θυμηθείτε ότι πραγματικά Δείκτες μας επιτρέπουν αυτή την ευελιξία. Αλλά εμείς πρέπει πάντα να έχουμε ότι το επίπεδο fine-grain λεπτομέρειες στα προγράμματά μας; Μάλλον όχι, έτσι δεν είναι; Και αν θέλουμε να έχουμε ένα trade-off μεταξύ της ύπαρξης είναι σε θέση να κάνει πραγματικά, πραγματικά τα πράγματα λεπτό και πραγματικά, πραγματικά μεγάλα πράγματα που δεν έχουμε να σκεφτούμε περίπου, δεν έχουμε να εφαρμόσουν αυτές οι πραγματικά μεγάλες ιδέες, αν από όπου και αν έχουν ήδη ενσωματωθεί για εμάς, γενικά για την κατασκευή μεγάλων προγράμματα ή μεγάλα έργα, θα πρόκειται πιθανώς να σφάλουν προς την πλευρά ότι έχουν περισσότερα πράγματα γλώσσα που χτίστηκε το για εμάς, αντί η low-level πράγματα. Και αυτό είναι όπου η PHP έρχεται πραγματικά σε. Τώρα, ένας από τους λόγους ότι διδάσκουμε την PHP CS50 είναι ότι είναι σε μεγάλο βαθμό εμπνέεται από Γ Και στην πραγματικότητα, κατά τη γνώμη μου, στην πραγματικότητα υπάρχουν δύο προγονικών Γλώσσες που είναι πολύ κοινό στις μέρες μας. C και LISP. Και είναι προγονικά γλώσσες Επειδή κάθε άλλη σύγχρονη προγραμματισμού γλώσσα που έχει αναπτυχθεί Από τότε είναι εμπνευσμένη από το ένα ή το άλλο συντακτικά. PHP είναι πολύ παρόμοια συντακτικά έως C, ενώ γλώσσες όπως Σχεδίου, για παράδειγμα, η οποία μπορεί να έχετε ακούσει, είναι σε μεγάλο βαθμό εμπνέεται από μια γλώσσα που ονομάζεται LISP, η οποία είναι μια παλαιότερη γλώσσα. Έτσι, ο λόγος που διδάσκουμε PHP σε CS50 είναι ότι, γνωρίζοντας C ως θεμελιωδώς όπως κάνετε σε αυτό το σημείο, μαζεύοντας PHP, το οποίο σας δίνει το ικανότητα να κάνει τα πράγματα πολύ υψηλότερο επίπεδο από C κάνει, δεν είναι ότι ένα μεγάλο μέρος ενός εμπόδιο, επειδή έχετε ήδη το βασική ιδέα της σύνταξης. C είναι γύρω για σχεδόν 45 χρόνια σε αυτό το σημείο. PHP είναι εδώ και περίπου 20 χρόνια. Και το γεγονός ότι 25 χρόνια στο μεταξύ, οι προγραμματιστές καθορίζεται ότι θα πολύ μάλλον έχουν υψηλότερο επίπεδο ικανοτήτων, και τα λάθη και τους αγώνες από τα 20 χρόνια στα μεταξύ οδήγησε σε PHP και άλλες σύγχρονες γλώσσες. PHP είναι μια μεγάλη επιλογή των γλώσσα για το λογισμικό ότι για allow-- λογισμικό that-- όπου μπορείτε Πρέπει να κάνουμε τα πράγματα ότι C είναι πραγματικά περίπλοκη. Έτσι, για παράδειγμα, την εργασία με χορδές σε C είναι πολύ περίπλοκη, επειδή όπως γνωρίζουμε, χορδές σε C είναι πραγματικά ακριβώς συστοιχίες χαρακτήρων. Δεν είναι ένα ενσωματωμένο τύπο δεδομένων. Ή ίσως πιο ουσιαστικά, κάτι που δεν καλύπτουν ούτε καν σε C, Τι θα συμβεί αν χρειάζεται να κάνετε κάποια δικτύωση των υπολογιστών; Εντάξει? C έχει την ικανότητα να το κάνει, αλλά είναι τόσο απόκρυφες και τόσο δύσκολο να το κάνουμε πραγματικότητα. Δεν θα ήταν ωραίο αν το γλώσσας είχε ένα ενσωματωμένο, εύκολο τρόπο για την υλοποίηση της δικτύωσης; Και PHP είναι μια γλώσσα που κάνει ότι, ή διευκολύνει ότι, αρκετά περισσότερο. Όπως είπα, η PHP είναι πολύ μεγάλο βαθμό εμπνέεται εκπροσωπούμενη από την C. Η σύνταξη είναι πολύ παρόμοια. Και έτσι ελπίζουμε ότι αυτό θα καταστήσει την μετάβαση από το ένα στο άλλο λίγο πιο ήπια από ό, τι μερικά άλλες γλώσσες μπορεί να είναι. Για να αρχίσετε να γράφετε PHP, μόλις ανοίξει ένα αρχείο με την επέκταση .php αρχείου. Τεχνικά αυτό δεν είναι στην πραγματικότητα απαιτείται, αλλά αν θέλετε τα πράγματα όπως σύνταξη τονίζοντας IDE, έτσι ώστε ο τύπος ονόματα ή τα ονόματα των μεταβλητών, τις λειτουργίες, Ξέρετε, τις λέξεις-κλειδιά της γλώσσας επισημαίνονται με μια ιδιαίτερο χρώμα, που σε γενικές γραμμές θέλετε να ονομάσετε τα αρχεία σας με μια συγκεκριμένη επέκταση αρχείου. Έτσι, έχουμε το όνομα του αρχείου μας με ένα .php επέκταση, αλλά στη συνέχεια και με την PHP, όλος ο κώδικας PHP γράφουμε ότι αρχείο πρέπει να περικλείεται σε αυτά τα PHP διαχωριστικά που βλέπουμε εδώ στην οθόνη. Αγκύλη? Php για να ξεκινήσετε. Στη συνέχεια, γράφουμε όλα PHP μας κώδικα που θέλουμε στο μεταξύ. Και μετά ? αγκύλη για να κλείσει. Αν δεν το κάνουμε αυτό, τότε τι πρόκειται να συμβεί; Δεν πρόκειται να διακοπεί η λειτουργία του. Δεν πρόκειται να πραγματικά καταστρέψει το πρόγραμμά μας. Αλλά δεν πρόκειται να έχουν το αποτέλεσμα που θέλουμε. Τι πρόκειται να συμβεί, πραγματικά, είναι ότι όταν προσπαθούμε και να εκτελέσετε αυτό το πρόγραμμα, ό, τι δεν μεταξύ αυτών διαχωριστικά πρόκειται να εκτυπωθεί επί λέξει. Δεν πρόκειται να πράγματι εκτελέσει τον κώδικα, πρόκειται απλά εκτυπώστε το αυτολεξεί. Τώρα γιατί συμβαίνει; Έτσι C είναι αυτό που είναι γνωστό ως μια μεταγλωττισμένη γλώσσα. Είστε πιθανώς εξοικειωμένοι με το στάδιο δημιουργίας των προγραμμάτων σας, μετατρέποντας τα αρχεία .c και .h αρχεία σε ένα ενιαίο εκτελέσιμο με τη μάρκα, ιδίως με τη χρήση Clang ως δημιουργός μας. PHP, όμως, δεν έχουν αυτό το ισοδύναμο. PHP είναι αυτό που ονομάζεται ερμηνευμένη γλώσσα. Και τι σημαίνει αυτό; Λοιπόν, αυτό σημαίνει ότι δεν έχουμε να μετατρέψετε πηγαίο κώδικα μας σε μηδενικά και μονάδες εκ των προτέρων. Αντίθετα, υπάρχει ένα πρόγραμμα, η οποία καλείται επίσης PHP, που καταλαβαίνει και PHP μπορεί είδος του να το κάνει σχετικά με τη μύγα. Αυτό δεν είναι πραγματικά ακριβώς ακριβείς, αλλά είναι μια πολύ καλή αναλογία του τι συμβαίνει. Είναι ερμηνεία εκείνων μηδενικά και αυτοί on the fly. Και έτσι, αν δεν γνωρίζει πώς να επεξεργαστεί κάτι, αν δεν ξέρουν πώς να διαδικασία PHP, ίσως ήθελε να θέσει αυτό το κείμενο εκεί, σωστά; Πιθανόν να ήθελε να βάλει τον κώδικα εκεί, ακόμα κι αν δεν είναι μεταξύ PHP-- τα διαχωριστικά PHP. But-- γι 'αυτό δεν πρόκειται να το διαγράψετε για σας, είναι ακριβώς πρόκειται να το απορρίψει ουσιαστικά. Έτσι πρόκειται να εκτυπώσετε έξω στην οθόνη. Αυτό φαίνεται σαν να είναι ένα κακό πράγμα, αλλά στην πραγματικότητα είναι πρόκειται να είναι μια πραγματικά καλό πράγμα, όπως θα δείτε όταν μιλάμε για PHP ανάπτυξης ιστοσελίδων, γιατί σημαίνει ότι μπορούμε να διασπείρω PHP και HTML. Μπορούμε να τα χρησιμοποιούν από κοινού να δημιουργία μιας πιο δυναμικής ιστοσελίδας. Αλλά περισσότερα για αυτό στο βίντεο σε PHP ανάπτυξης ιστοσελίδων. Έτσι ποια είναι η σύνταξη της PHP; Αυτό είναι ό, τι αυτό το βίντεο είναι όλα σχετικά. Ας μιλήσουμε γι 'αυτό. Έτσι για να ξεκινήσουμε, μεταβλητές. Υπάρχουν μεταβλητές της PHP. Υπάρχουν μόνο δύο μεγάλα διαφορές από C. Το πρώτο είναι ότι υπάρχει Δεν προσδιοριστή τύπου. Δεν έχουμε να πούμε int, char, float, όλα αυτά τα πράγματα. Δεν έχουμε να κάνουμε αυτό πια. PHP είναι μια σύγχρονη γλώσσα. Δεν μπορώ να καταλάβω τι είστε προσπαθεί να κάνει ή να κάνει μια καλύτερη Υποθέτω ότι ως προς αυτό που προσπαθούμε να κάνουμε. Έτσι, αυτό είναι πολύ ωραίο. Το άλλο πράγμα είναι ότι όλες οι μεταβλητές τα ονόματα πρέπει να ξεκινήσει με το σύμβολο του δολαρίου. Αυτό είναι απλά κάτι για να το συνηθίσετε. Είναι λίγο περίεργο, γιατί είναι τόσο ότι η PHP μπορεί να καταλάβει τι είναι μια μεταβλητή και τι δεν είναι. Έτσι, κάθε όνομα μεταβλητής ξεκινά με το σύμβολο του δολαρίου. Έτσι, σε C θα μπορούσαμε να πούμε κάτι όπως αυτό, int x = 54. Δεν έχουμε να κάνουμε αυτό πια στην PHP. Μπορούμε να πούμε μόνο $ x = 54. Και θα μπορούσαμε να πούμε, για παράδειγμα, σε C, αν είχαμε λίβρα-περιελάμβανε την .h CS50 αρχείο κεφαλίδας, θα μπορούσαμε να πούμε φράση String = "Αυτό είναι CS50." Δεν έχουμε να το κάνουμε αυτό σε PHP, όμως. Μπορούμε να πούμε μόνο $ φράση = "Αυτό είναι CS50." Και στην πραγματικότητα, string είναι τώρα ένα ενσωματωμένο τύπο δεδομένων σε PHP, ή μάλλον PHP καταλαβαίνει τι είναι ένα string. Είναι ξεχωριστό από μία συστοιχία των χαρακτήρων σαν να είναι σε C. Όλα τα αγαπημένα σας υπό όρους δηλώσεις C εξακολουθούν να είναι διαθέσιμες για να το χρησιμοποιήσετε. Έτσι, δεν έχει μεγάλη μετάβαση εκεί. Μπορούμε να say-- μπορούμε να έχουμε εάν δηλώσεις σαν αυτό. αν $ y 43, ή $ z = 15. Έτσι, αυτό είναι αρκετά απλή. Μπορούμε να έχουμε, αν και οι άλλοι. Μπορούμε να έχουμε, αν και άλλο αν. Και παρατηρήσετε κάτι πολύ ωραία εδώ, και αυτό Είναι το είδος του ένα από αυτά πλεονεκτήματα της PHP έναντι C, ανακοίνωση ποια είναι η λειτουργία που δεν χρησιμοποιείτε εδώ; Είμαστε χρησιμοποιώντας == να συγκρίνετε μεταβλητή, $ name, σε μια σειρά. Εμείς δεν θα μπορούσε να το κάνει αυτό σε C, έτσι δεν είναι; Είχαμε να χρησιμοποιήσετε μια λειτουργία που ονομάζεται StrComp ή StrEndComp ή οποιαδήποτε των σχετικών ξαδέλφια του. Και έτσι βλέπουμε ήδη αυτά τα πλεονεκτήματα. Δεν έχουμε να κάνουμε κάτι ως ανόητη ή ίσως unintuitive όπως καλέσετε μια συνάρτηση που ονομάζεται StrComp αν απλά θέλετε να δοκιμάσετε αν η τιμή ισούται με ένα string. Θα μπορούσα απλά να χρησιμοποιήσετε ισούται ίσων, όπως θα μπορούσα να κάνω τίποτα άλλο. Έτσι, υπάρχει ένα πλεονέκτημα. Μερικές φορές, από τον τρόπο, ίσως δείτε άλλο, αν ως μία λέξη, elseif. Και αυτό είναι εντάξει σε PHP, καθώς και. Έτσι, μερικές φορές μπορείτε να δείτε αυτό. Δεν είναι τυπογραφικό λάθος. PHP καταλαβαίνει elseif στην πραγματικότητα. Δεν ξέρω γιατί αποφάσισε να εφαρμόσει ότι, αλλά όπως έχουμε δει πολλές φορές σε όλη βίντεό μας μέχρι στιγμής, προγραμματιστές μας άρεσε αν μπορούμε να κάνουμε τα πράγματα γρήγορα, έτσι ώστε να απαλλαγούμε από αυτό το χώρο είναι προφανώς ένα μεγάλο πλεονέκτημα. Έτσι, αυτό είναι, αν και elseif. Έχουμε επίσης το τριαδικό φορέα, ανάκληση του παχέος εντέρου ερωτηματικό, για πολύ σύντομη μορφή, εάν άλλος ή υπό όρους διακλάδωση. Και προφανώς, σε αυτό, αυτό που προσπαθούμε να κάνουμε εδώ είναι να ορίσετε τη μεταβλητή $ επιστολή είτε αληθινή είτε ψευδής, ανάλογα με το αν $ var είναι αλφαβητικός χαρακτήρας. Έτσι, αυτό είναι αρκετά παρόμοια με isalpha ότι είμαστε εξοικειωμένοι με από C. Αυτό είναι το είδος της ισοδύναμο σε PHP. Η λειτουργία είναι προφανώς που ονομάζεται ctype_alpha, αλλά αυτό είναι το πώς το κάνουμε στην PHP. Έτσι, όλα αυτά πρόκειται να είναι αυτή, αν $ var είναι ένα γράμμα, $ επιστολή είναι αλήθεια. Αν $ var δεν είναι ένα γράμμα, $ επιστολή είναι ψευδής. Έχουμε επίσης ακόμα δηλώσεις διακόπτη. Θυμόμαστε εκείνους από C, καθώς και. Στην κορυφή υπάρχει, αυτό είναι το πώς το κάνουμε κάτι σαν int πάρει ή να πάρετε κορδόνι. Έτσι η PHP έχει ενσωματωμένη αυτή. Δεν χρειαζόμαστε πλέον τη βιβλιοθήκη CS50. Μπορούμε να χρησιμοποιήσουμε μόνο τη λειτουργία readline. Αυτό που πρόκειται να κάνουμε είναι να εκτυπώσετε έξω από το μήνυμα, «κράτος σας, παρακαλώ, "και στη συνέχεια αναβοσβήνει έγκαιρη αναμονή για το χρήστη να εισάγει κάποιες πληροφορίες. Τώρα παρατηρήστε τι άλλο που μπορούμε να κάνουμε με διακόπτη. Αν έχετε χρησιμοποιήσει πριν, Ίσως να θυμάστε ότι διακόπτη περιορίζεται λίγο πολύ σε ακέραιους αριθμούς και χαρακτήρες, αλλά τώρα μπορούμε να χρησιμοποιήσουμε χορδές. Και στην πραγματικότητα, η δήλωση switch στην PHP είναι αρκετά πιο ευέλικτη από τον ξάδελφό του από C. Βρόχους. Ακριβώς όπως υποθετικοί, το σύνολο των παλιά αγαπημένα σας είναι ακόμα εκεί. Έχουμε ενώ βρόχους που μετράνε από 1 έως 100 σε αυτή την περίπτωση. Έχουμε κάνει, ενώ βρόχους ότι μετράνε 1-100, και έχουμε για βρόχους ότι μετράνε 1-100. Έτσι, δεν υπάρχει μεγάλο άλμα. Η σύνταξη είναι αρκετά πολύ ακριβώς το ίδιο, εκτός από τώρα είμαστε με σύμβολο του δολαρίου αντί μεταβλητή της δήλωσης ακέραιες μεταβλητές ή κάτι τέτοιο για μετρητές μας. Εδώ είναι όπου τα πράγματα παίρνουν μια πολύ καλύτερα από ό, C, όμως. Πίνακες. Έτσι, υπενθυμίζουν όταν ήμασταν μιλάμε για C, προκειμένου για μας να αναπτυχθεί και να συρρικνωθεί σύνολα πληροφοριών, χρειαζόμασταν για να ταξινομήσετε αθέτησης σε αυτήν την ιδέα μιας συνδεδεμένης λίστας, επειδή συστοιχίες C μονιμοποιήθηκαν σε μέγεθος. Εμείς δεν θα μπορούσε να συρρικνωθεί. Εμείς δεν θα μπορούσε να μεγαλώνουν. Είχαμε την ανακατανομή της μνήμης και να κάνει όλη αυτή την τρέλα ή χρησιμοποιήστε συνδεδεμένες λίστες, οι οποίες καταλαμβάνουν πολύ λίγο περισσότερο χώρο. Αλλά σε PHP, συστοιχίες είναι δεν είναι σταθερό σε μέγεθος πια. Μπορούν να αναπτυχθούν και να συρρικνωθεί. Έτσι και πάλι, αυτά τα 20 χρόνια που υπήρχε μεταξύ της πρώτης εκδοχής της C και η πρώτη έκδοση της PHP, αποφασίσαμε ότι, ξέρετε, θα ήταν πραγματικά μεγάλη αν μπορούσαμε να το κάνουμε αυτό. Και γι 'αυτό εφαρμοστεί αυτό. Έτσι PHP συστοιχίες δεν έχουν καθοριστεί σε το μέγεθος, και επειδή η PHP δεν έχει πραγματικά προγραμματιστής έχουν μέτωπο προς έννοιες των τύπων, μπορούμε να ανακατεύετε διαφορετικούς τύπους δεδομένων σε συστοιχίες μας, πάρα πολύ. Γι 'αυτό και δεν χρειάζεται καν να χρησιμοποιήσει όλα ακεραίων ή όλα τα πλωτά σημεία, μπορούμε να έχουμε ένα μείγμα όλων διαφορετικά είδη σε μια ενιαία συστοιχία. Δηλώνοντας ένας πίνακας είναι αρκετά απλή. Είναι ακριβώς όπως οποιαδήποτε άλλη μεταβλητή. $ nums = array (1, 2, 3, 4), συστοιχία είναι συνάρτηση ότι είναι χτισμένο σε PHP που θα δημιουργήσει μια σειρά για σας. Αυτό δημιουργεί μια σειρά από τέσσερις τιμές, αριθμούς σε αυτήν την περίπτωση, που ονομάζεται $ nums. Και υπάρχουν περισσότερα από ένα τρόπο να το κάνουμε. Και θα πάμε να δείτε αυτό το πολύ σε PHP. PHP έχει αναπτυχθεί από πολλούς διαφορετικούς άνθρωποι και μεγαλώνει και μεγαλώνει και μεγαλώνει. Υπάρχει συνήθως όχι μόνο δύο ή τρεις τρόποι να γίνει κάτι στην PHP, υπάρχει συνήθως σαν 10 ή 20. Εδώ είναι ακριβώς ένα άλλο κοινό τρόπος για να δηλώσετε έναν πίνακα. $ nums = αγκύλη 1, 2, 3, 4. Έτσι, αυτό είναι ένα είδος παρόμοιο με γωνία Γ br-- σγουρά σημειογραφία τιράντες, μάλλον. $ - ή θα ήταν τετράγωνο nums int παρένθεση ισούται σγουρά στήριγμα 1, 2, 3, 4. Στην PHP είναι $ nums = πλατεία στηρίγματα 1, 2, 3, 4. Αλλά και οι δύο από αυτά τα παραδείγματα εδώ να μου δώσει μια σειρά τεσσάρων στην περίπτωση αυτή ακέραιοι. Τι γίνεται αν θέλω να αναστρέψει κάτι τώρα; Καλά μπορώ να πω μόνο $ nums 4, η οποία και πάλι, είμαστε ακόμα μετράει από το 0 εδώ στην PHP, θα είναι η πέμπτη στοιχείο της συστοιχίας. Μπορώ μόνο να πω ότι. Είμαι δεν πρόκειται να υποστούν μια SEG κατηγορήσω, γιατί σειρά μου είναι ακριβώς πρόκειται να αυξηθεί για να φιλοξενήσει αυτό. Αυτό είναι πολύ ωραίο, έτσι δεν είναι; Και στην πραγματικότητα, δεν χρειάζεται καν να προσδιορίζουν όπου θέλω να το πω. Μπορώ να πω μόνο αυτό και μόνο αναστρέψει το δικαίωμα για μέχρι το τέλος, Ή θα μπορούσα ακόμα και απλά λένε $ nums 20 ή 1.000. Δεν έχει τόση σημασία. Είναι ακόμα ακριβώς πρόκειται να αναστρέψει το δικαίωμα στον τελικό. Γι 'αυτό και μπορούν να αναπτυχθούν, και as-- είμαστε Δεν πρόκειται να το καλύψει εδώ, αλλά μπορώ να συνδέω ή ταινίες στοιχεία από τη σειρά, καθώς και, και η σειρά θα συρρικνωθεί για να φιλοξενήσει ότι τώρα που λείπουν ή κενός χώρος. Δεν υπάρχει άλλος τρόπος για να αναστρέψει κάτι πάνω σε μια σειρά, η οποία είναι μια λειτουργία που ονομάζεται array_push. Έτσι και πάλι, ακριβώς αυτή η ιδέα της ύπαρξης είναι σε θέση να κάνουμε τα πράγματα με πολλούς διαφορετικούς τρόπους. Έτσι έχουμε δει τρεις διαφορετικούς τρόπους τώρα προκειμένου να αναστρέψει ένα άλλο στοιχείο σε μια σειρά. Έτσι, αυτό προσθέτει ένα άλλο στοιχείο στο τέλος του πίνακα $ nums. Και μπορούμε να συγχέουμε τους τύπους των δεδομένων μας. Γι 'αυτό και θα μπορούσε να έχει μια σειρά από μη 1, 2, 3, 4, αλλά 1, αλήθεια, 3, 4, όπου η αληθινή είναι μια Boolean, και στη συνέχεια αν θέλω να το θέτει σαν ένα άλλο στοιχείο στην εν λόγω διάταξη, ίσως ένα string, το string "πέντε", θα μπορούσα να το κάνω αυτό. Και τώρα σειρά μου θα 1 είναι, αλήθεια, 3, 4, πέντε. Η λέξη πέντε, όχι ο ακέραιος 5. Έτσι, μια μεγάλη ευελιξία εκεί. Η ευελιξία παίρνει ακόμα καλύτερα, όμως, επειδή η PHP έχει υποστήριξη για κάτι καλείται συνειρμική σειρά. Και το είδος της μίλησε αόριστα σχετικά με συνειρμική πίνακες σε C στο πλαίσιο των πινάκων hash, επειδή τι συστοιχίες συνειρμική είναι πραγματικά όλα περίπου κάνουν κλειδί αντιστοιχίσεις ζευγάρι αξία. Και σε αυτή την περίπτωση, το αν keys-- είμαστε εξοικειωμένοι με συστοιχίες από C, τα πλήκτρα είναι αριθμούς ευρετηρίου. 0, 1, 2, 3. Και οι τιμές είναι τι θα βρούμε ότι σειρά 0, πίνακας 1, πίνακας 2, και ούτω καθεξής. Έτσι, τα πλήκτρα είναι ευρετήρια, και οι τιμές είναι ό, τι είναι στη θέση αυτή συστοιχίας, καθορίζεται από την εν λόγω δείκτη. Αλλά σε PHP, δεν έχουμε να κάνουμε αυτό έννοια της διάταξης 0, πίνακας 1, πίνακας 2 πια. Μπορούμε τώρα να χρησιμοποιήσετε τις πραγματικές λέξεις να χαρτογραφήσουν τα κλειδιά για τις τιμές. Και έτσι θα μπορούσα να πω κάτι τέτοιο. Θα μπορούσε να δημιουργήσει μια σειρά με τη χρήση του πλατεία σύνταξη βραχίονα ως εξής. $ πίτσες = αγκύλη "τυρί" και, στη συνέχεια, Αυτό το είδος της διπλής συμβολισμό βέλος, 8.99 ", πεπερόνι," βέλος 10.99-- 9.99, και ούτω καθεξής. Και έτσι ό, τι συμβαίνει εδώ; Τι είμαι πραγματικά κάνει; Είμαι δημιουργώντας τις βασικές χαρτογραφήσεις ζεύγους αξίας. Έτσι, αντί να λέει, για παράδειγμα, πίτσες 0, κομμάτια 1, 2 πίτσες, Τώρα μπορώ να πω πίτσες τυρί, πεπερόνι πίτσες, και αναφέρονται στις τιμές που συνδέονται με αυτά. Τόσο εδώ είναι τα κλειδιά μας σε πράσινο. Τυρί, πεπερόνι, λαχανικών, βουβάλια κοτόπουλο. Εδώ είναι το βέλος που κάνει αυτό το κλειδί χαρτογράφηση ζεύγους αξίας. Και στη συνέχεια, εδώ είναι οι τιμές σε αυτή τη θέση του πίνακα. Έτσι είναι σαν να λέμε σειρά 0 ισούται με 8,99. Το κλειδί είναι μηδέν. Η τιμή είναι 8,99. Τώρα μπορώ να πω τυρί πίνακα, ή σε αυτή περίπτωση πίτσες τυρί, το τυρί είναι το κλειδί, και αυτό που βρίσκω σε τυρί πίτσες είναι 8,99. Αυτή είναι η τιμή που θα βρείτε εκεί. Έτσι μπορώ να πω τα πράγματα αρέσει. τυρί πίτσα $ = 7,99. Πείτε Είμαι έχοντας μια πώληση. Θέλω dis-- θέλω να περνάω η τιμή της πίτσας τυριού. Ή μπορώ να χρησιμοποιήσω το φυτικό πίτσα, ως μέρος μιας κατάστασης, ή μπορώ να προσθέσω ένα νέο στοιχείο για να μου σειρά, όπως ακριβώς θα μπορούσα να κάνω στο παρελθόν. Μπορώ να προσθέσω ένα νέο στοιχείο σε αυτό συνειρμική σειρά με το πλήκτρο "μπέικον" και η τιμή 13,49. Αλλά αυτό το είδος του προβλήματος εισάγει, εάν σκέφτεστε για το για ένα δευτερόλεπτο. Πώς θα μετακινηθείτε μέσα από αυτή τη σειρά; Δικαίωμα? Στην C, θα είχαμε μόνο ένα για το βρόχο, συνήθως, ότι θα τρέξει από το 0 έως το μέγεθος του πίνακα μείον 1. Η συστοιχία έχει n στοιχεία σε, το έγκυροι δείκτες είναι 0 έως n μείον 1. Έτσι, θα μπορούσαμε να χρησιμοποιήσουμε ένα for loop για να βήμα μέσα από κάθε στοιχείο. Αλλά αυτό δεν είναι πραγματικά η υπόθεση πια, σωστά; Τώρα όπου έχουμε κλειδί ζεύγους τιμών αντιστοιχίσεις όπου τα κλειδιά είναι λέξεις, πώς μπορούμε να επαναλάβετε σε όλες τις λέξεις; Λοιπόν, ευτυχώς, η PHP έχει ένας τρόπος για να ασχοληθεί με αυτό το πάρα πολύ, και έτσι θα πηδήσει πίσω σε θηλιές για ένα δευτερόλεπτο να εισαγάγει ένα τέταρτο είδος βρόχο που υπάρχει στην PHP που ονομάζεται βρόχο foreach. Και τι ένας βρόχος foreach δεν είναι είναι ουσιαστικά η ίδια ιδέα. Μπορείτε να το χρησιμοποιήσετε για οποιοδήποτε είδος της συστοιχίας. Αλλά είναι βασικά η ίδια ιδέα με ένα βρόχο for, εκτός αντί της χρήσης αριθμούς ευρετηρίου, απλά έχουν αυτό το παράξενο σύνταξη όπου Σας καλούν κάθε στοιχείου ένα όνομα για τους σκοπούς της παρούσας βρόχου. Έτσι, στην περίπτωση αυτή, foreach ($ array όπως $ key). Βασικά, όπως αυτό το σχόλιο σημειώσεις, στο εσωτερικό του εν λόγω βρόχου foreach, πρόκειται να πάει πέρα ​​από κάθε στοιχείο $ συστοιχία, η οποία είναι συνήθως πρόκειται να είναι μια συνειρμική σειρά, αλλά μπορεί πραγματικά να είναι οποιοδήποτε είδος του πίνακα ότι θέλετε στην PHP. Και κάθε φορά που σε ένα για το βρόχο ίσως είπαν $ array αγκύλες $ i, θα μπορούσε απλώς να πω $ κλειδί. Έτσι ώστε $ κλειδί γίνεται ένα ψευδώνυμο για κάθε δείκτης της PHP πίνακα συνειρμική σας, και έτσι μπορείτε να το χρησιμοποιήσετε σαν αυτό. Έτσι, για παράδειγμα, έχουμε τώρα πήρε σειρά πίτσες μας. Έχω το είδος του μπαίνει στη γωνία υπάρχει έτσι μπορούμε να το χρησιμοποιήσουμε για να κάνουμε ένα γρήγορο παράδειγμα. Αν πω foreach ($ πίτσες $ πίτσα), καλά, τι συμβαίνει; Λοιπόν, θα πάω για να μετακινηθείτε μέσα από κάθε μόνο στοιχείο του πίνακα $ πίτσες, και με τον τρόπο αυτό, Πάω να καλέσω κάθε στοιχείο, όταν είμαι μέσα του σώματος που για βρόχο, $ πίτσα. Έτσι, αυτό είναι ένα είδος stand-in, ανάκληση, ότι $ πίτσα είναι ένα stand-in για να πούμε $ πίτσες αγκύλες $ i αν ήμασταν με τη χρήση ενός βρόχου for, όπου θα μπορούσε να πάει από $ i = 0 για, στην περίπτωση αυτή, $ i = 3. Αν δεν είχαμε βασικά ζευγάρια αξίας εδώ, αυτό θα ήταν το στοιχείο 0, 1, 2, 3, και θα χρησιμοποιήσει ένα βρόχο για να πάει $ 0 πίτσες, πίτσες $ 1, $ 2 πίτσες, $ 3 πίτσες. Έτσι τώρα μόλις $ πίτσα υποκαθιστώντας για το συγκεκριμένο άτομο το κλειδί. Έτσι τι είναι αυτή η μετάβαση να εκτυπώσετε; Είμαι εκτύπωση $ πίτσα. Τι θα πάω να βρείτε at-- αν τυπώσω $ πίτσες, $ i; Δικαίωμα? Αν Πάω να εκτυπώσετε το στοιχείο της i-πίτσες, τι θα πάω να εκτυπώσετε; Πάω να εκτυπώσετε το τιμές σε αυτή τη θέση, έτσι δεν είναι; Όπως και αν κάναμε αυτό, στο πλαίσιο του C, εμείς δεν χρησιμοποιούμε συνήθως iterator μας μεταβλητή int i = 0, i είναι μικρότερο από 3, i ++, για να εκτυπώσετε 0, 1, 2, 3. Είμαστε εκτύπωση σειρά 0, πίνακας 1, πίνακας 2, σειρά 3. Και έτσι αυτό που εκτυπώνει αυτό έξω είναι αυτό. Είναι ο κατάλογος των τιμών. 8.99, 9.99, 10.99, 11.99. Τώρα, μια γρήγορη σημείωση εδώ. Ένας βρόχος foreach δεν σημαίνει απαραίτητα εκτυπώστε τα πράγματα σε τάξη. Δεν είναι εγγυημένο. Τι συνήθως. Είναι συνήθως με βάση τη σειρά τα οποία στοιχεία προστίθενται στη συστοιχία, έτσι απλά το έχουμε αυτό κατά νου. Μπορεί να μην είναι σε τάξη. Αλλά ένας βρόχος foreach θα επαναλάβει σε όλη κάθε στοιχείου του εν λόγω πίνακα. Σε αυτή την περίπτωση, πάλι, ότι η σειρά είναι $ πίτσες. Μπορώ να αλλάξω τη σύνταξη, όμως, αν Θέλω τόσο το κλειδί και την τιμή. Αντί να λέμε $ πίτσες όπως $ πίτσα, μπορώ να το πω αυτό. Και αν κοιτάξετε τι έχω με πράσινο χρώμα εδώ, μοιάζει με ένα κλειδί χαρτογράφηση ζεύγους αξίας. Και έτσι αν you-- ακόμα και αν δεν είστε απολύτως σίγουροι για το τι πρόκειται να κάνει, μπορείτε να μαντέψετε ότι $ κάλυμμα πρόκειται να είναι το κλειδί σε αυτή την περίπτωση και $ τιμή θα είναι η τιμή. Έτσι είμαι τώρα αντικαθιστώντας κάθε στοιχείο από $ πίτσες ως βασικό ζευγάρι αξίας, και τώρα μπορώ να αναφερθώ στο κλειδί και η τιμή, η οποία μπορεί, σε πρακτικό, για παράδειγμα, ως ακολούθως. «Μια ολόκληρη" - αυτό είναι ένα πολύ εκτύπωση συνεχίζεται here-- «στο σύνολό της» topping "πίτσα κοστίζει $" τιμή, και στη συνέχεια Τυπώσω μια περίοδο και μια ανάστροφη κάθετο n. Μέχρι τώρα, η προκήρυξη και πάλι δεν έχω πρόσβαση σε ένα κλειδί, $ κάλυμμα, και μια τιμή, $ τιμή. Έτσι, μπορείτε να μαντέψετε τι είναι αυτό πρόκειται να εκτυπώσετε; Υπάρχει πολλή δηλώσεις εκτύπωσης, αλλά υπάρχει μόνο μία ανάστροφη κάθετο n, γι 'αυτό πρόκειται να εκτυπώσετε κάτι για μια entire-- σε μια ενιαία γραμμή κώδικα. Αν μπορώ να αναφερθώ στο πλήκτρο και η αξία, τότε τώρα, αντί απλώς να είναι σε θέση για την εκτύπωση των τιμών, Μπορώ να εκτυπώσετε κάτι τέτοιο. «Μια ολόκληρη πίτσα τυρί κοστίζει $ 8,99." Και τώρα είμαι με τη χρήση όλων των keys-- τυρί, πεπερόνι, λαχανικά, βουβάλια chicken-- και οι τιμές. 8.99, 9.99, 10.99, 11.99 Έτσι, αυτό είναι απλώς ένα διαφορετικό τρόπο να κάνει έναν βρόχο foreach ότι αντί μόνο που σας δίνει πρόσβαση στις τιμές, δίνει ακριβώς you-- σας δίνει πρόσβαση στα πλήκτρα και οι τιμές. Έτσι εκτύπωση πληροφορίες. Έχω ήδη κάνει μια-δυο διαφορετικούς τρόπους, μπορεί να έχετε παρατηρήσει. Οι δύο λειτουργίες έχουμε κατά κύριο λόγο δει είναι εκτύπωσης και ηχώ. Και για λίγο πολύ όλες τις προθέσεις και σκοπούς, είναι ακριβώς το ίδιο. They're-- υπάρχει μια πολύ λεπτή διαφορά που δεν είναι καν αξίζει να μπουν, αλλά βασικά παντού μπορείτε να χρησιμοποιήσετε εκτύπωσης που πιθανώς να χρησιμοποιήσετε echo, όπως καλά. Και αυτό δεν είναι το μόνο δύο. PHP έχει πολλά διαφορετικά τρόποι για να εκτυπώσετε τα πράγματα, και έχει επίσης τρόπους για να ενσωματώσει μεταβλητές στη μέση της συμβολοσειράς. Έτσι, ανάκληση από τους C, κάνετε θυμάμαι ποια λειτουργία μπορούμε να χρησιμοποιήσουμε για να αντικαταστήσει τις μεταβλητές σε πράγματα που θέλετε να εκτυπώσετε; Πιθανόν να χρησιμοποιείτε αυτό λειτουργούν αρκετά. printf, σωστά; Έτσι, αυτό είναι ό, τι είχαμε πριν από μέσα του πλαισίου του βρόχου foreach μας. Είχαμε αυτά τα πέντε χωριστές δηλώσεις εκτύπωσης, γιατί αυτό ήταν το μόνο τρόπο που πραγματικά γνώριζαν την εποχή πώς να εκτυπώσετε μηνύματα. Δεν ήξερα πώς να ενσωματώσει το μεταβλητή $ topping σε κώδικα PHP μου. Λοιπόν, αν μου μόλις έλαβε μια άγρια ​​εικασία, printf, στην πραγματικότητα θα είχε λειτουργήσει. printf είναι μια λειτουργία που μπορώ να χρησιμοποιήσω σε PHP, όπως ακριβώς μπορεί να το χρησιμοποιήσει σε C. Και έτσι κάτι σαν αυτό, printf, και πάλι, είμαστε εξοικειωμένοι με αυτό. Το πρώτο% s αντικαθίσταται με την αξία των $ κάλυμμα. Ο δεύτερος% s αντικαθίσταται με την αξία των $ τιμής. Και έτσι είμαι interpellating, το οποίο είναι μόνο ένα φανταχτερό τρόπο του λέγοντας ότι έχω κολλήσει το μεταβλητές σε αυτή τη θέση. Έτσι είμαι συνδέοντας $ συμπλήρωση, όπου η κόκκινο% s είναι και $ τιμή εκεί που το γαλάζιο% s είναι, και τότε θα πάρει το μήνυμα, «Μια ολόκληρη πίτσα τυρί κοστίζει $ 8,99." Δεν είναι ο μόνος τρόπος που μπορώ να το κάνω, όμως. Ίσως θα ήθελα να χρησιμοποιήσετε αυτήν τη μέθοδο. Αυτό είναι στην πραγματικότητα αυτό που είναι πιο συχνά που ονομάζεται μεταβλητή επερώτηση. Μπορώ να χρησιμοποιήσω μια ηχώ. Θα μπορούσα να χρησιμοποιήσω μια εκτύπωση πάρα πολύ, όπως θα δούμε. Αλλά τι συμβαίνει εδώ; Πρώτα απ 'όλα, πρέπει να ξεφύγουν από το σύμβολο του δολαρίου. Επειδή θυμάστε, όταν ήμασταν στην πραγματικότητα εκτύπωση των τιμών των πίτσες, Ήμουν πραγματικά τη μορφοποίηση τους ως νομισματικά στοιχεία με το σύμβολο του δολαρίου. Αλλά είμαστε χρησιμοποιώντας σύμβολα του δολαρίου και να εκπροσωπεί τα ονόματα των μεταβλητών στην PHP, και ιδίως όταν είμαι τη χρήση αυτής της μεθόδου της σγουρά μεταβλητή τιράντες μέθοδος επερώτηση, χρειάζομαι να ξεφύγουν από το σύμβολο του δολαρίου μου γι 'αυτό δεν νομίζω ότι μιλώ για μια μεταβλητή. Πρόκειται πραγματικά, κυριολεκτικά να εκτυπώσετε το σύμβολο του δολαρίου. Έτσι, αυτό το είδος της αναλογίσετε να ό, τι βλέπετε στο τέλος εκεί. Δεν το κάνει πραγματικότητα εκτύπωσης ανάστροφη κάθετο n, έτσι δεν είναι; Εκτυπώνει ένα νέο χαρακτήρα γραμμής. Αυτό is-- δεν πρόκειται να Print Εγγραφείτε ανάστροφη κάθετο δολαρίου, πρόκειται να εκτυπώσετε μόνο το σύμβολο του δολαρίου χαρακτήρα. Ίδια ιδέα. Escape sequences, τι αυτά τα πράγματα λέγονται. Να σημειωθεί όμως ότι δεν κάνω κάθε είδους αντικαταστάσεις% s, Είμαι απλά κυριολεκτικά να συνδέσουν σε αυτές τις μεταβλητές. Και έτσι σε this-- τι θα συμβεί εδώ είναι ότι η αξία των $ topping-- πάλι, ακριβώς σύμφωνα με ό, τι έχουμε ήδη μιλάμε για εως τώρα θα πάρει το τυρί συνδεδεμένο εκεί. Και $ τιμή θα ήταν ό, τι αξία είναι σε πίτσες, αγκύλες, τυρί, η οποία ήταν 8,99. Και έτσι αυτό θα μπορούσε επίσης να εκτυπώσετε «Μια ολόκληρη πίτσα τυρί κοστίζει $ 8,99." Και όπως είπα, θα μπορούσα να χρησιμοποιήσω εκτυπώσετε εδώ, αντί της ηχούς, και η λειτουργικότητα είναι λίγο πολύ ακριβώς το ίδιο. Θα εκτυπώσετε το ίδιο πράγμα. Δεν υπάρχει άλλος τρόπος για να το κάνουμε, και αυτό είναι ένα άλλο πλεονέκτημα της PHP που εργάζονται με χορδές. Μπορούμε να κάνουμε κορδόνι συνένωση. Θα μπορούσαμε να το κάνουμε αυτό σε C, πάρα πολύ, χρησιμοποιώντας μια λειτουργία που ονομάζεται strcat, αλλά και πάλι, θα έπρεπε να καλέστε διαφορετικές λειτουργίες. Ήταν όλο αυτό το χάος να κάνει. Έπρεπε να λίβρα-συμπεριλαμβάνουν string.h. Ήταν μια παραγωγή, σωστά; Αλλά τώρα μπορώ να χρησιμοποιήσω μόνο αυτό τελεία χειριστή να ενώσετε χορδές μαζί. Έτσι είμαι συνένωση "στο σύνολό της» και τότε ανεξάρτητα από την αξία των $ topping είναι, και στη συνέχεια ένα άλλο string, "το κόστος $ πίτσα" και στη συνέχεια να συνενώσει ανεξαρτήτως η αξία των $ τιμής είναι, και στη συνέχεια στο τέλος είμαι στερέωση σε περίοδο ανάστροφη κάθετο n. Και έτσι αυτό θα είναι επίσης εκτυπώστε «στο σύνολό της» - και πάλι, αν μιλάμε για την πρώτη στοιχείο αυτής πίτσες array-- «Μια ολόκληρη πίτσα τυρί κοστίζει $ 8,99." Περίοδος, ανάστροφη κάθετο n, και πάλι, με η επικάλυψη και $ $ τιμών υποκατάστασης για ό, τι είχαμε ορίζεται στο foreach μας βρόχο ήταν το κλειδί χαρτογράφηση ζεύγους αξίας. PHP μπορεί να χειριστεί τις λειτουργίες. Λειτουργίες ήταν το είδος του αναπόσπαστο C, όπως είδαμε. Όπως και μεταβλητές, δεν χρειάζεται να προσδιορίζει τον τύπο επιστροφής της συνάρτησης, επειδή δεν έχει τόση σημασία. Και εμείς δεν προσδιορίζουν το τύπους δεδομένων οποιωνδήποτε παραμέτρων, γιατί δεν το κάνουν πραγματικά θέμα, όπως έχουμε δει στην PHP. Κάθε λειτουργία εισάγεται με τη λέξη-κλειδί λειτουργία. Αυτό είναι το πώς μπορούμε να υποδείξει στην PHP που τι μιλάμε είναι μια λειτουργία. Και δεν έχουμε να ασχολούνται με την κύρια καθόλου, επειδή ο διερμηνέας, η PHP διερμηνέα, λειτουργεί από πάνω προς τα κάτω, απρόσεκτος. Εφόσον το κρίνει μπορείτε να κάνετε μια κλήση της συνάρτησης, αυτό θα πηγαίνετε να βρείτε την κλήση της συνάρτησης, ακόμη και αν αυτό έρχεται αργότερα. Αλλά πρόκειται να διαβάζονται από πάνω προς κάτω, γι 'αυτό δεν χρειάζεται να καθορίσετε, Εδώ είναι όπου μπορείτε να ξεκινήσετε. Μπορείτε να ξεκινήσετε στη γραμμή 1 του σας PHP και εργάζονται κάτω από εκεί. Έτσι, εδώ είναι πώς θα δημιουργήσουμε μια λειτουργία που ονομάζεται hard_square. Παίρνει προφανώς ένα παράμετρος, η οποία καλώ $ x. Αυτή η λειτουργία είναι περίπλοκη μόλις να απεικονίζουν διάφορα πράγματα. Έχουμε ακόμα τιμές επιστροφής. Είμαι με τη χρήση ενός βρόχου for εδώ. Αλλά αυτό είναι βασικά ακριβώς, τι είναι αυτό ανέρχεται σε μόλις $ x $ x φορές. Τι είμαι πραγματικά κάνει είναι απλά προσθέτοντας x έως x 0 φορές ή $ x στο μηδέν φορές $ x. Αλλά είναι πραγματικά ακριβώς το ίδιο με τον πολλαπλασιασμό $ x $ x φορές. Μπορώ ακόμα να επιστρέψει μια τιμή, σε αυτήν την περίπτωση $ αποτέλεσμα, και έχω κάνει μια λειτουργία σε PHP. Εδώ είναι το πώς μπορείτε να το χρησιμοποιήσετε σε αυτό το πλαίσιο. Έτσι ίσως είμαι μέσα σε κάποιο αρχείο PHP. Ανακοίνωση σε μπλε εκεί που Έχω χρησιμοποιήσει διαχωριστικά PHP μου, αγκύλη php ερωτηματικό. Στο μεταξύ εκείνων είναι όλα η PHP που θέλω να γράψω. Έτσι είμαι προφανώς πρόκειται να get-- Πάω να ζητήσει από το χρήστη να μου δώσει έναν αριθμό, κατάστημα που μεταβλητή, κατάστημα στο εν λόγω μεταβλητή $ x, Ό, τι μου έδωσε. Στη συνέχεια, Πάω να επαναλάβω hard_square αυτής της αξίας, και προφανώς θα να αναστρέψει σε μια νέα γραμμή καθώς, και στη συνέχεια αργότερα εγώ θα Ορίζουμε την συνάρτηση hard_square έτσι ότι όταν κάνω το καλούν να hard_square, ξέρει τι πράγμα μιλάω. Τώρα, θα μπορούσατε επίσης να κάνετε κατι σαν αυτο. Αυτό είναι ελαφρώς διαφορετική. Είναι σχεδόν ακριβώς την ίδιο με αυτό που είδαμε πριν, εκτός αντί να λέει μόλις $ x εκεί ως η παράμετρος για να hard_square, Λέω $ x = 10. Έτσι, αυτό είναι ένα παράδειγμα του αμυντική προγραμματισμού, φύλαξη των προγραμμάτων σας έναντι κακόβουλων χρηστών. Αυτός είναι ένας τρόπος για να γίνει κάποιο λάθος ελέγχοντας ότι δεν είχαμε πραγματικά έχουν ως επιλογή Γ δεν θα μπορούσαμε ποτέ καθορίσετε την προεπιλεγμένη τιμή του κάτι. Έπρεπε πάντα να ελέγχετε αν η, για παράδειγμα, αν κάναμε μια κλήση για να GetString, ήταν πιο ομαλή αν αμέσως μετά εμείς ελέγχεται ότι, ελέγξαμε αν το κορδόνι που ο χρήστης μας έδωσε δεν είναι ίση με null, γιατί δεν θέλουμε να αρχίσουν εργάζονται με μια κενή συμβολοσειρά. Εδώ, αυτός είναι ένας τρόπος για να προφυλαχθούν από αυτό. Εάν ο χρήστης δεν μας προσφέρει κάτι κατά κάποιο τρόπο, τι θα κάνουμε; Λοιπόν, εμείς θα πούμε απλά ανεξαρτήτως δεν μας παρέχει, είμαστε ακριβώς πρόκειται να συνδέσετε 10 αντ 'αυτού. Έτσι, αν δεν μας δώσει μια αξία, απλά χρησιμοποιήστε 10 από προεπιλογή. Και έτσι εδώ, παρατηρήσετε ότι κάνω Μια κλήση για hard_square, αλλά δεν υπάρχει άμεση στο χρήστη, έτσι δεν είναι; Είμαι απλά κάνοντας ένα άδειο κλήση. Αλλά η λειτουργία μου hard_square αναμένει μια παράμετρο. Τι είναι αυτή η μετάβαση να εκτυπώσετε; Είναι πρόκειται να εκτυπώσετε 100, σωστά; Επειδή ο χρήστης δεν έκανε να μου δώσει τίποτα. Και έτσι είμαι απλώς πρόκειται να αναλάβει ότι 10-- 10 είναι η προεπιλεγμένη τιμή. Και έτσι αυτό θα εκτυπώσετε από 100 στη δική του γραμμή. PHP αρχεία δεν χρειάζεται να είναι απλά ένα ενιαίο αρχείο. Μπορείτε να συνδυάσετε πολλά αρχεία μαζί, ακριβώς όπως μπορείτε σε C. Ο τρόπος το κάναμε αυτό στην C ήταν συνήθως να κάνει μια #include για να πάρετε τα αρχεία κεφαλίδας τράβηξε μέσα. Εμείς δεν το κάνουμε αυτό σε PHP. Κάνουμε κάτι που ονομάζεται require_once. Και έπειτα υπάρχει όλο αυτό το πράγμα, τι είναι αυτό __dir__; Αυτό είναι απλά μια ειδική μεταβλητή, ή ειδική σταθερά, πραγματικά, ότι αυτό που καθορίζει τρέχοντα κατάλογο σας. Και γι 'αυτό πρόκειται να δούμε στον τρέχοντα κατάλογο σας για ένα αρχείο που ονομάζεται cs50.php σε αυτό το παράδειγμα εδώ, και πρόκειται να κολλήσει το αρχείο στην κορυφή του προγράμματος PHP σας, υποθέτοντας ότι βάζετε το απαιτούν μια φορά γραμμή στο επάνω μέρος του αρχείου της PHP σας. Έτσι η PHP χρησιμοποιείται κυρίως, αλλά δεν χρησιμοποιούνται αποκλειστικά, ως γλώσσα για web-based προγραμματισμό. Αυτό είναι πραγματικά το πώς κατέληξε να είναι. Αλλά είναι μια πλήρης γλώσσα, όπως είδαμε. Έχουμε δει λίγο πολύ όλα τα πράγματα ότι μπορεί να κάνει που είναι παρόμοια με C, και μπορεί να κάνει ένα καλό των πολύ περισσότερο από αυτό. Αλλά επειδή είναι μια πλήρης γλώσσα και εμείς μπορεί να κάνει τον προγραμματισμό της γραμμής εντολών σε αυτό. Μπορούμε να τρέξει προγράμματα γραμμής εντολών. Το μόνο που απαιτείται για να εκτελέσετε μια εντολή πρόγραμμα γραμμής που είναι γραμμένο σε PHP είναι ότι έχετε ένα διερμηνέα PHP. Έτσι είναι το είδος των ανάλογη με έχοντας ένα compiler στο σύστημά σας αν θέλετε να καταρτίζουν τον κωδικό σας C για να το μετατρέψει σε εκτελέσιμα αρχεία. Πρέπει να έχετε ένα διερμηνέα PHP ότι υπάρχει στο σύστημά σας έτσι ώστε να μπορεί να ερμηνεύσει τα αρχεία PHP. Υποθέτοντας ότι έχετε κάνει, και συνήθως Αυτό διερμηνέας καλείται PHP, και είναι συνήθως συνδυαστεί με τις περισσότερες λήψεις ή εγκαταστάσεις της PHP ότι μπορείτε να πάρετε on-line, και σίγουρα το όνομα του διερμηνέα PHP έχουμε σε CS50, IDE. Το μόνο που κάνετε είναι τύπος αρχείου php. Και τι του προγράμματός σας πρόκειται να κάνουμε είναι ότι είναι πρόκειται να τρέξει μέσα ο διερμηνέας, είναι Θα αγνοήσουμε τα πάντα που είναι Δεν ανάμεσα λόγω mark-- ή, php γωνία του στηρίγματος ερωτηματικό, τα διαχωριστικά PHP, και να το εκτυπώσετε, και θα ερμηνεύσει και να εκτελέσει το Κωδικός εσωτερικό του οριοθετών PHP σας. Ας σκάσει πάνω σε CS50 IDE και ρίξτε μια ματιά σε μερικά από τα αρχεία PHP, τρέχει ένα ζευγάρι από τα αρχεία PHP, σε διεπαφή γραμμής εντολών του CS50 IDE. Έτσι, εδώ είμαστε σε CS50 IDE, και έχω το θάρρος από το άνοιγμα ενός αρχείου που ονομάζεται hello1.php. Και προφανώς, τα περιεχόμενα αυτού του αρχείο είναι μόνο τα διαχωριστικά PHP εκεί, και στο μεταξύ, echo ("Γεια σου, κόσμε»). Αυτό είναι ένα πολύ απλό πρόγραμμα PHP. Είμαι ακριβώς πρόκειται να μετακινηθείτε προς τα κάτω σε παράθυρο τερματικού μου εδώ, και Πάω να πληκτρολογήσετε php hello1.php, πατήστε enter. Γειά σου Κόσμε. Αυτό είναι ίσως ό, τι ήμασταν περιμένουμε να κάνουμε, σωστά; Ας πάμε και να λάβει μια άλλη ματιά σε ένα πρόγραμμα. hello2.php. Λίγο πολύ το ίδιο πράγμα, όχι μια παρτίδα σε εξέλιξη εδώ. Αυτή τη φορά, όμως, Πάω να παρακινήσει ο χρήστης να μου δώσει τα ονόματά τους. Είμαι χρησιμοποιώντας και πάλι τη λειτουργία αυτή readline. $ name = readline. Αυτή είναι η προτροπή, «Ποιο είναι το όνομά σου;" Προφανώς είμαι εκτύπωση αυτό στη δική του γραμμή. Και τότε, έτσι ώστε η γραμμή κάτω ότι θα είναι η προτροπή όπου ο χρήστης μπορεί να εισάγει το όνομά τους. Και τότε είμαι χρησιμοποιώντας ένα μικρό κομμάτι της μεταβλητή επερώτηση εδώ στη γραμμή 3 για να εκτυπώσετε «Hello» και ανεξάρτητα από το είδος του χρήστη. Έτσι, αυτό είναι ανάλογο με το ρητό, Γεια σας, κόμμα,% s αν ήμασταν χρησιμοποιώντας printf σε C. Ας πάμε και να ερμηνεύσουν αυτό το πρόγραμμα. Έτσι και πάλι, θα μετακινηθείτε προς τα κάτω στο τερματικό παράθυρό μου. php hello2.php. Ποιο ειναι το ονομα σου? Νταγκ. Γεια, Νταγκ. Έχω επίσης ένα άλλο αρχείο που ονομάζεται hello3.php. Πάω να καθαρίσει μου οθόνης με έλεγχο L, και θα πάω να εκτελέσει αυτό. Ποιο ειναι το ονομα σου? Νταγκ. Γεια, Νταγκ. Έτσι, η συμπεριφορά είναι όμοια με hello2.php, αλλά γιατί είναι hello3.php; Λοιπόν, εδώ είναι η διαφορά. Στην περίπτωση αυτή, η προκήρυξη ότι στη γραμμή 1 εδώ, Έχω κάτι που δεν είναι ανάμεσα στα διαχωριστικά PHP. Είμαι απλά την εκτύπωση out-- ή Ι μόλις πληκτρολογήσατε, «Ποιο είναι το όνομά σου;" Όταν το διερμηνέα PHP βλέπει αυτό, δεν έχει καμία ιδέα πώς να το ερμηνεύσει όπως PHP, και έτσι αντί της αποτυχίας, είναι ακριβώς πρόκειται να το φτύσει. Έτσι παρατηρήσετε στη γραμμή 3 τώρα, την έκκλησή μου προς Readline, δεν υπάρχει καμία άμεση πια. Είμαι ακριβώς πραγματικά συμβαίνει όταν to-- το διερμηνέα PHP βλέπει αυτό, πρόκειται να εκτυπώσετε "Ποιο ειναι το ονομα σου?" Στη συνέχεια βλέπει, ω, εντάξει, here's-- ό, τι άλλο πρόκειται να είναι ερμηνευθεί ως PHP, έτσι γι 'αυτό λειτουργεί. Δεν έχω να ζητήσει κατ 'ανάγκην ο χρήστης to-- εσωτερικό της readline, Μπορώ να έχω λίγο έξω των διαχωριστικά PHP και αφήστε τον διερμηνέα να εκτυπώσετε μόνο για μένα. Έτσι, δεν έχουν πραγματικά μόνο να έχουν ένα σύνολο οριοθετών PHP στο πρόγραμμά σας. Μπορείτε να έχετε πραγματικά πολλά από αυτά, άνοιγμα και κλείσιμο τους, όπως απαιτείται. Έτσι, ας ρίξουμε μια ματιά σε ένα ζευγάρι των προγραμμάτων σε CS50 IDE όπου απεικονίζουν αυτή την ιδέα της πολλαπλά σύνολα οριοθετείται PHP. Εντάξει, έτσι έχω ανοίξει ένα αρχείο εδώ ονομάζεται add1.php. Και παρατηρήστε τι συμβαίνει εδώ. Ακριβώς όπως και πριν, έχω ένα PHP ενιαίο σύνολο διαχωριστικά. Πάω να εκτυπώσετε το μήνυμα, "Παρακαλώ δώστε μου έναν αριθμό." Στη συνέχεια, Πάω να διαβάσει μια γραμμή και αποθηκεύστε το στη μεταβλητή $ NUM1. Στη συνέχεια, Πάω να εκτυπώσετε ξανά. Δώσε μου ένα δεύτερο αριθμό. Διαβάστε μια γραμμή από το χρήστη, κατάστημα ό, τι πληκτρολογήσει στο $ NUM2. Προσθέστε τους μαζί και κατάστημα που οδηγήσει σε μια μεταβλητή που ονομάζεται $ άθροισμα, και, στη συνέχεια, να εκτυπώσετε, "Η άθροισμα αυτών των δύο αριθμών είναι, "και στη συνέχεια επερωτώ υπάρχει η μεταβλητή $ ποσό. Έτσι, ας τρέξει αυτό μέσω του διερμηνέα να επιβεβαιώσει ότι αυτό είναι αυτό που περιμένουμε. php add1.php. Παρακαλώ να μου δώσετε έναν αριθμό, 3. Παρακαλώ δώστε μου μια δεύτερη σειρά, 4. Το άθροισμα των δύο αυτών αριθμών είναι 7. Αυτό είναι 3 συν 4. ΕΝΤΆΞΕΙ? Έτσι, τίποτα τρομερά φανταχτερό εκεί. Και τώρα ας ανοίξει add2.php. Εδώ, έχω ένα ζευγάρι των PHP οριοθετείται σύνολα εκεί, σωστά; Γραμμές 1, 3-- γραμμές 1 και 3 δεν έχουν διαχωριστικά PHP. Έτσι, όταν ο διερμηνέας βλέπει τους, είναι ακριβώς πρόκειται να φτύσει ακριβώς ό, τι έχω πληκτρολογήσει εκεί. Έτσι, αυτό είναι όπου είμαι κάνει ό, προτρέποντας μου. Στις γραμμές 2 και 4, βλέπουμε το πολύ εξοικειωμένοι $? php είδος διαχωριστικά, έτσι ώστε αυτές οι δύο γραμμές είναι πρόκειται να εκτελεστεί η PHP. Και στη συνέχεια, στη γραμμή 5, έχω αυτό περίεργο πράγμα εδώ, σωστά; Αυτή η αγκύλη ερωτηματικό σύμβολο της ισότητας. Θα ζουμ, ακόμη και σε μια λίγο πιο πέρα. Μπορείτε να δείτε αυτό είναι ό, τι είμαι μιλάμε για ακριβώς εκεί, αυτό $; =. Αποδεικνύεται ότι είναι τόσο συχνές που ο λόγος που έχουμε ανοίξει μια σειρά από PHP διαχωριστικά είναι να εκτυπώσετε μια τιμή. Και αυτό είναι ό, τι πάμε να κάνουμε. Αλλά υπάρχει ακόμη στενογραφία για αυτό. $; = Είναι η PHP στενογραφία για να πούμε κάτι σαν $? php echo το άθροισμα της NUM1 και NUM2. Έτσι, αυτό είναι ακριβώς μια άλλη στενογραφία για αυτό. Έτσι, αν έχω τρέξει αυτό το πρόγραμμα, php add2.php. Θα κάνετε ζουμ λίγο. Παρακαλώ να μου δώσετε έναν αριθμό, 4. Παρακαλώ δώστε μου μια δεύτερη σειρά. Και δεδομένου ότι δεν ενδιαφέρονται πραγματικά για τύπους δεδομένων σε PHP, μπορώ να πω 4.8. Το άθροισμα των δύο αυτών αριθμών είναι 8,8. Αυτή η λειτουργία συμπεριφέρεται λίγο πολύ ακριβώς το ίδιο όπως θα περίμενε κανείς, επισης. Και έχω ένα ακόμη άνοιγμα εδώ ονομάζεται dice.php. Δοκιμάστε ξανά. Έχω μία ακόμη εδώ ονομάζεται dice1.php, η οποία επίσης, να δείτε, έχει αυτό το ερώτημα αγκύλη σημειώστε το σύμβολο της ισότητας σημειογραφία εκεί, αλλά παρατηρήσετε ότι σε αυτή την περίπτωση είμαι καλώντας το ραντ λειτουργία, η οποία, όπως σας θα περίμενε δημιουργεί έναν τυχαίο αριθμό. "Θα έρθει μια" και πρόκειται να υπολογίσει κάποιο τυχαίο αριθμό, mod 6 + 1. Έτσι ώστε θα μου δώσει τον αριθμό στην περιοχή από 1 έως 6. Να θυμάστε ότι mod 6 θα μου δώσει ένας αριθμός στην περιοχή από μηδέν έως 5, αλλά αν είμαι προσομοίωση ζαριών, το οποίο είναι αυτό που κάνω εδώ, Δεν θέλω αυτά τα ζάρια για να πάει από 0 έως 5, θέλω ζάρια που πηγαίνουν 1-6. Και έτσι αυτό είναι ένας τρόπος για να πάρετε μου στην κλίμακα από 1 έως 6. Κάνω αυτό δύο φορές. Έτσι, προφανώς, είμαι τροχαίο δύο ζάρια σε αυτό το πρόγραμμα. Γι 'αυτό θα καθαρίσετε την οθόνη μου, και θα κάνω php dice1.php. Μπορείτε έλασης ένα 4 και 2. Και αν μπορώ να εκτελέσω το πρόγραμμα και πάλι, θα έρθει μια 5 και 5. Έτσι, κάθε φορά που τρέχει το πρόγραμμα, Παίρνω διαφορετικούς αριθμούς, γιατί κάθε φορά που το κάνω Έτσι, είναι ξεκινώντας πάνω. Είναι πρόκειται να δημιουργήσει μια νέα σετ τυχαίων αριθμών για μένα. Έτσι, αν έχουμε συνηθίσει να τα προγράμματα που εκτελούνται από το C, έχουμε συνηθίσει να πληκτρολογείτε το ./ όνομα ενός προγράμματος, έτσι δεν είναι; Αυτό είναι το πώς έχουμε κάνει όλα των προγραμμάτων μας σε C μέχρι στιγμής. Μπορούμε να το κάνουμε αυτό σε PHP, καθώς και με την προσθήκη κάτι που ονομάζεται η δουλεία στην κορυφή της PHP αρχείο μας. Ξέρω ότι είναι το είδος της μια ανόητη λέξη. Είναι μικρή για hash κτύπημα. Αυτό είναι τα δύο πρώτα χαρακτήρες εκεί. Θυμηθείτε καλούμε θαυμαστικό συχνά ένα κτύπημα στην επιστήμη των υπολογιστών. Επίσης, μπορεί να είναι για απότομη έκρηξη. Υπάρχουν δύο τρόποι για να το ερμηνεύσει. Αλλά είναι βασικά ένα ειδικό είδος του ότι η εντολή διερμηνέα PHP αντιλαμβάνεται ως, OH, θέλω μπορείτε να εκτελέσετε αυτό το πρόγραμμα, η οποία είναι προφανώς / χρήστης / bin / php, η οποία είναι στην πραγματικότητα όπου το διερμηνέα PHP Ζει ειδικά στο σύστημά μας. Έτσι it's-- αυτό που συμβαίνει εδώ είναι ο διερμηνέας καταλαβαίνει, OH, Είμαι προφανώς έπρεπε να χρησιμοποιήσουν σε αυτό το πρόγραμμα για να τρέξει αυτό το αρχείο. Και γι 'αυτό σας δίνει τη δυνατότητα να υπερπηδήσει το στάδιο έχουν να πουν php something.php. Υπάρχει ένα άλλο αλιευμάτων εδώ, η οποία είναι ότι αν θέλουν τα προγράμματά μας να λειτουργούν όπως αναμένεται, θα Πρέπει να κάνουμε κάτι που ονομάζεται μια αλλαγή δικαιωμάτων στο αρχείο. Και θα go-- και μιλάμε λίγο λίγο πιο αλλαγές σχετικά με το αρχείο άδειας στο βίντεο μας στο MVC, αλλά αρκεί να λένε ότι αυτό είναι ό, τι πρέπει να κάνετε προκειμένου να σας .php αρχεία εκτελέσιμο. Έτσι, ας ρίξουμε μια ματιά σε αυτό ως τελικό μας παράδειγμα πάνω σε CS50 IDE. Έτσι, εδώ στο IDE έχω δύο αρχεία σε αυτό Κατάλογο της PHP που δεν φαίνεται να είναι που ονομάζεται .php. Έχω μια λειτουργία που ονομάζεται add-- Έχω ένα αρχείο που ονομάζεται ADD3 και ένα αρχείο που ονομάζεται dice2. Ας ρίξουμε μια γρήγορη εξετάσουμε και να ανοίξει ADD3. Και όπως μπορείτε να δείτε, κατά την έναρξη από το αρχείο μου έχω αυτή τη δουλεία, έτσι δεν είναι; Αυτό το σημείο hash θαυμαστικό. Τώρα, θα έχετε επίσης ίσως παρατηρούμε ότι, για κάποιο λόγο, Δεν έχω καμία σύνταξη τονίζοντας πια, και αυτό είναι που αναφέρθηκα προηγουμένως, το οποίο ήταν ότι αν δεν ονομάσετε το αρχείο μου .php, δεν έχω το πλεονέκτημα της σύνταξης τονίζοντας πια. Αυτό το αρχείο ονομάζεται μόνο ADD3. Έτσι ώστε να μπορώ να το τρέξει αργότερα με ./ ADD3 και δεν ./ add3.php. Έτσι, η reason-- είναι ακόμα εντάξει, είναι ακόμα έγκυρο PHP, αλλά δεν είναι συντακτικό επισημαίνεται, επειδή Αυτό το αρχείο δεν ονομάζεται something.php. Αυτή είναι η μόνη πραγματική διαφορά Εδώ, συν το shebang. Ας δούμε λοιπόν τι συμβαίνει όταν Προσπαθώ και να εκτελέσετε αυτό το πρόγραμμα. ./ ADD3, όπως ακριβώς θα κάνατε με Γ Bash. ./ Άδεια ADD3 αρνήθηκε. Αυτό είναι αυτό που πρόκειται για να δείτε αν ξεχάσετε να χρησιμοποιήσετε την εντολή chmod για να αλλάξει τα δικαιώματα του αρχείου. Όπως αποδεικνύεται, η τακτική PHP δεν μπορεί να εκτελεστεί μόνο αρχεία. Μπορούν να ερμηνευτούν, αλλά είμαστε να κάνει κάτι λίγο διαφορετικό εδώ. Είμαστε το εκτέλεσης. Και γι 'αυτό πρέπει να προσθέσουμε την άδεια της εκτέλεσης, chmod a + x για να ADD3. Τότε μπορώ να πω ./ ADD3. Παρακαλώ να μου δώσει έναν αριθμό. 5, 6. Το άθροισμα των δύο αυτών αριθμών είναι 11. Ομοίως, έχω ήδη chmoded dice2, έτσι μπορώ απλά να γράψετε ./ dice2, θα έρθει μια 1 και 1, που έλασης ένα 5 και 4, και ούτω καθεξής. Έτσι, αυτό είναι λίγο πολύ η ιδέα της PHP σύνταξη, σωστά; Υπάρχουν πολλά για να περάσει, το ξέρω. Αλλά ελπίζουμε ότι έχετε δει τώρα ότι η PHP δεν είναι και τόσο διαφορετικό από το C και πραγματικά μας δίνει την δυνατότητα να πάρει τα πράγματα επάνω μια εγκοπή ή δύο. Δεν χρειάζεται πραγματικά να ανησυχήσετε πάρα πολύ about-- εμείς δεν κάνουμε πραγματικά πρέπει να ανησυχείτε πάρα πολύ για οι λεπτομέρειες χαμηλού επιπέδου, έπρεπε να ανησυχείτε για με C, έτσι δεν είναι; Μπορούμε να επικεντρωθεί στο υψηλότερο πράγματα επίπεδο ότι η PHP μας επιτρέπει να κάνουμε και πρέπει να ληφθούν για δεδομένο ότι αυτό θα λειτουργήσει για μας. Γι 'αυτό μας δίνει τη δυνατότητα τώρα, μετάβαση από C σε PHP, για να κάνουν τα προγράμματα που είναι πολύ πιο περίπλοκη και ίσως πολύ πιο ισχυρή. Ελπίζω, λοιπόν, να διασκεδάσετε εργασίας με την PHP, και είμαι Doug Lloyd. Αυτό είναι CS50.