Doug LLOYD: Jadi kita sudah melakukan banyak pekerjaan di C, dan C adalah benar-benar keren bahasa karena memberi Anda kemampuan untuk menyelam benar-benar tingkat rendah ke dalam program Anda. Kita bisa melakukan hal-hal sebagai benar-benar menit memanipulasi byte individu memori. Ingat bahwa pointer benar memungkinkan kita fleksibilitas itu. Tapi apakah kita selalu perlu memiliki tingkat fine-grain detail dalam program kita? Mungkin tidak, kan? Dan jika kita akan memiliki trade-off antara menjadi mampu melakukan benar-benar, benar-benar hal menit dan benar-benar, benar-benar hal-hal besar yang kita tidak perlu berpikir tentang, kita tidak harus melaksanakan ide-ide yang sangat besar jika mereka sudah dibangun di bagi kita, umumnya untuk membangun besar program atau proyek-proyek besar, kita mungkin akan berbuat salah di sisi karena telah lebih banyak barang bahasa dibangun di bagi kita, daripada harus hal-hal tingkat rendah. Dan di situlah PHP benar-benar datang di. Sekarang, salah satu alasan yang kami ajarkan PHP di CS50 adalah bahwa hal itu sangat terinspirasi oleh C. Dan pada kenyataannya, menurut pendapat saya, sebenarnya ada dua bahasa progenitor yang sangat umum saat ini. C dan LISP. Dan mereka bahasa progenitor karena setiap pemrograman modern lainnya bahasa yang telah dikembangkan sejak itu terinspirasi oleh satu atau sintaksis lainnya. PHP sangat mirip sintaksis untuk C, sedangkan bahasa seperti Scheme, misalnya, yang Anda mungkin pernah mendengar tentang, yang sangat terinspirasi oleh bahasa disebut LISP, yang merupakan bahasa yang lebih tua. Jadi alasan kita ajarkan PHP di CS50 adalah bahwa, dengan mengetahui C sebagai fundamental seperti yang Anda lakukan pada saat ini, mengambil PHP, yang memberikan Anda kemampuan untuk melakukan hal-hal tingkat yang lebih tinggi dari C tidak, tidak yang banyak rintangan, karena Anda sudah memiliki Ide dasar dari sintaks. C telah sekitar selama hampir 45 tahun pada saat ini. PHP telah sekitar selama sekitar 20 tahun. Dan dalam 25 tahun di antara, programmer ditentukan bahwa mereka akan banyak suka memiliki kemampuan yang lebih tinggi, dan kesalahan dan perjuangan dari 20 tahun di antara menyebabkan PHP dan bahasa modern lainnya. PHP pilihan besar bahasa untuk perangkat lunak yang allow-- untuk software itu-- di mana Anda perlu melakukan hal-hal yang di C sebenarnya rumit. Jadi misalnya, bekerja dengan string di C sangat rumit, karena seperti yang kita tahu, string di C benar-benar hanya array karakter. Ini bukan tipe data built-in. Atau mungkin lebih mendasar, sesuatu yang kita bahkan tidak menutupi di C, bagaimana jika Anda perlu untuk melakukan beberapa jaringan komputer? Baiklah? C memiliki kemampuan untuk melakukannya, tapi begitu misterius dan sangat sulit untuk benar-benar melakukan. Bukankah lebih baik jika bahasa memiliki, cara mudah built-in untuk menerapkan jaringan? Dan PHP adalah bahasa yang membuat itu, atau memfasilitasi itu, agak sedikit lebih. Seperti yang saya katakan, PHP sangat terinspirasi berat oleh C. sintaks ini sangat mirip. Dan sehingga harus mudah-mudahan membuat transisi dari satu ke yang lain sedikit lebih lembut daripada beberapa bahasa lain mungkin. Untuk mulai menulis PHP, hanya membuka file dengan ekstensi file php. Secara teknis ini bukan sebenarnya diperlukan, tetapi jika Anda ingin hal-hal seperti sintaks menyoroti di IDE, sehingga jenis yang nama, atau nama variabel, fungsi, Anda tahu, kata kunci dari bahasa disorot dalam warna tertentu, biasanya Anda ingin nama file Anda dengan ekstensi file tertentu. Jadi kita sudah bernama file kita dengan .php sebuah ekstensi, tapi kemudian juga dengan PHP, semua kode PHP kita menulis dalam File harus tertutup dalam PHP ini pembatas yang kita lihat di sini di layar. Angle braket? Php untuk memulai. Kemudian kita menulis semua PHP kami kode yang kita inginkan di antara. Dan kemudian ? angle bracket untuk menutup. Jika kita tidak melakukan ini, maka apa yang akan terjadi? Itu tidak akan crash. Ini tidak akan benar-benar merusak program kami. Tapi itu tidak akan memiliki efek yang kita inginkan. Apa yang akan terjadi, benar-benar, adalah bahwa ketika kita mencoba dan menjalankan program ini, semuanya tidak antara pembatas akan dicetak verbatim. Ini tidak akan benar-benar melaksanakan kode, itu akan hanya mencetaknya verbatim. Sekarang mengapa ini terjadi? Jadi C adalah apa yang dikenal sebagai bahasa yang dikompilasi. Anda mungkin akrab dengan langkah pembuatan program Anda, memutar file c dan H file menjadi executable tunggal dengan make, khususnya menggunakan Dentang sebagai compiler kami. PHP, meskipun, tidak memiliki setara ini. PHP adalah apa yang disebut ditafsirkan bahasa. Dan apa artinya? Nah, itu berarti kita tidak perlu mengkonversi kode sumber untuk nol dan satu sebelumnya. Sebaliknya, ada sebuah program, yang juga disebut PHP, yang memahami PHP dan dapat semacam membuatnya dengan cepat. Itu tidak benar-benar persis akurat, tapi itu analogi yang cukup baik dari apa yang terjadi. Ini menafsirkan mereka nol dan orang-orang dengan cepat. Dan jika tidak tahu cara mengolah sesuatu, jika tidak tahu bagaimana Proses PHP, Anda mungkin ingin menempatkan teks yang di sana, kan? Anda mungkin ingin menempatkan kode di ada, bahkan jika itu bukan antara PHP-- pembatas PHP. Tapi-- sehingga tidak akan untuk menghapusnya untuk Anda, itu hanya akan dasarnya membuangnya. Jadi itu akan mencetak keluar ke layar. Hal ini tampaknya seperti itu adalah buruk hal, tapi sebenarnya ini akan menjadi benar-benar hal yang baik, seperti yang akan kita lihat ketika kita berbicara tentang Pengembangan web PHP, karena itu berarti kita bisa menyelingi PHP dan HTML. Kita bisa menggunakannya bersama-sama untuk membuat halaman web lebih dinamis. Tapi lebih pada bahwa dalam video di web PHP pengembangan. Jadi apa adalah sintaks dari PHP? Itulah yang video ini adalah semua tentang. Mari kita bicara tentang hal itu. Jadi untuk memulai, variabel. Variabel PHP ada. Hanya ada dua besar perbedaan dari C. Yang pertama adalah bahwa ada ada jenis specifier. Kami tidak harus mengatakan int, char, float, semua itu. Kami tidak perlu melakukan itu lagi. PHP adalah bahasa modern. Hal ini dapat mencari tahu apa yang Anda mencoba untuk melakukan atau membuat terbaik menebak untuk apa yang Anda coba lakukan. Jadi itu cukup bagus. Hal lain adalah bahwa semua variabel nama harus mulai dengan tanda dolar. Itu hanya sesuatu untuk membiasakan diri. Ini sedikit aneh, karena itu sehingga PHP dapat memahami apa variabel dan apa yang tidak. Jadi setiap nama variabel dimulai dengan tanda dolar. Jadi di C kita mungkin mengatakan sesuatu seperti ini, int x = 54. Kami tidak perlu melakukan itu lagi di PHP. Kami hanya bisa mengatakan $ x = 54. Dan kita bisa mengatakan, misalnya, di C, jika kita pound-termasuk H CS50 header file, kita bisa mengatakan String kalimat = "Ini adalah CS50." Kami tidak perlu melakukan itu di PHP, meskipun. Kami hanya bisa mengatakan $ kalimat = "Ini adalah CS50." Dan pada kenyataannya, string sekarang tipe data built-in PHP, atau lebih tepatnya PHP mengerti apa string adalah. Ini terpisah dari array karakter seperti itu di C. Semua favorit Anda pernyataan bersyarat dari C masih tersedia untuk Anda gunakan. Jadi ada transisi besar di sana. Kita bisa say-- kita dapat memiliki jika pernyataan seperti ini. jika $ y 43, atau $ z = 15. Jadi itu cukup sederhana. Kita dapat memiliki jika dan lain. Kita dapat memiliki jika dan lain jika. Dan melihat sesuatu cukup bagus di sini, dan ini adalah semacam salah satu Keuntungan dari PHP vs C, pemberitahuan apa fungsi kita tidak menggunakan di sini? Kami menggunakan == untuk membandingkan variabel, $ nama, untuk string. Kita tidak bisa melakukan itu di C, kan? Kami harus menggunakan fungsi yang disebut StrComp atau StrEndComp atau sepupu terkait. Dan sudah kita lihat keuntungan ini. Kami tidak perlu melakukan sesuatu konyol atau mungkin unintuitive sebagai memanggil fungsi disebut StrComp jika saya hanya ingin menguji apakah suatu nilai sama dengan string. Aku hanya bisa menggunakan sama sederajat, seperti aku bisa melakukan hal lain. Jadi ada keuntungan. Kadang-kadang, dengan cara, Anda mungkin lihat lain jika sebagai satu kata, elseif. Dan itu OK di PHP juga. Jadi kadang-kadang Anda mungkin melihat bahwa. Ini bukan salah ketik. PHP benar-benar mengerti elseif. Saya tidak tahu mengapa mereka memutuskan untuk menerapkan itu, tapi seperti yang kita lihat berkali-kali seluruh video kami sejauh ini, kami programmer senang jika kita bisa melakukan hal-hal dengan cepat, sehingga menyingkirkan ruang yang tampaknya keuntungan besar. Jadi itu jika dan elseif. Kami juga memiliki operator terner, ingat tanda tanya usus, untuk formulir yang benar-benar singkat jika lain atau bersyarat bercabang. Dan tampaknya, dalam hal ini, apa yang kita coba lakukan di sini adalah menetapkan variabel $ surat benar atau salah, tergantung pada apakah $ var adalah karakter abjad. Jadi ini sangat mirip dengan isalpha bahwa kita akrab dengan dari C. Ini adalah semacam setara dalam PHP. Fungsi ini rupanya disebut ctype_alpha, tapi itulah bagaimana kita melakukannya di PHP. Jadi semua ini akan menjadi yang, jika $ var merupakan surat, $ surat benar. Jika $ var tidak surat, $ surat palsu. Kami juga memiliki laporan beralih masih. Kita ingat mereka dari C juga. Di bagian paling atas ada, itu bagaimana kita lakukan sesuatu seperti get int atau mendapatkan tali. Jadi PHP memiliki yang dibangun di. Kita tidak perlu perpustakaan CS50 lagi. Kami hanya dapat menggunakan fungsi readline. Apa yang akan dilakukan adalah cetak keluar pesan, "negara Anda, silakan, "dan kemudian berkedip cepat menunggu pengguna untuk memasukkan beberapa informasi. Sekarang perhatikan apa lagi yang bisa kita lakukan dengan switch. Jika Anda telah menggunakannya sebelumnya, Anda mungkin ingat bahwa saklar terbatas cukup banyak untuk bilangan bulat dan karakter, tapi sekarang kita bisa menggunakan string. Dan pada kenyataannya, pernyataan switch di PHP cukup sedikit lebih fleksibel dari sepupunya dari C. Loops. Sama seperti conditional, semua favorit lama Anda masih ada. Kami memiliki sementara loop yang menghitung dari 1 sampai 100 dalam kasus ini. Kami telah melakukan sementara loop yang menghitung dari 1 sampai 100, dan kami memiliki untuk loop yang menghitung dari 1 sampai 100. Jadi tidak ada lompatan besar di sana. Sintaks ini cukup banyak persis sama, kecuali sekarang kita menggunakan variabel tanda dolar bukan mendeklarasikan variabel integer atau sesuatu seperti itu untuk counter kami. Di sinilah hal mendapatkan jauh lebih baik daripada C, meskipun. Array. Jadi ingat ketika kami berbicara tentang C, dalam rangka bagi kita untuk tumbuh dan menyusut set informasi, kita perlu memilah default ide ini dari sebuah linked list, karena array C yang tetap dalam ukuran. Kita tidak bisa mengecilkan mereka. Kami tidak bisa tumbuh mereka. Kami harus mengalokasikan memori dan melakukan semua kegilaan ini atau menggunakan daftar terkait, yang mengambil sedikit lebih banyak ruang. Tapi di PHP, array tidak tetap dalam ukuran lagi. Mereka dapat tumbuh dan mereka bisa menyusut. Jadi sekali lagi, ini 20 tahun yang ada antara rilis pertama dari C dan yang pertama rilis PHP, kami memutuskan bahwa, Anda tahu, itu akan benar-benar hebat jika kita bisa melakukan ini. Dan kami menerapkan ini. Jadi array PHP tidak tetap di ukuran, dan karena PHP tidak benar-benar memiliki programmer menghadap ke depan pengertian tentang jenis, kita dapat mencampur tipe data dalam array kita juga. Jadi kita bahkan tidak harus menggunakan semua bilangan bulat atau semua jalur mengambang, kita dapat memiliki campuran dari semua berbagai jenis dalam array tunggal. Mendeklarasikan array adalah cukup sederhana. Ini sama seperti variabel lainnya. $ nums = array (1, 2, 3, 4), array menjadi fungsi yang dibangun ke PHP yang akan membuat sebuah array untuk Anda. Hal ini menciptakan sebuah array dari empat nilai, angka dalam kasus ini, yang disebut $ nums. Dan ada lebih dari satu cara untuk melakukannya. Dan kita akan melihat ini banyak di PHP. PHP telah dikembangkan oleh banyak berbeda orang dan tumbuh dan tumbuh dan tumbuh. Ada biasanya tidak hanya dua atau tiga cara untuk melakukan sesuatu di PHP, biasanya ada seperti 10 atau 20. Berikut hanyalah umum cara untuk mendeklarasikan array. $ nums = persegi bracket 1, 2, 3, 4. Jadi ini semacam mirip dengan sudut C br-- notasi penjepit keriting, bukan. $ - atau akan int nums persegi kurung sama keriting brace 1, 2, 3, 4. Dalam PHP itu $ nums = persegi kurung 1, 2, 3, 4. Namun kedua contoh ini di sini memberi saya array empat dalam hal ini bilangan bulat. Bagaimana jika saya ingin taktik sesuatu sekarang? Yah aku hanya bisa mengatakan $ nums 4, yang lagi, kami masih menghitung dari 0 sini PHP, akan menjadi yang kelima elemen dari array. Aku hanya bisa mengatakan bahwa. Aku tidak akan menderita seg sebuah kesalahan, karena array saya hanya akan tumbuh untuk mengakomodasi itu. Itu cukup bagus, kan? Dan pada kenyataannya, aku bahkan tidak perlu menentukan di mana saya ingin meletakkannya. Aku hanya bisa mengatakan ini dan hanya taktik itu tepat di akhir, atau aku bisa bahkan hanya mengatakan $ nums 20 atau 1000. Itu tidak terlalu penting. Ini masih hanya akan taktik itu tepat di sampai akhir. Jadi saya bisa tumbuh, dan as-- kami tidak akan menutupinya di sini, tapi saya bisa sambatan atau strip elemen dari array juga, dan array akan menyusut untuk mengakomodasi yang sekarang hilang atau ruang kosong. Ada cara lain untuk memakukan sesuatu ke array, yang merupakan fungsi yang disebut array_push. Jadi sekali lagi, hanya ini ide menjadi mampu melakukan hal-hal dengan berbagai cara. Jadi kita telah melihat tiga cara yang berbeda sekarang taktik unsur lain ke array. Jadi ini menambahkan elemen lain untuk akhir $ nums array. Dan kita bisa mencampur jenis data kami. Jadi saya bisa memiliki sebuah array tidak 1, 2, 3, 4, tapi 1, benar, 3, 4, mana yang benar adalah Boolean, dan kemudian jika saya ingin taktik pada elemen lain array itu, mungkin string, string "lima," Saya bisa melakukan itu. Dan sekarang saya akan Array menjadi 1, benar, 3, 4, lima. Kata lima, bukan integer 5. Jadi banyak fleksibilitas di sana. Fleksibilitas mendapat bahkan lebih baik, meskipun, karena PHP memiliki dukungan untuk sesuatu disebut array asosiatif. Dan kita semacam samar-samar berbicara array tentang asosiatif di C dalam konteks tabel hash, karena apa array asosiatif yang benar-benar semua tentang yang kunci membuat pemetaan nilai pasangan. Dan dalam hal ini, jika keys-- kita akrab dengan array dari C, tombol yang nomor indeks. 0, 1, 2, 3. Dan nilai-nilai adalah apa yang kita menemukan bahwa Array 0, deret 1, deret 2, dan seterusnya. Jadi tombol yang indeks, dan nilai-nilai yang apa yang ada di lokasi itu array, ditentukan oleh indeks itu. Tapi di PHP, kita tidak perlu melakukan hal ini Gagasan array 0, berbagai 1, 2 array yang lagi. Kita sekarang dapat menggunakan kata-kata yang sebenarnya untuk memetakan kunci untuk nilai-nilai. Dan jadi saya bisa mengatakan sesuatu seperti ini. Saya bisa menciptakan sebuah array menggunakan sintaks braket persegi sebagai berikut. $ pizza = braket persegi "keju" dan kemudian semacam ini notasi panah ganda, 8,99, "pepperoni," panah 10.99-- 9,99, dan sebagainya. Dan jadi apa yang terjadi di sini? Apa yang saya benar-benar melakukan? Aku menciptakan pemetaan pasangan nilai kunci. Jadi, bukannya mengatakan, misalnya, pizza 0, potongan 1, 2 pizza, Sekarang saya bisa katakan pizza keju, pizza pepperoni, dan mengacu pada nilai-nilai terkait dengan mereka. Jadi di sini adalah kunci kami dalam warna hijau. Keju, pepperoni, sayuran, ayam kerbau. Berikut adalah panah yang membuat ini kunci pemetaan nilai pasangan. Dan kemudian di sini adalah nilai-nilai pada lokasi array. Jadi itu seperti mengatakan berbagai 0 sama dengan 8,99. Kuncinya adalah 0. Nilai adalah 8,99. Sekarang saya bisa katakan keju array, atau dalam hal ini kasus pizza keju, keju adalah kuncinya, dan apa yang saya temukan di pizza keju 8,99. Itu nilai yang saya temukan di sana. Jadi saya bisa mengatakan hal-hal seperti. $ pizza keju = 7,99. Katakanlah Saya mengalami penjualan. Saya ingin dis-- Saya ingin menjatuhkan harga keju pizza. Atau aku bisa menggunakan sayuran pizza sebagai bagian dari suatu kondisi, atau saya dapat menambahkan elemen baru untuk saya array, sama seperti aku bisa melakukan sebelumnya. Saya dapat menambahkan elemen baru ini array asosiatif dengan kunci "daging" dan nilai 13,49. Tapi ini semacam memperkenalkan masalah, jika Anda berpikir tentang hal itu untuk kedua. Bagaimana kita akan iterate melalui array ini? Kanan? Dalam C, kita hanya akan memiliki untuk loop, biasanya, yang akan lari dari 0 ke ukuran array minus 1. Array memiliki n elemen di di, indeks yang valid adalah 0 sampai n minus 1. Jadi kita bisa menggunakan untuk loop untuk langkah melalui setiap elemen tunggal. Tapi itu tidak benar-benar terjadi lagi, kan? Sekarang di mana kita memiliki pasangan kunci nilai pemetaan di mana kunci adalah kata-kata, bagaimana kita iterate atas semua kata? Nah, untungnya, PHP memiliki cara untuk menangani hal ini juga, dan jadi kita akan melompat kembali untuk loop untuk kedua untuk memperkenalkan jenis keempat loop yang ada dalam PHP disebut loop foreach. Dan apa loop foreach dilakukan adalah itu pada dasarnya ide yang sama. Anda dapat menggunakannya untuk setiap jenis array. Tapi itu pada dasarnya ide yang sama seperti untuk loop, kecuali bukan menggunakan nomor indeks, Anda hanya memiliki sintaks ini di mana aneh Anda menelepon setiap elemen tunggal nama untuk keperluan lingkaran ini. Jadi dalam hal ini, foreach ($ array sebagai $ key). Pada dasarnya, seperti yang catatan komentar, dalam yang loop foreach, itu akan pergi setiap satu unsur $ array, yang biasanya akan menjadi sebuah array asosiatif, tapi benar-benar dapat menjadi apapun array yang Anda inginkan dalam PHP. Dan setiap kali di untuk loop Anda mungkin mengatakan $ array kurung $ i, Anda hanya bisa mengatakan $ key. Sehingga $ key menjadi sebuah alias untuk setiap Indeks PHP Anda asosiatif array, dan sehingga Anda dapat menggunakannya seperti itu. Jadi misalnya, kami sudah sekarang punya pizza array kita. Aku sudah jenis terselip itu ke pojok sana sehingga kita dapat menggunakannya untuk melakukan contoh cepat. Jika saya mengatakan foreach ($ pizza sebagai $ pizza), baik, apa yang terjadi? Nah, aku akan iterate melalui setiap elemen dari array $ pizza, dan dengan demikian, saya akan menelepon setiap elemen, ketika aku di dalam dari tubuh yang untuk loop, $ pizza. Jadi itu semacam berdiri-in, ingat, bahwa $ pizza adalah stand-in untuk mengatakan $ pizza kurung $ i jika kita menggunakan untuk loop, di mana kita bisa pergi dari $ i = 0 sampai, dalam hal ini, $ i = 3. Jika kita tidak memiliki pasangan nilai kunci di sini, ini akan menjadi elemen 0, 1, 2, 3, dan kami akan menggunakan untuk loop untuk pergi $ pizza 0, $ 1 pizza, pizza $ 2, $ pizza 3. Jadi sekarang hanya $ pizza mengganti untuk itu kunci individu. Jadi apa yang ini akan mencetak? Saya mencetak $ pizza. Apa yang akan saya menemukan at-- jika saya mencetak $ pizza, $ i? Kanan? Jika aku akan mencetak unsur engan pizza, apa yang akan saya untuk mencetak? Aku akan mencetak nilai-nilai di lokasi itu, kan? Seperti jika kita melakukan ini dalam konteks C, kita tidak biasanya menggunakan iterator kami variabel, int i = 0, i kurang dari 3, i ++, untuk mencetak 0, 1, 2, 3. Kami mencetak berbagai 0, Array 1, 2 Array, Array 3. Dan jadi apa ini mencetak adalah ini. Ini daftar harga. 8.99, 9.99, 10.99, 11.99. Sekarang catatan singkat di sini. Sebuah loop foreach tidak tentu mencetak hal dalam rangka. Itu tidak dijamin. Biasanya. Ini biasanya berdasarkan urutan yang unsur ditambahkan ke array, jadi hanya diingat bahwa. Ini mungkin tidak dalam urutan. Tapi loop foreach akan beralih di setiap elemen tunggal dari array yang bersangkutan. Dalam hal ini, sekali lagi, array adalah $ pizza. Aku bisa mengubah sintaks, meskipun, jika Saya ingin kedua kunci dan nilai. Alih-alih mengatakan $ pizza sebagai $ pizza, saya bisa mengatakan ini. Dan jika Anda melihat apa yang telah saya disorot dalam warna hijau di sini, sepertinya kunci pemetaan nilai pasangan. Dan jadi jika you-- bahkan jika Anda tidak sepenuhnya yakin apa yang akan dilakukan, Anda mungkin bisa menebak bahwa $ topping akan menjadi kunci dalam kasus ini dan $ harga akan menjadi nilai. Jadi aku mengganti sekarang setiap elemen dari $ pizza sebagai pasangan nilai kunci, dan sekarang saya bisa merujuk ke kunci dan nilai, yang mungkin berguna, misalnya, sebagai berikut. "Seluruh" - ini adalah banyak pencetakan terjadi di sini-"Seluruh" topping "pizza biaya $" harga, dan kemudian Saya mencetak periode dan backslash n. Jadi sekarang, pemberitahuan lagi saya memiliki akses ke kunci, $ topping, dan nilai, $ harga. Jadi Anda bisa menebak apa ini akan mencetak? Ada banyak laporan cetak, tapi hanya ada satu backslash n, sehingga akan mencetak sesuatu di sebuah entire-- pada baris kode. Jika saya dapat merujuk ke tombol dan nilai, maka sekarang, bukan hanya mampu untuk mencetak harga, Saya bisa mencetak sesuatu seperti ini. "Seluruh keju pizza biaya $ 8,99." Dan sekarang saya menggunakan semua keys-- yang keju, pepperoni, sayuran, kerbau chicken-- dan nilai-nilai. 8.99, 9.99, 10.99, 11.99 Jadi itu hanya cara yang berbeda untuk melakukan loop foreach bahwa alih-alih hanya memberikan Anda akses ke nilai-nilai, itu hanya memberi you-- memberikan Anda akses ke kunci dan nilai-nilai. Jadi mencetak informasi. Aku sudah melakukannya beberapa cara yang berbeda, Anda mungkin telah memperhatikan. Dua fungsi kita sudah terutama adalah cetak dan gema dilihat. Dan untuk hampir semua maksud dan tujuan, mereka persis sama. They're-- ada sangat halus Perbedaan itu bahkan tidak layak hadapi, tetapi pada dasarnya di mana-mana Anda dapat menggunakan cetak Anda mungkin dapat menggunakan menggemakan juga. Dan itu bukan hanya dua. PHP memiliki banyak berbeda cara untuk mencetak hal-hal, dan juga memiliki cara untuk mengintegrasikan variabel ke tengah-tengah tali. Jadi ingat dari C, apakah Anda ingat apa fungsi bisa kita gunakan untuk menggantikan variabel dalam hal yang kita ingin mencetak? Anda mungkin menggunakan ini berfungsi cukup banyak. printf, kan? Jadi ini adalah apa yang kita miliki sebelumnya dalam dari konteks foreach loop kami. Kami memiliki lima ini pernyataan cetak yang terpisah, karena itu satu-satunya cara saya benar-benar tahu pada saat itu bagaimana untuk mencetak pesan. Aku tidak tahu bagaimana untuk mengintegrasikan $ variabel topping ke dalam kode PHP saya. Nah, jika aku hanya mengambil menebak liar, printf, itu benar-benar akan bekerja. printf adalah fungsi yang dapat saya gunakan PHP, hanya suka saya dapat menggunakannya dalam C. Dan jadi sesuatu seperti ini, printf, lagi, kita akrab dengan itu. Pertama% s diganti dengan nilai $ topping. Kedua% s diganti dengan nilai $ harga. Dan jadi aku interpellating, yang hanya cara mewah mengatakan aku menempel variabel ke lokasi itu. Jadi aku mencolokkan $ topping mana merah% s adalah dan $ harga di mana% s biru adalah, dan kemudian saya akan mendapatkan pesan, "Seluruh keju pizza biaya $ 8,99." Bukan satu-satunya cara saya bisa melakukannya, meskipun. Mungkin aku ingin menggunakan metode ini. Ini sebenarnya apa yang paling sering disebut interpelasi variabel. Saya dapat menggunakan gema. Saya bisa menggunakan print juga, karena kami akan melihat. Tapi apa yang terjadi di sini? Pertama-tama, saya harus melarikan diri dari tanda dolar. Karena ingat, ketika kita benar-benar mencetak harga pizza, Aku benar-benar format mereka sebagai Angka-angka moneter dengan tanda dolar. Tapi kita menggunakan tanda dolar juga untuk mewakili nama variabel di PHP, dan khususnya ketika saya menggunakan metode keriting yang variabel brace Metode interpelasi, saya perlu melarikan diri tanda dolar saya sehingga tidak pikir saya sedang berbicara tentang variabel. Ini akan benar-benar, harfiah mencetak tanda dolar. Jadi semacam menganalogikan untuk apa yang Anda lihat di akhir ada. Ini tidak benar-benar cetak backslash n, kan? Ia akan mencetak karakter baris baru. Ini is-- itu tidak akan cetak tanda backslash dolar, itu akan mencetak hanya karakter tanda dolar. Ide yang sama. Escape sequence, apa hal ini disebut. Tetapi perhatikan bahwa saya tidak melakukan apapun% s substitusi, Aku hanya benar-benar memasukkan dalam variabel tersebut. Dan di this-- apa yang akan terjadi di sini adalah bahwa nilai $ topping-- lagi, hanya menjaga dengan apa yang telah kami berbicara tentang keju sehingga far-- akan mendapatkan terpasang di sana. Dan $ harga akan menjadi nilai apa pun di pizza, kurung, keju, yang 8,99. Dan jadi ini juga akan mencetak "Seluruh keju pizza biaya $ 8,99." Dan seperti saya katakan, saya bisa menggunakan mencetak sini bukannya echo, dan fungsi menjadi cukup banyak persis sama. Ini akan mencetak hal yang sama. Ada cara lain untuk melakukannya, dan ini adalah keuntungan lain PHP bekerja dengan string. Kita bisa melakukan penggabungan string. Kita bisa melakukan hal ini di C, juga, menggunakan fungsi yang disebut strcat, tapi sekali lagi, kita harus memanggil fungsi-fungsi yang terpisah. Itu kekacauan ini untuk melakukan. Kami harus pound-termasuk string.h. Itu produksi, kan? Tapi sekarang saya hanya bisa menggunakan operator dot ini untuk menggabungkan string bersama-sama. Jadi aku concatenating "Seluruh" dan maka apa pun nilai $ topping adalah, dan kemudian lain String, "biaya pizza $" dan kemudian concatenating apapun nilai $ harga, dan kemudian di akhir saya memaku pada periode backslash n. Dan jadi ini juga akan mencetak "Seluruh" - lagi, jika kita berbicara tentang pertama unsur yang pizza array-- "Seluruh keju pizza biaya $ 8,99." Periode, backslash n, sekali lagi, dengan yang $ topping dan $ harga penggantinya untuk apa yang kita ditentukan dalam foreach kami lingkaran sebagai kunci pemetaan nilai pasangan. PHP dapat menangani fungsi. Fungsi yang semacam integral C, seperti yang kita lihat. Seperti variabel, kita tidak perlu menentukan jenis kembalinya fungsi, karena tidak benar-benar peduli. Dan kita tidak menentukan jenis data parameter apapun, karena mereka tidak benar-benar materi, seperti yang kita lihat di PHP. Setiap fungsi diperkenalkan dengan fungsi kunci. Itulah cara kita menunjukkan kepada PHP yang apa yang kita bicarakan adalah fungsi. Dan kita tidak perlu menangani utama sama sekali, karena penerjemah, PHP interpreter, bekerja dari atas ke bawah, terlepas. Jika melihat Anda dapat membuat panggilan fungsi, itu akan pergi mencari fungsi panggilan, bahkan jika itu datang kemudian. Tapi itu akan dibaca dari atas ke bawah, jadi kita tidak perlu menentukan, di sinilah Anda mulai. Anda mulai pada baris 1 dari Anda PHP dan bekerja turun dari sana. Jadi di sini adalah bagaimana kita akan membuat fungsi disebut hard_square. Ini rupanya mengambil satu parameter, yang aku menelepon $ x. Fungsi ini rumit hanya untuk menggambarkan berbagai hal. Kami masih memiliki nilai kembali. Saya menggunakan untuk loop di sini. Tapi itu pada dasarnya hanya, apa ini sebesar hanya $ x kali $ x. Apa yang saya benar-benar lakukan adalah hanya menambahkan x ke 0 x kali atau $ x nol $ x kali. Tapi itu efektif persis sama dengan mengalikan $ x kali $ x. Aku masih bisa mengembalikan nilai, dalam hal ini $ hasil, dan saya telah membuat fungsi di PHP. Berikut adalah bagaimana Anda dapat menggunakannya dalam konteks. Jadi mungkin aku dalam beberapa file PHP. Perhatikan warna biru yang ada Saya telah menggunakan pembatas PHP saya, angle bracket tanda tanya php. Di antara mereka adalah semua PHP yang saya ingin menulis. Jadi aku tampaknya akan get-- Aku akan meminta pengguna untuk memberikan saya nomor, toko yang variabel, toko di variabel $ x, apa pun yang mereka memberi saya. Lalu aku akan echo hard_square dari nilai tersebut, dan tampaknya akan taktik pada baris baru juga, dan kemudian nanti aku akan mendefinisikan fungsi hard_square sehingga bahwa ketika saya membuat panggilan untuk hard_square, ia tahu apa yang saya bicarakan. Sekarang, saya juga bisa melakukan sesuatu seperti ini. Ini sedikit berbeda. Ini hampir persis sama seperti apa yang kita lihat sebelumnya, kecuali bukannya mengatakan hanya $ x ada sebagai parameter untuk hard_square, Saya mengatakan $ x = 10. Jadi ini adalah contoh dari pemrograman defensif, menjaga program Anda terhadap pengguna berbahaya. Ini adalah salah satu cara untuk melakukan beberapa kesalahan memeriksa bahwa kita tidak benar-benar memiliki sebagai pilihan dalam C. Kami tidak pernah bisa menentukan nilai default dari sesuatu. Kami selalu harus memeriksa apakah, misalnya, jika kita membuat panggilan ke GetString, itu paling tepat jika segera setelah kami memeriksa bahwa, kami memeriksa apakah string bahwa pengguna memberi kami tidak sama dengan nol, karena kita tidak ingin memulai bekerja dengan string null. Sini, ini adalah cara untuk menjaga terhadap itu. Jika pengguna tidak memberikan kita sesuatu entah bagaimana, apa yang akan kita lakukan? Yah, kita akan hanya mengatakan apa pun mereka tidak memberikan kami, kami hanya akan pasang di 10 gantinya. Jadi, jika mereka tidak memberi kami nilai, hanya menggunakan 10 secara default. Dan jadi di sini, melihat bahwa saya sedang membuat panggilan ke hard_square, tetapi tidak ada yang cepat kepada pengguna, bukan? Aku hanya membuat panggilan kosong. Tapi fungsi saya hard_square mengharapkan parameter. Apa ini akan mencetak? Ini akan mencetak 100, kan? Karena pengguna tidak memberiku apa-apa. Dan jadi aku hanya akan menganggap yang 10-- 10 adalah nilai default. Dan jadi ini akan mencetak keluar 100 pada baris sendiri. File PHP tidak perlu hanya satu file. Anda dapat menggabungkan beberapa file bersama-sama, seperti Anda dapat di C. Cara kita melakukan itu di C itu biasanya melakukan #include untuk mendapatkan file header ditarik. Kami tidak melakukan itu di PHP. Kami melakukan sesuatu yang disebut require_once. Dan kemudian ada ini seluruh hal, apa __dir__ ini? Itu hanya khusus variabel, atau konstanta khusus, benar-benar, yang menentukan apa yang direktori Anda saat ini. Dan itu akan terlihat dalam direktori Anda saat ini untuk file bernama cs50.php dalam contoh ini di sini, dan itu akan tetap file yang di bagian atas program PHP Anda, dengan asumsi bahwa Anda menempatkan memerlukan sekali baris di bagian atas file PHP Anda. Jadi PHP terutama digunakan, tetapi tidak secara eksklusif digunakan, sebagai bahasa pemrograman berbasis web. Itu benar-benar bagaimana datang untuk menjadi. Tapi itu adalah penuh bahasa, seperti yang kita lihat. Kami telah melihat cukup banyak semua hal bahwa ia bisa melakukan yang mirip dengan C, dan dapat melakukan heck of banyak lebih dari itu. Tapi karena itu bahasa penuh dan kami dapat melakukan perintah pemrograman baris di dalamnya. Kita bisa menjalankan program baris perintah. Semua yang diperlukan untuk menjalankan perintah Program baris yang ditulis dalam PHP adalah bahwa Anda memiliki interpreter PHP. Jadi itu semacam analog dengan memiliki compiler pada sistem Anda jika Anda ingin mengkompilasi kode C Anda untuk mengubahnya menjadi file executable. Anda perlu memiliki juru PHP yang ada pada sistem Anda sehingga Anda dapat menafsirkan file PHP. Dengan asumsi Anda, dan biasanya interpreter ini disebut PHP, dan itu biasanya dibundel dengan sebagian besar download atau instalasi PHP Anda bisa online, dan tentu nama interpreter PHP kita miliki dalam CS50, IDE. Yang Anda lakukan adalah jenis file php. Dan apa program anda akan lakukan adalah itu akan dijalankan melalui penafsir, itu akan mengabaikan segala sesuatu yang tidak di antara pertanyaan mark-- atau, sudut braket tanda tanya php, pembatas PHP, dan mencetaknya, dan itu akan menafsirkan dan mengeksekusi kode di dalam pembatas PHP Anda. Jadi mari kita mampir ke CS50 IDE dan melihat-lihat di beberapa file PHP, menjalankan beberapa file PHP, di baris perintah interface CS50 IDE. Jadi di sini kita berada di CS50 IDE, dan saya telah mengambil kebebasan membuka sebuah file bernama hello1.php. Dan ternyata, isi ini File hanya pembatas PHP sana, dan di antara, echo ("halo, dunia"). Ini adalah program PHP cukup sederhana. Aku hanya akan gulir ke bawah ke jendela terminal saya di sini, dan aku akan mengetik php hello1.php, tekan enter. Halo Dunia. Itu mungkin apa yang kami mengharapkan untuk melakukan, kan? Mari kita pergi dan mengambil melihat lagi di program. hello2.php. Cukup banyak hal yang sama, tidak banyak terjadi di sini. Kali ini, meskipun, aku akan meminta pengguna untuk memberikan nama mereka. Saya menggunakan fungsi readline lagi. $ nama = readline. Itulah yang cepat, "Siapa namamu?" Rupanya aku pencetakan pada baris sendiri. Dan kemudian, sehingga garis bawah yang akan prompt dimana pengguna dapat memasukkan nama mereka. Dan kemudian saya menggunakan sedikit variabel interpelasi sini on line 3 untuk mencetak "Hello" dan apapun jenis pengguna. Jadi ini analog dengan mengatakan, Hello, koma,% s jika kita menggunakan printf di C. Jadi mari kita pergi dan menafsirkan program ini. Jadi sekali lagi, saya akan gulir ke bawah ke jendela terminal saya. hello2.php php. Siapa nama kamu? Doug. Halo, Doug. Saya juga memiliki lain file bernama hello3.php. Aku akan membersihkan saya layar dengan Kontrol L, dan aku akan mengeksekusi itu. Siapa nama kamu? Doug. Halo, Doug. Jadi perilaku identik dengan hello2.php, tapi mengapa itu hello3.php? Nah, di sini bedanya. Dalam hal ini, pemberitahuan yang on line 1 di sini, Aku punya sesuatu yang tidak di antara pembatas PHP. Aku hanya mencetak out-- atau aku hanya mengetik, "Siapa namamu?" Ketika interpreter PHP melihat ini, itu telah tidak tahu bagaimana untuk menafsirkannya sebagai PHP, dan bukannya gagal, itu hanya akan meludahkannya. Jadi melihat pada baris 3 sekarang, panggilan saya untuk readline, tidak ada yang cepat lagi. Aku hanya benar-benar akan to-- saat interpreter PHP melihat ini, itu akan mencetak "Siapa nama kamu?" Kemudian ia melihat, oh, OK, here's-- segala sesuatu yang lain akan menjadi diartikan sebagai PHP, sehingga itulah mengapa ini bekerja. Saya tidak perlu selalu meminta pengguna to-- dalam readline, Aku hanya bisa memilikinya luar dari pembatas PHP dan memungkinkan penafsir hanya mencetak keluar bagi saya. Jadi Anda tidak benar-benar hanya memiliki untuk memiliki satu set pembatas PHP dalam program Anda. Anda benar-benar dapat memiliki beberapa dari mereka, membuka dan menutup mereka sesuai kebutuhan. Jadi mari kita lihat di beberapa program di CS50 IDE mana kita menggambarkan ide ini memiliki beberapa set dibatasi PHP. OK, jadi saya telah membuka sebuah file di sini disebut add1.php. Dan perhatikan apa yang terjadi di sini. Sama seperti sebelumnya, saya memiliki PHP tunggal mengatur pembatas. Aku akan mencetak pesan, "Tolong beri saya nomor." Lalu aku akan membaca garis dan menyimpannya dalam variabel $ num1. Lalu aku akan mencetak lagi. Memberikan nomor kedua. Baca garis dari pengguna, menyimpan apa pun yang mereka mengetik di $ num2. Tambahkan mereka bersama-sama dan menyimpan yang menghasilkan variabel yang disebut $ sum, dan kemudian mencetak, "The jumlah dari dua nomor ini adalah, "dan kemudian menginterpelasi ada variabel $ sum. Jadi mari kita jalankan ini melalui penerjemah untuk mengkonfirmasi bahwa ini adalah apa yang kita harapkan. add1.php php. Tolong beri saya nomor, 3. Tolong beri saya nomor kedua, 4. Jumlah dari dua angka-angka ini adalah 7. Itu 3 ditambah 4. OKE? Jadi tidak ada yang sangat mewah di sana. Dan sekarang mari kita membuka add2.php. Di sini, saya punya beberapa PHP dipisahkan set sana, kan? Baris 1, 3-- jalur 1 dan 3 tidak memiliki pembatas PHP. Jadi ketika penafsir melihat mereka, itu hanya akan memuntahkan persis apa yang telah saya mengetik di sana. Jadi di sanalah aku melakukan semua saya mendorong. Pada baris 2 dan 4, kita melihat sangat $ familiar? php semacam pembatas, sehingga dua garis akan mengeksekusi sebagai PHP. Dan kemudian pada baris 5, saya punya ini hal yang aneh di sini, kan? Braket sudut ini tanda tanya tanda sama. Aku bahkan akan memperbesar sedikit lebih jauh. Anda dapat melihat ini adalah apa yang saya berbicara tentang di sana, $ ini? =. Ternyata itu begitu umum bahwa alasan bahwa kita membuka satu set PHP pembatas adalah untuk mencetak nilai. Dan itu semua kita akan lakukan. Tapi bahkan ada istilah untuk itu. $? = Adalah PHP singkatan untuk mengatakan sesuatu seperti $? php echo jumlahnya dari num1 dan num2. Jadi ini hanyalah singkatan untuk itu. Jadi jika saya menjalankan program ini, php add2.php. Aku akan tampilannya turun sedikit. Tolong beri saya nomor, 4. Tolong beri saya nomor kedua. Dan karena saya tidak benar-benar peduli jenis data dalam PHP, saya dapat mengatakan 4,8. Jumlah dari dua angka-angka ini adalah 8,8. Fungsi yang berperilaku cukup banyak persis sama seperti yang kita harapkan, demikian juga. Dan aku punya satu lagi dibuka di sini disebut dice.php. Coba ini lagi. Saya punya satu lagi di sini disebut dice1.php, yang juga, lihat, memiliki pertanyaan sudut braket menandai notasi tanda sama di sana, tapi melihat bahwa dalam kasus ini saya memanggil fungsi rand, yang seperti Anda mungkin berharap menghasilkan nomor acak. "Kau menggulingkan sebuah," dan itu akan menghitung beberapa nomor acak, mod 6 + 1. Sehingga akan memberikan nomor di kisaran 1-6. Ingat bahwa mod 6 akan memberi saya nomor dalam kisaran 0 sampai 5, tetapi jika aku simulasi dadu gulungan, yang adalah apa yang saya lakukan di sini, Saya tidak ingin dadu ini untuk pergi dari 0 untuk 5, saya ingin dadu yang pergi 1-6. Dan jadi ini adalah cara untuk mendapatkan saya di kisaran 1-6. Aku melakukan ini dua kali. Begitu rupanya saya bergulir dua dadu dalam program ini. Jadi saya akan membersihkan layar saya, dan saya akan melakukan php dice1.php. Anda berguling 4 dan 2. Dan jika saya menjalankan program lagi, Anda berguling 5 dan 5. Jadi setiap kali saya menjalankan program, Saya mendapatkan nomor yang berbeda, karena setiap kali saya lakukan sehingga, itu mulai berakhir. Ini akan menghasilkan baru set nomor acak untuk saya. Jadi jika kita terbiasa menjalankan program dari C, kita terbiasa mengetik ./ yang nama program, kan? Itulah cara kita melakukan semua program kami di C sejauh ini. Kita dapat melakukan ini di PHP juga dengan menambahkan sesuatu yang disebut sebuah shebang ke atas file PHP kita. Aku tahu itu jenis kata konyol. Itu singkatan hash Bang. Itu dua karakter pertama ada. Ingat kita sebut tanda seru sering bang dalam ilmu komputer. Hal ini juga mungkin bagi tajam Bang. Ada beberapa cara untuk menafsirkannya. Tapi itu pada dasarnya semacam khusus dari perintah bahwa interpreter PHP memahami sebagai, oh, saya ingin Anda untuk menjalankan program ini, yang tampaknya / user / bin / php, yang sebenarnya di mana interpreter PHP khusus tinggal di sistem kami. Jadi it's-- apa yang terjadi di sini adalah penafsir memahami, oh, Aku rupanya seharusnya menggunakan dalam program ini untuk menjalankan file ini. Dan sehingga memungkinkan Anda untuk melewatkan langkah karena harus mengatakan php something.php. Ada satu menangkap lainnya di sini, yang adalah bahwa jika kita ingin program kami untuk bekerja seperti yang diharapkan, kita perlu melakukan sesuatu yang disebut perubahan izin file. Dan kami akan go-- dan kita berbicara sedikit sedikit lebih tentang file perubahan izin dalam video kami pada MVC, tetapi cukuplah untuk mengatakan bahwa ini adalah apa yang perlu Anda lakukan untuk membuat Anda file php dieksekusi. Jadi mari kita lihat ini sebagai Contoh terakhir kami lebih dalam CS50 IDE. Jadi di sini di IDE Aku punya dua file dalam PHP direktori yang muncul tidak menjadi disebut .php. Saya memiliki fungsi yang disebut add-- Saya memiliki sebuah file yang bernama add3 dan file disebut dice2. Jadi mari kita cepat melihat dan membuka add3. Dan seperti yang Anda lihat, di awal file saya, saya memiliki peristiwa ini, kan? Ini titik hash tanda seru. Sekarang, Anda juga akan mungkin melihat bahwa untuk beberapa alasan, Saya tidak memiliki sintaks apapun menyoroti lagi, dan ini adalah apa yang saya singgung sebelumnya, yang adalah bahwa jika saya tidak nama file saya php, saya tidak memiliki manfaat dari sintaks lagi. File ini hanya disebut add3. Sehingga saya bisa menjalankannya nanti dengan ./ add3 dan tidak ./ add3.php. Jadi reason-- itu masih baik, itu masih berlaku PHP, tapi itu tidak sintaks disorot, karena file ini tidak disebut something.php. Itulah satu-satunya perbedaan nyata di sini, ditambah shebang tersebut. Jadi mari kita lihat apa yang terjadi ketika Aku mencoba dan menjalankan program ini. ./ Add3, seperti yang saya lakukan dengan C. Bash. ./ Izin add3 ditolak. Ini adalah apa yang Anda akan untuk melihat apakah Anda lupa menggunakan perintah chmod untuk mengubah hak akses file. Ternyata, PHP biasa file tidak bisa hanya dijalankan. Mereka dapat diartikan, tapi kami melakukan sesuatu yang sedikit berbeda di sini. Kami dijalankan. Dan jadi saya perlu menambahkan izin eksekusi, chmod a + x untuk add3. Lalu aku bisa mengatakan add3 ./. Tolong beri saya nomor. 5, 6. Jumlah dari dua angka-angka ini adalah 11. Demikian pula, saya sudah chmod dice2, jadi aku hanya bisa mengetik ./ dice2, Anda berguling 1 dan 1, Anda digulung 5 dan 4, dan seterusnya. Jadi itu cukup banyak Ide sintaks PHP, kan? Ada banyak untuk melewati, saya tahu. Tapi mudah-mudahan Anda telah melihat sekarang bahwa PHP tidak benar-benar berbeda dari C dan benar-benar memberi kita kemampuan untuk mengambil hal-hal takik atau dua. Kami tidak benar-benar perlu khawatir terlalu banyak about-- kita tidak benar-benar perlu khawatir terlalu banyak tentang rincian tingkat rendah kami harus khawatir dengan C, kan? Kita bisa fokus pada yang lebih tinggi tingkat hal-hal yang PHP memungkinkan kita untuk melakukan dan mengambil untuk diberikan bahwa itu akan bekerja untuk kita. Sehingga memberikan kita kemampuan sekarang, transisi dari C ke PHP, untuk membuat program yang lebih banyak kompleks dan mungkin jauh lebih kuat. Jadi saya harap Anda bersenang-senang kerja dengan PHP, dan aku Doug Lloyd. Ini adalah CS50.