1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [Seksyen 8 - Lebih Selesa] 2 00:00:02,610 --> 00:00:04,910 [Rob Bowden - Universiti Harvard] 3 00:00:04,910 --> 00:00:07,070 [Ini adalah CS50. - CS50.TV] 4 00:00:11,520 --> 00:00:14,160 >> Ini nota seksyen minggu akan menjadi cantik pendek, 5 00:00:14,160 --> 00:00:19,070 jadi saya hanya akan terus bercakap, anda semua akan terus bertanya soalan, 6 00:00:19,070 --> 00:00:22,720 dan kami akan cuba untuk mengisi masa seberapa banyak yang mungkin. 7 00:00:22,720 --> 00:00:31,950 Ramai orang berfikir bahawa pset ini tidak semestinya sukar, tetapi ia adalah sangat lama. 8 00:00:31,950 --> 00:00:37,070 Spec pset sendiri mengambil masa sejam untuk membaca. 9 00:00:40,530 --> 00:00:45,730 Kami memberi anda banyak SQL anda mungkin perlu menggunakan. 10 00:00:45,730 --> 00:00:50,520 Kami berjalan anda melalui banyak itu, jadi ia tidak seharusnya menjadi terlalu buruk. 11 00:00:50,520 --> 00:00:54,560 Adakah sesiapa yang bermula atau selesai? 12 00:00:55,380 --> 00:00:59,710 Ia adalah pset lepas. Oh, Tuhan saya. 13 00:00:59,710 --> 00:01:05,400 Biasanya ada JavaScript salah selepas ini, tetapi perkara-perkara perubahan kalendar 14 00:01:05,400 --> 00:01:09,560 menjadikan segala-galanya 1 minggu pendek, dan kita tidak lagi mempunyai pset JavaScript. 15 00:01:09,560 --> 00:01:12,310 Saya tidak tahu bagaimana ia mempengaruhi sama ada JavaScript akan muncul pada peperiksaan 16 00:01:12,310 --> 00:01:15,510 atau Kuiz 1. 17 00:01:15,510 --> 00:01:22,260 Saya bayangkan ia akan menjadi sesuatu yang seperti yang anda perlukan untuk mengetahui perkara-perkara peringkat tinggi tentang JavaScript, 18 00:01:22,260 --> 00:01:26,460 tetapi saya ragu-ragu kita hanya akan memberi anda terus kod JavaScript 19 00:01:26,460 --> 00:01:28,720 kerana anda tidak mempunyai pset di dalamnya. 20 00:01:28,720 --> 00:01:33,000 Tetapi itu akan menjadi barangan untuk ulasan kuiz minggu depan. 21 00:01:33,000 --> 00:01:36,320 >> Seksyen soalan. 22 00:01:36,320 --> 00:01:43,870 Banyak barangan ini agak kurang worded, tetapi kita akan membincangkan mengapa. 23 00:01:43,870 --> 00:01:50,220 Tidak seperti C, PHP adalah "dinamik ditaip" bahasa. Apakah ini bermakna, anda bertanya? 24 00:01:50,220 --> 00:01:53,830 Nah, berkata selamat tinggal kepada semua mereka apungan char, int, dan kata kunci yang lain anda perlu menggunakan 25 00:01:53,830 --> 00:01:56,190 apabila mengisytiharkan pembolehubah dan fungsi dalam C. 26 00:01:56,190 --> 00:02:00,420 Dalam PHP, jenis pembolehubah ditentukan oleh nilai bahawa ia kini memegang. 27 00:02:00,420 --> 00:02:04,990 Jadi sebelum kita menaip kod ini ke dalam fail yang dipanggil dynamic.php, 28 00:02:04,990 --> 00:02:12,670 PHP adalah dinamik ditaip. Itu adalah benar. 29 00:02:12,670 --> 00:02:17,590 Saya tidak bersetuju dengan hakikat bahawa bermakna kita mengatakan selamat tinggal kepada char, float, int, 30 00:02:17,590 --> 00:02:20,620 dan kata kunci yang lain. 31 00:02:20,620 --> 00:02:25,510 Perbezaan sebenar antara dinamik ditaip dan alternatif, 32 00:02:25,510 --> 00:02:32,010 yang statik ditaip, adalah yang dinamik ditaip, semua penyemakan jenis anda dan barangan 33 00:02:32,010 --> 00:02:37,350 berlaku pada jangka masa, manakala statik ditaip ia berlaku pada masa kompil. 34 00:02:37,350 --> 00:02:43,030 Perkataan statik secara umum seolah-olah bermakna perkara masa kompil. 35 00:02:43,030 --> 00:02:48,170 Saya rasa terdapat kegunaan lain untuk itu, tetapi dalam C apabila anda mengisytiharkan pembolehubah statik, 36 00:02:48,170 --> 00:02:52,650 penyimpanan diperuntukkan pada masa kompil. 37 00:02:52,650 --> 00:02:59,260 Di sini, dinamik ditaip hanya bermaksud bahawa - 38 00:02:59,260 --> 00:03:04,350 Dalam C jika anda cuba untuk menambah rentetan dan integer, apabila anda menyusun, 39 00:03:04,350 --> 00:03:11,000 ia akan mengadu kerana ia akan mengatakan bahawa anda tidak boleh menambah int dan penunjuk. 40 00:03:11,000 --> 00:03:14,710 Ia hanya tidak operasi yang sah. 41 00:03:14,710 --> 00:03:21,170 Itu adalah satu lagi perkara yang kita akan dapat di tempat kedua. 42 00:03:21,170 --> 00:03:24,860 Tetapi itu jenis semakan, hakikat bahawa ia mengadu pada masa kompil, 43 00:03:24,860 --> 00:03:29,220 adalah penyemakan jenis statik. 44 00:03:29,220 --> 00:03:35,220 Terdapat bahasa di mana anda tidak perlu untuk mengatakan char, float, int, dan semua perkara-perkara, 45 00:03:35,220 --> 00:03:40,940 tetapi bahasa boleh memberitahu dari konteks perkara itu apa jenis ia sepatutnya, 46 00:03:40,940 --> 00:03:43,980 tetapi ia masih statik ditaip. 47 00:03:43,980 --> 00:03:49,000 Jadi, jika anda mengambil 51, OCaml, anda tidak perlu untuk menggunakan mana-mana jenis ini, 48 00:03:49,000 --> 00:03:58,700 tetapi ia masih pada masa kompil mengatakan anda tidak boleh melakukan ini kerana anda sedang mencampurkan int dan rentetan. 49 00:03:58,700 --> 00:04:05,650 Dinamik ditaip hanya bermakna bahawa kadang-kadang semasa berjalan anda akan mendapat aduan. 50 00:04:05,650 --> 00:04:13,430 Jika anda juga telah digunakan Jawa sebelum ini, secara umum, hampir apa-apa bahasa C-jenis 51 00:04:13,430 --> 00:04:20,070 akan statik ditaip, jadi C, C + +, Java, semua orang secara amnya statik ditaip. 52 00:04:20,070 --> 00:04:22,910 Di Jawa apabila anda menyusun sesuatu dan anda katakan 53 00:04:22,910 --> 00:04:26,670 rentetan s sama dengan sesuatu yang baru yang tidak rentetan, 54 00:04:26,670 --> 00:04:28,950 yang akan mengadu kerana mereka jenis hanya tidak sepadan. 55 00:04:28,950 --> 00:04:31,180 Itu akan mengadu pada masa kompil. 56 00:04:31,180 --> 00:04:36,750 Tetapi ia juga mempunyai beberapa kali dinamik perkara-perkara seperti jika anda cuba untuk membuang sesuatu 57 00:04:36,750 --> 00:04:40,500 kepada jenis yang lebih khusus daripada jenis semasa, 58 00:04:40,500 --> 00:04:45,610 tiada apa-apa yang ia boleh lakukan pada masa kompil untuk memeriksa sama ada pelakon yang akan berjaya. 59 00:04:45,610 --> 00:04:51,130 Jawa juga mempunyai beberapa jenis dinamik memeriksa bahawa sebaik sahaja ia mendapat bahawa baris kod 60 00:04:51,130 --> 00:04:54,130 apabila ia sebenarnya melaksanakan, ia akan melakukan pelakon, 61 00:04:54,130 --> 00:04:56,260 memeriksa jika pelakon yang sah di tempat pertama, 62 00:04:56,260 --> 00:04:59,890 dan jika ia tidak, maka ia akan mengadu bahawa anda mempunyai jenis yang tidak sah. 63 00:04:59,890 --> 00:05:03,200 Jenis Dinamik memeriksa. 64 00:05:03,200 --> 00:05:07,010 Taipkan ini ke dalam fail yang dipanggil dynamic.php. 65 00:05:10,130 --> 00:05:12,380 Dynamic.php. 66 00:05:14,580 --> 00:05:17,190 Saya akan unzip format itu. 67 00:05:18,750 --> 00:05:21,880 Kami mempunyai pemboleh ubah, kita tetapkan ia kepada 7 integer, 68 00:05:21,880 --> 00:05:27,930 maka kita pergi untuk mencetak dan% s - 69 00:05:27,930 --> 00:05:32,830 Oh, kami mencetak jenis, jadi gettype akan memulangkan jenis pembolehubah. 70 00:05:32,830 --> 00:05:35,720 Kami hanya mencetak jenis berulang-ulang kali. 71 00:05:35,720 --> 00:05:39,440 Kami hanya php.dynamic.php. 72 00:05:39,440 --> 00:05:45,920 Kita akan melihat bahawa ia perubahan dari integer tali untuk Boolean seperti yang kita pergi melalui. 73 00:05:45,920 --> 00:05:54,590 Dalam C tiada jenis data Boolean, terdapat tiada jenis data rentetan. 74 00:05:54,590 --> 00:06:00,500 Ada char * dan Boolean hanya cenderung untuk menjadi int atau char atau sesuatu. 75 00:06:00,500 --> 00:06:05,690 Dalam PHP jenis ini memang wujud, dan itulah salah satu kelebihan besar PHP lebih C - 76 00:06:05,690 --> 00:06:13,290 bahawa operasi rentetan adalah tak terhingga lebih mudah dalam PHP daripada C. Mereka hanya bekerja. 77 00:06:13,290 --> 00:06:18,290 >> Jadi kita kembali ke sini. 78 00:06:18,290 --> 00:06:21,260 Kami berlari dynamic.php. 79 00:06:21,260 --> 00:06:26,710 Ini memberitahu jurubahasa PHP, dipanggil php, untuk menjalankan kod PHP dalam dynamic.php. 80 00:06:26,710 --> 00:06:30,250 Jika anda mempunyai sebarang kesilapan dalam fail, jurubahasa akan memberitahu anda! 81 00:06:30,250 --> 00:06:39,110 Jurubahasa, ini adalah satu lagi perbezaan yang besar antara PHP dan C. 82 00:06:39,110 --> 00:06:48,200 Dalam C, anda perlu untuk menyusun sesuatu dan kemudian anda menjalankan bahawa fail yang disusun. 83 00:06:48,200 --> 00:06:50,490 Dalam PHP anda tidak menyusun apa-apa. 84 00:06:50,490 --> 00:06:57,200 Jadi jurubahasa PHP pada dasarnya hanya membaca baris ini demi baris. 85 00:06:57,200 --> 00:07:02,900 Ia hits var = 7 maka ia mencecah printf maka ia mencecah var maka ia mencecah printf dan sebagainya. 86 00:07:02,900 --> 00:07:10,910 Terdapat sedikit menyusun ia, dan ia cache keputusan 87 00:07:10,910 --> 00:07:15,510 jadi jika anda menjalankan skrip kemudian anda boleh melakukan beberapa, 88 00:07:15,510 --> 00:07:19,280 tetapi pada dasarnya ia adalah garis oleh jenis garis perkara. 89 00:07:19,280 --> 00:07:25,280 Ini bermakna bahawa banyak pengoptimuman yang kita dapat dalam C, 90 00:07:25,280 --> 00:07:31,920 seperti menyusun, ia hanya secara amnya pengkompil boleh melakukan banyak helah untuk anda. 91 00:07:31,920 --> 00:07:36,110 Ia boleh mengambil pembolehubah yang tidak digunakan, ia boleh melakukan semua ini pelbagai perkara, 92 00:07:36,110 --> 00:07:38,660 ia boleh melakukan rekursi ekor. 93 00:07:38,660 --> 00:07:42,550 Dalam PHP anda tidak akan mendapat kelebihan yang 94 00:07:42,550 --> 00:07:45,690 kerana ia hanya akan mula melaksanakan baris demi baris demi baris, 95 00:07:45,690 --> 00:07:49,950 dan ia tidak benar-benar mengiktiraf perkara-perkara ini sebagai mudah 96 00:07:49,950 --> 00:07:54,440 kerana ia bukan 1 kompilasi pas besar ke atas perkara itu dan kemudian pelaksanaan; 97 00:07:54,440 --> 00:07:56,860 ia hanya baris demi baris. 98 00:08:00,730 --> 00:08:02,750 Jadi itulah jurubahasa. 99 00:08:02,750 --> 00:08:06,840 >> Kembali menaip dinamik kami: agak sejuk, eh? 100 00:08:06,840 --> 00:08:08,640 Anda pasti tidak boleh berbuat demikian di C! 101 00:08:08,640 --> 00:08:11,860 Sekarang, lihat jika anda boleh memikirkan jenis setiap daripada nilai berikut. 102 00:08:11,860 --> 00:08:14,760 Lihat ini untuk rujukan. 103 00:08:14,760 --> 00:08:19,420 Jadi 3.50. Apa jenis adakah anda berfikir bahawa akan menjadi? 104 00:08:24,480 --> 00:08:26,370 Berikut adalah jenis yang kita ada. 105 00:08:26,370 --> 00:08:30,430 Kami mempunyai bools, integer, titik terapung, rentetan, tatasusunan, objek, 106 00:08:30,430 --> 00:08:38,370 dan kemudian sumber, yang merupakan jenis samar-samar. 107 00:08:38,370 --> 00:08:41,010 Saya fikir ada sebenarnya satu contoh di sini. 108 00:08:41,010 --> 00:08:43,740 Kemudian ada NULL. NULL adalah jenis khas. 109 00:08:43,740 --> 00:08:47,140 Tidak seperti C mana NULL hanya penunjuk alamat dengan 0, 110 00:08:47,140 --> 00:08:54,930 dalam PHP, NULL adalah jenis sendiri di mana perkara yang hanya sah jenis itu adalah NULL. 111 00:08:57,560 --> 00:09:00,670 Ini adalah lebih berguna untuk menyemak ralat. 112 00:09:00,670 --> 00:09:04,310 Dalam C di mana kita mempunyai isu ini di mana jika anda kembali NULL, 113 00:09:04,310 --> 00:09:08,660 adakah itu bermakna anda kembali penunjuk NULL atau menggunakan NULL untuk menandakan kesilapan 114 00:09:08,660 --> 00:09:12,380 atau semua kekeliruan bahawa kita mempunyai pada satu titik. 115 00:09:12,380 --> 00:09:18,440 Sini, kembali NULL umumnya bermaksud kesilapan. 116 00:09:20,860 --> 00:09:27,300 Banyak perkara juga kembali palsu untuk kesilapan. 117 00:09:27,300 --> 00:09:33,140 Tetapi persoalannya adalah jenis NULL, satu-satunya jenis NULL NULL. 118 00:09:33,140 --> 00:09:40,090 Kemudian panggil balik adalah seperti anda boleh menentukan beberapa fungsi tanpa nama. 119 00:09:40,090 --> 00:09:46,420 Anda tidak perlu untuk memberikan fungsi nama, tetapi anda tidak akan perlu berurusan dengan itu di sini. 120 00:09:46,420 --> 00:09:53,940 Melihat jenis bahawa mereka mengharapkan kita tahu, 121 00:09:53,940 --> 00:09:59,000 apa yang anda fikir jenis iaitu 3.50 adalah? >> [Pelajar] Terapung. 122 00:09:59,000 --> 00:10:00,370 Yeah. 123 00:10:00,370 --> 00:10:06,290 Jadi maka di sini, apa yang anda fikir jenis ini adalah? >> [Pelajar] Array. 124 00:10:06,290 --> 00:10:09,890 Yeah. Yang pertama adalah apungan, yang kedua adalah array. 125 00:10:09,890 --> 00:10:14,500 Perhatikan bahawa pelbagai ini tidak seperti pelbagai C 126 00:10:14,500 --> 00:10:19,610 di mana anda mempunyai indeks 0 mempunyai beberapa nilai, indeks 1 mempunyai nilai tertentu. 127 00:10:19,610 --> 00:10:26,320 Sini indeks dan nilai-nilai a, b, dan c adalah 1, 2, dan 3. 128 00:10:26,320 --> 00:10:33,980 Dalam PHP, tidak ada perbezaan antara pelbagai bersekutu dan hanya pelbagai tetap 129 00:10:33,980 --> 00:10:36,740 kerana anda akan berfikir ia di C. 130 00:10:36,740 --> 00:10:43,040 Terdapat hanya ini, dan di bawah hood pelbagai biasa hanya pelbagai bersekutu 131 00:10:43,040 --> 00:10:50,000 di mana 0 peta untuk beberapa nilai dengan cara yang sama peta untuk beberapa nilai. 132 00:10:50,000 --> 00:11:00,410 Atas sebab ini, PHP boleh agak buruk untuk perkara yang benar-benar berpuasa kod / penandaarasan 133 00:11:00,410 --> 00:11:07,930 sejak dalam C apabila anda menggunakan array anda tahu bahawa mengakses ahli adalah pemalar masa. 134 00:11:07,930 --> 00:11:11,860 Dalam PHP mengakses ahli yang tahu berapa banyak masa? 135 00:11:11,860 --> 00:11:18,970 Ia mungkin berterusan jika ia Hash betul. 136 00:11:18,970 --> 00:11:21,620 Siapa tahu apa yang ia benar-benar melakukan di bawah hood? 137 00:11:21,620 --> 00:11:25,600 Anda benar-benar perlu untuk melihat pelaksanaan untuk melihat bagaimana ia akan untuk berurusan dengan itu. 138 00:11:25,600 --> 00:11:28,550 Jadi kemudian fopen. 139 00:11:28,550 --> 00:11:36,420 Saya berfikir di sini mari kita hanya PHP fopen manual untuk melihat jenis pulangan. 140 00:11:36,420 --> 00:11:41,260 Kita lihat di sini anda boleh melihat sehingga cukup banyak apa-apa fungsi dalam manual PHP 141 00:11:41,260 --> 00:11:47,540 dan ini adalah jenis halaman lelaki PHP. 142 00:11:47,540 --> 00:11:51,060 Jenis kembali akan menjadi sumber. 143 00:11:51,060 --> 00:11:56,050 Itulah sebabnya saya melihat ia naik, kerana kita tidak benar-benar menentukan sumber. 144 00:11:56,050 --> 00:12:04,110 Idea sumber, dalam C anda jenis mendapat * FILE atau apa sahaja; 145 00:12:04,110 --> 00:12:07,200 dalam PHP sumber * FILE anda. 146 00:12:07,200 --> 00:12:10,360 Ia adalah apa yang anda akan membaca dari, ia adalah apa yang anda akan menulis kepada. 147 00:12:10,360 --> 00:12:20,710 Ia biasanya luaran, jadi ia adalah sumber anda boleh menarik perkara-perkara dari dan membuang perkara yang perlu. 148 00:12:20,710 --> 00:12:26,520 Dan akhirnya, apakah jenis NULL? >> [Pelajar] NULL. 149 00:12:26,520 --> 00:12:30,650 Yeah. Jadi satu-satunya perkara yang NULL adalah NULL. 150 00:12:30,650 --> 00:12:33,480 NULL adalah NULL. 151 00:12:35,490 --> 00:12:41,170 >> Satu ciri sistem jenis PHP (bagi yang lebih baik atau untuk lebih teruk) adalah keupayaan untuk mengimbangi jenis. 152 00:12:41,170 --> 00:12:44,390 Apabila anda menulis baris kod PHP yang menggabungkan nilai jenis yang berbeza, 153 00:12:44,390 --> 00:12:46,670 PHP akan cuba untuk melakukan perkara yang wajar. 154 00:12:46,670 --> 00:12:48,920 Mencuba setiap baris kod PHP berikut. Apa yang dicetak? 155 00:12:48,920 --> 00:12:51,000 Adakah apa yang anda harapkan? Mengapa atau kenapa tidak? 156 00:12:51,000 --> 00:12:58,600 Ini fakta mengenai PHP adalah apa yang menjadikan ia apa yang kita panggil lemah ditaip. 157 00:12:58,600 --> 00:13:04,610 Ditaip dengan lemah dan kuat ditaip, 158 00:13:04,610 --> 00:13:06,840 terdapat kegunaan yang berbeza untuk istilah-istilah, 159 00:13:06,840 --> 00:13:12,020 tetapi kebanyakan orang menggunakan ditaip dengan lemah dan kuat ditaip bermakna perkara seperti ini 160 00:13:12,020 --> 00:13:15,920 mana ("1" + 2), yang berfungsi. 161 00:13:15,920 --> 00:13:18,290 Dalam C yang tidak akan bekerja. 162 00:13:18,290 --> 00:13:22,490 Anda boleh bayangkan ini tidak berfungsi. 163 00:13:22,490 --> 00:13:29,200 Ramai orang campuran menaip dinamik dan menaip lemah dan menaip statik dan menaip kuat. 164 00:13:29,200 --> 00:13:34,050 Python adalah satu lagi contoh bahasa yang dinamik ditaip. 165 00:13:34,050 --> 00:13:41,770 Anda boleh membuang sekitar jenis dalam pembolehubah dan ia akan menentukan pada masa jangka 166 00:13:41,770 --> 00:13:44,680 sebarang checkings kesilapan. 167 00:13:44,680 --> 00:13:50,740 Dalam Python ia akan melaksanakan ini dan ia akan melihat ("1" + 2); 168 00:13:50,740 --> 00:13:55,920 dan ini akan gagal kerana ia mengatakan anda tidak boleh menambah rentetan dan integer. 169 00:13:55,920 --> 00:14:00,860 Dalam PHP, yang merupakan hanya sebagai dinamik ditaip, ini tidak akan gagal. 170 00:14:00,860 --> 00:14:04,220 Menaip lemah mempunyai kaitan dengan hakikat bahawa ia tidak perkara dengan jenis 171 00:14:04,220 --> 00:14:07,800 yang tidak benar-benar masuk akal semestinya. 172 00:14:07,800 --> 00:14:17,420 Jadi ("1" + 2), saya boleh bayangkan bahawa menjadi rentetan 12, saya boleh bayangkan ia menjadi rentetan 3, 173 00:14:17,420 --> 00:14:20,710 Saya boleh bayangkan ia menjadi 3 integer. 174 00:14:20,710 --> 00:14:24,530 Ia tidak semestinya baik ditakrifkan, dan kita mungkin akan lihat di sini 175 00:14:24,530 --> 00:14:29,140 bahawa apabila kita mencetak ("1" + 2); ia mungkin akan berakhir yang berbeza 176 00:14:29,140 --> 00:14:32,320 daripada percetakan (1 + "2"). 177 00:14:32,320 --> 00:14:39,700 Dan ini cenderung untuk menjadi, pada pendapat saya, untuk lebih teruk. 178 00:14:39,700 --> 00:14:44,240 Di sini kita boleh cuba ini. 179 00:14:44,240 --> 00:14:48,740 Satu lagi helah sedikit tentang PHP adalah anda tidak perlu untuk benar-benar menulis fail. 180 00:14:48,740 --> 00:14:52,790 Ia telah menjalankan mod ini arahan. 181 00:14:52,790 --> 00:14:57,710 Jadi php-r, maka kita boleh membuang dalam arahan di sini: 182 00:14:57,710 --> 00:15:06,610 "Print ('1 '+ 2);" dan saya akan membuang baris baru. 183 00:15:19,550 --> 00:15:23,970 Ini dicetak 3. 184 00:15:31,100 --> 00:15:35,330 Ia kelihatan seperti ia mencetak 3 dan ia adalah 3 integer. 185 00:15:35,330 --> 00:15:38,420 Jadi sekarang mari kita cuba cara lain sekitar: 186 00:15:38,420 --> 00:15:42,970 "Print (1 + '2 '); 187 00:15:45,560 --> 00:15:50,490 Kami mendapat 3, dan ia juga akan menjadi integer 3? Saya secara jujur ​​tidak mempunyai idea. 188 00:15:50,490 --> 00:15:54,030 Ia kelihatan seperti itu adalah konsisten. 189 00:15:54,030 --> 00:15:59,550 Tidak pernah ada mana-mana peluang ia menjadi 12 tali atau apa-apa seperti yang 190 00:15:59,550 --> 00:16:08,080 kerana PHP, tidak seperti JavaScript dan Jawa juga, 191 00:16:08,080 --> 00:16:11,670 mempunyai pengendali berasingan untuk dinamika. 192 00:16:11,670 --> 00:16:14,930 Dinamika dalam PHP adalah dot. 193 00:16:14,930 --> 00:16:22,950 Jadi percetakan (1 '2 '.); Akan memberikan kita 12. 194 00:16:25,790 --> 00:16:32,420 Ini cenderung untuk membawa kepada kekeliruan di mana orang cuba untuk melakukan sesuatu seperti str + = 195 00:16:32,420 --> 00:16:37,840 beberapa perkara lain yang mereka mahu untuk menambah kepada hujung tali mereka, dan yang akan gagal. 196 00:16:37,840 --> 00:16:40,770 Anda perlu melakukan str = 197 00:16:42,000 --> 00:16:46,240 Jadi jangan lupa dinamika dalam PHP adalah titik. 198 00:16:46,240 --> 00:16:52,100 Perkara-perkara lain untuk mencuba: mencetak ("CS" + 50); 199 00:16:55,750 --> 00:17:03,610 Saya telah memberitahu anda bahawa tidak ada harapan ini mengakibatkan CS50 200 00:17:03,610 --> 00:17:06,119 sejak dinamika tidak +. 201 00:17:06,119 --> 00:17:08,440 Apa yang anda fikir ini akan akhirnya menjadi? 202 00:17:10,359 --> 00:17:13,460 Saya secara jujur ​​telah benar-benar tidak tahu. 203 00:17:14,250 --> 00:17:16,460 Ia kelihatan seperti ia hanya 50. 204 00:17:16,460 --> 00:17:21,490 Ia melihat rentetan, dan saya yakin jika kita meletakkan 123CS - 205 00:17:21,490 --> 00:17:29,640 Ia melihat rentetan pertama, ia cuba untuk membaca integer daripada atau nombor dari. 206 00:17:29,640 --> 00:17:31,710 Dalam kes ini ia melihat 123CS. 207 00:17:31,710 --> 00:17:35,190 "Itu tidak masuk akal sebagai integer, jadi saya hanya akan berfikir daripada 123." 208 00:17:35,190 --> 00:17:38,580 Jadi 123 + 50 akan menjadi 173. 209 00:17:38,580 --> 00:17:40,740 Dan di sini ia mula membaca ini sebagai integer. 210 00:17:40,740 --> 00:17:45,690 Ia tidak melihat apa-apa, jadi ia hanya menganggap ia sebagai 0. Jadi 0 + 50 akan menjadi 50. 211 00:17:45,690 --> 00:17:51,600 Ini Saya menganggap akan melakukan sesuatu yang serupa. 212 00:17:51,600 --> 00:17:54,310 Saya berfikir 99. 213 00:17:54,310 --> 00:17:57,580 Ya, kerana ia akan mengambil yang pertama - 214 00:18:12,880 --> 00:18:15,730 Jadi 99. 215 00:18:15,730 --> 00:18:21,970 (10/7), jika ini adalah C, apa yang akan kembali? 216 00:18:23,700 --> 00:18:29,630 [Pelajar] 1. >> Ya, ia akan menjadi 1 kerana 10/7 membahagikan integer 2. 217 00:18:29,630 --> 00:18:32,910 Suatu integer yang dibahagikan dengan integer akan kembali integer. 218 00:18:32,910 --> 00:18:37,750 Ia tidak boleh kembali 1 mata apa yang akan menjadi, jadi ia hanya akan kembali 1. 219 00:18:37,750 --> 00:18:46,120 Berikut percetakan (10/7), ia akan benar-benar menafsirkan. 220 00:18:46,120 --> 00:18:53,760 Dan ini bermakna bahawa jika anda benar-benar mahu melakukan pembundaran integer dan hal-hal seperti itu, 221 00:18:53,760 --> 00:18:59,950 anda perlu untuk melakukan cetak (lantai (10/7)); 222 00:18:59,950 --> 00:19:08,460 Dalam C, ia mungkin pelik bahawa anda boleh bergantung kepada pemangkasan integer kerap, 223 00:19:08,460 --> 00:19:12,260 tetapi dalam PHP anda tidak boleh kerana ia akan secara automatik menjadikan ia ke dalam apungan. 224 00:19:13,430 --> 00:19:17,610 Dan kemudian (7 + benar); apa yang anda berfikir yang akan menjadi? 225 00:19:18,550 --> 00:19:23,640 Saya meneka 8 jika ia akan mentafsir sebenar sebagai 1. 226 00:19:23,640 --> 00:19:25,740 Ia kelihatan seperti ia adalah 8. 227 00:19:25,740 --> 00:19:31,710 >> Jadi apa-apa yang kita lakukan dalam tempoh 10 minit yang lepas anda perlu benar-benar tidak pernah melakukan. 228 00:19:31,710 --> 00:19:39,870 Anda akan melihat kod yang melakukan ini. 229 00:19:39,870 --> 00:19:42,700 Ia tidak perlu untuk menjadi semudah ini. 230 00:19:42,700 --> 00:19:47,240 Anda boleh mempunyai 2 pembolehubah, dan 1 pembolehubah yang berlaku kepada menjadi rentetan 231 00:19:47,240 --> 00:19:51,310 dan pembolehubah lain berlaku untuk menjadi int, dan kemudian anda menambah pembolehubah ini bersama-sama. 232 00:19:51,310 --> 00:20:00,120 Sejak PHP secara dinamik ditaip dan ia tidak akan melakukan apa-apa penyemakan jenis untuk anda 233 00:20:00,120 --> 00:20:03,640 dan sejak ia ditaip dengan lemah dan kerana ia akan hanya secara automatik membuang perkara-perkara ini bersama-sama 234 00:20:03,640 --> 00:20:11,490 dan segala-galanya hanya akan bekerja, ia adalah sukar untuk tahu bahawa pembolehubah ini mestilah rentetan sekarang, 235 00:20:11,490 --> 00:20:14,930 jadi saya tidak perlu menambah kepada pembolehubah ini, yang merupakan integer. 236 00:20:18,780 --> 00:20:24,560 Amalan terbaik adalah jika pembolehubah adalah rentetan, pastikan ia sebagai rentetan selama-lamanya. 237 00:20:24,560 --> 00:20:26,980 Jika pembolehubah int, pastikan ia sebagai int selama-lamanya. 238 00:20:26,980 --> 00:20:30,770 Jika anda mahu berurusan dengan integer dan rentetan, 239 00:20:30,770 --> 00:20:36,970 anda boleh menggunakan varsint - itulah JavaScript. 240 00:20:36,970 --> 00:20:42,520 Intval. Saya melakukan ini sepanjang masa. PHP dan JavaScript saya campuran segala-galanya. 241 00:20:42,520 --> 00:20:47,600 Jadi intval akan memulangkan nilai integer pemboleh ubah. 242 00:20:47,600 --> 00:20:56,550 Jika kita lulus dalam cetakan "(intval ('123 ')); anda mendapat 123. 243 00:21:06,820 --> 00:21:15,850 Intval dirinya tidak akan melakukan pemeriksaan bagi kita bahawa ia adalah semata-mata integer. 244 00:21:15,850 --> 00:21:20,460 Manual PHP, terdapat fungsi hanya begitu banyak boleh didapati, 245 00:21:20,460 --> 00:21:26,560 jadi di sini saya berfikir apa yang saya akan gunakan adalah is_numeric 1. 246 00:21:26,560 --> 00:21:32,590 Saya meneka yang mengembalikan palsu. 247 00:21:32,590 --> 00:21:35,780 Itulah satu lagi perkara yang kita perlu pergi lebih adalah ===. 248 00:21:37,850 --> 00:21:44,020 Jadi is_numeric ('123df '), anda tidak akan berfikir bahawa is_numeric. 249 00:21:44,020 --> 00:21:46,720 Dalam C anda akan mempunyai untuk melelar atas semua aksara 250 00:21:46,720 --> 00:21:50,410 dan memeriksa untuk melihat jika setiap aksara adalah angka atau apa sahaja. 251 00:21:50,410 --> 00:21:53,850 Berikut is_numeric akan berbuat demikian untuk kita, 252 00:21:53,850 --> 00:21:56,520 dan ia kembali palsu. 253 00:21:56,520 --> 00:22:02,120 Jadi apabila saya dicetak bahawa, ia dicetak apa-apa, jadi di sini saya membandingkan ia untuk melihat, 254 00:22:02,120 --> 00:22:05,490 adakah anda berlaku untuk menjadi palsu? Dan sebagainya kini ia mencetak 1. 255 00:22:05,490 --> 00:22:10,060 Rupa-rupanya ia mencetak 1 sebagai benar dan bukannya mencetak benar sebagai benar. 256 00:22:10,060 --> 00:22:15,790 Saya tertanya-tanya jika saya lakukan print_r. Tidak, ia masih tidak 1. 257 00:22:15,790 --> 00:22:26,760 >> Akan kembali ke ===, == masih wujud, 258 00:22:26,760 --> 00:22:32,260 dan jika anda bercakap kepada Tommy dia akan mengatakan == adalah betul-betul halus. 259 00:22:32,260 --> 00:22:37,700 Saya akan mengatakan bahawa == dahsyat dan anda tidak perlu menggunakan ==. 260 00:22:37,700 --> 00:22:44,870 Perbezaan adalah bahawa == membandingkan perkara 261 00:22:44,870 --> 00:22:48,450 di mana ia boleh menjadi benar walaupun jika mereka tidak jenis yang sama, 262 00:22:48,450 --> 00:22:53,810 sedangkan === membandingkan perkara dan pertama ia cek adalah mereka jenis yang sama? 263 00:22:53,810 --> 00:22:58,010 Ya. Okay, sekarang saya akan melihat jika mereka benar-benar istimewa untuk menjadi sama. 264 00:22:58,010 --> 00:23:08,890 Anda akan mendapat perkara-perkara pelik seperti 10 sama - biarlah yang melihat apa yang mengatakan. 265 00:23:08,890 --> 00:23:15,570 Jadi ('10 '== '1 E1'); 266 00:23:15,570 --> 00:23:17,980 Ini mengembalikan benar. 267 00:23:17,980 --> 00:23:21,420 Adakah sesiapa yang mempunyai apa-apa tekaan mengapa ini mengembalikan benar? 268 00:23:25,180 --> 00:23:27,120 Ia bukan sahaja tentang itu. Mungkin ini adalah petunjuk. 269 00:23:27,120 --> 00:23:33,170 Tetapi jika saya menukar bahawa f - darn it! Saya terus menggunakan tanda petikan berganda. 270 00:23:33,170 --> 00:23:38,780 Sebab petikan berganda menjerit pada saya adalah kerana saya telah meletakkan ini dalam tanda petikan berganda. 271 00:23:38,780 --> 00:23:43,850 Jadi saya dapat lari petikan kembar di sini, tetapi petikan tunggal membuat ia lebih mudah. 272 00:23:43,850 --> 00:23:49,120 Jadi ('10 '== '1 f1'); tidak mencetak benar. ('10 '== '1 E1'); mencetak benar. 273 00:23:49,120 --> 00:23:56,330 [Pelajar] Adakah ia hex? >> Ia tidak hex, tetapi ia dekat bahawa ia adalah seperti - 274 00:23:56,330 --> 00:24:01,060 1e1, notasi saintifik. 275 00:24:01,060 --> 00:24:07,950 Ia mengiktiraf 1e1 sebagai 1 * 10 ^ 1 atau apa sahaja. 276 00:24:07,950 --> 00:24:11,510 Mereka adalah integer yang sama. 277 00:24:11,510 --> 00:24:15,930 Jika kita lakukan === maka ia akan menjadi palsu. 278 00:24:15,930 --> 00:24:28,490 Saya sebenarnya tidak mempunyai idea jika kita lakukan == apa tentang (10 dan '10abc '); Semua hak. Jadi yang benar. 279 00:24:28,490 --> 00:24:35,940 Jadi sama seperti apabila anda lakukan (10 + ''10abc); dan ia akan menjadi 20, 280 00:24:35,940 --> 00:24:38,800 di sini (10 == ''10abc); adalah benar. 281 00:24:38,800 --> 00:24:45,350 Lebih buruk lagi adalah perkara-perkara seperti (palsu == NULL); adalah benar 282 00:24:45,350 --> 00:24:52,210 atau (palsu == 0); adalah benar, (palsu == []); 283 00:24:52,210 --> 00:25:00,970 Terdapat kes-kes pelik - Itulah salah satu daripada kes-kes pelik. 284 00:25:00,970 --> 00:25:08,110 Perhatikan bahawa (palsu == []); adalah benar. 285 00:25:08,110 --> 00:25:11,950 ('0 '== Palsu); adalah benar. 286 00:25:11,950 --> 00:25:16,090 ('0 '== []); Adalah palsu. 287 00:25:16,090 --> 00:25:19,090 Jadi == adalah dengan cara tidak transitif. 288 00:25:19,090 --> 00:25:26,830 boleh sama b dan boleh menjadi sama dengan c, 289 00:25:26,830 --> 00:25:29,340 tetapi b tidak mungkin sama dengan c. 290 00:25:29,340 --> 00:25:35,580 Itulah satu kebencian kepada saya, dan anda perlu sentiasa menggunakan ===. 291 00:25:35,580 --> 00:25:38,590 [Pelajar] Bolehkah kita buat! == Juga? >> [Bowden] Ya. 292 00:25:38,590 --> 00:25:44,600 Akan bersamaan! = Dan! ==. 293 00:25:44,600 --> 00:25:48,230 Ini sebenarnya dibesarkan dalam spec pset 294 00:25:48,230 --> 00:25:52,000 di mana banyak pulangan fungsi - 295 00:25:52,000 --> 00:25:53,890 Manual PHP adalah baik tentang perkara ini. 296 00:25:53,890 --> 00:25:59,140 Ia meletakkan di dalam kotak merah yang besar, "Ini akan mengembalikan palsu jika ada kesilapan." 297 00:25:59,140 --> 00:26:03,940 Tetapi kembali 0 adalah satu perkara yang sempurna yang munasabah untuk kembali. 298 00:26:03,940 --> 00:26:08,250 Fikirkan tentang apa-apa fungsi yang dijangka kembali integer. 299 00:26:11,250 --> 00:26:17,880 Katakan fungsi ini sepatutnya untuk mengira bilangan baris dalam fail atau sesuatu. 300 00:26:17,880 --> 00:26:23,490 Bawah keadaan biasa, anda lulus fungsi fail ini 301 00:26:23,490 --> 00:26:27,120 dan ia akan kembali integer yang mewakili bilangan garisan. 302 00:26:27,120 --> 00:26:30,820 Jadi 0 adalah nombor yang sempurna munasabah jika fail adalah hanya kosong. 303 00:26:30,820 --> 00:26:36,810 Tetapi bagaimana jika anda lulus fail yang tidak sah dan fungsi berlaku untuk kembali palsu 304 00:26:36,810 --> 00:26:38,860 jika anda lulus fail yang tidak sah? 305 00:26:38,860 --> 00:26:46,500 Jika anda hanya melakukan == anda tidak membezakan kes antara fail yang tidak sah dan fail kosong. 306 00:26:48,870 --> 00:26:51,350 Sentiasa gunakan ===. 307 00:26:55,690 --> 00:26:58,000 Itu semua orang. 308 00:26:58,000 --> 00:27:01,660 >> Dalam PHP, pelbagai jenis adalah berbeza daripada apa yang anda digunakan untuk dalam C. 309 00:27:01,660 --> 00:27:06,650 Malah, anda mungkin sudah perhatikan di atas ini apabila anda melihat bahawa ini adalah pelbagai jenis. 310 00:27:06,650 --> 00:27:15,640 Sintaks kurungan baru sebagai PHP 5.4, yang merupakan versi terbaru PHP. 311 00:27:15,640 --> 00:27:36,960 Sebelum ini, anda sentiasa mempunyai untuk menulis array ('a' -> 1, 'b' -> 2. 312 00:27:36,960 --> 00:27:41,160 Itu adalah pembina untuk pelbagai. 313 00:27:41,160 --> 00:27:45,950 Sekarang PHP telah akhirnya datang sekitar untuk sintaks bagus hanya kurungan persegi, 314 00:27:45,950 --> 00:27:50,900 yang hanya begitu banyak yang lebih baik daripada pelbagai. 315 00:27:50,900 --> 00:27:54,480 Tetapi mengingati PHP 5,4 adalah versi terbaru, 316 00:27:54,480 --> 00:27:59,090 anda mungkin akan menghadapi tempat-tempat yang tidak mempunyai PHP 5,3. 317 00:27:59,090 --> 00:28:08,220 Lebih musim panas kita berlari ke dalam isu ini di mana PHP 5,3 adalah apa yang kita terpaksa perkakas, 318 00:28:08,220 --> 00:28:14,480 tetapi pelayan yang kita dikerahkan semua buku gred kami dan mengemukakan dan semua bahawa barangan untuk 319 00:28:14,480 --> 00:28:16,750 adalah PHP 5,4. 320 00:28:16,750 --> 00:28:23,060 Tidak mengetahui ini, kita maju pada 5,3, menolak kepada 5.4, 321 00:28:23,060 --> 00:28:25,660 dan sekarang semua tiada kod kami secara tiba-tiba berfungsi 322 00:28:25,660 --> 00:28:28,680 kerana ada berlaku perubahan telah berlaku di antara 5.3 dan 5.4 323 00:28:28,680 --> 00:28:31,030 yang tidak serasi ke belakang, 324 00:28:31,030 --> 00:28:35,770 dan kita perlu pergi dan menetapkan semua perkara kami yang tidak bekerja untuk PHP 5.4. 325 00:28:39,210 --> 00:28:42,320 Untuk kelas ini, kerana perkakas tidak mempunyai 5,4 PHP, 326 00:28:42,320 --> 00:28:45,490 ia adalah betul-betul halus untuk menggunakan kurungan persegi. 327 00:28:47,240 --> 00:28:50,440 Tetapi jika anda sedang mencari perkara-perkara di sekeliling Internet, 328 00:28:50,440 --> 00:28:54,880 jika anda sedang mencari beberapa jenis barangan pelbagai, kemungkinan besar anda akan melihat 329 00:28:54,880 --> 00:29:02,020 ejaan keluar sintaks pembina pelbagai kerana itu telah wujud sejak PHP dilahirkan 330 00:29:02,020 --> 00:29:07,340 dan sintaksis kurungan persegi telah wujud untuk beberapa bulan yang lepas 331 00:29:07,340 --> 00:29:10,020 atau apabila 5,4 datang sekitar. 332 00:29:10,020 --> 00:29:12,710 Ini adalah bagaimana anda indeks. 333 00:29:12,710 --> 00:29:30,610 Sama seperti dalam C bagaimana anda akan indeks oleh kurungan persegi seperti array $ [0], array $ [1], array $ [2], 334 00:29:30,610 --> 00:29:36,320 anda indeks cara yang sama jika anda berlaku untuk mempunyai indeks anda menjadi rentetan. 335 00:29:36,320 --> 00:29:40,440 Pelbagai Jadi array $ [''] dan $ ['b']. 336 00:29:40,440 --> 00:29:47,410 Array $ [b]. Mengapa ini akan menjadi salah? 337 00:29:52,490 --> 00:29:59,870 Ia mungkin akan menjana amaran tetapi masih bekerja. PHP cenderung untuk berbuat demikian. 338 00:29:59,870 --> 00:30:04,890 Ia cenderung untuk adil, "Saya akan memberi amaran kepada anda tentang perkara ini, tetapi saya hanya akan terus pergi 339 00:30:04,890 --> 00:30:07,550 "Dan melakukan apa sahaja yang saya boleh." 340 00:30:07,550 --> 00:30:11,500 Ia mungkin akan menterjemahkan ini kepada rentetan, 341 00:30:11,500 --> 00:30:15,000 tetapi ia adalah mungkin bahawa pada satu ketika dalam seseorang lalu berkata 342 00:30:15,000 --> 00:30:20,180 menentukan b untuk menjadi 'HELLO DUNIA'. 343 00:30:20,180 --> 00:30:28,740 Jadi sekarang b boleh menjadi pelbagai berterusan dan $ [b] sebenarnya akan melakukan 'HELLO DUNIA'. 344 00:30:28,740 --> 00:30:32,380 Saya rasa pada ketika ini, atau sekurang-kurangnya tetapan PHP kami, 345 00:30:32,380 --> 00:30:37,870 jika anda cuba untuk indeks ke dalam array dan utama yang tidak wujud, ia akan gagal. 346 00:30:37,870 --> 00:30:40,150 Saya tidak fikir ia hanya akan memberi amaran kepada anda. 347 00:30:40,150 --> 00:30:44,560 Atau sekurang-kurangnya anda boleh menetapkan supaya ia tidak hanya memberi amaran kepada anda, ia hanya lurus sehingga gagal. 348 00:30:44,560 --> 00:30:49,290 >> Cara anda memeriksa untuk melihat jika terdapat sebenarnya adalah seperti indeks adalah isset. 349 00:30:49,290 --> 00:30:54,690 Jadi isset (array $ ['HELLO DUNIA']) akan kembali palsu. 350 00:30:54,690 --> 00:30:59,160 isset (array $ ['b']) akan kembali benar. 351 00:31:06,830 --> 00:31:09,880 Anda boleh mencampurkan sintaks ini. 352 00:31:15,060 --> 00:31:22,440 Saya agak pasti apa array ini akan akhirnya menjadi - Kita boleh menguji ia keluar. 353 00:31:43,290 --> 00:31:45,700 Oh, saya perlu PHPWord. 354 00:31:53,960 --> 00:32:00,260 Ini mencampurkan sintaks di mana anda tentukan apa kunci 355 00:32:00,260 --> 00:32:03,330 dan anda tidak menentukan apa kunci. 356 00:32:03,330 --> 00:32:05,520 Jadi 3 betul di sini adalah nilai. 357 00:32:05,520 --> 00:32:08,080 Anda telah tidak jelas berkata apa utamanya akan menjadi. 358 00:32:08,080 --> 00:32:11,670 Apa yang anda fikir utamanya akan menjadi? 359 00:32:11,670 --> 00:32:21,410 [Pelajar] 0. >> Saya meneka 0 sahaja kerana ia adalah satu yang pertama kita telah tidak dinyatakan. 360 00:32:21,410 --> 00:32:23,500 Kita sebenarnya boleh melakukan beberapa kes-kes ini. 361 00:32:23,500 --> 00:32:28,030 Jadi print_r adalah mencetak rekursi. Ia akan mencetak pelbagai keseluruhan. 362 00:32:28,030 --> 00:32:32,700 Ia akan mencetak subarrays array jika terdapat sebarang. 363 00:32:32,700 --> 00:32:36,630 Jadi print_r (array $); php.test.php. 364 00:32:36,630 --> 00:32:38,810 Ia tidak kelihatan seperti ia memberikannya 0. 365 00:32:38,810 --> 00:32:43,530 Terdapat sebenarnya sesuatu yang perlu diingat di sini, tetapi kita akan mendapat kembali ke dalam kedua. 366 00:32:43,530 --> 00:32:45,850 Tetapi apa jika saya berlaku untuk membuat indeks ini 1? 367 00:32:45,850 --> 00:32:51,170 PHP tidak membezakan antara indeks rentetan dan indeks integer, 368 00:32:51,170 --> 00:33:00,280 jadi pada ketika ini, saya baru sahaja ditakrifkan indeks 1 dan saya boleh melakukan kedua-dua array $ [1] dan array $ ['1 '] 369 00:33:00,280 --> 00:33:06,250 dan ia akan menjadi indeks yang sama dan kunci yang sama. 370 00:33:06,250 --> 00:33:13,000 Jadi sekarang apa yang anda berfikir 3 akan menjadi? >> [Pelajar] 2. >> [Bowden] Saya meneka 2. 371 00:33:16,000 --> 00:33:18,690 Yeah. Ia adalah 2. 372 00:33:18,690 --> 00:33:24,790 Bagaimana jika kita lakukan ini ialah 10, ini adalah 4? Apa yang anda fikir indeks 3 akan menjadi? 373 00:33:27,360 --> 00:33:29,110 Saya berfikir 11. 374 00:33:29,110 --> 00:33:33,060 Saya meneka apa PHP - dan saya fikir saya pernah dilihat sebelum ini - 375 00:33:33,060 --> 00:33:39,760 ia hanya menjejaki apa indeks tertinggi angka ia digunakan setakat ini adalah. 376 00:33:39,760 --> 00:33:44,230 Ia tidak akan memberikan indeks rentetan kepada 3. Ia sentiasa akan menjadi indeks angka. 377 00:33:44,230 --> 00:33:47,690 Jadi ia menjejaki satu tertinggi ia diberikan setakat ini, yang berlaku untuk menjadi 10, 378 00:33:47,690 --> 00:33:52,540 dan ia akan memberi 11-3. 379 00:33:52,540 --> 00:34:02,110 Apa yang saya katakan sebelum ini, notis cara ia mencetak array ini. 380 00:34:02,110 --> 00:34:06,850 Ia mencetak 10 utama, utama 4, utama 11, utama d. 381 00:34:06,850 --> 00:34:09,790 Atau pun mari kita buat - 382 00:34:15,760 --> 00:34:22,489 Saya rasa saya tidak meletakkan 0, tetapi ia adalah percetakan 1, 2, 3, 4. 383 00:34:22,489 --> 00:34:29,330 Apakah jika saya bertukar di sini? Atau mari kita sebenarnya hidupkan 2 ini. 384 00:34:29,330 --> 00:34:31,940 Kini ia mencetak 2, 1, 3, 4. 385 00:34:31,940 --> 00:34:41,270 Tatasusunan PHP tidak seperti biasa jadual hash anda. 386 00:34:41,270 --> 00:34:45,570 Ia adalah betul-betul munasabah untuk memikirkan mereka sebagai jadual hash 99% daripada masa. 387 00:34:45,570 --> 00:34:53,790 Tetapi dalam jadual hash anda tidak ada rasa perintah itu di mana perkara yang dimasukkan. 388 00:34:53,790 --> 00:34:56,639 Jadi secepat anda memasukkan ia ke dalam jadual hash anda, 389 00:34:56,639 --> 00:35:00,590 menganggap tidak ada senarai yang berkaitan dan anda boleh menilai dalam senarai berkaitan 390 00:35:00,590 --> 00:35:03,980 yang telah dimasukkan terlebih dahulu. 391 00:35:03,980 --> 00:35:10,060 Tetapi di sini kita dimasukkan 2 pertama dan ia tahu apabila ia mencetak pelbagai ini bahawa 2 datang pertama. 392 00:35:10,060 --> 00:35:13,090 Ia tidak mencetak ia keluar hanya dalam mana-mana perintah. 393 00:35:13,090 --> 00:35:17,550 Struktur data teknikal bahawa ia menggunakan peta yang diperintahkan, 394 00:35:17,550 --> 00:35:24,690 jadi ia memetakan kunci kepada nilai dan ia mengingat perintah di mana mereka kunci dimasukkan. 395 00:35:24,690 --> 00:35:31,600 Pada asasnya, ia adalah kepada beberapa komplikasi di mana ia adalah menjengkelkan untuk benar-benar - 396 00:35:31,600 --> 00:35:34,510 Katakan anda mempunyai pelbagai 0, 1, 2, 3, 4, 5 397 00:35:34,510 --> 00:35:37,700 dan anda mahu mengambil indeks 2. 398 00:35:37,700 --> 00:35:47,750 Salah satu cara untuk melakukannya, mari kita lihat apa yang kelihatan seperti. 399 00:35:47,750 --> 00:35:50,410 0, 2, 1, 3, 4. 400 00:35:50,410 --> 00:35:54,880 Nyahset berlaku kepada Nyahset kedua-dua pembolehubah dan indeks pelbagai. 401 00:35:54,880 --> 00:35:58,630 Jadi belum berikat (array $ [2]); 402 00:35:58,630 --> 00:36:03,430 Sekarang apa yang ini akan kelihatan seperti? 2 adalah hanya pergi, jadi yang sempurna denda. 403 00:36:03,430 --> 00:36:11,670 Lebih menjengkelkan ialah jika anda mahu perkara-perkara untuk benar-benar menjadi seperti array. 404 00:36:11,670 --> 00:36:14,910 Saya akan meletakkan nombor rawak. 405 00:36:14,910 --> 00:36:20,400 Sekarang notis indeks saya. 406 00:36:20,400 --> 00:36:26,860 Saya mahu ia hanya menjadi seperti pelbagai C mana ia pergi dari 0 hingga panjang - 1 407 00:36:26,860 --> 00:36:30,810 dan saya boleh melelar atasnya seperti itu. 408 00:36:30,810 --> 00:36:38,520 Tetapi sebaik sahaja saya Nyahset indeks kedua, apa yang berada dalam indeks 3 tidak kini menjadi indeks 2. 409 00:36:38,520 --> 00:36:44,790 Sebaliknya, ia hanya membuang indeks yang dan sekarang anda pergi 0, 1, 3, 4. 410 00:36:44,790 --> 00:36:48,740 Ini adalah betul-betul munasabah. 411 00:36:48,740 --> 00:36:53,950 Ia hanya menjengkelkan dan anda perlu untuk melakukan perkara-perkara seperti sambat pelbagai. Yeah. 412 00:36:53,950 --> 00:36:57,200 >> [Pelajar] Apa yang akan berlaku jika anda mempunyai untuk gelung 413 00:36:57,200 --> 00:36:59,630 dan anda mahu untuk pergi ke atas semua unsur-unsur? 414 00:36:59,630 --> 00:37:02,290 Apabila ia mencecah 2, ia akan menghasilkan pernah? 415 00:37:02,290 --> 00:37:10,150 Iterating lebih array. Terdapat 2 cara anda boleh melakukannya. 416 00:37:10,150 --> 00:37:12,770 Anda boleh menggunakan tetap bagi gelung. 417 00:37:12,770 --> 00:37:22,000 Ini adalah lain Kerumitan PHP. 418 00:37:22,000 --> 00:37:27,420 Kebanyakan bahasa, saya akan berkata, mempunyai beberapa jenis panjang atau len atau sesuatu 419 00:37:27,420 --> 00:37:30,470 menunjukkan panjang array. 420 00:37:30,470 --> 00:37:32,820 Dalam PHP ia adalah kiraan. 421 00:37:32,820 --> 00:37:36,160 Jadi kiraan (array $); $ i + +) 422 00:37:36,160 --> 00:37:42,950 Mari kita hanya cetak (array $ [$ i]); 423 00:37:45,920 --> 00:37:48,820 Notis: Undefined offset: 2. 424 00:37:48,820 --> 00:37:51,610 Ia hanya akan gagal. 425 00:37:51,610 --> 00:38:03,020 Ini adalah sebab bahawa, bagi sebahagian besar, anda tidak perlu untuk melelar lebih pelbagai seperti ini. 426 00:38:03,020 --> 00:38:07,110 Ia mungkin keterlaluan, tetapi anda tidak perlu untuk melelar lebih pelbagai seperti ini 427 00:38:07,110 --> 00:38:19,410 kerana PHP menyediakan sintaks foreach mana foreach (array $ $ item). 428 00:38:19,410 --> 00:38:31,830 Sekarang jika kita mencetak ($ ​​item); - we'll berbincang dalam kedua - yang berfungsi dengan sempurna halus. 429 00:38:31,830 --> 00:38:38,960 Cara yang foreach bekerja adalah hujah pertama adalah pelbagai bahawa anda iterating lebih. 430 00:38:38,960 --> 00:38:44,060 Dan hujah kedua, perkara, melalui setiap laluan untuk gelung 431 00:38:44,060 --> 00:38:52,690 ia akan mengambil perkara seterusnya dalam array. Jadi ingat array mempunyai suatu perintah. 432 00:38:52,690 --> 00:38:55,690 Kali pertama melalui untuk gelung, perkara akan menjadi 123 433 00:38:55,690 --> 00:38:59,540 maka ia akan menjadi 12, maka ia akan menjadi 13, maka ia akan menjadi 23, maka ia akan menjadi 213. 434 00:38:59,540 --> 00:39:04,670 Perkara yang dapat benar-benar pelik apabila anda melakukan sesuatu seperti foreach. 435 00:39:04,670 --> 00:39:07,480 Mari kita lihat apa yang berlaku kerana anda tidak perlu berbuat demikian. 436 00:39:07,480 --> 00:39:13,320 Bagaimana jika kita belum berikat (array $ [1]); 437 00:39:20,410 --> 00:39:26,030 Itu mungkin telah dijangka. 438 00:39:26,030 --> 00:39:30,950 Anda iterating lebih pelbagai ini, dan setiap kali anda unsetting indeks pertama. 439 00:39:30,950 --> 00:39:39,720 Jadi bagi indeks 0, perkara pertama, perkara mengambil nilai pada 0, jadi ia akan menjadi 123. 440 00:39:39,720 --> 00:39:44,630 Tetapi di dalam untuk gelung kita belum berikat index 1, supaya bermakna 12 hilang. 441 00:39:44,630 --> 00:39:57,480 Jadi mencetak. PHP_EOL. 442 00:39:57,480 --> 00:40:03,580 PHP_EOL hanya newline, tetapi ia adalah teknikal lebih mudah alih 443 00:40:03,580 --> 00:40:08,890 sejak baris baru dalam Windows adalah berbeza dari baris baru pada Mac dan UNIX. 444 00:40:08,890 --> 00:40:18,040 Pada Windows newline \ r \ n, manakala mana-mana sahaja ia cenderung hanya untuk menjadi \ n. 445 00:40:18,040 --> 00:40:25,150 PHP_EOL dikonfigurasi supaya ia menggunakan apa jua newline sistem anda adalah. 446 00:40:25,150 --> 00:40:29,310 Jadi mencetak bahawa. Mari kita tidak print_r (array $) pada akhir. 447 00:40:32,830 --> 00:40:37,390 Saya tidak mempunyai idea bahawa akan menjadi tingkah laku. 448 00:40:41,740 --> 00:40:48,960 Item masih mengambil nilai 12 walaupun kita Nyahset 12 sebelum kita pernah mendapat dari array. 449 00:40:52,770 --> 00:40:58,840 Jangan mengambil kata-kata saya ini, tetapi ia kelihatan seperti foreach mewujudkan salinan array 450 00:40:58,840 --> 00:41:02,160 dan kemudian item mengambil semua nilai salinan itu. 451 00:41:02,160 --> 00:41:07,760 Jadi, walaupun anda mengubah suai pelbagai di dalam gelung untuk, 452 00:41:07,760 --> 00:41:17,240 ia tidak akan menjaga. Item akan mengambil nilai-nilai asal. 453 00:41:17,240 --> 00:41:19,240 Mari kita cuba unsetting ia. 454 00:41:19,240 --> 00:41:24,460 Bagaimana jika ini adalah array $ [1] = "hello"; 455 00:41:24,460 --> 00:41:31,770 Walaupun kita meletakkan "hello" ke dalam array, item tidak pernah mengambil nilai itu. 456 00:41:31,770 --> 00:41:37,430 Ada lagi sintaks untuk foreach gelung 457 00:41:37,430 --> 00:41:45,900 di mana anda meletakkan 2 pembolehubah yang dipisahkan oleh anak panah. 458 00:41:45,900 --> 00:41:49,680 Ini pembolehubah pertama akan menjadi kunci nilai itu, 459 00:41:49,680 --> 00:41:53,050 dan ini pembolehubah kedua akan menjadi item yang tepat yang sama. 460 00:41:53,050 --> 00:42:01,610 Ini tidak menarik di sini, tetapi jika kita kembali kepada kes asal kita 'a' -> 1, 461 00:42:01,610 --> 00:42:06,090 'B' -> 1, 462 00:42:06,090 --> 00:42:14,470 di sini jika kita hanya melelar untuk pelbagai setiap item, item akan menjadi 1 setiap kali tunggal. 463 00:42:14,470 --> 00:42:18,170 Tetapi jika kita juga mahu tahu kunci yang berkaitan dengan perkara yang 464 00:42:18,170 --> 00:42:25,230 maka kita lakukan sebagai $ kunci -> $ item. 465 00:42:25,230 --> 00:42:31,980 Jadi sekarang kita boleh melakukan cetak ($ ​​utama. ':'. 466 00:42:31,980 --> 00:42:39,380 Kini ia iterating lebih dan mencetak setiap kekunci dan nilai yang berkaitan. 467 00:42:39,380 --> 00:42:47,030 >> Satu perkara tambahan yang boleh kita lakukan dalam foreach gelung adalah anda mungkin melihat sintaks ini. 468 00:42:47,030 --> 00:42:54,770 Ampersands sebelum nama ubah cenderung untuk menjadi bagaimana PHP tidak rujukan. 469 00:42:54,770 --> 00:43:00,460 Jika rujukan adalah amat serupa kepada petunjuk, 470 00:43:00,460 --> 00:43:04,820 anda tidak mempunyai petunjuk, jadi anda tidak pernah berurusan dengan ingatan terus. 471 00:43:04,820 --> 00:43:12,620 Tetapi anda tidak mempunyai rujukan mana 1 pembolehubah merujuk kepada perkara yang sama sebagai pembolehubah lain. 472 00:43:12,620 --> 00:43:21,450 Dalam sini mari kita buat $ item. Mari kita kembali kepada 1, 10. 473 00:43:21,450 --> 00:43:28,800 Mari kita buat $ item + +; Itu masih wujud dalam PHP. Anda masih boleh melakukan + +. 474 00:43:28,800 --> 00:43:38,260 php.test.php. Saya mempunyai untuk mencetak. print_r (array $); 475 00:43:38,260 --> 00:43:42,730 Kami mencetak 2, 11. 476 00:43:42,730 --> 00:43:49,560 Jika saya baru sahaja dilakukan foreach (array $ $ item) maka item akan nilai 1 477 00:43:49,560 --> 00:43:54,190 kali pertama melalui gelung. Ia akan kenaikan 1-2 dan kemudian kita lakukan. 478 00:43:54,190 --> 00:43:57,260 Jadi maka ia akan pergi melalui pas kedua gelung dan item tersebut adalah 10. 479 00:43:57,260 --> 00:44:01,570 Ia perkara kenaikan kepada 11, dan kemudian yang hanya dibuang. 480 00:44:01,570 --> 00:44:06,670 Kemudian kita print_r (array $); dan mari kita melihat bahawa ini adalah hanya 1, 10. 481 00:44:06,670 --> 00:44:09,070 Jadi kenaikan yang kita lakukan telah hilang. 482 00:44:09,070 --> 00:44:13,410 Tetapi foreach (array $ sebagai & $ item) 483 00:44:13,410 --> 00:44:21,910 kini perkara ini adalah perkara yang sama seperti hak ini di sini. Ia adalah perkara yang sama. 484 00:44:21,910 --> 00:44:26,820 Jadi $ item + + mengubahsuai pelbagai 0. 485 00:44:29,330 --> 00:44:41,850 Pada asasnya, anda juga boleh melakukan $ k -> $ pelbagai item dan anda boleh melakukannya $ [$ k] + +; 486 00:44:41,850 --> 00:44:48,650 >> Jadi cara yang lain berbuat demikian, kita bebas untuk mengubah suai item, 487 00:44:48,650 --> 00:44:54,070 tetapi itu tidak akan mengubah suai pelbagai asal kita. 488 00:44:54,070 --> 00:44:59,720 Tetapi jika kita menggunakan k, yang merupakan kunci kita, maka kita boleh hanya indeks ke dalam pelbagai kami menggunakan bahawa kunci 489 00:44:59,720 --> 00:45:01,530 dan bertambah. 490 00:45:01,530 --> 00:45:05,410 Ini lebih langsung mengubah pelbagai asal kita. 491 00:45:05,410 --> 00:45:10,690 Anda juga boleh berbuat demikian jika bagi sebab-sebab tertentu anda ingin keupayaan untuk mengubah suai - 492 00:45:10,690 --> 00:45:13,510 Sebenarnya, ini adalah betul-betul munasabah. 493 00:45:13,510 --> 00:45:16,020 Anda tidak mahu perlu menulis array $ [$ k] + +, 494 00:45:16,020 --> 00:45:27,890 anda hanya mahu untuk menulis $ item + + tetapi anda masih mahu mengatakan jika ($ k === 'a') 495 00:45:27,890 --> 00:45:30,620 kemudian kenaikan item dan kemudian mencetak pelbagai kami. 496 00:45:30,620 --> 00:45:36,290 Jadi sekarang apa yang kita mengharapkan print_r untuk melakukan? Apakah nilai yang perlu dicetak? 497 00:45:36,290 --> 00:45:43,770 [Pelajar] 2 dan 10. >> [Bowden] Hanya jika kunci '' kita sebenarnya mencetak bahawa. 498 00:45:51,940 --> 00:45:55,670 >> Anda mungkin sangat jarang, jika pernah, akan perlu untuk menentukan fungsi dalam PHP, 499 00:45:55,670 --> 00:46:03,370 tetapi anda mungkin melihat sesuatu yang serupa di mana anda menentukan fungsi seperti apa sahaja fungsi. 500 00:46:03,370 --> 00:46:09,900 Biasanya anda akan mengatakan ($ Anu, $ bar) dan kemudian menentukan ia menjadi apa sahaja. 501 00:46:09,900 --> 00:46:17,580 Tetapi jika saya lakukan ini, maka itu bermakna bahawa apa-apa panggilan apa sahaja, 502 00:46:17,580 --> 00:46:25,110 apa-apa panggilan Baz, jadi hujah pertama diluluskan untuk Baz boleh diubah. 503 00:46:25,110 --> 00:46:38,100 Mari kita buat $ Anu + +; 504 00:46:38,100 --> 00:46:48,020 dan di dalam sini mari kita lakukan Baz ($ item); 505 00:46:48,020 --> 00:46:52,250 Sekarang kita memanggil fungsi. 506 00:46:52,250 --> 00:46:56,780 Hujah yang diambil oleh rujukan, yang bermaksud bahawa jika kita mengubah suai 507 00:46:56,780 --> 00:47:00,390 kita mengubah perkara yang telah diluluskan. 508 00:47:00,390 --> 00:47:04,420 Dan percetakan ini kita menjangkakan - kecuali saya sehingga merosakkan sintaks - kami mendapat 2, 11, 509 00:47:04,420 --> 00:47:06,300 jadi ia sebenarnya incremented. 510 00:47:06,300 --> 00:47:08,790 Notis kita perlukan rujukan dalam 2 tempat. 511 00:47:08,790 --> 00:47:13,050 Bagaimana jika saya lakukan ini? Apa maknanya? 512 00:47:13,050 --> 00:47:15,810 [Pelajar] Ia akan berubah. >> Yeah. 513 00:47:15,810 --> 00:47:18,290 Item hanya satu salinan nilai dalam array. 514 00:47:18,290 --> 00:47:26,670 Jadi perkara akan berubah kepada 2, tetapi array ['a'] masih akan menjadi 1. 515 00:47:26,670 --> 00:47:32,560 Atau bagaimana jika saya melakukan ini? 516 00:47:32,560 --> 00:47:39,260 Sekarang item dihantar sebagai salinan kepada Baz. 517 00:47:39,260 --> 00:47:46,330 Jadi salinan hujah akan incremented kepada 2, 518 00:47:46,330 --> 00:47:49,240 tetapi item itu sendiri tidak pernah incremented kepada 2. 519 00:47:49,240 --> 00:47:52,880 Dan perkara adalah perkara yang sama sebagai kurungan pelbagai apa jua, 520 00:47:52,880 --> 00:47:55,380 jadi pelbagai bahawa tidak pernah incremented. 521 00:47:55,380 --> 00:47:57,960 Jadi kedua-dua mereka tempat memerlukannya. 522 00:47:57,960 --> 00:48:03,830 >> PHP adalah biasanya cukup bijak tentang perkara ini. 523 00:48:03,830 --> 00:48:06,570 Anda mungkin fikir saya mahu lulus oleh rujukan - 524 00:48:06,570 --> 00:48:09,560 Ini adalah sebenarnya satu soalan pada salah satu psets. 525 00:48:09,560 --> 00:48:14,480 Ia adalah satu perkara yang questions.txt di mana ia berkata, 526 00:48:14,480 --> 00:48:19,280 Mengapa anda mungkin mahu lulus struct ini dengan rujukan? 527 00:48:19,280 --> 00:48:21,250 Apakah jawapan untuk itu? 528 00:48:21,250 --> 00:48:25,100 [Pelajar] Jadi anda tidak perlu untuk menyalin sesuatu yang besar. >> Yeah. 529 00:48:25,100 --> 00:48:32,920 Struct boleh sewenang-wenangnya besar, dan apabila anda lulus struct sebagai hujah 530 00:48:32,920 --> 00:48:36,800 ia perlu untuk menyalin bahawa struct keseluruhan untuk lulus ia kepada fungsi, 531 00:48:36,800 --> 00:48:40,410 manakala jika anda hanya lulus struct oleh rujukan 532 00:48:40,410 --> 00:48:46,530 maka ia hanya perlu untuk menyalin alamat 4-bait sebagai hujah untuk fungsi. 533 00:48:48,520 --> 00:48:52,320 PHP adalah sedikit lebih bijak daripada itu. 534 00:48:52,320 --> 00:49:00,650 Jika saya mempunyai beberapa fungsi dan saya lulus pelbagai 1,000 perkara, 535 00:49:00,650 --> 00:49:03,990 adakah itu bermakna ia akan mempunyai untuk menyalin semua 1,000 daripada perkara-perkara 536 00:49:03,990 --> 00:49:10,450 untuk lulus ia ke dalam fungsi? Ia tidak perlu untuk berbuat demikian segera. 537 00:49:10,450 --> 00:49:15,940 Jika dalam fungsi ini ia tidak pernah benar-benar mengubah foo, 538 00:49:15,940 --> 00:49:22,660 jadi jika ($ Anu === 'hello') memulangkan benar.; 539 00:49:22,660 --> 00:49:26,460 Notis kita tidak pernah benar-benar diubahsuai dalam hujah fungsi ini, 540 00:49:26,460 --> 00:49:30,010 yang bermaksud bahawa apa sahaja yang telah diluluskan sebagai foo tidak perlu disalin 541 00:49:30,010 --> 00:49:32,100 kerana ia tidak mengubah ia. 542 00:49:32,100 --> 00:49:39,240 Jadi cara PHP kerja-kerja adalah hujah sentiasa rujukan yang diluluskan oleh 543 00:49:39,240 --> 00:49:42,170 sehingga anda sebenarnya cuba untuk mengubah suai ia. 544 00:49:42,170 --> 00:49:51,160 Sekarang jika saya katakan $ Anu + +; ia kini akan membuat satu salinan daripada foo asal dan mengubah suai salinan. 545 00:49:51,160 --> 00:49:53,090 Ini menjimatkan masa beberapa. 546 00:49:53,090 --> 00:49:58,210 Jika anda tidak pernah menyentuh adanya pelbagai besar-besaran, anda tidak benar-benar mengubah suai, 547 00:49:58,210 --> 00:50:02,360 ia tidak perlu untuk membuat salinan, 548 00:50:02,360 --> 00:50:06,640 sedangkan jika kita hanya meletakkan ini #: glib yang bermakna ia tidak walaupun salinan 549 00:50:06,640 --> 00:50:08,640 walaupun anda mengubah suai. 550 00:50:08,640 --> 00:50:10,680 Tingkah laku ini dipanggil salinan-on-menulis. 551 00:50:10,680 --> 00:50:17,380 Anda akan melihat ia di tempat-tempat lain, terutamanya jika anda mengambil kursus sistem operasi. 552 00:50:17,380 --> 00:50:23,880 Salin-on-menulis adalah corak yang agak biasa di mana anda tidak perlu untuk membuat salinan sesuatu 553 00:50:23,880 --> 00:50:26,650 melainkan jika ia benar-benar berubah. Yeah. 554 00:50:26,650 --> 00:50:29,520 [Pelajar] Bagaimana jika anda mempunyai kenaikan di dalam ujian, 555 00:50:29,520 --> 00:50:33,700 jadi hanya 1 elemen daripada sebanyak 1,000 akan perlu ditukar? 556 00:50:33,700 --> 00:50:38,770 Saya tidak pasti. 557 00:50:38,770 --> 00:50:51,250 Saya fikir ia akan menyalin keseluruhan perkara, tetapi ia adalah mungkin ia adalah bijak bahawa - 558 00:50:51,250 --> 00:51:00,020 Sebenarnya, apa yang saya berfikir adalah bayangkan kita mempunyai pelbagai yang kelihatan seperti ini: $ tatasusunan2 = [ 559 00:51:00,020 --> 00:51:11,000 Kemudian 'a' indeks adalah pelbagai [1 ​​2 3 4], dan indeks 'b' adalah pelbagai apa sahaja. 560 00:51:11,000 --> 00:51:15,380 Saya perlu koma antara semua orang. Bayangkan terdapat koma. 561 00:51:15,380 --> 00:51:21,210 Kemudian 'c' adalah 3 nilai. 562 00:51:24,210 --> 00:51:26,290 Okay. 563 00:51:26,290 --> 00:51:33,440 Sekarang mari kita mengatakan kita lakukan $ Baz ($ tatasusunan2); 564 00:51:33,440 --> 00:51:36,540 mana Baz tidak mengambil ini dengan rujukan. 565 00:51:43,510 --> 00:51:47,370 Jadi $ Anu ['c'] + +; 566 00:51:47,370 --> 00:51:52,340 Ini adalah satu contoh yang mana kita lulus tatasusunan2 sebagai hujah 567 00:51:52,340 --> 00:51:57,010 dan kemudian ia mengubah indeks khusus array oleh incrementing ia. 568 00:51:57,010 --> 00:52:01,090 Saya secara jujur ​​tidak mempunyai idea apa PHP akan lakukan. 569 00:52:01,090 --> 00:52:07,200 Ia dengan mudah boleh membuat salinan keseluruhan perkara, tetapi jika ia pintar, 570 00:52:07,200 --> 00:52:15,030 ia akan membuat salinan kunci ini di mana ini akan mempunyai nilai yang berbeza 571 00:52:15,030 --> 00:52:20,620 tetapi ini masih boleh menunjukkan pelbagai sama 1,2,3,4 572 00:52:20,620 --> 00:52:22,320 dan ini masih boleh menunjukkan pelbagai sama. 573 00:52:22,320 --> 00:52:24,170 Saya akan iPad ia. 574 00:52:28,900 --> 00:52:45,950 Kami lulus dalam pelbagai ini di mana mata lelaki ini kepada 3, ini mata lelaki untuk [1,2,3,4], 575 00:52:45,950 --> 00:52:51,350 mata lelaki ini [34, ...] 576 00:52:51,350 --> 00:52:58,590 Sekarang bahawa kami lulus ia ke dalam Baz, kita mengubah suai ini. 577 00:52:58,590 --> 00:53:03,550 Jika PHP adalah pintar, ia hanya boleh lakukan - 578 00:53:11,850 --> 00:53:18,230 Kami masih mempunyai untuk menyalin beberapa memori, tetapi jika ada ini subarrays besar bersarang 579 00:53:18,230 --> 00:53:21,560 kita tidak perlu untuk menyalin mereka. 580 00:53:21,560 --> 00:53:27,530 Saya tidak tahu jika itulah apa yang ia lakukan, tetapi saya boleh bayangkan ia berbuat demikian. 581 00:53:29,050 --> 00:53:36,690 Ini juga merupakan satu kelebihan yang cukup besar C lebih PHP. 582 00:53:36,690 --> 00:53:40,320 >> PHP menjadikan kehidupan lebih mudah untuk banyak perkara, 583 00:53:40,320 --> 00:53:45,060 tetapi anda jenis benar-benar tidak mempunyai idea bagaimana ia akan melaksanakan 584 00:53:45,060 --> 00:53:52,530 kerana saya tidak mempunyai idea di bawah hood apabila ia membuat salinan ini perkara, 585 00:53:52,530 --> 00:53:55,170 oh, yang akan menjadi salinan pemalar masa, 586 00:53:55,170 --> 00:54:01,140 ia hanya akan untuk menukar 1 penunjuk, ia akan menjadi satu salinan linear sungguh sukar? 587 00:54:01,140 --> 00:54:03,000 Bagaimana jika ia tidak dapat mencari ruang? 588 00:54:03,000 --> 00:54:06,760 Adakah ia kemudian perlu untuk menjalankan pungutan sampah untuk mendapatkan lebih banyak ruang? 589 00:54:06,760 --> 00:54:11,210 Dan pengumpulan sampah boleh mengambil sewenang-wenangnya yang panjang. 590 00:54:11,210 --> 00:54:13,600 Dalam C anda tidak perlu bimbang tentang perkara-perkara ini. 591 00:54:13,600 --> 00:54:19,780 Setiap baris tunggal anda menulis anda boleh sebab yang cukup banyak tentang bagaimana ia akan melaksanakan. 592 00:54:26,800 --> 00:54:29,150 >> Mari kita melihat kembali pada. 593 00:54:35,400 --> 00:54:37,520 Bagaimana baik adalah bahawa anda tidak perlu berurusan dengan fungsi hash, 594 00:54:37,520 --> 00:54:39,010 dikaitkan senarai, atau apa-apa seperti itu? 595 00:54:39,010 --> 00:54:41,980 Sejak bekerja dengan jadual hash adalah begitu mudah sekarang, di sini adalah teka-teki yang menyeronokkan untuk bekerja. 596 00:54:41,980 --> 00:54:45,920 Membuka fail yang dipanggil unique.php dan menulis program PHP 597 00:54:45,920 --> 00:54:48,330 (Juga dikenali sebagai "script"). 598 00:54:48,330 --> 00:54:55,700 Kita cenderung untuk memanggil mereka skrip jika mereka perkara-perkara yang pendek yang anda menjalankan pada baris arahan. 599 00:54:55,700 --> 00:55:02,950 Pada asasnya, apa-apa bahasa yang anda tidak menyusun tetapi anda akan menjalankan executable 600 00:55:02,950 --> 00:55:05,920 pada baris arahan, anda boleh memanggil skrip laku. 601 00:55:05,920 --> 00:55:08,510 Saya seperti juga boleh menulis program C yang melakukan ini, 602 00:55:08,510 --> 00:55:12,300 tetapi saya tidak memanggilnya skrip sejak saya mula-mula menyusun dan kemudian berjalan binari. 603 00:55:12,300 --> 00:55:15,480 Tetapi program ini PHP kita pergi untuk memanggil skrip. 604 00:55:15,480 --> 00:55:23,830 Atau jika kita menulis dalam Python atau Perl atau Node.js atau apa-apa benda, 605 00:55:23,830 --> 00:55:26,500 kita akan memanggil mereka semua skrip kerana anda menjalankan mereka pada baris arahan 606 00:55:26,500 --> 00:55:30,040 tetapi kita tidak menyusun mereka. 607 00:55:30,860 --> 00:55:33,400 Yang boleh kita lakukan ini cukup cepat. 608 00:55:36,960 --> 00:55:41,480 Kami tidak akan menggunakan argv. Mari kita hanya meniup melalui ini. 609 00:55:41,480 --> 00:55:45,730 Memanggilnya unik, menulis program. 610 00:55:45,730 --> 00:55:49,400 Anda boleh mengandaikan bahawa input akan mengandungi satu perkataan setiap baris. 611 00:55:49,400 --> 00:55:52,020 Sebenarnya, argv akan agak remeh untuk digunakan. 612 00:56:03,730 --> 00:56:06,720 unique.php. 613 00:56:08,550 --> 00:56:13,750 Perkara pertama yang pertama, kita mahu untuk memeriksa jika kita telah lulus 1 baris arahan hujah. 614 00:56:13,750 --> 00:56:20,900 Sama seperti yang anda inginkan argc dan argv dalam C, kita masih mempunyai mereka dalam PHP. 615 00:56:20,900 --> 00:56:33,900 Jadi, jika ($ argc! == 2) maka saya tidak akan berurusan dengan mencetak mesej atau apa-apa. 616 00:56:33,900 --> 00:56:37,340 Saya hanya akan keluar, kod ralat 1. 617 00:56:37,340 --> 00:56:41,340 Saya juga dapat kembali 1. 618 00:56:41,340 --> 00:56:53,180 Jarang dalam PHP anda di negeri ini di mana kita berada di - 619 00:56:53,180 --> 00:56:57,820 Biasanya anda berada dalam fungsi yang dipanggil oleh fungsi yang dipanggil oleh fungsi yang dipanggil oleh fungsi. 620 00:56:57,820 --> 00:57:02,070 Dan jika sesuatu berlaku dan anda hanya mahu keluar segala-galanya dengan sepenuhnya, 621 00:57:02,070 --> 00:57:05,680 keluar hanya berakhir program. 622 00:57:05,680 --> 00:57:08,160 Ini juga wujud di C. 623 00:57:08,160 --> 00:57:10,700 Jika anda berada dalam fungsi dalam fungsi dalam fungsi dalam fungsi 624 00:57:10,700 --> 00:57:17,540 dan anda hanya mahu membunuh program, anda boleh memanggil keluar dan ia hanya akan keluar. 625 00:57:17,540 --> 00:57:23,120 Tetapi dalam PHP ia lebih jarang berlaku bahawa kita berada di tahap ini atas. 626 00:57:23,120 --> 00:57:26,090 Biasanya kita berada di dalam sejenis fungsi, jadi kita panggil keluar 627 00:57:26,090 --> 00:57:29,650 supaya kita tidak perlu untuk kembali sehingga 1 perkara yang kemudiannya menyedari terdapat kesilapan 628 00:57:29,650 --> 00:57:32,270 supaya kembali jika itu mengakui terdapat ralat. 629 00:57:32,270 --> 00:57:35,270 Kita tidak mahu berurusan dengan itu, jadi keluar (1); 630 00:57:35,270 --> 00:57:38,240 kembali (1), dalam kes ini akan menjadi setaraf. 631 00:57:38,240 --> 00:57:44,000 >> Kemudian apa yang kami mahu membuka kita mahu fopen. 632 00:57:44,000 --> 00:57:46,760 Hujah-hujah yang akan kelihatan agak serupa. 633 00:57:46,760 --> 00:57:51,600 Kami mahu fopen ($ argv [1], dan kami mahu membuka untuk membaca. 634 00:57:51,600 --> 00:57:55,720 Itu mengembalikan sumber yang kita akan memanggil f. 635 00:57:55,720 --> 00:58:02,180 Ini kelihatan agak serupa dengan bagaimana C adakah ia kecuali kita tidak perlu untuk mengatakan * FILE. 636 00:58:02,180 --> 00:58:06,170 Sebaliknya kita hanya mengatakan $ f. Okay. 637 00:58:06,170 --> 00:58:17,190 Sebenarnya, saya fikir ini juga memberikan kita petunjuk untuk fungsi PHP dipanggil fail. Fail PHP. 638 00:58:17,190 --> 00:58:23,990 Apakah ini akan lakukan adalah membaca keseluruhan fail ke array. 639 00:58:23,990 --> 00:58:29,770 Anda tidak perlu untuk fopen ia. Ia akan melakukannya untuk anda. 640 00:58:37,450 --> 00:58:43,700 Jadi $ baris = Fail ($ argv [1]); 641 00:58:43,700 --> 00:58:49,680 Sekarang semua baris fail dalam barisan. Sekarang kita mahu untuk menyusun barisan. 642 00:58:49,680 --> 00:58:52,180 Bagaimana kita boleh menyusun garisan? 643 00:58:52,180 --> 00:58:54,920 Kami menyusun baris. 644 00:58:54,920 --> 00:58:58,080 Dan sekarang kita boleh mencetak mereka atau apa sahaja. 645 00:58:58,080 --> 00:59:05,580 Mungkin cara yang paling mudah adalah foreach ($ barisan $ line) echo $ selaras; 646 00:59:05,580 --> 00:59:10,960 [Pelajar] Bukankah kita walaupun menyeberangi garisan dengan rujukan sesuatu ke dalam jenis? 647 00:59:10,960 --> 00:59:28,850 Ini adalah mana apapun akan ditakrifkan sebagai sejenis fungsi (& array $). 648 00:59:28,850 --> 00:59:32,650 Apabila anda memanggil fungsi anda tidak lulus oleh rujukan. 649 00:59:32,650 --> 00:59:36,900 Ia adalah fungsi yang mentakrifkan ia sebagai mengambil ia sebagai rujukan. 650 00:59:36,900 --> 00:59:40,900 Ini sebenarnya adalah apa yang silapnya 651 00:59:40,900 --> 00:59:46,220 apabila kita meletakkan segala-galanya kepada pelayan kami apabila kita pergi 5,3-5,4. 652 00:59:46,220 --> 00:59:53,800 Sehingga 5,4, ini adalah sempurna yang munasabah. 653 00:59:53,800 --> 00:59:58,740 Fungsi tidak mengharapkan untuk mengambil ia sebagai rujukan, tetapi anda boleh lulus ia sebagai rujukan 654 00:59:58,740 --> 01:00:02,860 jadi jika fungsi itu tidak berlaku untuk mengubah suai ia, ia masih diubahsuai. 655 01:00:02,860 --> 01:00:05,850 Seperti sebanyak 5.4, anda tidak sepatutnya untuk melakukan ini. 656 01:00:05,850 --> 01:00:11,740 Jadi sekarang satu-satunya cara anda lulus dengan merujuk jika fungsi jelas adakah ia. 657 01:00:11,740 --> 01:00:19,840 Jika anda tidak mahu ia untuk mengubah suai ia, maka anda perlu untuk melakukan $ = $ salinan garis dan salinan pas. 658 01:00:19,840 --> 01:00:24,820 Jadi sekarang garisan akan dipelihara dan salinan akan berubah. 659 01:00:27,670 --> 01:00:31,460 php.unique.php. Saya mungkin telah merosakkan sesuatu. 660 01:00:31,460 --> 01:00:33,190 Tidak dijangka 'jenis'. 661 01:00:38,320 --> 01:00:43,850 Terdapat akan menjadi sesuatu yang melakukan ini untuk kita. 662 01:00:43,850 --> 01:00:45,820 Ia tidak walaupun di sana. 663 01:00:45,820 --> 01:00:52,140 Notis apabila anda membaca manual bahawa hujah pertama dijangka menjadi array 664 01:00:52,140 --> 01:00:56,490 dan ia diambil oleh rujukan. 665 01:00:58,160 --> 01:01:03,540 Mengapa ini mengadu kepada saya? Kerana saya mempunyai jenis ini fungsi masih di sini bahawa saya tidak mahu. 666 01:01:03,540 --> 01:01:09,210 Okay, php.unique.php. Saya tidak lulus ia hujah kerana saya tidak mempunyai fail. 667 01:01:09,210 --> 01:01:13,560 Ia php.unique.php pada test.php. 668 01:01:13,560 --> 01:01:19,080 Berikut adalah test.php semua dicetak dalam perintah yang bagus disusun. 669 01:01:19,080 --> 01:01:24,600 Perhatikan bahawa perintah disusun adalah jenis pelik untuk fail kod 670 01:01:24,600 --> 01:01:27,460 kerana semua garisan kosong kami akan datang pertama 671 01:01:27,460 --> 01:01:30,190 kemudian akan datang semua tahap 1 lekuk kami 672 01:01:30,190 --> 01:01:33,360 kemudian datang semua lekuk tiada kami. 673 01:01:33,360 --> 01:01:38,620 Yeah. >> [Pelajar] Jadi untuk kod sumber, ia tidak diluluskan oleh rujukan? 674 01:01:38,620 --> 01:01:42,240 Adalah bahawa umumnya diluluskan oleh nilai? 675 01:01:42,240 --> 01:01:50,240 [Bowden] Apabila anda memanggil fungsi, ia tidak menentukan sama ada ia telah diluluskan oleh rujukan. 676 01:01:50,240 --> 01:01:53,960 Ia adalah definisi fungsi yang menentukan sama ada ia telah diluluskan oleh rujukan. 677 01:01:53,960 --> 01:01:59,450 Dan melihat definisi fungsi apapun atau hanya melihat ini, 678 01:01:59,450 --> 01:02:02,820 ia mengambil hujah oleh rujukan. 679 01:02:02,820 --> 01:02:07,160 Jadi, tanpa mengira sama ada anda mahu ia untuk mengambil ia melalui rujukan, ia tidak mengambil ia dengan rujukan. 680 01:02:07,160 --> 01:02:10,200 Ia mengubah pelbagai di tempat. 681 01:02:10,200 --> 01:02:17,400 Ini hanya tidak dibenarkan. Anda tidak dibenarkan untuk melakukan ini. >> [Pelajar] Oh, okay. 682 01:02:17,400 --> 01:02:22,410 [Bowden] Ini, apapun akan mengambil garisan dengan rujukan dan mengubah suai ia. 683 01:02:22,410 --> 01:02:26,850 Dan sekali lagi, jika anda tidak mahu ia untuk berbuat demikian, anda boleh membuat salinan apapun. 684 01:02:26,850 --> 01:02:35,850 Malah dalam kes ini, salinan sebenarnya bukanlah satu salinan baris. 685 01:02:35,850 --> 01:02:40,620 Ia hanya menunjukkan kepada perkara yang sama sehingga ia mula-mula mendapat diubahsuai, 686 01:02:40,620 --> 01:02:44,430 di mana ia mula-mula akan untuk diubahsuai dalam fungsi apapun, 687 01:02:44,430 --> 01:02:50,940 mana, kerana ia salinan-on-menulis, kini salinan salinan akan dibuat. 688 01:02:57,500 --> 01:03:04,250 Anda juga boleh melakukan ini. Itulah tempat lain anda boleh lihat #: glib. 689 01:03:04,250 --> 01:03:07,190 Anda lihat dalam gelung foreach, anda lihat dalam pengisytiharan fungsi, 690 01:03:07,190 --> 01:03:10,040 dan anda lihat apabila hanya memberikan pembolehubah. 691 01:03:10,040 --> 01:03:12,350 Sekarang kita telah dicapai apa-apa dengan berbuat demikian 692 01:03:12,350 --> 01:03:15,600 kerana salinan dan garisan literal perkara yang sama. 693 01:03:15,600 --> 01:03:19,940 Anda boleh menggunakan talian dan menyalin silih berganti. 694 01:03:19,940 --> 01:03:25,430 Anda boleh melakukan belum berikat ($ salinan); dan yang tidak garis belum berikat, 695 01:03:25,430 --> 01:03:29,120 anda hanya kehilangan rujukan anda untuk perkara yang sama. 696 01:03:29,120 --> 01:03:33,440 Jadi sebagai titik ini, kini garis adalah satu-satunya cara anda boleh mengakses garis. 697 01:03:36,450 --> 01:03:38,770 >> Soalan? 698 01:03:41,000 --> 01:03:42,460 Yeah. 699 01:03:42,460 --> 01:03:45,880 [Pelajar] sepenuhnya off topic, tetapi anda tidak perlu untuk menutup PHP dengan - >> Anda tidak lakukan. 700 01:03:45,880 --> 01:03:47,730 Okay. 701 01:03:47,730 --> 01:03:53,790 [Bowden] Saya akan pergi setakat untuk mengatakan ia adalah amalan buruk untuk menutup mereka. 702 01:03:53,790 --> 01:03:57,580 Itulah mungkin keterlaluan, terutama dalam skrip, 703 01:03:57,580 --> 01:04:03,740 tetapi mari kita lihat apa yang berlaku jika saya lakukan ini. 704 01:04:03,740 --> 01:04:08,890 Itu tidak berbuat apa-apa. Bagaimana jika saya mahu - [mengeluh] 705 01:04:13,870 --> 01:04:16,960 Saya perlu lulus hujah. 706 01:04:19,000 --> 01:04:22,050 Menembak. Saya dipanggil salah. 707 01:04:24,340 --> 01:04:28,310 Jadi php.unique.php dengan hujah. 708 01:04:28,310 --> 01:04:30,980 Sekarang saya tidak perlu ini. 709 01:04:34,520 --> 01:04:37,740 Saya akan lulus ia hujah yang sah. 710 01:04:37,740 --> 01:04:42,050 Ini dicetak apa sahaja ia adalah percetakan. 711 01:04:45,260 --> 01:04:50,080 Saya mencetak salinan dan salinan tidak wujud. Jadi baris. 712 01:04:53,650 --> 01:04:58,270 Ia dicetak segala-galanya, dan kemudian notis semua sampah ini ke sini, 713 01:04:58,270 --> 01:05:06,690 kerana dalam apa-apa PHP yang luar tag PHP 714 01:05:06,690 --> 01:05:09,520 hanya akan dicetak literal. 715 01:05:09,520 --> 01:05:18,050 Itulah sebabnya HTML, ia begitu baik yang boleh saya lakukan div blah, blah, blah kelas atau apa sahaja, 716 01:05:18,050 --> 01:05:25,140 blah, blah, blah dan kemudian melakukan beberapa kod PHP dan kemudian melakukan div akhir. 717 01:05:25,140 --> 01:05:36,460 Dan kini percetakan ini saya mendapat div bagus saya top up, segala-galanya bahawa PHP bercetak, span di bahagian bawah. 718 01:05:36,460 --> 01:05:43,510 Buruk apabila sesuatu seperti ini berlaku, yang agak biasa, 719 01:05:43,510 --> 01:05:47,930 hanya newline berkeliaran di bahagian bawah fail. 720 01:05:47,930 --> 01:05:50,940 Anda tidak akan berfikir ia akan menjadi begitu besar perjanjian 721 01:05:50,940 --> 01:05:58,660 sehingga anda mempertimbangkan fakta bahawa dengan pelayar - 722 01:05:58,660 --> 01:06:03,880 >> Bagaimana pelencongan kerja atau pada dasarnya apa-apa kerja header, 723 01:06:03,880 --> 01:06:07,980 apabila anda membuat sambungan anda ke laman web dan ia menghantar kembali semua tajuk dan perkara-perkara 724 01:06:07,980 --> 01:06:12,020 seperti 200 respons atau tindak balas redirect atau apa sahaja, 725 01:06:12,020 --> 01:06:18,230 header hanya sah sehingga bait pertama data dihantar. 726 01:06:18,230 --> 01:06:23,140 Anda boleh mengalihkan beribu-ribu kali, tetapi secepat bait pertama data dihantar 727 01:06:23,140 --> 01:06:26,120 anda tidak sepatutnya untuk mengalihkan lagi. 728 01:06:26,120 --> 01:06:31,860 >> Jika anda mempunyai newline berkeliaran di bahagian bawah fail 729 01:06:31,860 --> 01:06:37,260 dan mari kita mengatakan bahawa anda menggunakan fungsi ini dan kemudian anda mahu - 730 01:06:41,580 --> 01:06:52,870 Mari kita mengatakan ia adalah satu lagi fail yang index.php dan anda require_once sesuatu - 731 01:06:52,870 --> 01:06:56,920 Saya tidak dapat memikirkan contoh yang baik itu. 732 01:06:56,920 --> 01:07:04,740 Isu yang berlaku ketika ini garis di bawah mendapat bergema. 733 01:07:04,740 --> 01:07:08,660 Anda tidak mahu apa-apa yang telah bergema lagi. 734 01:07:10,820 --> 01:07:15,700 Walaupun anda tidak berniat apa-apa jua yang semakin bergema, sesuatu tidak mendapat bergema 735 01:07:15,700 --> 01:07:17,990 dan jadi sekarang anda tidak sepatutnya untuk menghantar apa-apa lagi header 736 01:07:17,990 --> 01:07:20,030 dan anda akan mendapat aduan. 737 01:07:22,170 --> 01:07:24,420 Anda hanya tidak memerlukan tag penutup tersebut. 738 01:07:24,420 --> 01:07:27,420 Jika anda merancang untuk melakukan sesuatu dengan HTML - 739 01:07:27,420 --> 01:07:30,490 dan ia adalah betul-betul munasabah untuk berbuat turun di sini div apa jua 740 01:07:30,490 --> 01:07:39,450 dan kemudian pada ketika ini anda boleh atau anda tidak boleh memasukkan mereka. 741 01:07:39,450 --> 01:07:41,590 Ia tidak benar-benar perkara. 742 01:07:41,590 --> 01:07:45,450 Tetapi dalam skrip PHP ia adalah jarang untuk menutup ia. 743 01:07:45,450 --> 01:07:50,400 Apabila segala-galanya adalah PHP, benar-benar segala-galanya, 744 01:07:50,400 --> 01:07:55,460 anda tidak benar-benar perlu untuk menutup / anda tidak perlu menutup. 745 01:08:02,030 --> 01:08:05,720 >> Berurusan dengan rentetan adalah lebih bagus daripada di C. 746 01:08:05,720 --> 01:08:09,470 Dalam PHP, anda boleh menentukan rentetan dengan petikan tunggal atau berganda. 747 01:08:09,470 --> 01:08:12,820 Dengan petikan tunggal anda tidak boleh menggunakan "melarikan diri" urutan. 748 01:08:12,820 --> 01:08:17,640 Sentiasa melarikan diri, blah, blah, blah. 749 01:08:19,920 --> 01:08:24,010 Jadi printf adalah sangat jarang berlaku dalam PHP. 750 01:08:24,010 --> 01:08:32,290 Saya rasa saya akan menggunakan printf jika saya mahu melakukan apapun perkara - dalam pset 5 anda digunakan sprintf atau apa sahaja. 751 01:08:32,290 --> 01:08:36,060 Tetapi anda mahu lakukan 001.jpg dan 002.jpg. 752 01:08:36,060 --> 01:08:40,300 Jadi untuk jenis yang perkara di mana saya sebenarnya mahu untuk memformat teks saya akan menggunakan printf. 753 01:08:40,300 --> 01:08:44,689 Tetapi jika tidak, saya hanya akan menggunakan dinamika tali. 754 01:08:44,689 --> 01:08:47,000 Saya tidak pernah benar-benar menggunakan printf. 755 01:08:49,229 --> 01:09:00,170 Kami hanya membezakan butiran antara petikan tunggal dan petikan berganda. 756 01:09:00,170 --> 01:09:07,490 Perbezaan terbesar adalah bahawa petikan tunggal, ia akan dicetak secara literal. 757 01:09:07,490 --> 01:09:15,390 Terdapat tiada jenis data char dalam PHP, tidak seperti C, jadi ini adalah bersamaan dengan ini. 758 01:09:15,390 --> 01:09:17,970 Mereka kedua-dua rentetan. 759 01:09:17,970 --> 01:09:29,180 Dan perkara yang baik tentang rentetan quote tunggal adalah saya boleh mengatakan 'hello dunia!' blah, blah, blah, 760 01:09:29,180 --> 01:09:33,340 $ $ Wooo. 761 01:09:33,340 --> 01:09:38,260 Apa yang berlaku apabila saya mencetak ini adalah ia akan mencetak ia benar-benar. 762 01:09:38,260 --> 01:09:40,680 Mari kita menghilangkan semua barangan kami. 763 01:09:40,680 --> 01:09:44,700 Jadi echo $ str1; 764 01:09:48,569 --> 01:09:56,570 Ia benar-benar dicetak semua perkara-perkara: tanda-tanda dolar, 765 01:09:56,570 --> 01:09:58,770 backslash n, yang anda akan berfikir akan menjadi baris baru - 766 01:09:58,770 --> 01:10:01,500 semua perkara-perkara ia mencetak harfiah. 767 01:10:01,500 --> 01:10:05,650 Satu-satunya perkara yang anda perlu untuk melarikan diri adalah petikan tunggal 768 01:10:05,650 --> 01:10:09,470 kerana jika tidak, ia akan berfikir ia menutup petikan tunggal. 769 01:10:09,470 --> 01:10:15,050 Petikan berganda, benar-benar berbeza. 770 01:10:20,300 --> 01:10:25,870 Kita sudah melihat penonjolan sintaks cluing kita kepada apa yang kira-kira untuk pergi betul-betul salah. 771 01:10:25,870 --> 01:10:36,190 php.unique. Undefined ubah: Wooo kerana ini ditafsirkan sebagai pembolehubah yang dipanggil Wooo. 772 01:10:36,190 --> 01:10:42,400 Petikan berganda membolehkan anda memasukkan pembolehubah ke - 773 01:10:42,400 --> 01:10:52,730 Katakan $ name = "Rob"; 774 01:10:52,730 --> 01:10:58,020 Jadi echo "Hi, nama saya adalah $ name!"; 775 01:10:58,020 --> 01:11:09,260 Ia mengiktiraf ini sebagai pembolehubah. 776 01:11:09,260 --> 01:11:21,210 Apabila saya berlari bahawa - dan saya akan memasukkan newline - Hi, nama saya Rob! dan hello dunia! 777 01:11:21,210 --> 01:11:24,910 Ini adalah kerana saya tidak pernah dikeluarkan percetakan Wooo diatas. 778 01:11:24,910 --> 01:11:30,020 Terdapat 1 langkah seterusnya yang boleh anda lakukan. 779 01:11:30,020 --> 01:11:39,250 Array $ = [1, 2, 3]; 780 01:11:39,250 --> 01:11:43,270 Bagaimana jika saya ingin mencetak indeks pertama array? 781 01:11:43,270 --> 01:11:45,150 Anda boleh melakukan array $ [0]. 782 01:11:45,150 --> 01:11:49,280 Penonjolan sintaks adalah petunjuk. Apakah ini akan lakukan? 783 01:11:52,320 --> 01:11:54,510 php.unique. 784 01:11:54,510 --> 01:11:59,860 Hai, nama saya ialah 1! yang bukan apa yang saya mahukan. 785 01:11:59,860 --> 01:12:05,050 Penonjolan sintaks berbohong kepada saya. 786 01:12:05,050 --> 01:12:13,020 Mari kita cuba '' -> 1, 'b' -> 2. 787 01:12:18,450 --> 01:12:21,440 Itulah bagaimana saya harus menulis. 788 01:12:26,350 --> 01:12:32,160 Unexpected quote tunggal (T_ENCAPSED blah, blah, blah, blah, blah). 789 01:12:32,160 --> 01:12:41,780 Idea ini adalah bahawa ia tidak mengiktiraf ini sebagai sebahagian array. 790 01:12:41,780 --> 01:12:46,620 Ia tidak mengiktiraf ini sebagai pelbagai yang diindeks oleh surat. 791 01:12:46,620 --> 01:12:49,870 Anda mahu melakukan yang dikelilingi oleh pendakap kerinting, 792 01:12:49,870 --> 01:12:54,730 dan sekarang apa yang dalam pendakap kerinting ini akan penentu, 793 01:12:54,730 --> 01:13:00,340 yang merupakan perkataan yang kita gunakan untuk ajaib memasukkan pembolehubah ini ke tempat yang betul. 794 01:13:00,340 --> 01:13:04,280 Kini melakukan ini, php.unique, dan Hai, nama saya ialah 1! seperti yang dijangkakan 795 01:13:04,280 --> 01:13:07,720 atau Hi, nama saya Rob! 796 01:13:14,110 --> 01:13:23,130 Satu perkara yang jenis baik tentang petikan tunggal adalah bahawa - 797 01:13:23,130 --> 01:13:28,480 Terdapat beberapa kos penentudalaman. 798 01:13:30,520 --> 01:13:35,100 Jika anda menggunakan tanda petikan berganda, jurubahasa untuk pergi ke atas rentetan ini, 799 01:13:35,100 --> 01:13:41,500 memastikan bahawa, "Oh, di sini adalah pembolehubah. Sekarang saya perlu pergi mendapatkan pemboleh ubah itu dan masukkan ia di sini." 800 01:13:41,500 --> 01:13:48,930 Malah jika anda tidak menggunakan mana-mana pembolehubah, 801 01:13:48,930 --> 01:13:52,220 apa-apa di dalam petikan double perlu penentu, 802 01:13:52,220 --> 01:13:56,800 tetapi ia masih akan menjadi lebih perlahan kerana ia perlu untuk pergi ke atas petikan berganda 803 01:13:56,800 --> 01:14:00,130 mencari perkara-perkara yang perlu penentu. 804 01:14:00,130 --> 01:14:05,360 Petikan Jadi tunggal boleh agak cepat jika tiada perlu penentu, 805 01:14:05,360 --> 01:14:15,650 dan saya cenderung untuk menggunakan tanda petikan tunggal, 'Hai, nama saya'. Array $ ['a'] anyway. 806 01:14:15,650 --> 01:14:20,430 Itu akan menjadi bersamaan dengan apa yang kita lalui sebelum. 807 01:14:24,840 --> 01:14:28,440 Tetapi ia adalah satu perkara keutamaan. 808 01:14:28,440 --> 01:14:34,750 Jika anda menggunakan PHP, anda mungkin tidak mengambil berat tentang perbezaan kelajuan. 809 01:14:34,750 --> 01:14:39,480 Terdapat tidak cukup sebab mereka keluar untuk memulakan dengan. 810 01:14:39,480 --> 01:14:43,030 >> Sebarang soalan akhir? 811 01:14:47,430 --> 01:14:51,710 >> Kita sebenarnya tidak bahkan mendapatkan melalui semua itu, tetapi barangan ini adalah membosankan. 812 01:14:51,710 --> 01:14:59,080 Perkara terakhir yang jenis baik dalam PHP adalah apabila anda berurusan dengan HTML, 813 01:14:59,080 --> 01:15:06,450 anda akan menggunakan ia sedikit, jadi sintaks pintasan bagus untuk mencetak pembolehubah. 814 01:15:32,400 --> 01:15:36,730 Tanpa meletakkan PHP sini, ini dipanggil tag pendek. 815 01:15:36,730 --> 01:15:44,330 Secara rasmi sebagai PHP 5.4, ini dikecam. 816 01:15:44,330 --> 01:15:48,640 Anda disyorkan untuk meletakkan php. 817 01:15:48,640 --> 01:15:55,770 Ini masih disokong, begitu pendek tag dengan 01:16:02,480 Ia adalah secara lalai yang disokong, jadi anda boleh menggunakan ini sebagai anda mahu, dan mereka cukup mudah. 819 01:16:02,480 --> 01:16:05,700 >> Apa-apa soalan? 820 01:16:07,780 --> 01:16:09,270 Semua hak. 821 01:16:10,840 --> 01:16:13,800 >> Tinggal bergaya, San Diego. 822 01:16:13,800 --> 01:16:16,070 [Chuckles] 823 01:16:18,620 --> 01:16:22,660 Bye. [Ketawa] 824 01:16:24,350 --> 01:16:28,470 [Tepukan] [ketawa] 825 01:22:46,460 --> 01:22:49,460 >> [CS50.TV]