1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [Section 8 - komfortabler] 2 00:00:02,610 --> 00:00:04,910 [Rob Bowden - Harvard University] 3 00:00:04,910 --> 00:00:07,070 [Dies ist CS50. - CS50.TV] 4 00:00:11,520 --> 00:00:14,160 >> Diese Woche Abschnitt Notizen sein werden ziemlich kurz, 5 00:00:14,160 --> 00:00:19,070 ich werde einfach im Gespräch zu bleiben, werden Sie Jungs gehen zu halten, Fragen zu stellen, 6 00:00:19,070 --> 00:00:22,720 und wir werden versuchen zu füllen, so viel Zeit wie möglich. 7 00:00:22,720 --> 00:00:31,950 Eine Menge Leute denken, dass dies pset nicht unbedingt schwierig, aber es ist sehr lang. 8 00:00:31,950 --> 00:00:37,070 Die pset spec selbst dauert eine Stunde, um zu lesen. 9 00:00:40,530 --> 00:00:45,730 Wir geben Ihnen einen Großteil der SQL was man brauchen könnte, um zu verwenden. 10 00:00:45,730 --> 00:00:50,520 Wir führen Sie durch eine Menge davon, so sollte es nicht allzu schlecht. 11 00:00:50,520 --> 00:00:54,560 Hat jemand gestartet oder beendet? 12 00:00:55,380 --> 00:00:59,710 Es ist das letzte pset. Oh, mein Gott. 13 00:00:59,710 --> 00:01:05,400 Normalerweise gibt es ein JavaScript ein, nachdem diese, aber Kalender Dinge ändern 14 00:01:05,400 --> 00:01:09,560 macht alles 1 Woche kürzer, und wir haben nicht mehr einen JavaScript pset. 15 00:01:09,560 --> 00:01:12,310 Ich weiß nicht, wie diese beeinflusst, ob JavaScript wird auf die Prüfung erscheinen 16 00:01:12,310 --> 00:01:15,510 oder Quiz 1. 17 00:01:15,510 --> 00:01:22,260 Ich kann mir vorstellen, es wird etwas sein, wie Sie auf hohem Niveau Dinge über JavaScript wissen müssen, 18 00:01:22,260 --> 00:01:26,460 aber ich bezweifle, würden wir Ihnen nur gerade JavaScript-Code 19 00:01:26,460 --> 00:01:28,720 da Sie hatten nicht eine pset in ihm. 20 00:01:28,720 --> 00:01:33,000 Aber das wird Zeug für Quiz überprüft werden nächste Woche. 21 00:01:33,000 --> 00:01:36,320 >> Abschnitt von Fragen. 22 00:01:36,320 --> 00:01:43,870 Eine Menge von diesem Zeug ist etwas schlecht formuliert, aber wir werden deshalb diskutieren. 23 00:01:43,870 --> 00:01:50,220 Im Gegensatz zu C, PHP ist eine "dynamisch typisierte" Sprache. Was bedeutet das, fragen Sie? 24 00:01:50,220 --> 00:01:53,830 Nun, Say Goodbye to all diejenigen, char, float, int, und andere Keywords, die Sie verwenden müssen, 25 00:01:53,830 --> 00:01:56,190 bei der Deklaration von Variablen und Funktionen in C. 26 00:01:56,190 --> 00:02:00,420 In PHP wird der Typ einer Variablen durch den Wert, dass es hält derzeit ermittelt. 27 00:02:00,420 --> 00:02:04,990 Also, bevor wir diesen Code in eine Datei namens dynamic.php, 28 00:02:04,990 --> 00:02:12,670 PHP dynamisch typisiert. Das ist wahr. 29 00:02:12,670 --> 00:02:17,590 Ich bin nicht einverstanden mit der Tatsache, dass bedeutet, dass wir Abschied von char, float, int, 30 00:02:17,590 --> 00:02:20,620 und anderen Schlüsselwörtern. 31 00:02:20,620 --> 00:02:25,510 Der genaue Unterschied zwischen dynamisch typisierte und der alternativen, 32 00:02:25,510 --> 00:02:32,010 welche statisch typisiert ist, dass dynamisch typisierte, alle Ihre Typprüfung and stuff 33 00:02:32,010 --> 00:02:37,350 geschieht zur Laufzeit, während statisch typisiert es geschieht bei der Kompilierung. 34 00:02:37,350 --> 00:02:43,030 Das Wort static im Allgemeinen scheint der Kompilierung Dinge bedeuten. 35 00:02:43,030 --> 00:02:48,170 Ich denke, es gibt andere Verwendungen für sie, aber in C, wenn Sie eine statische Variable deklarieren, 36 00:02:48,170 --> 00:02:52,650 ihre Speicherung bei der Kompilierung zugewiesen. 37 00:02:52,650 --> 00:02:59,260 Hier dynamisch typisierte bedeutet nur, dass - 38 00:02:59,260 --> 00:03:04,350 In C, wenn Sie versuchen, einen String und eine ganze Zahl hinzufügen, wenn Sie es zu kompilieren, 39 00:03:04,350 --> 00:03:11,000 es wird sich zu beschweren, weil es sich zu sagen, dass man nicht fügen Sie einen int und einen Zeiger. 40 00:03:11,000 --> 00:03:14,710 Es ist einfach nicht eine gültige Betrieb. 41 00:03:14,710 --> 00:03:21,170 Das ist eine andere Sache, dass wir in einem zweiten bekommen. 42 00:03:21,170 --> 00:03:24,860 Aber diese Art von Kontrolle, die Tatsache, dass es zum Zeitpunkt der Kompilierung, klagt 43 00:03:24,860 --> 00:03:29,220 ist statisch Typprüfung. 44 00:03:29,220 --> 00:03:35,220 Es gibt Sprachen, in denen Sie nicht brauchen, um char, float, int sagen, und alle diese Dinge, 45 00:03:35,220 --> 00:03:40,940 aber die Sprache kann aus dem Kontext der Sache sagen, welchen Typ es sein soll, 46 00:03:40,940 --> 00:03:43,980 aber es ist immer noch statisch typisiert. 47 00:03:43,980 --> 00:03:49,000 Also, wenn Sie 51, OCaml zu nehmen, müssen Sie nie einen dieser Typen zu verwenden, 48 00:03:49,000 --> 00:03:58,700 aber es wird bei der Kompilierung sagen, man kann das nicht tun, weil Sie das Mischen eines int und einen String sind. 49 00:03:58,700 --> 00:04:05,650 Dynamisch typisierte bedeutet nur, dass irgendwann während der Laufzeit wirst du eine Beschwerde erhalten. 50 00:04:05,650 --> 00:04:13,430 Wenn Sie auch Java vor, in der Regel verwendet, fast jeder C-Typ Sprache 51 00:04:13,430 --> 00:04:20,070 wird statisch eingegeben werden, so dass C, C + +, Java, alle diejenigen sind allgemein statisch typisiert. 52 00:04:20,070 --> 00:04:22,910 In Java, wenn Sie kompilieren etwas und du sagst 53 00:04:22,910 --> 00:04:26,670 string s gleich neue etwas, was nicht ist eine Zeichenfolge, 54 00:04:26,670 --> 00:04:28,950 das wird sich beschweren, weil diese Typen nur nicht übereinstimmen. 55 00:04:28,950 --> 00:04:31,180 Das wird bei der Kompilierung beschweren. 56 00:04:31,180 --> 00:04:36,750 Aber es hat auch einige dynamische Zeit Dinge wie, wenn man etwas gegossen versuchen 57 00:04:36,750 --> 00:04:40,500 auf einen Typ, der spezifischer als der aktuelle Typ ist, 58 00:04:40,500 --> 00:04:45,610 es gibt nichts, es bei der Kompilierung tun können, um zu überprüfen, ob diese Besetzung gelingen wird. 59 00:04:45,610 --> 00:04:51,130 Java hat auch einige dynamische Typprüfung, dass so bald wie es nur geht, um dieser Codezeile 60 00:04:51,130 --> 00:04:54,130 wenn es tatsächlich auszuführen, es geht um die Besetzung zu tun, 61 00:04:54,130 --> 00:04:56,260 prüfen, ob dieses Besetzung war in erster Linie gilt, 62 00:04:56,260 --> 00:04:59,890 und wenn es nicht war, dann wird sich darüber beschweren, dass Sie einen ungültigen Typ. 63 00:04:59,890 --> 00:05:03,200 Dynamische Typprüfung. 64 00:05:03,200 --> 00:05:07,010 Geben Sie diese in eine Datei namens dynamic.php. 65 00:05:10,130 --> 00:05:12,380 Dynamic.php. 66 00:05:14,580 --> 00:05:17,190 Ich werde entpacken diese Formatierung. 67 00:05:18,750 --> 00:05:21,880 Wir haben eine variable, setzen wir es um die Zahl 7, 68 00:05:21,880 --> 00:05:27,930 dann werden wir zu ihm und% s drucken - 69 00:05:27,930 --> 00:05:32,830 Oh, wir drucken die Art von ihm, so gettype gehen, um den Typ der Variablen zurück. 70 00:05:32,830 --> 00:05:35,720 Wir stehen noch Drucken des Typs immer und immer wieder. 71 00:05:35,720 --> 00:05:39,440 Wir haben gerade php.dynamic.php. 72 00:05:39,440 --> 00:05:45,920 Wir werden sehen, dass es Veränderungen von Integer in String Boolean wie wir gehen durch. 73 00:05:45,920 --> 00:05:54,590 In C gibt es keinen Datentyp Boolean, gibt es keine String-Datentyp. 74 00:05:54,590 --> 00:06:00,500 Es gibt char * und Boolean nur tendenziell int oder char oder so etwas. 75 00:06:00,500 --> 00:06:05,690 In PHP diese Arten nicht existieren, und das ist einer der großen Vorteile von PHP über C - 76 00:06:05,690 --> 00:06:13,290 dass die String-Operationen sind viel einfacher in PHP als C. Sie gerade arbeiten. 77 00:06:13,290 --> 00:06:18,290 >> So kommen wir wieder hier. 78 00:06:18,290 --> 00:06:21,260 Wir rannten dynamic.php. 79 00:06:21,260 --> 00:06:26,710 Das sagt dem PHP-Interpreter namens php, den PHP-Code in dynamic.php laufen. 80 00:06:26,710 --> 00:06:30,250 Wenn Sie irgendwelche Fehler in der Datei haben, wird der Dolmetscher sagen! 81 00:06:30,250 --> 00:06:39,110 Der Dolmetscher ist dies ein weiterer großer Unterschied zwischen PHP und C 82 00:06:39,110 --> 00:06:48,200 In C müssen Sie etwas kompilieren und dann laufen, dass kompilierte Datei. 83 00:06:48,200 --> 00:06:50,490 In PHP Sie nie kompiliert nichts. 84 00:06:50,490 --> 00:06:57,200 So der PHP-Interpreter ist im Grunde nur der Lektüre dieses Zeile für Zeile. 85 00:06:57,200 --> 00:07:02,900 Es trifft var = 7 dann printf trifft dann trifft es var dann trifft es printf und so weiter. 86 00:07:02,900 --> 00:07:10,910 Es ist ein bisschen zu kompilieren es tut, und es speichert die Ergebnisse 87 00:07:10,910 --> 00:07:15,510 so, wenn Sie das Skript ausführen später können Sie tun, einige, 88 00:07:15,510 --> 00:07:19,280 aber im Grunde ist es eine Zeile für Zeile Art der Sache. 89 00:07:19,280 --> 00:07:25,280 Das bedeutet, dass ein Großteil der Optimierungen, die wir bekommen in C, 90 00:07:25,280 --> 00:07:31,920 Lust auf das Kompilieren, es ist nur in der Regel kann der Compiler eine Menge Tricks für Sie tun. 91 00:07:31,920 --> 00:07:36,110 Es kann sich unbenutzte Variablen, kann er alle diese Art von Dingen, 92 00:07:36,110 --> 00:07:38,660 sie tun können Endrekursion. 93 00:07:38,660 --> 00:07:42,550 In PHP du wirst doch nicht um diesen Vorteil zu erhalten 94 00:07:42,550 --> 00:07:45,690 weil es nur geht zu starten Ausführen Zeile für Zeile für Zeile, 95 00:07:45,690 --> 00:07:49,950 und es ist nicht wirklich erkennen diese Dinge so einfach 96 00:07:49,950 --> 00:07:54,440 da es nicht ein großes compilation Pass über die Sache und dann Ausführung; 97 00:07:54,440 --> 00:07:56,860 es ist nur Zeile für Zeile. 98 00:08:00,730 --> 00:08:02,750 Damit ist der Dolmetscher. 99 00:08:02,750 --> 00:08:06,840 >> Zurück zu unserem dynamischen Typisierung: pretty cool, eh? 100 00:08:06,840 --> 00:08:08,640 Sie definitiv nicht tun konnte, dass in C! 101 00:08:08,640 --> 00:08:11,860 Nun, sehen, wenn Sie herausfinden können, welche Art von jeder der folgenden Werte. 102 00:08:11,860 --> 00:08:14,760 Dieses als Referenz. 103 00:08:14,760 --> 00:08:19,420 So 3,50. Welche Art denkst du, das wird sein? 104 00:08:24,480 --> 00:08:26,370 Hier sind die Typen, die wir haben. 105 00:08:26,370 --> 00:08:30,430 Wir haben bools, Zahlen, Fließkommazahlen, Strings, Arrays, Objekte, 106 00:08:30,430 --> 00:08:38,370 und dann Ressourcen, die ist ein bisschen vage. 107 00:08:38,370 --> 00:08:41,010 Ich denke, es ist eigentlich ein Beispiel hier. 108 00:08:41,010 --> 00:08:43,740 Dann gibt es NULL. NULL ist ein spezieller Typ. 109 00:08:43,740 --> 00:08:47,140 Im Gegensatz zu C, wo NULL ist nur ein Zeiger mit der Adresse 0, 110 00:08:47,140 --> 00:08:54,930 in PHP ist NULL seine eigene Art, wo die einzig gültige, was dieses Typs ist NULL. 111 00:08:57,560 --> 00:09:00,670 Dies ist viel nützlicher für Fehlerprüfung. 112 00:09:00,670 --> 00:09:04,310 In C, wo wir hatten dieses Problem, wo, wenn Sie NULL zurückgeben, 113 00:09:04,310 --> 00:09:08,660 Bedeutet das, dass du wieder einen NULL-Zeiger oder mit NULL auf Fehler bedeuten 114 00:09:08,660 --> 00:09:12,380 oder alle dieser Verwirrung, die wir an einem Punkt hatte. 115 00:09:12,380 --> 00:09:18,440 Hier gibt NULL bedeutet in der Regel Fehler. 116 00:09:20,860 --> 00:09:27,300 Eine Menge Dinge auch return false für Fehler. 117 00:09:27,300 --> 00:09:33,140 Aber der Punkt der NULL-Typ ist, ist das einzige, was der NULL-Typ NULL. 118 00:09:33,140 --> 00:09:40,090 Dann Rückruf ist wie Sie einige anonyme Funktionen definieren können. 119 00:09:40,090 --> 00:09:46,420 Sie haben noch um der Funktion einen Namen, aber du wirst nicht mit, dass hier zu tun haben. 120 00:09:46,420 --> 00:09:53,940 Mit Blick auf die Typen, die sie von uns erwarten, zu wissen, 121 00:09:53,940 --> 00:09:59,000 was denkst du der Typ von 3,50 ist? >> [Schüler] Float. 122 00:09:59,000 --> 00:10:00,370 Yeah. 123 00:10:00,370 --> 00:10:06,290 So dann hier, was denkst du der Typ dafür ist? >> [Schüler] Array. 124 00:10:06,290 --> 00:10:09,890 Yeah. Der erste war Schwimmer, das zweite ist ein Array. 125 00:10:09,890 --> 00:10:14,500 Beachten Sie, dass diese Anordnung nicht wie ein C-Array 126 00:10:14,500 --> 00:10:19,610 wo man Index haben 0 gewissen Wert hat, hat den Index 1 einen Wert. 127 00:10:19,610 --> 00:10:26,320 Hier sind die Indices a, b und c und die Werte 1, 2, und 3. 128 00:10:26,320 --> 00:10:33,980 In PHP gibt es keinen Unterschied zwischen einem assoziativen Arrays und nur einer regelmäßigen Anordnung 129 00:10:33,980 --> 00:10:36,740 wie man es von ihm in C denke 130 00:10:36,740 --> 00:10:43,040 Es ist gerade diese, und unter der Haube eine regelmäßige Anordnung ist nur ein assoziatives Array 131 00:10:43,040 --> 00:10:50,000 wobei 0 Karten auf einen Wert in der gleichen Weise ein Karten bis zu einem gewissen Wert. 132 00:10:50,000 --> 00:11:00,410 Aus diesem Grund kann PHP ziemlich schlecht für wirklich schnell code / Benchmarking Dinge 133 00:11:00,410 --> 00:11:07,930 da in C, wenn Sie ein Array wirst du wissen, dass der Zugriff auf ein Mitglied ist konstante Zeit. 134 00:11:07,930 --> 00:11:11,860 In PHP Zugriff auf ein Mitglied ist, wer weiß, wie viel Zeit? 135 00:11:11,860 --> 00:11:18,970 Es ist wahrscheinlich konstant, wenn es Hashes richtig. 136 00:11:18,970 --> 00:11:21,620 Wer weiß, was es wirklich tun unter der Haube? 137 00:11:21,620 --> 00:11:25,600 Sie wirklich brauchen, um bei der Umsetzung, um zu sehen, wie es geht, um damit umzugehen. 138 00:11:25,600 --> 00:11:28,550 Also fopen. 139 00:11:28,550 --> 00:11:36,420 Ich denke, hier lasst uns einfach PHP-Handbuch fopen an der Rückgabetyp aussehen. 140 00:11:36,420 --> 00:11:41,260 Wir sehen hier können Sie nachschlagen ziemlich jede Funktion in der PHP-Handbuch 141 00:11:41,260 --> 00:11:47,540 und dies ist eine Art der Manpage von PHP. 142 00:11:47,540 --> 00:11:51,060 Der Rückgabetyp wird Ressource sein. 143 00:11:51,060 --> 00:11:56,050 Das ist, warum ich es sah, weil wir nicht wirklich definiert hat Ressource. 144 00:11:56,050 --> 00:12:04,110 Die Idee der Ressource in C Sie Art bekam ein FILE * oder was auch immer; 145 00:12:04,110 --> 00:12:07,200 in PHP die Ressource ist Ihr FILE *. 146 00:12:07,200 --> 00:12:10,360 Es ist, was du gehst aus lesen werden, ist es, was du gehst zu sein Schreiben. 147 00:12:10,360 --> 00:12:20,710 Es ist in der Regel extern, so ist es eine Ressource, die Sie Dinge aus ziehen kann und werfen Dinge. 148 00:12:20,710 --> 00:12:26,520 Und schließlich, was ist die Art von NULL? >> [Schüler] NULL. 149 00:12:26,520 --> 00:12:30,650 Yeah. So ist die einzige Sache, die NULL ist NULL. 150 00:12:30,650 --> 00:12:33,480 NULL NULL ist. 151 00:12:35,490 --> 00:12:41,170 >> Ein Merkmal der PHP-Typ-System (zum Besseren oder zum Schlechteren) ist seine Fähigkeit, Arten jonglieren. 152 00:12:41,170 --> 00:12:44,390 Wenn Sie eine Zeile PHP-Code die Werte von verschiedenen Arten vereint schreiben, 153 00:12:44,390 --> 00:12:46,670 PHP wird versuchen, das Vernünftige zu tun. 154 00:12:46,670 --> 00:12:48,920 Probieren Sie jede der folgenden Zeilen PHP-Code. Was ausgedruckt? 155 00:12:48,920 --> 00:12:51,000 Ist es das, was Sie erwartet haben? Warum bzw. warum nicht? 156 00:12:51,000 --> 00:12:58,600 Diese Tatsache über PHP macht es, was wir schwach typisierte nennen. 157 00:12:58,600 --> 00:13:04,610 Schwach typisiert und stark typisiert, 158 00:13:04,610 --> 00:13:06,840 Es gibt verschiedene Anwendungen für diese Begriffe, 159 00:13:06,840 --> 00:13:12,020 aber die meisten Leute benutzen schwach typisiert und stark typisiert, um diese Art der Sache bedeuten, 160 00:13:12,020 --> 00:13:15,920 wo ("1" + 2); das funktioniert. 161 00:13:15,920 --> 00:13:18,290 In C würde es nicht funktionieren. 162 00:13:18,290 --> 00:13:22,490 Sie können sich vorstellen dies nicht funktioniert. 163 00:13:22,490 --> 00:13:29,200 Eine Menge Leute verwechseln dynamische Typisierung und schwache Typisierung und statische Typisierung und starke Typisierung. 164 00:13:29,200 --> 00:13:34,050 Python ist ein weiteres Beispiel für eine Sprache ist, die dynamisch eingegeben. 165 00:13:34,050 --> 00:13:41,770 Sie können rund um Typen in Variablen zu werfen und es wird zur Laufzeit bestimmen 166 00:13:41,770 --> 00:13:44,680 irgendwelche Fehler checkings. 167 00:13:44,680 --> 00:13:50,740 In Python, es wird dazu führen, und es wird zu sehen ("1" + 2); 168 00:13:50,740 --> 00:13:55,920 und dies wird scheitern, weil sagt, es kann nicht fügen Sie einen String und einen Integer. 169 00:13:55,920 --> 00:14:00,860 In PHP, die ebenso dynamisch typisierte ist, wird dies nicht scheitern. 170 00:14:00,860 --> 00:14:04,220 Schwache Typisierung hat mit der Tatsache, dass es Dinge tut mit Typen zu tun 171 00:14:04,220 --> 00:14:07,800 die nicht wirklich Sinn unbedingt. 172 00:14:07,800 --> 00:14:17,420 So ("1" + 2); Ich kann mir vorstellen, dass ist die Saite 12, kann ich vorstellen, dass es die Zeichenfolge 3, 173 00:14:17,420 --> 00:14:20,710 Ich kann mir vorstellen, dass die Zahl 3. 174 00:14:20,710 --> 00:14:24,530 Es ist nicht unbedingt gut definiert, und wir wahrscheinlich hier zu sehen 175 00:14:24,530 --> 00:14:29,140 dass, wenn wir drucken ("1" + 2); es ist wahrscheinlich am Ende wird verschiedene 176 00:14:29,140 --> 00:14:32,320 als das Drucken (1 + "2"). 177 00:14:32,320 --> 00:14:39,700 Und diese Tendenz zu sein, meiner Meinung nach, zum Schlechteren. 178 00:14:39,700 --> 00:14:44,240 Hier können wir versuchen diese. 179 00:14:44,240 --> 00:14:48,740 Ein weiterer kleiner Trick über PHP ist, dass Sie nicht brauchen, um tatsächlich die Datei schreiben. 180 00:14:48,740 --> 00:14:52,790 Es hat diesen Befehl Modus ausgeführt werden. 181 00:14:52,790 --> 00:14:57,710 So php-r, dann können wir in der hier das Kommando zu werfen: 182 00:14:57,710 --> 00:15:06,610 "Print ('1 '+ 2);" und ich werde eine neue Zeile zu werfen. 183 00:15:19,550 --> 00:15:23,970 Dieses gedruckte 3. 184 00:15:31,100 --> 00:15:35,330 Es sieht so aus 3 druckt, und es ist die ganze Zahl 3. 185 00:15:35,330 --> 00:15:38,420 So, jetzt versuchen wir es anders herum: 186 00:15:38,420 --> 00:15:42,970 "Print (1 + 2"); 187 00:15:45,560 --> 00:15:50,490 Wir bekommen 3 und wird es auch gehen, um ganze 3? Ich habe ehrlich gesagt keine Ahnung. 188 00:15:50,490 --> 00:15:54,030 Es sieht aus wie das ist konsequent. 189 00:15:54,030 --> 00:15:59,550 Es gibt nie eine Chance, es ist die Zeichenkette 12 oder so etwas 190 00:15:59,550 --> 00:16:08,080 weil PHP, im Gegensatz zu JavaScript und Java auch 191 00:16:08,080 --> 00:16:11,670 verfügt über einen separaten Antrieb für Verkettung. 192 00:16:11,670 --> 00:16:14,930 Verkettung in PHP ist dot. 193 00:16:14,930 --> 00:16:22,950 So dass der Druck (1 '2 '.); Wird uns 12. 194 00:16:25,790 --> 00:16:32,420 Dieser neigt dazu, zu Verwirrung führen, wo die Menschen so etwas wie str + = tun versuchen 195 00:16:32,420 --> 00:16:37,840 eine andere Sache, die sie hinzufügen möchten bis zum Ende ihrer Saite, und das ist zum Scheitern verurteilt. 196 00:16:37,840 --> 00:16:40,770 Sie müssen str tun. = 197 00:16:42,000 --> 00:16:46,240 Also nicht vergessen Verkettung in PHP ist ein Punkt. 198 00:16:46,240 --> 00:16:52,100 Andere Dinge zu versuchen: print ("CS" + 50); 199 00:16:55,750 --> 00:17:03,610 Ich habe Ihnen gesagt, dass es keine Hoffnung dass dies zu CS50 200 00:17:03,610 --> 00:17:06,119 Seit Verkettung ist nicht +. 201 00:17:06,119 --> 00:17:08,440 Was denkst du, das wird am Ende wird? 202 00:17:10,359 --> 00:17:13,460 Ich habe ehrlich gesagt habe absolut keine Ahnung. 203 00:17:14,250 --> 00:17:16,460 Es sieht aus wie es nur 50. 204 00:17:16,460 --> 00:17:21,490 Er sieht die Zeichenfolge, und ich wette, wenn wir 123CS setzen - 205 00:17:21,490 --> 00:17:29,640 Er sieht die erste Saite, versucht er, eine ganze Zahl von ihm oder eine Reihe von ihm zu lesen. 206 00:17:29,640 --> 00:17:31,710 In diesem Fall sieht 123CS. 207 00:17:31,710 --> 00:17:35,190 "Das macht keinen Sinn, als eine ganze Zahl, also bin ich gerade dabei, von 123 zu denken." 208 00:17:35,190 --> 00:17:38,580 So 123 + 50 wird 173 sein. 209 00:17:38,580 --> 00:17:40,740 Und hier beginnt der Lektüre dieses als integer. 210 00:17:40,740 --> 00:17:45,690 Es sieht nichts, so dass es nur behandelt es als 0 ist. So 0 + 50 wird 50 sein. 211 00:17:45,690 --> 00:17:51,600 Dieses Ich gehe davon wird etwas Ähnliches zu tun. 212 00:17:51,600 --> 00:17:54,310 Ich denke, 99. 213 00:17:54,310 --> 00:17:57,580 Ja, weil es geht um das erste - 214 00:18:12,880 --> 00:18:15,730 So 99. 215 00:18:15,730 --> 00:18:21,970 Hier (7.10), wenn dies C, was wäre das zurück? 216 00:18:23,700 --> 00:18:29,630 [Schüler] 1. >> Ja, wäre es ein, weil 10/7 spaltet 2 Zahlen. 217 00:18:29,630 --> 00:18:32,910 Eine ganze Zahl, durch eine Ganzzahl wird eine ganze Zahl zurück. 218 00:18:32,910 --> 00:18:37,750 Es kann nicht wieder 1 Punkt was auch immer das sein würde, so ist es nur geht auf 1 zurück. 219 00:18:37,750 --> 00:18:46,120 Hier Drucken (7.10); es wird tatsächlich zu interpretieren, dass. 220 00:18:46,120 --> 00:18:53,760 Und das bedeutet, dass, wenn Sie wirklich wollen, Integer Rundung und Sachen wie das zu tun, 221 00:18:53,760 --> 00:18:59,950 Sie print (floor (7.10)) zu tun; 222 00:18:59,950 --> 00:19:08,460 In C ist es wahrscheinlich seltsam, dass man auf Integer Abschneiden regelmäßig vertrauen, 223 00:19:08,460 --> 00:19:12,260 aber in PHP können Sie nicht, weil es wird automatisch in einen Schwimmer. 224 00:19:13,430 --> 00:19:17,610 Und dann (7 + true); was denkst du, das wird sein? 225 00:19:18,550 --> 00:19:23,640 Ich vermute, 8, wenn es sich auf zu interpretieren, wie ein wahr. 226 00:19:23,640 --> 00:19:25,740 Es sieht so aus 8 ist. 227 00:19:25,740 --> 00:19:31,710 >> So alles, was wir in den letzten 10 Minuten sind Sie absolut nie tun sollte getan habe. 228 00:19:31,710 --> 00:19:39,870 Sie werden sehen, Code, der dies tut. 229 00:19:39,870 --> 00:19:42,700 Es muss nicht so einfach sein wie dies. 230 00:19:42,700 --> 00:19:47,240 Sie hätten zwei Variablen und 1 variable passiert ein String sein 231 00:19:47,240 --> 00:19:51,310 und die andere Variable zufällig ein int sein, und dann fügen Sie diese Variablen zusammen. 232 00:19:51,310 --> 00:20:00,120 Da PHP dynamisch typisiert und es wird nicht jede Art Prüfung für Sie 233 00:20:00,120 --> 00:20:03,640 und da es schwach typisiert und da wird es einfach automatisch werfen diese Dinge zusammen 234 00:20:03,640 --> 00:20:11,490 und alles wird nur funktionieren, ist es schwierig, sogar wissen, dass diese Variable muss ein String jetzt sein, 235 00:20:11,490 --> 00:20:14,930 also sollte ich nicht fügen Sie es auf diese Variable, die ein Integer ist. 236 00:20:18,780 --> 00:20:24,560 Best Practice ist, ob eine Variable ein String ist, halten Sie es als String immer. 237 00:20:24,560 --> 00:20:26,980 Wenn eine Variable vom Typ int, halten Sie es als int immer. 238 00:20:26,980 --> 00:20:30,770 Wenn Sie mit Zahlen und Strings umgehen, 239 00:20:30,770 --> 00:20:36,970 können Sie varsint - das ist JavaScript. 240 00:20:36,970 --> 00:20:42,520 Intval. Ich tue dies die ganze Zeit. PHP-und JavaScript-mische ich alles. 241 00:20:42,520 --> 00:20:47,600 So intval wird, um den ganzzahligen Wert einer Variablen zurück. 242 00:20:47,600 --> 00:20:56,550 Wenn wir in "print (intval ('123 ')) übergeben, erhalten Sie 123. 243 00:21:06,820 --> 00:21:15,850 Intval selbst nicht, um die Prüfung für uns, dass es ausschließlich ist eine ganze Zahl zu tun. 244 00:21:15,850 --> 00:21:20,460 Das PHP Handbuch gibt es nur so viele Funktionen zur Verfügung, 245 00:21:20,460 --> 00:21:26,560 so hier denke ich, was ich verwenden is_numeric erste. 246 00:21:26,560 --> 00:21:32,590 Ich vermute, dass false zurückgegeben. 247 00:21:32,590 --> 00:21:35,780 Das ist eine andere Sache, die wir haben ist vorbei === gehen. 248 00:21:37,850 --> 00:21:44,020 So is_numeric ('123df '), würden Sie nicht dieses als is_numeric denken. 249 00:21:44,020 --> 00:21:46,720 In C müssten Sie durchlaufen alle Zeichen 250 00:21:46,720 --> 00:21:50,410 und überprüfen Sie, ob jedes Zeichen Ziffer oder was auch immer. 251 00:21:50,410 --> 00:21:53,850 Hier is_numeric wird das für uns tun, 252 00:21:53,850 --> 00:21:56,520 und es ist wieder falsch. 253 00:21:56,520 --> 00:22:02,120 Also, wenn ich das gedruckt, druckte es nichts, so dass ich hier bin im Vergleich, um zu sehen, 254 00:22:02,120 --> 00:22:05,490 hast du zufällig falsch sein? Und so jetzt ist es Ausdruck 1. 255 00:22:05,490 --> 00:22:10,060 Anscheinend gibt 1 als wahr anstelle von Druck wahr, wie wahr. 256 00:22:10,060 --> 00:22:15,790 Ich frage mich, wenn ich print_r tun. Nein, es ist immer noch ein. 257 00:22:15,790 --> 00:22:26,760 >> Gehen wir zurück zu === == noch existiert, 258 00:22:26,760 --> 00:22:32,260 und wenn man Tommy reden wird er sagen == ist völlig in Ordnung. 259 00:22:32,260 --> 00:22:37,700 Ich werde sagen, dass == ist schrecklich, und Sie sollten nie benutzen. == 260 00:22:37,700 --> 00:22:44,870 Der Unterschied ist, dass == Dinge vergleicht 261 00:22:44,870 --> 00:22:48,450 wo es wahr sein kann, auch wenn sie nicht die gleiche Art sind, 262 00:22:48,450 --> 00:22:53,810 während === vergleicht Dinge und es zunächst prüft sie sind vom gleichen Typ? 263 00:22:53,810 --> 00:22:58,010 Ja. Okay, jetzt werde ich sehen, ob sie zu vergleichen eigentlich gleich sein. 264 00:22:58,010 --> 00:23:08,890 Sie sonderbare Dinge wie 10 gleich - mal sehen, was da steht. 265 00:23:08,890 --> 00:23:15,570 So ('10 '== '1 e1'); 266 00:23:15,570 --> 00:23:17,980 Diese true zurück. 267 00:23:17,980 --> 00:23:21,420 Hat jemand irgendwelche Vermutungen, warum dies gibt true? 268 00:23:25,180 --> 00:23:27,120 Es ist nicht nur darüber. Vielleicht ist das ein Hinweis. 269 00:23:27,120 --> 00:23:33,170 Aber wenn ich, dass die Änderung eines F - verdammt es! Ich halte doppelte Anführungszeichen benutzt. 270 00:23:33,170 --> 00:23:38,780 Der Grund für die doppelte Anführungszeichen zu mir schreit, ist, weil ich diese in doppelte Anführungszeichen habe setzen. 271 00:23:38,780 --> 00:23:43,850 So konnte ich entkommen die Anführungszeichen in hier, aber einfache Anführungszeichen erleichtern. 272 00:23:43,850 --> 00:23:49,120 So ('10 '== '1 f1'); druckt nicht wahr. ('10 '== '1 E1'); druckt wahr. 273 00:23:49,120 --> 00:23:56,330 [Schüler] Ist es hex? >> Es ist nicht hex, aber es ist nahe, dass, wie es ist - 274 00:23:56,330 --> 00:24:01,060 1e1, wissenschaftliche Notation. 275 00:24:01,060 --> 00:24:07,950 Er erkennt als 1 1e1 * 10 ^ 1 oder was auch immer. 276 00:24:07,950 --> 00:24:11,510 Das sind gleich Zahlen. 277 00:24:11,510 --> 00:24:15,930 Wenn wir === dann tun, es wird falsch sein. 278 00:24:15,930 --> 00:24:28,490 Ich habe eigentlich keine Ahnung, ob wir tun == was (10 und '10abc ');? Gut. Also das ist wahr. 279 00:24:28,490 --> 00:24:35,940 So wie wenn man (10 + '10abc ') haben, und es wäre 20, 280 00:24:35,940 --> 00:24:38,800 hier (10 == '10abc '); wahr ist. 281 00:24:38,800 --> 00:24:45,350 Noch schlimmer sind Dinge wie (false == NULL); gilt 282 00:24:45,350 --> 00:24:52,210 oder (false == 0); wahr ist, (false == []); 283 00:24:52,210 --> 00:25:00,970 Es gibt seltsame Fälle von - Das ist einer jener seltsamen Fällen. 284 00:25:00,970 --> 00:25:08,110 Beachten Sie, dass (false == []); wahr ist. 285 00:25:08,110 --> 00:25:11,950 ('0 '== False); wahr ist. 286 00:25:11,950 --> 00:25:16,090 ('0 '== []); Falsch ist. 287 00:25:16,090 --> 00:25:19,090 So == ist in keiner Weise transitiv. 288 00:25:19,090 --> 00:25:26,830 a kann gleich b und a kann gleich c, 289 00:25:26,830 --> 00:25:29,340 aber b vielleicht nicht gleich c. 290 00:25:29,340 --> 00:25:35,580 Das ist mir ein Greuel, und Sie sollten immer. === 291 00:25:35,580 --> 00:25:38,590 [Schüler] Können wir tun! == Wie gut? >> [Bowden] Ja. 292 00:25:38,590 --> 00:25:44,600 Das Äquivalent wäre! = Und! ==. 293 00:25:44,600 --> 00:25:48,230 Dies ist tatsächlich in der pset spec gebracht 294 00:25:48,230 --> 00:25:52,000 wo eine Menge von Funktionen zurück - 295 00:25:52,000 --> 00:25:53,890 Das PHP Handbuch ist gut über diese. 296 00:25:53,890 --> 00:25:59,140 Es stellt in einem großen roten Feld "Dies wird false zurück, wenn es ein Fehler." 297 00:25:59,140 --> 00:26:03,940 Aber wieder 0 ist eine durchaus vernünftige Sache zurückzukehren. 298 00:26:03,940 --> 00:26:08,250 Denken Sie über jede Funktion, die voraussichtlich eine ganze Zahl zurückzugeben. 299 00:26:11,250 --> 00:26:17,880 Sagen wir diese Funktion soll die Anzahl der Zeilen in einer Datei oder etwas zählen. 300 00:26:17,880 --> 00:26:23,490 Unter normalen Umständen, übergeben Sie diese Funktion eine Datei 301 00:26:23,490 --> 00:26:27,120 und es wird eine ganze Zahl, die die Anzahl der Zeilen darstellt zurückzukehren. 302 00:26:27,120 --> 00:26:30,820 So 0 ist eine durchaus vernünftige Zahl, wenn die Datei ist nur leer. 303 00:26:30,820 --> 00:26:36,810 Aber was, wenn Sie sie eine ungültige Datei übergeben und die Funktion geschieht mit return false 304 00:26:36,810 --> 00:26:38,860 Übergeben Sie eine ungültige Datei? 305 00:26:38,860 --> 00:26:46,500 Wenn Sie gerade tun == Sie nicht Differenzierung der Fall zwischen ungültigen Datei und leere Datei. 306 00:26:48,870 --> 00:26:51,350 Immer. === 307 00:26:55,690 --> 00:26:58,000 Das ist alles von denen. 308 00:26:58,000 --> 00:27:01,660 >> In PHP ist die Array-Typ anders aus, was Sie in C eingesetzt 309 00:27:01,660 --> 00:27:06,650 In der Tat, können Sie bereits bemerkt haben, diese vor, als sie sah, dass dies vom Typ Array ist. 310 00:27:06,650 --> 00:27:15,640 Die Klammer-Syntax ist neu in PHP 5.4, die die neueste Version von PHP ist. 311 00:27:15,640 --> 00:27:36,960 Bevor diese mußte man immer Array geschrieben ('a' -> 1, 'b' -> 2. 312 00:27:36,960 --> 00:27:41,160 Das war der Konstruktor für ein Array. 313 00:27:41,160 --> 00:27:45,950 Jetzt PHP hat endlich der schöne Syntax nur eckigen Klammern kommen, 314 00:27:45,950 --> 00:27:50,900 das ist einfach so viel besser als Array. 315 00:27:50,900 --> 00:27:54,480 Aber wenn man bedenkt PHP 5.4 ist die neueste Version, 316 00:27:54,480 --> 00:27:59,090 auftreten können Orte, die noch nicht einmal PHP 5.3. 317 00:27:59,090 --> 00:28:08,220 Im Laufe des Sommers haben wir lief in dieser Frage, wo PHP 5.3 war, was wir auf dem Gerät hatte, 318 00:28:08,220 --> 00:28:14,480 aber der Server, dass wir alle unsere Klasse Buch eingesetzt und und all das Zeug zu unterbreiten 319 00:28:14,480 --> 00:28:16,750 war PHP 5.4. 320 00:28:16,750 --> 00:28:23,060 Nicht wissend, wir 5,3 entwickelt, stieß auf 5,4, 321 00:28:23,060 --> 00:28:25,660 und jetzt plötzlich keiner unserer Code funktioniert 322 00:28:25,660 --> 00:28:28,680 da passiert es Veränderungen zwischen 5,3 und 5,4 haben 323 00:28:28,680 --> 00:28:31,030 die nicht rückwärts kompatibel, 324 00:28:31,030 --> 00:28:35,770 und wir haben zu gehen und beheben Sie alle unsere Sachen, die nicht für PHP 5,4 funktionieren. 325 00:28:39,210 --> 00:28:42,320 Für diese Klasse, da das Gerät hat zwar PHP 5.4, 326 00:28:42,320 --> 00:28:45,490 Es ist völlig in Ordnung, eckigen Klammern verwenden. 327 00:28:47,240 --> 00:28:50,440 Aber wenn Sie schauen, bis Dinge rund um das Internet, 328 00:28:50,440 --> 00:28:54,880 wenn Sie schauen, bis du eine Art von Array Zeug, wahrscheinlich wirst du sehen, 329 00:28:54,880 --> 00:29:02,020 der Zauber aus array Konstruktorsyntax denn das ist schon seit PHP war geboren wurde 330 00:29:02,020 --> 00:29:07,340 und eckige Klammer-Syntax gibt es schon seit den letzten paar Monaten 331 00:29:07,340 --> 00:29:10,020 oder wenn 5,4 kam um. 332 00:29:10,020 --> 00:29:12,710 Dies ist, wie Sie index. 333 00:29:12,710 --> 00:29:30,610 Just in C gefällt, wie würden Sie Index in eckigen Klammern wie $ array [0], $ array [1], $ array [2], 334 00:29:30,610 --> 00:29:36,320 Sie Index auf die gleiche Weise, wenn Sie Ihre Indices Strings passieren. 335 00:29:36,320 --> 00:29:40,440 So $ array ['a'] und $ array ['b']. 336 00:29:40,440 --> 00:29:47,410 $ Array [b]. Warum sollte dies falsch sein? 337 00:29:52,490 --> 00:29:59,870 Es wird wahrscheinlich eine Warnung, aber immer noch funktionieren. PHP neigt dazu, das zu tun. 338 00:29:59,870 --> 00:30:04,890 Es neigt dazu, nur: "Ich werde mit Ihnen darüber zu warnen, aber ich werde einfach weitermachen 339 00:30:04,890 --> 00:30:07,550 "Und tun, was ich kann." 340 00:30:07,550 --> 00:30:11,500 Es wird wahrscheinlich übersetzen diese in einen String, 341 00:30:11,500 --> 00:30:15,000 aber es ist möglich, dass zu irgendeinem Zeitpunkt in der Vergangenheit jemand gesagt 342 00:30:15,000 --> 00:30:20,180 definieren b als "HALLO WELT". 343 00:30:20,180 --> 00:30:28,740 So, jetzt b konnte eine Konstante und $ array sein [b] wird tatsächlich tun "HALLO WELT". 344 00:30:28,740 --> 00:30:32,380 Ich denke, an diesem Punkt, oder zumindest unsere PHP-Einstellungen, 345 00:30:32,380 --> 00:30:37,870 Wenn Sie Index in ein Array versuchen, dass Schlüssel nicht vorhanden ist, wird es scheitern. 346 00:30:37,870 --> 00:30:40,150 Ich glaube nicht, es wird nur warnen. 347 00:30:40,150 --> 00:30:44,560 Oder zumindest kann man es so eingestellt, dass es nicht nur warnen, nicht Sie, es ist nur gerade nach oben ausfällt. 348 00:30:44,560 --> 00:30:49,290 >> Die Art und Weise überprüfen, ob es tatsächlich ein solcher Index ist isset. 349 00:30:49,290 --> 00:30:54,690 So isset ($ array ['HALLO WELT']) false zurück. 350 00:30:54,690 --> 00:30:59,160 isset ($ array ['b']) gibt true zurück. 351 00:31:06,830 --> 00:31:09,880 Sie können mischen diese Syntax. 352 00:31:15,060 --> 00:31:22,440 Ich bin mir ziemlich sicher, was das Array würde am Ende wird es - Wir können es testen. 353 00:31:43,290 --> 00:31:45,700 Oh, ich brauche PHPWord. 354 00:31:53,960 --> 00:32:00,260 Dies ist das Mischen der Syntax, wo Sie angeben, welche der Schlüssel 355 00:32:00,260 --> 00:32:03,330 und Sie müssen nicht angeben, was der Schlüssel ist. 356 00:32:03,330 --> 00:32:05,520 So 3 hier ist ein Wert. 357 00:32:05,520 --> 00:32:08,080 Sie haben nicht ausdrücklich gesagt, was seine wichtigsten sein wird. 358 00:32:08,080 --> 00:32:11,670 Was denken Sie seine wichtigsten sein wird? 359 00:32:11,670 --> 00:32:21,410 [Student] 0. >> Ich vermute 0 nur, weil es das erste, das wir nicht angegeben haben ist. 360 00:32:21,410 --> 00:32:23,500 Wir können tatsächlich ein paar dieser Fälle. 361 00:32:23,500 --> 00:32:28,030 So print_r zu drucken rekursiv. Es druckt das gesamte Array. 362 00:32:28,030 --> 00:32:32,700 Es wäre zu drucken Teilfelder des Array, wenn es welche gibt. 363 00:32:32,700 --> 00:32:36,630 So print_r ($ array); php.test.php. 364 00:32:36,630 --> 00:32:38,810 Es sieht wie es sie gab 0. 365 00:32:38,810 --> 00:32:43,530 Es gibt tatsächlich etwas im Auge behalten, aber wir werden wieder, um es in einer Sekunde. 366 00:32:43,530 --> 00:32:45,850 Aber was, wenn ich diesen Index 1 zu passieren? 367 00:32:45,850 --> 00:32:51,170 PHP nicht zwischen String-Indizes und Integer-Indizes differenzieren, 368 00:32:51,170 --> 00:33:00,280 deshalb an dieser Stelle Ich habe gerade einen Index 1 definiert, und ich kann sowohl $ array [1] und $ array ['1 '] zu tun 369 00:33:00,280 --> 00:33:06,250 und es werden die gleichen Index und der gleiche Schlüssel sein. 370 00:33:06,250 --> 00:33:13,000 So, jetzt was denken Sie 3 sein wird? >> [Student] 2. >> [Bowden] Ich vermute, 2 bin. 371 00:33:16,000 --> 00:33:18,690 Yeah. Es ist 2. 372 00:33:18,690 --> 00:33:24,790 Was passiert, wenn taten wir dies ist 10, das 4? Was denken Sie, der Index 3 sein wird? 373 00:33:27,360 --> 00:33:29,110 Ich denke, 11. 374 00:33:29,110 --> 00:33:33,060 Meine Vermutung, was PHP tut - und ich glaube, ich habe das schon mal gesehen - 375 00:33:33,060 --> 00:33:39,760 ist es nur verfolgt, was die höchste numerischen Index es so weit ist verwendet wird. 376 00:33:39,760 --> 00:33:44,230 Es wird nie eine String-Index bis 3 zuzuordnen. Es wird immer ein numerischer Index sein. 377 00:33:44,230 --> 00:33:47,690 So verfolgt die höchste es bisher zugewiesen ist, was 10 werden passiert, 378 00:33:47,690 --> 00:33:52,540 und es wird auf 11 bis 3 geben. 379 00:33:52,540 --> 00:34:02,110 Was ich schon sagte, bemerkt, wie er druckt dieses Array wird. 380 00:34:02,110 --> 00:34:06,850 Er druckt Schlüssel 10, Pos. 4, Pos. 11, Taste d drücken. 381 00:34:06,850 --> 00:34:09,790 Oder sogar lass es uns tun - 382 00:34:15,760 --> 00:34:22,489 Ich glaube, ich habe nicht einen 0, aber es ist Druck 1, 2, 3, 4. 383 00:34:22,489 --> 00:34:29,330 Was ist, wenn ich hier wechseln? Oder nehmen wir eigentlich schaltet diese 2. 384 00:34:29,330 --> 00:34:31,940 Nun druckt 2, 1, 3, 4. 385 00:34:31,940 --> 00:34:41,270 PHP Arrays sind nicht nur wie Ihre regelmäßigen Hash-Tabelle. 386 00:34:41,270 --> 00:34:45,570 Es ist durchaus sinnvoll, sie als Hash-Tabellen 99% der Zeit denken. 387 00:34:45,570 --> 00:34:53,790 Aber in Ihrem Hash-Tabellen gibt es kein Gefühl von der Reihenfolge, in der die Dinge eingefügt wurden. 388 00:34:53,790 --> 00:34:56,639 So, sobald Sie fügen Sie ihn in Ihren Hash-Tabelle, 389 00:34:56,639 --> 00:35:00,590 davon gibt es keine verknüpfte Liste, und man konnte in einer verketteten Liste zu beurteilen 390 00:35:00,590 --> 00:35:03,980 das zuerst eingefügt. 391 00:35:03,980 --> 00:35:10,060 Aber hier haben wir 2 eingefügt erste und es weiß, wann es gedruckt ist, diese Array, 2 zuerst kommt. 392 00:35:10,060 --> 00:35:13,090 Es ist nicht ausdrucken in nur einer beliebigen Reihenfolge. 393 00:35:13,090 --> 00:35:17,550 Die technischen Daten-Struktur, dass es mit ist eine geordnete Karte 394 00:35:17,550 --> 00:35:24,690 so ordnet Werten Schlüssel zu und erinnert sich an die Reihenfolge, in der die Schlüssel eingefügt wurden. 395 00:35:24,690 --> 00:35:31,600 Im Grunde ist es zu einigen Komplikationen, wo es ist ärgerlich, tatsächlich - 396 00:35:31,600 --> 00:35:34,510 Angenommen, Sie haben eine Reihe 0, 1, 2, 3, 4, 5 397 00:35:34,510 --> 00:35:37,700 und Sie möchten, nehmen Sie Index 2. 398 00:35:37,700 --> 00:35:47,750 Ein Weg, es zu tun, mal sehen, wie das aussieht. 399 00:35:47,750 --> 00:35:50,410 0, 2, 1, 3, 4. 400 00:35:50,410 --> 00:35:54,880 Unset passiert, um beide Variablen und Array-Indizes aufzuheben. 401 00:35:54,880 --> 00:35:58,630 So unset ($ array [2]); 402 00:35:58,630 --> 00:36:03,430 Nun, was ist das wohl aussehen? 2 ist einfach weg, also ist das völlig in Ordnung. 403 00:36:03,430 --> 00:36:11,670 Mehr ärgerlich ist, wenn man die Dinge tatsächlich wie ein Array sein wollen. 404 00:36:11,670 --> 00:36:14,910 Ich lege Zufallszahlen. 405 00:36:14,910 --> 00:36:20,400 Jetzt bemerkt meinen Indizes. 406 00:36:20,400 --> 00:36:26,860 Ich will es genau wie ein C-Array sein, wo es von 0 bis Länge geht - 1 407 00:36:26,860 --> 00:36:30,810 und ich kann über sie als solche zu durchlaufen. 408 00:36:30,810 --> 00:36:38,520 Aber sobald ich den zweiten Index, was im Index 3 war unset nicht geworden Index 2. 409 00:36:38,520 --> 00:36:44,790 Stattdessen entfernt nur diesen Index und jetzt gehen Sie 0, 1, 3, 4. 410 00:36:44,790 --> 00:36:48,740 Dies ist durchaus sinnvoll. 411 00:36:48,740 --> 00:36:53,950 Es ist nur ärgerlich, und Sie haben, um Dinge wie array splice tun. Yeah. 412 00:36:53,950 --> 00:36:57,200 >> [Schüler] Was würde passieren, wenn Sie ein mussten for-Schleife 413 00:36:57,200 --> 00:36:59,630 und Sie wollten über alle Elemente gehen? 414 00:36:59,630 --> 00:37:02,290 Wenn es 2 getroffen, wäre es immer nachgeben? 415 00:37:02,290 --> 00:37:10,150 Iteration über ein Array. Es gibt 2 Möglichkeiten, wie Sie es tun können. 416 00:37:10,150 --> 00:37:12,770 Sie können einen regulären for-Schleife. 417 00:37:12,770 --> 00:37:22,000 Dies ist ein weiterer Komplexität von PHP. 418 00:37:22,000 --> 00:37:27,420 Die meisten Sprachen, würde ich sagen, haben eine Art von Länge oder len oder etwas 419 00:37:27,420 --> 00:37:30,470 Angabe der Länge eines Arrays. 420 00:37:30,470 --> 00:37:32,820 In PHP ist es zählen. 421 00:37:32,820 --> 00:37:36,160 So count ($ array); $ i + +) 422 00:37:36,160 --> 00:37:42,950 Lasst uns einfach print ($ array [$ i]); 423 00:37:45,920 --> 00:37:48,820 Notice: Undefined offset: 2. 424 00:37:48,820 --> 00:37:51,610 Es ist einfach zum Scheitern verurteilt. 425 00:37:51,610 --> 00:38:03,020 Dies ist der Grund, dass in den meisten Fällen, müssen Sie nie durchlaufen ein Array wie folgt. 426 00:38:03,020 --> 00:38:07,110 Es könnte eine Übertreibung sein, aber Sie müssen nie durchlaufen ein Array wie folgt 427 00:38:07,110 --> 00:38:19,410 weil PHP bietet seinen foreach-Syntax, wo foreach ($ array as $ item). 428 00:38:19,410 --> 00:38:31,830 Nun, wenn wir drucken ($ item); - wir werden darüber diskutieren in einem zweiten - das ist völlig in Ordnung, funktioniert. 429 00:38:31,830 --> 00:38:38,960 Die Art und Weise, dass foreach funktioniert, ist das erste Argument ist das Array, dass Sie durchlaufen. 430 00:38:38,960 --> 00:38:44,060 Und das zweite Argument, Punkt, durch jeden Durchlauf der for-Schleife 431 00:38:44,060 --> 00:38:52,690 es wird auf die nächste, was im Array zu nehmen. Also denken Sie daran das Array hat einen Auftrag. 432 00:38:52,690 --> 00:38:55,690 Das erste Mal durch die for-Schleife, wird Gegenstand, der bis 123 sein, 433 00:38:55,690 --> 00:38:59,540 dann wird es 12 sein, dann wird es 13 sein, dann wird es 23 sein, dann wird es 213 sein. 434 00:38:59,540 --> 00:39:04,670 Dinge wirklich seltsam, wenn Sie so etwas wie foreach tun. 435 00:39:04,670 --> 00:39:07,480 Mal sehen, was passiert, weil man nie sollte dies tun. 436 00:39:07,480 --> 00:39:13,320 Was, wenn wir unset ($ array [1]); 437 00:39:20,410 --> 00:39:26,030 Das war wohl zu erwarten. 438 00:39:26,030 --> 00:39:30,950 Du bist auf diesem Array iterieren, und jedes Mal Sie Entschärfen der erste Index. 439 00:39:30,950 --> 00:39:39,720 So für den Index 0, findet die erste Sache, Element auf den Wert 0, so es geht um 123 sein. 440 00:39:39,720 --> 00:39:44,630 Aber innerhalb der for-Schleife wir unset Index 1, so dass Mittel 12 ist weg. 441 00:39:44,630 --> 00:39:57,480 So drucken. PHP_EOL. 442 00:39:57,480 --> 00:40:03,580 PHP_EOL ist nur newline, aber es ist technisch tragbaren 443 00:40:03,580 --> 00:40:08,890 da Zeilenumbrüche in Windows unterscheidet sich von Zeilenumbrüche auf Mac und UNIX. 444 00:40:08,890 --> 00:40:18,040 Auf Windows-Zeilenumbruch wird \ r \ n, während überall sonst eher nur um \ n sein. 445 00:40:18,040 --> 00:40:25,150 PHP_EOL ist so konfiguriert, dass nutzt es, was das Newline Ihres Systems ist. 446 00:40:25,150 --> 00:40:29,310 Drucken, so dass. Lassen Sie uns nicht print_r ($ array) am Ende. 447 00:40:32,830 --> 00:40:37,390 Ich hatte keine Ahnung, dass das wäre das Verhalten sein. 448 00:40:41,740 --> 00:40:48,960 Artikel dauert noch auf den Wert 12, obwohl wir 12 bevor wir jemals auf sie aus dem Array unset. 449 00:40:52,770 --> 00:40:58,840 Nehmen Sie nicht mein Wort, aber es sieht aus wie foreach erstellt eine Kopie des Arrays 450 00:40:58,840 --> 00:41:02,160 und dann Artikel nimmt alle Werte dieser Kopie. 451 00:41:02,160 --> 00:41:07,760 Also selbst wenn Sie ändert das Array innerhalb der for-Schleife 452 00:41:07,760 --> 00:41:17,240 es wird nicht zu kümmern. Artikel wird auf die ursprünglichen Werte zu nehmen. 453 00:41:17,240 --> 00:41:19,240 Lassen Sie uns versuchen unscharf ist. 454 00:41:19,240 --> 00:41:24,460 Was ist, wenn dies $ array [1] = "Hallo"; 455 00:41:24,460 --> 00:41:31,770 Auch wenn wir "Hallo" put in das Array, Punkt nimmt nie auf diesen Wert. 456 00:41:31,770 --> 00:41:37,430 Es gibt eine andere Syntax, um Loops foreach 457 00:41:37,430 --> 00:41:45,900 wo Sie 2 Variablen durch einen Pfeil getrennt. 458 00:41:45,900 --> 00:41:49,680 Diese erste variable wird der Schlüssel dieser Wert sein, 459 00:41:49,680 --> 00:41:53,050 und das zweite Variable wird exakt das gleiche Element sein. 460 00:41:53,050 --> 00:42:01,610 Dies ist hier uninteressant, aber wenn wir zurück zu unserem ursprünglichen Fall von 'a' zu gehen -> 1, 461 00:42:01,610 --> 00:42:06,090 "B" -> 1, 462 00:42:06,090 --> 00:42:14,470 hier, wenn wir für jedes Array als Element nur durchlaufen, ist Gegenstand, der 1 sein jede einzelne Zeit. 463 00:42:14,470 --> 00:42:18,170 Aber wenn wir wollen auch den Schlüssel mit diesem Element verbunden wissen 464 00:42:18,170 --> 00:42:25,230 dann tun wir as $ key -> $ item. 465 00:42:25,230 --> 00:42:31,980 So können wir jetzt tun, print ($ key. ':'. 466 00:42:31,980 --> 00:42:39,380 Jetzt ist es Iteration über und Drucken jede Taste und die damit verbundenen Wert. 467 00:42:39,380 --> 00:42:47,030 >> Eine weitere Sache, die wir in foreach-Schleifen tun können, ist sehen Sie möglicherweise die folgende Syntax. 468 00:42:47,030 --> 00:42:54,770 Ampersands vor Variablennamen sind in der Regel, wie PHP Referenzen tut. 469 00:42:54,770 --> 00:43:00,460 Wo Referenzen sind sehr ähnlich Zeiger, 470 00:43:00,460 --> 00:43:04,820 Sie müssen nicht Zeiger, so dass Sie nie mit Speicher direkt. 471 00:43:04,820 --> 00:43:12,620 Aber Sie haben Hinweise, wo 1 Variable bezieht sich auf die gleiche Sache wie eine andere Variable. 472 00:43:12,620 --> 00:43:21,450 Innerhalb von hier machen wir $ item. Gehen wir zurück auf 1, 10. 473 00:43:21,450 --> 00:43:28,800 Lasst uns $ item + +; die noch in PHP. Sie können immer noch + +. 474 00:43:28,800 --> 00:43:38,260 php.test.php. Ich habe sie zu drucken. print_r ($ array); 475 00:43:38,260 --> 00:43:42,730 Wir drucken 2, 11. 476 00:43:42,730 --> 00:43:49,560 Wenn ich nur foreach ($ array as $ item) getan hatte dann Punkt wird der Wert 1 sein 477 00:43:49,560 --> 00:43:54,190 das erste Mal durch die Schleife. Es wird 1 bis 2 erhöht und dann sind wir fertig. 478 00:43:54,190 --> 00:43:57,260 So dann wird es durch den zweiten Durchlauf der Schleife zu gehen und dieses Element ist 10. 479 00:43:57,260 --> 00:44:01,570 Es Schritten Artikel 11 und dann das ist nur weggeworfen. 480 00:44:01,570 --> 00:44:06,670 Dann haben wir print_r ($ array); und mal sehen, dass dies nur 1 ist, 10. 481 00:44:06,670 --> 00:44:09,070 So das Inkrement wir taten, war verloren. 482 00:44:09,070 --> 00:44:13,410 Aber foreach ($ array as & $ item) 483 00:44:13,410 --> 00:44:21,910 Jetzt ist dieser Artikel das gleiche Element wie dieses hier. Es ist die gleiche Sache. 484 00:44:21,910 --> 00:44:26,820 So $ item + + ist die Veränderung Array 0. 485 00:44:29,330 --> 00:44:41,850 Grundsätzlich kann man auch tun, $ k -> $ item und Sie können $ zu tun array [$ k] + +; 486 00:44:41,850 --> 00:44:48,650 >> So andere Weise das zu tun, sind wir frei, Artikel zu ändern, 487 00:44:48,650 --> 00:44:54,070 aber das wird nicht verändert unsere ursprüngliche Array. 488 00:44:54,070 --> 00:44:59,720 Aber wenn wir k, die unsere Schlüssel verwenden, können wir dann nur Index in unser Angebot und über diesen Schlüssel 489 00:44:59,720 --> 00:45:01,530 und erhöhen, dass. 490 00:45:01,530 --> 00:45:05,410 Diese mehr direkt unseren ursprünglichen Array. 491 00:45:05,410 --> 00:45:10,690 Sie können sogar tun, wenn Sie aus irgendeinem Grund die Fähigkeit zu verändern wollte - 492 00:45:10,690 --> 00:45:13,510 Eigentlich ist dies durchaus sinnvoll. 493 00:45:13,510 --> 00:45:16,020 Du hast nicht haben wollen, um $ array schreiben [$ k] + +, 494 00:45:16,020 --> 00:45:27,890 Sie wollte nur $ item schreiben + + aber immer noch sagen wollte if ($ k === 'a') 495 00:45:27,890 --> 00:45:30,620 dann erhöhen Element und dann ausdrucken unser Angebot. 496 00:45:30,620 --> 00:45:36,290 Und was jetzt erwarten wir print_r zu tun? Welche Werte sollen gedruckt werden? 497 00:45:36,290 --> 00:45:43,770 [Schüler] 2 und 10. >> [Bowden] Nur wenn der Schlüssel war 'a' wissen wir eigentlich so drucken. 498 00:45:51,940 --> 00:45:55,670 >> Sie werden wahrscheinlich sehr selten, wenn überhaupt, müssen Funktionen in PHP zu definieren, 499 00:45:55,670 --> 00:46:03,370 aber man könnte etwas Ähnliches, wo Sie eine Funktion wie die Funktion auch immer definieren. 500 00:46:03,370 --> 00:46:09,900 Normalerweise würde man sagen ($ foo, $ bar) und definieren Sie dann es auch immer sein. 501 00:46:09,900 --> 00:46:17,580 Aber wenn ich das tue, dann heißt das, dass was auch immer, was auch immer nennt, 502 00:46:17,580 --> 00:46:25,110 was nennt baz, so das erste Argument übergeben baz können geändert werden. 503 00:46:25,110 --> 00:46:38,100 Lasst uns $ foo + +; 504 00:46:38,100 --> 00:46:48,020 und innerhalb von hier machen wir baz ($ item); 505 00:46:48,020 --> 00:46:52,250 Jetzt sind wir eine Funktion aufzurufen. 506 00:46:52,250 --> 00:46:56,780 Das Argument durch Bezugnahme aufgenommen wird, was bedeutet, dass, wenn wir modifizieren 507 00:46:56,780 --> 00:47:00,390 wir ändern die Sache, die übergeben wurde 508 00:47:00,390 --> 00:47:04,420 Und Drucken wir erwarten - wenn ich durcheinander Syntax - wir haben 2, 11, 509 00:47:04,420 --> 00:47:06,300 so wurde tatsächlich erhöht. 510 00:47:06,300 --> 00:47:08,790 Bemerken wir müssen Verweise auf 2 Plätzen. 511 00:47:08,790 --> 00:47:13,050 Was ist, wenn ich das tat? Was bedeutet das? 512 00:47:13,050 --> 00:47:15,810 [Schüler] Es wird sich ändern. >> Ja. 513 00:47:15,810 --> 00:47:18,290 Artikel ist nur eine Kopie des Wertes im Array. 514 00:47:18,290 --> 00:47:26,670 So Element wird auf 2 ändern, aber das array ['a'] wird noch 1 sein. 515 00:47:26,670 --> 00:47:32,560 Oder was, wenn ich das tun? 516 00:47:32,560 --> 00:47:39,260 Jetzt Element wird als Kopie an baz gesendet. 517 00:47:39,260 --> 00:47:46,330 So ist die Kopie des Arguments wird auf 2 erhöht werden, 518 00:47:46,330 --> 00:47:49,240 aber Sache selbst wurde nie auf 2 erhöht. 519 00:47:49,240 --> 00:47:52,880 Und Artikel ist dasselbe wie array Halterung was auch immer, 520 00:47:52,880 --> 00:47:55,380 so daß Array wurde nie inkrementiert. 521 00:47:55,380 --> 00:47:57,960 So auch jene Orte brauchen. 522 00:47:57,960 --> 00:48:03,830 >> PHP ist in der Regel ziemlich schlau darüber. 523 00:48:03,830 --> 00:48:06,570 Man könnte denken, ich will als Referenz zu übergeben - 524 00:48:06,570 --> 00:48:09,560 Das war eigentlich eine Frage nach einem der pset. 525 00:48:09,560 --> 00:48:14,480 Es war ein Questions.txt Sache, wo man sagt, 526 00:48:14,480 --> 00:48:19,280 Warum möchten Sie vielleicht dieses struct als Referenz zu übergeben? 527 00:48:19,280 --> 00:48:21,250 Was war die Antwort auf diese Frage? 528 00:48:21,250 --> 00:48:25,100 [Schüler] So müssen Sie nicht etwas Großes zu kopieren. >> Ja. 529 00:48:25,100 --> 00:48:32,920 Eine Struktur kann beliebig groß sein, und wenn Sie passieren die struct als Argument 530 00:48:32,920 --> 00:48:36,800 es braucht, um diese gesamte struct kopieren, um es an die Funktion übergeben, 531 00:48:36,800 --> 00:48:40,410 Wenn Sie dagegen nur passieren die struct durch Bezugnahme 532 00:48:40,410 --> 00:48:46,530 dann muss nur eine 4-Byte-Adresse als Argument an die Funktion kopieren. 533 00:48:48,520 --> 00:48:52,320 PHP ist ein bisschen schlauer. 534 00:48:52,320 --> 00:49:00,650 Wenn ich eine Funktion und ich gebe es eine Reihe von 1000 Dinge, 535 00:49:00,650 --> 00:49:03,990 heißt das, es ist zu haben, um alle 1.000 von diesen Dingen kopieren 536 00:49:03,990 --> 00:49:10,450 um es in die Funktion übergeben? Es muss nicht, dass sofort tun. 537 00:49:10,450 --> 00:49:15,940 Wenn innerhalb dieser Funktion ist es eigentlich nie verändert foo, 538 00:49:15,940 --> 00:49:22,660 so if ($ foo === 'Hallo') return true. 539 00:49:22,660 --> 00:49:26,460 Beachten wir eigentlich nie das Argument innerhalb dieser Funktion geändert 540 00:49:26,460 --> 00:49:30,010 was bedeutet, dass alles, was in übergeben wurde, wie foo nie kopiert werden muss 541 00:49:30,010 --> 00:49:32,100 weil es nicht zu modifizieren. 542 00:49:32,100 --> 00:49:39,240 So wie PHP funktioniert, ist die Argumente werden immer per Referenz übergeben 543 00:49:39,240 --> 00:49:42,170 bis Sie wirklich versuchen, es zu ändern. 544 00:49:42,170 --> 00:49:51,160 Nun, wenn ich $ foo + + sagen, es wird nun eine Kopie des Originals foo und die Kopie ändern. 545 00:49:51,160 --> 00:49:53,090 Das spart etwas Zeit. 546 00:49:53,090 --> 00:49:58,210 Wenn Sie noch nie berührt sind diese massive Array, die Sie nie wirklich zu modifizieren, 547 00:49:58,210 --> 00:50:02,360 es muss nicht um die Kopie zu machen, 548 00:50:02,360 --> 00:50:06,640 während, wenn wir setzen diese kaufmännisches, dass es nicht einmal zu kopieren bedeutet 549 00:50:06,640 --> 00:50:08,640 auch wenn Sie sie ändern. 550 00:50:08,640 --> 00:50:10,680 Dieses Verhalten wird als copy-on-write. 551 00:50:10,680 --> 00:50:17,380 Du wirst es in anderen Orten zu sehen, vor allem, wenn Sie ein Betriebssystem Kurs zu nehmen. 552 00:50:17,380 --> 00:50:23,880 Copy-on-Write ist eine ziemlich übliche Muster, wo Sie nicht brauchen, um eine Kopie von etwas zu machen 553 00:50:23,880 --> 00:50:26,650 es sei denn, es ist wirklich zu ändern. Yeah. 554 00:50:26,650 --> 00:50:29,520 [Schüler] Was, wenn Sie hatten die Schrittweite im Test 555 00:50:29,520 --> 00:50:33,700 so dass nur ein Element von 1.000 müsste geändert werden? 556 00:50:33,700 --> 00:50:38,770 Ich bin nicht sicher. 557 00:50:38,770 --> 00:50:51,250 Ich denke, es wäre die ganze Sache zu kopieren, aber es ist möglich, es ist klug genug, dass - 558 00:50:51,250 --> 00:51:00,020 Eigentlich, was ich denke, ist vorstellbar hatten wir ein Array, das wie folgt aussieht: $ array2 = [ 559 00:51:00,020 --> 00:51:11,000 Dann Index 'a' ist ein Array von [1 2 3 4], und Index "b" ist ein Array von wie auch immer. 560 00:51:11,000 --> 00:51:15,380 Ich brauche Kommas zwischen all jene. Stell dir vor es gibt Kommas. 561 00:51:15,380 --> 00:51:21,210 Then 'c' ist der Wert 3. 562 00:51:24,210 --> 00:51:26,290 Okay. 563 00:51:26,290 --> 00:51:33,440 Jetzt sagen wir, wir tun $ baz ($ array2); 564 00:51:33,440 --> 00:51:36,540 wo baz nicht nehmen diese Bezug genommen wird. 565 00:51:43,510 --> 00:51:47,370 So $ foo ['c'] + +; 566 00:51:47,370 --> 00:51:52,340 Dies ist so ein Beispiel, wo wir vorbei array2 als Argument 567 00:51:52,340 --> 00:51:57,010 und es wird dann Modifizieren eines spezifischen Index des Arrays durch Inkrementieren. 568 00:51:57,010 --> 00:52:01,090 Ich habe ehrlich gesagt keine Ahnung, was PHP ist zu tun. 569 00:52:01,090 --> 00:52:07,200 Es kann einfach eine Kopie der gesamten Sache, aber wenn es smart, 570 00:52:07,200 --> 00:52:15,030 es wird eine Kopie dieser Tasten, unter denen diese ihre unterschiedlichen Wert haben wird 571 00:52:15,030 --> 00:52:20,620 dies kann jedoch noch auf das gleiche Array 1,2,3,4 hinweisen 572 00:52:20,620 --> 00:52:22,320 und dies kann noch auf das gleiche Array weisen. 573 00:52:22,320 --> 00:52:24,170 Ich werde iPad es. 574 00:52:28,900 --> 00:52:45,950 Wir passieren in diesem Array, wo dieser Kerl Punkten bis 3, dieser Kerl Punkte [1,2,3,4], 575 00:52:45,950 --> 00:52:51,350 dieser Kerl Punkte [34, ...] 576 00:52:51,350 --> 00:52:58,590 Nun, da wir der Übergabe in die baz, sind wir ändern dies. 577 00:52:58,590 --> 00:53:03,550 Wenn PHP ist intelligent, kann es einfach tun - 578 00:53:11,850 --> 00:53:18,230 Wir hatten noch etwas Speicher kopieren, aber wenn es diese riesigen verschachtelten Untergruppen 579 00:53:18,230 --> 00:53:21,560 brauchten wir nicht zu denen zu kopieren. 580 00:53:21,560 --> 00:53:27,530 Ich weiß nicht, wenn es das ist, was sie tut, aber ich kann mir vorstellen, es zu tun. 581 00:53:29,050 --> 00:53:36,690 Dies ist auch eine ziemlich große Vorteil von C über PHP. 582 00:53:36,690 --> 00:53:40,320 >> PHP macht das Leben so viel einfacher für eine Menge Dinge, 583 00:53:40,320 --> 00:53:45,060 aber Sie Art haben absolut keine Ahnung, wie gut es führt 584 00:53:45,060 --> 00:53:52,530 denn ich habe keine Ahnung, unter der Haube, wenn es so ist diese Kopien von Dingen, 585 00:53:52,530 --> 00:53:55,170 Oh, ist das werde eine konstante Zeit Kopie, 586 00:53:55,170 --> 00:54:01,140 ist gerade dabei, ein Zeiger zu ändern, wird es zu einem lächerlich schwierige lineare Kopie sein? 587 00:54:01,140 --> 00:54:03,000 Was, wenn es nicht Platz finden? 588 00:54:03,000 --> 00:54:06,760 Ist es müssen dann Garbage Collection ausgeführt, um etwas mehr Platz zu bekommen? 589 00:54:06,760 --> 00:54:11,210 Und die Garbage Collection kann beliebig lange dauern. 590 00:54:11,210 --> 00:54:13,600 In C müssen Sie nicht über diese Dinge zu kümmern. 591 00:54:13,600 --> 00:54:19,780 Jede einzelne Zeile, die Sie schreiben, können Sie ziemlich viel Grund zu, wie es geht zu erfüllen. 592 00:54:26,800 --> 00:54:29,150 >> Werfen wir einen Blick zurück auf diese. 593 00:54:35,400 --> 00:54:37,520 Wie schön ist es, dass Sie nicht haben, um mit Hash-Funktionen befassen, 594 00:54:37,520 --> 00:54:39,010 verkettete Listen, oder so etwas? 595 00:54:39,010 --> 00:54:41,980 Da das Arbeiten mit Hash-Tabellen ist so einfach, jetzt, hier ist ein spaßiges Puzzle zu arbeiten. 596 00:54:41,980 --> 00:54:45,920 Öffnen Sie eine Datei namens unique.php und schreib ein PHP-Programm 597 00:54:45,920 --> 00:54:48,330 (Auch als "script" bekannt). 598 00:54:48,330 --> 00:54:55,700 Wir neigen dazu, sie nennen Skripten, wenn sie kurz Dinge, die Sie laufen auf der Kommandozeile sind. 599 00:54:55,700 --> 00:55:02,950 Grundsätzlich kann jeder Sprache, die Sie nicht kompiliert, sondern du gehst, um die ausführbare Datei 600 00:55:02,950 --> 00:55:05,920 auf der Kommandozeile, können Sie diese ausführbares Skript. 601 00:55:05,920 --> 00:55:08,510 Ich könnte genauso gut schreiben ein C-Programm, das dies tut, 602 00:55:08,510 --> 00:55:12,300 aber ich weiß nicht nennen es ein Skript, da ich kompilieren es zuerst und dann das binary. 603 00:55:12,300 --> 00:55:15,480 Aber das PHP-Programm werden wir ein Skript aufrufen. 604 00:55:15,480 --> 00:55:23,830 Oder wenn wir es geschrieben in Python oder Perl oder node.js oder einem von diesen Dingen, 605 00:55:23,830 --> 00:55:26,500 würden wir nennen sie alle Skripte, weil du sie laufen in der Befehlszeile 606 00:55:26,500 --> 00:55:30,040 aber wir wissen nicht kompilieren. 607 00:55:30,860 --> 00:55:33,400 Wir könnten dies ziemlich schnell tun. 608 00:55:36,960 --> 00:55:41,480 Wir sind nicht zu argv verwenden. Lasst uns einfach blasen durch diese. 609 00:55:41,480 --> 00:55:45,730 Nennen Sie es einzigartig, ein Programm zu schreiben. 610 00:55:45,730 --> 00:55:49,400 Man kann davon ausgehen, dass der Eingang wird ein Wort pro Zeile enthalten. 611 00:55:49,400 --> 00:55:52,020 Tatsächlich wird argv ziemlich trivial zu bedienen. 612 00:56:03,730 --> 00:56:06,720 unique.php. 613 00:56:08,550 --> 00:56:13,750 Das allererste, wollen wir prüfen, ob wir bereits 1 Kommandozeilen-Argument übergeben haben. 614 00:56:13,750 --> 00:56:20,900 Genauso, wie Sie argc und argv in C zu erwarten, haben wir noch die in PHP. 615 00:56:20,900 --> 00:56:33,900 So if ($ argc! == 2) dann werde ich nicht mit dem Druck eine Nachricht oder irgendetwas zu tun. 616 00:56:33,900 --> 00:56:37,340 Ich werde einfach zu verlassen, Fehlercode 1. 617 00:56:37,340 --> 00:56:41,340 Ich könnte auch wieder ein. 618 00:56:41,340 --> 00:56:53,180 Selten in PHP sind Sie in diesem Zustand, in dem wir uns befinden - 619 00:56:53,180 --> 00:56:57,820 Normalerweise sind in einer Funktion durch eine Funktion durch eine Funktion von einer Funktion aufgerufen wird aufgerufen. 620 00:56:57,820 --> 00:57:02,070 Und wenn etwas schief geht und Sie wollen einfach nur, um alles komplett zu verlassen, 621 00:57:02,070 --> 00:57:05,680 Ausfahrt kurz das Programm beendet. 622 00:57:05,680 --> 00:57:08,160 Dieser besteht auch in C. 623 00:57:08,160 --> 00:57:10,700 Wenn Sie in einer Funktion in einer Funktion in einer Funktion in einer Funktion 624 00:57:10,700 --> 00:57:17,540 und Sie wollen nur töten das Programm, können Sie exit ein und es wird nur verlassen. 625 00:57:17,540 --> 00:57:23,120 Aber in PHP ist es noch selten, dass wir bei diesem Top-Niveau sind. 626 00:57:23,120 --> 00:57:26,090 Normalerweise sind wir im Inneren eine Art von Funktion, so nennen wir exit 627 00:57:26,090 --> 00:57:29,650 so dass wir nicht die Rückkehr bis 1, was das dann feststellt, gibt es eine Fehlermeldung 628 00:57:29,650 --> 00:57:32,270 so dass die Renditen auf, wenn das erkennt es war ein Fehler. 629 00:57:32,270 --> 00:57:35,270 Wir wollen nicht, um damit umzugehen, so zu beenden (1); 630 00:57:35,270 --> 00:57:38,240 Rückkehr (1), in diesem Fall wäre äquivalent. 631 00:57:38,240 --> 00:57:44,000 >> Dann, was wir öffnen möchten wir wollen fopen. 632 00:57:44,000 --> 00:57:46,760 Die Argumente gehen zu sehen ziemlich ähnlich. 633 00:57:46,760 --> 00:57:51,600 Wir wollen fopen ($ argv [1], und wir wollen es zum Lesen zu öffnen. 634 00:57:51,600 --> 00:57:55,720 Das gibt eine Ressource, die wir f nennen sind. 635 00:57:55,720 --> 00:58:02,180 Das sieht ziemlich ähnlich wie C tut es sei denn, wir müssen nicht FILE * sagen. 636 00:58:02,180 --> 00:58:06,170 Stattdessen haben wir nur sagen, $ f. Okay. 637 00:58:06,170 --> 00:58:17,190 Eigentlich denke ich, dieses gibt uns sogar einen Hinweis auf PHP-Funktion aufgerufen Datei. PHP-Datei. 638 00:58:17,190 --> 00:58:23,990 Was dies tun wird, ist zu lesen eine ganze Datei in einem Array. 639 00:58:23,990 --> 00:58:29,770 Sie brauchen noch nicht einmal zu fopen es. Es wird das für Sie tun. 640 00:58:37,450 --> 00:58:43,700 So $ lines = file ($ argv [1]); 641 00:58:43,700 --> 00:58:49,680 Jetzt alle Zeilen der Datei sind in den Zeilen. Jetzt wollen wir die Zeilen zu sortieren. 642 00:58:49,680 --> 00:58:52,180 Wie können wir sortieren die Zeilen? 643 00:58:52,180 --> 00:58:54,920 Wir sortieren die Zeilen. 644 00:58:54,920 --> 00:58:58,080 Und jetzt können wir drucken oder was auch immer. 645 00:58:58,080 --> 00:59:05,580 Wahrscheinlich ist der einfachste Weg foreach ($ lines wie $ line) echo $ line; 646 00:59:05,580 --> 00:59:10,960 [Schüler] Würden wir nicht einmal in den Leitungen durch Verweis auf etwas in Art? 647 00:59:10,960 --> 00:59:28,850 Dies ist, wo sort als Funktion sort (& $ array) definiert werden würde. 648 00:59:28,850 --> 00:59:32,650 Wenn Sie die Funktion rufen Sie geben sie nicht Bezug genommen wird. 649 00:59:32,650 --> 00:59:36,900 Es ist die Funktion, die es definiert als Einnahme als Referenz. 650 00:59:36,900 --> 00:59:40,900 Das ist eigentlich genau das, was schief gelaufen ist 651 00:59:40,900 --> 00:59:46,220 wenn wir setzen alles auf unseren Servern, wenn wir von 5,3 bis 5,4 gingen. 652 00:59:46,220 --> 00:59:53,800 Bis 5,4, war dies durchaus sinnvoll. 653 00:59:53,800 --> 00:59:58,740 Eine Funktion nicht erwarten, dass es als Referenz zu nehmen, aber man kann es als Verweis übergeben 654 00:59:58,740 --> 01:00:02,860 so, wenn die Funktion nicht passieren, um es zu ändern, ist es immer noch geändert werden. 655 01:00:02,860 --> 01:00:05,850 Wie von 5,4, du bist eigentlich nicht, dies zu tun. 656 01:00:05,850 --> 01:00:11,740 So, jetzt der einzige Weg, vorbei Referenz ist, wenn die Funktion explizit tut es. 657 01:00:11,740 --> 01:00:19,840 Wenn Sie nicht wollen, dass er ihn zu ändern, dann müssen Sie $ copy = $ lines und Pass zu kopieren. 658 01:00:19,840 --> 01:00:24,820 So, jetzt Linien erhalten und Kopie verändert werden. 659 01:00:27,670 --> 01:00:31,460 php.unique.php. Ich könnte etwas durcheinander haben. 660 01:00:31,460 --> 01:00:33,190 Unexpected 'sort'. 661 01:00:38,320 --> 01:00:43,850 Es geht um etwas, was dies für uns sein. 662 01:00:43,850 --> 01:00:45,820 Es ist gar nicht da. 663 01:00:45,820 --> 01:00:52,140 Beachten Sie, wenn Sie das Handbuch, dass das erste Argument wird erwartet, dass ein Array gelesen werden 664 01:00:52,140 --> 01:00:56,490 und es ist durch Bezugnahme aufgenommen. 665 01:00:58,160 --> 01:01:03,540 Warum wird diese Klagen zu mir? Weil ich diese Funktion sort immer noch hier, dass ich nicht wollen. 666 01:01:03,540 --> 01:01:09,210 Okay, php.unique.php. Ich habe nicht passieren sie ein Argument, weil ich nicht über eine Datei. 667 01:01:09,210 --> 01:01:13,560 Es ist php.unique.php auf test.php. 668 01:01:13,560 --> 01:01:19,080 Hier ist test.php alle in einem schönen sortierter Reihenfolge gedruckt. 669 01:01:19,080 --> 01:01:24,600 Beachten Sie, dass sortierter Reihenfolge irgendwie seltsam ist für eine Code-Datei 670 01:01:24,600 --> 01:01:27,460 weil alle unsere Leerzeilen gehen, um an erster Stelle stehen 671 01:01:27,460 --> 01:01:30,190 dann gehen alle unsere 1 Ebene Vertiefungen kommen 672 01:01:30,190 --> 01:01:33,360 dann kommen alle unsere keine Vertiefungen. 673 01:01:33,360 --> 01:01:38,620 Yeah. >> [Schüler] Also für den Quellcode wurde nicht per Referenz übergeben? 674 01:01:38,620 --> 01:01:42,240 Ist das in der Regel durch Wert übergeben? 675 01:01:42,240 --> 01:01:50,240 [Bowden] Wenn Sie eine Funktion aufrufen, es nie bestimmt, ob es durch Verweis übergeben wurde. 676 01:01:50,240 --> 01:01:53,960 Es ist die Definition der Funktion, ob sie durch Verweis übergeben wurde bestimmt. 677 01:01:53,960 --> 01:01:59,450 Und er blickte auf die Funktion Definition von Art oder einfach nur Lust auf diese, 678 01:01:59,450 --> 01:02:02,820 es dauert das Argument als Verweis. 679 01:02:02,820 --> 01:02:07,160 Also unabhängig davon, ob Sie es wollen sie durch Verweis zu nehmen, es dauert es von Referenz. 680 01:02:07,160 --> 01:02:10,200 Es ändert das Array an Ort und Stelle. 681 01:02:10,200 --> 01:02:17,400 Dies ist nur nicht erlaubt. Sie sind nicht erlaubt, dies zu tun. >> [Schüler] Oh, okay. 682 01:02:17,400 --> 01:02:22,410 [Bowden] Dies ist eine Art gehen, um Linien durch Bezugnahme zu nehmen und zu modifizieren. 683 01:02:22,410 --> 01:02:26,850 Und wieder, wenn Sie nicht wollen, dass es das zu tun, können Sie eine Kopie der sort. 684 01:02:26,850 --> 01:02:35,850 Selbst in diesem Fall ist nicht eigentlich eine Kopie Kopie Linien. 685 01:02:35,850 --> 01:02:40,620 Es verweist nur auf die gleiche Sache, bis es erste modifizierte wird, 686 01:02:40,620 --> 01:02:44,430 wo es zuerst zu in der Art-Funktion geändert zu werden, 687 01:02:44,430 --> 01:02:50,940 wo, denn es ist copy-on-write, jetzt eine Kopie der Kopie wird gemacht werden. 688 01:02:57,500 --> 01:03:04,250 Sie können dies auch tun. Das ist die andere Ort, den Sie kaufmännisches sehen können. 689 01:03:04,250 --> 01:03:07,190 Sie sehen es in foreach-Schleifen finden Sie es in der Funktion Erklärungen, 690 01:03:07,190 --> 01:03:10,040 und du siehst es, wenn nur die Zuordnung Variablen. 691 01:03:10,040 --> 01:03:12,350 Jetzt haben wir nichts, indem Sie dies erreicht 692 01:03:12,350 --> 01:03:15,600 weil kopieren und Linien sind buchstäblich die gleiche Sache. 693 01:03:15,600 --> 01:03:19,940 Sie können Linien und kopieren austauschbar. 694 01:03:19,940 --> 01:03:25,430 Sie können unset ($ copy), und dass nicht unset Linien, 695 01:03:25,430 --> 01:03:29,120 einfach nur verlieren Ihr Verweis auf die gleiche Sache. 696 01:03:29,120 --> 01:03:33,440 So wie dieser Punkt jetzt Linien ist der einzige Weg, Linien zugreifen können. 697 01:03:36,450 --> 01:03:38,770 >> Haben Sie Fragen? 698 01:03:41,000 --> 01:03:42,460 Yeah. 699 01:03:42,460 --> 01:03:45,880 [Schüler] Völlig off topic, aber Sie müssen nicht PHP mit der Nähe - >> Du nicht. 700 01:03:45,880 --> 01:03:47,730 Okay. 701 01:03:47,730 --> 01:03:53,790 [Bowden] Ich würde sogar so weit gehen, zu sagen, es ist eine schlechte Praxis, um sie zu schließen. 702 01:03:53,790 --> 01:03:57,580 Das ist wohl eine Übertreibung, vor allem in einem Skript 703 01:03:57,580 --> 01:04:03,740 aber mal sehen, was passiert, wenn ich das tue. 704 01:04:03,740 --> 01:04:08,890 Das tat nichts. Was ist, wenn ich wollte - [seufzt] 705 01:04:13,870 --> 01:04:16,960 Ich muss ein Argument übergeben. 706 01:04:19,000 --> 01:04:22,050 Schießen. Ich nannte es falsch. 707 01:04:24,340 --> 01:04:28,310 So php.unique.php mit einem Argument. 708 01:04:28,310 --> 01:04:30,980 Nun weiß ich auch nicht brauchen. 709 01:04:34,520 --> 01:04:37,740 Ich werde geben sie ein gültiges Argument. 710 01:04:37,740 --> 01:04:42,050 Dieses gedruckte was es Druck ist. 711 01:04:45,260 --> 01:04:50,080 Ich Druckvorlagen und Kopie existiert nicht. So Linien. 712 01:04:53,650 --> 01:04:58,270 Es bedruckt alles, und dann feststellen, all diese Junk hier unten, 713 01:04:58,270 --> 01:05:06,690 denn in PHP alles, was außerhalb des PHP-Tags 714 01:05:06,690 --> 01:05:09,520 ist gerade dabei, buchstäblich gedruckt werden. 715 01:05:09,520 --> 01:05:18,050 Das ist, warum HTML, es ist so schön, dass ich div blah, blah, blah Klasse oder was auch immer zu tun, 716 01:05:18,050 --> 01:05:25,140 blah, blah, blah und dann einige PHP-Code und dann Ende div. 717 01:05:25,140 --> 01:05:36,460 Und jetzt Bedrucken diese bekomme ich meine schöne div up top, alles, was PHP gedruckten, div unten. 718 01:05:36,460 --> 01:05:43,510 Katastrophale, wenn so etwas passiert, ist das ziemlich häufig, 719 01:05:43,510 --> 01:05:47,930 nur eine streunende newline an der Unterseite der Datei. 720 01:05:47,930 --> 01:05:50,940 Sie würden nicht glauben würde, dass große Sache sein, 721 01:05:50,940 --> 01:05:58,660 bis Sie die Tatsache, dass mit Browsern - 722 01:05:58,660 --> 01:06:03,880 >> Wie leitet der Arbeit oder im Grunde jede headers Arbeit, 723 01:06:03,880 --> 01:06:07,980 wenn Sie Ihre Verbindung zu einer Website und sendet es zurück all diese Header und Dinge 724 01:06:07,980 --> 01:06:12,020 ähnliche Reaktion 200 oder Antwort umleiten oder was auch immer, 725 01:06:12,020 --> 01:06:18,230 Header sind nur bis zum ersten Byte Daten gesendet werden. 726 01:06:18,230 --> 01:06:23,140 Sie umleiten können tausende Male, aber sobald das erste Byte der Daten gesendet werden 727 01:06:23,140 --> 01:06:26,120 Sie soll nicht wieder umzuleiten. 728 01:06:26,120 --> 01:06:31,860 >> Wenn Sie eine streunende Zeilenumbruch am Ende einer Datei 729 01:06:31,860 --> 01:06:37,260 und lassen Sie uns sagen, dass Sie diese Funktion verwenden und dann wollen Sie - 730 01:06:41,580 --> 01:06:52,870 Sagen wir, es ist eine andere Datei, die index.php ist und Sie require_once etwas - 731 01:06:52,870 --> 01:06:56,920 Ich kann nicht mit gutem Beispiel voran zu denken. 732 01:06:56,920 --> 01:07:04,740 Das Problem tritt auf, wenn diese Zeile am unteren Rand wird wiederholt. 733 01:07:04,740 --> 01:07:08,660 Sie wollen nicht etwas aufgegriffen worden noch. 734 01:07:10,820 --> 01:07:15,700 Auch wenn Sie nicht auf alles immer wider die Absicht gehabt habe, hat etwas hallte bekommen 735 01:07:15,700 --> 01:07:17,990 und so jetzt bist du eigentlich nicht mehr headers senden 736 01:07:17,990 --> 01:07:20,030 und du wirst die Beschwerden zu bekommen. 737 01:07:22,170 --> 01:07:24,420 Sie wissen einfach nicht brauchen diese schließenden Tags. 738 01:07:24,420 --> 01:07:27,420 Wenn Sie planen, etwas zu tun mit HTML - 739 01:07:27,420 --> 01:07:30,490 und es ist durchaus sinnvoll zu tun hier unten div unabhängig 740 01:07:30,490 --> 01:07:39,450 und dann an dieser Stelle können Sie oder können Sie nicht schließen sie. 741 01:07:39,450 --> 01:07:41,590 Es spielt eigentlich keine Rolle. 742 01:07:41,590 --> 01:07:45,450 Aber in PHP-Skripten ist es selten, um es zu schließen. 743 01:07:45,450 --> 01:07:50,400 Wenn alles PHP, absolut alles, 744 01:07:50,400 --> 01:07:55,460 Sie nicht wirklich brauchen, um es zu schließen / sollte man nicht schließen. 745 01:08:02,030 --> 01:08:05,720 >> Umgang mit Strings ist viel schöner als in C. 746 01:08:05,720 --> 01:08:09,470 In PHP können Sie einen String mit einfachen oder doppelten Anführungszeichen. 747 01:08:09,470 --> 01:08:12,820 Mit einfachen Anführungszeichen können Sie nicht "Flucht"-Sequenzen. 748 01:08:12,820 --> 01:08:17,640 Ständig entkommen, blah, blah, blah. 749 01:08:19,920 --> 01:08:24,010 So printf ist sehr selten in PHP. 750 01:08:24,010 --> 01:08:32,290 Ich glaube, ich würde printf verwenden, wenn ich eine Art von Dingen tun wollte - in pset 5 Sie verwendet sprintf oder was auch immer. 751 01:08:32,290 --> 01:08:36,060 Aber Sie wollen 001.jpg und 002.jpg tun. 752 01:08:36,060 --> 01:08:40,300 Also für diese Art von Dingen, wo ich wirklich wollen, um den Text I printf verwenden würden formatieren. 753 01:08:40,300 --> 01:08:44,689 Aber ansonsten würde ich einfach die String-Verkettung. 754 01:08:44,689 --> 01:08:47,000 Ich habe nie wirklich printf verwenden. 755 01:08:49,229 --> 01:09:00,170 Wir stehen noch die Differenzierung der Details zwischen einfachen Anführungszeichen und doppelten Anführungszeichen. 756 01:09:00,170 --> 01:09:07,490 Der größte Unterschied ist, dass einfache Anführungszeichen, es wörtlich gedruckt werden. 757 01:09:07,490 --> 01:09:15,390 Es gibt keine char Datentyp in PHP, im Gegensatz zu C, so ist dies äquivalent dazu. 758 01:09:15,390 --> 01:09:17,970 Sie sind beide Strings. 759 01:09:17,970 --> 01:09:29,180 Und das Schöne daran Apostroph Strings ist, ich könnte sagen 'Hallo Welt!' blah, blah, blah, 760 01:09:29,180 --> 01:09:33,340 $ $ Wooo. 761 01:09:33,340 --> 01:09:38,260 Was passiert, wenn drucke ich dies wird es buchstäblich zu drucken. 762 01:09:38,260 --> 01:09:40,680 Lasst uns loszuwerden all unsere Sachen. 763 01:09:40,680 --> 01:09:44,700 So echo $ str1; 764 01:09:48,569 --> 01:09:56,570 Es ist buchstäblich all diese Dinge gedruckt: Dollarzeichen, 765 01:09:56,570 --> 01:09:58,770 backslash n, die Sie denken würden Zeilenumbrüche wäre - 766 01:09:58,770 --> 01:10:01,500 all diese Dinge, die es gibt buchstäblich. 767 01:10:01,500 --> 01:10:05,650 Das einzige, was Sie brauchen, um zu entkommen sind einfache Anführungszeichen 768 01:10:05,650 --> 01:10:09,470 weil es sonst denke, es schließt die einfachen Anführungszeichen. 769 01:10:09,470 --> 01:10:15,050 Doppelte Anführungszeichen, völlig anders. 770 01:10:20,300 --> 01:10:25,870 Wir sehen bereits die Syntax-Highlighting ist cluing uns auf zu dem, was im Begriff zu gehen schrecklich falsch. 771 01:10:25,870 --> 01:10:36,190 php.unique. Undefined variable: wooo, weil dies als eine Variable namens wooo interpretiert. 772 01:10:36,190 --> 01:10:42,400 Doppelte Anführungszeichen können Sie Variablen einfügen in - 773 01:10:42,400 --> 01:10:52,730 Lassen Sie uns sagen $ name = "Rob"; 774 01:10:52,730 --> 01:10:58,020 So echo "Hallo, mein Name $ ist der Name!"; 775 01:10:58,020 --> 01:11:09,260 Es erkennt dies als eine Variable. 776 01:11:09,260 --> 01:11:21,210 Als ich das laufen - und ich werde einen Zeilenumbruch einfügen - Hallo, mein Name ist Rob! und hallo Welt! 777 01:11:21,210 --> 01:11:24,910 Dies liegt daran, entfernte ich nie den Druck von wooo oben. 778 01:11:24,910 --> 01:11:30,020 Es gibt 1 weiteren Schritt können Sie tun. 779 01:11:30,020 --> 01:11:39,250 $ Array = [1, 2, 3]; 780 01:11:39,250 --> 01:11:43,270 Was, wenn ich den ersten Index des Arrays drucken? 781 01:11:43,270 --> 01:11:45,150 Sie tun $ array [0]. 782 01:11:45,150 --> 01:11:49,280 Die Syntax-Highlighting ist ein Anhaltspunkt. Was wird das wohl tun? 783 01:11:52,320 --> 01:11:54,510 php.unique. 784 01:11:54,510 --> 01:11:59,860 Hallo, mein Name ist 1! das ist nicht das, was ich wollte. 785 01:11:59,860 --> 01:12:05,050 Syntax-Highlighting hat mich angelogen. 786 01:12:05,050 --> 01:12:13,020 Lassen Sie uns versuchen "A" -> 1, 'b' -> 2. 787 01:12:18,450 --> 01:12:21,440 Das ist, wie ich hätte es zu schreiben. 788 01:12:26,350 --> 01:12:32,160 Unexpected Apostroph (T_ENCAPSED blah, blah, blah, blah, blah). 789 01:12:32,160 --> 01:12:41,780 Die Idee ist, dass es nicht erkennt dies als Teil des Arrays. 790 01:12:41,780 --> 01:12:46,620 Es ist nicht zu erkennen dies als Array Buchstabe a indiziert. 791 01:12:46,620 --> 01:12:49,870 Sie wollen, dass von geschweiften Klammern umgeben zu tun, 792 01:12:49,870 --> 01:12:54,730 und jetzt, was in dieser geschweiften Klammern werden interpoliert, 793 01:12:54,730 --> 01:13:00,340 das ist das Wort, das wir für magisch Einsetzen dieser Variablen in den richtigen Stellen. 794 01:13:00,340 --> 01:13:04,280 Nun, dies zu tun, php.unique und Hallo, mein Name ist 1! erwartungsgemäß 795 01:13:04,280 --> 01:13:07,720 oder Hallo, mein Name ist Rob! 796 01:13:14,110 --> 01:13:23,130 Eine Sache, die ganz nett zu einfachen Anführungszeichen ist, dass - 797 01:13:23,130 --> 01:13:28,480 Es gibt einige Kosten zu interpolieren. 798 01:13:30,520 --> 01:13:35,100 Wenn Sie Anführungszeichen verwenden, hat der Dolmetscher gehen über diese Zeichenfolge, 799 01:13:35,100 --> 01:13:41,500 dafür sorgen, dass, "Oh, hier eine Variable ist. Jetzt habe ich zu holen, dass variable und legen Sie sie hier brauchen." 800 01:13:41,500 --> 01:13:48,930 Auch wenn Sie nicht alle Variablen, 801 01:13:48,930 --> 01:13:52,220 nichts in dieser doppelten Anführungszeichen muss interpoliert werden, 802 01:13:52,220 --> 01:13:56,800 aber es wird noch langsamer sein, weil sie gehen über die doppelte Anführungszeichen muss 803 01:13:56,800 --> 01:14:00,130 Suche nach Dingen, die interpoliert werden müssen. 804 01:14:00,130 --> 01:14:05,360 So einfache Anführungszeichen kann ein wenig schneller, wenn nichts zu interpoliert werden, 805 01:14:05,360 --> 01:14:15,650 und ich neige zu bedienen, auch einfache Anführungszeichen für "Hallo, mein Name ist '. $ Array ['a'] sowieso. 806 01:14:15,650 --> 01:14:20,430 Das wird als äquivalent zu dem, was wir vorher hatten. 807 01:14:24,840 --> 01:14:28,440 Aber es ist eine Frage des Geschmacks. 808 01:14:28,440 --> 01:14:34,750 Wenn Sie mit PHP, haben Sie wahrscheinlich nicht über die Geschwindigkeit Unterschied zu kümmern. 809 01:14:34,750 --> 01:14:39,480 Es ist nicht genug, um sie durchdenken zu beginnen. 810 01:14:39,480 --> 01:14:43,030 >> Irgendwelche letzten Fragen? 811 01:14:47,430 --> 01:14:51,710 >> Wir hatten eigentlich nicht selbst durch alle von ihm zu bekommen, aber dieses Zeug war langweilig. 812 01:14:51,710 --> 01:14:59,080 Das letzte, was ganz nett ist in PHP ist, wenn man mit HTML zu tun haben, 813 01:14:59,080 --> 01:15:06,450 Sie verwenden es ein bisschen, so die nette Abkürzung Syntax zum Drucken eine Variable. 814 01:15:32,400 --> 01:15:36,730 Ohne dass PHP hier, wird dies als Short-Tags. 815 01:15:36,730 --> 01:15:44,330 Offiziell als von PHP 5.4, ist diese veraltet. 816 01:15:44,330 --> 01:15:48,640 Es wird empfohlen, php setzen. 817 01:15:48,640 --> 01:15:55,770 Dies wird noch unterstützt, so kurz Tags mit dem 01:16:02,480 Es ist standardmäßig unterstützt, so können Sie diese verwenden, wie Sie wollen, und sie sind sehr praktisch. 819 01:16:02,480 --> 01:16:05,700 >> Haben Sie Fragen? 820 01:16:07,780 --> 01:16:09,270 Gut. 821 01:16:10,840 --> 01:16:13,800 >> Bleiben Sie stilvoll, San Diego. 822 01:16:13,800 --> 01:16:16,070 [Lacht] 823 01:16:18,620 --> 01:16:22,660 Bye. [Lacht] 824 01:16:24,350 --> 01:16:28,470 [Applaus] [lacht] 825 01:22:46,460 --> 01:22:49,460 >> [CS50.TV]