[Powered by Google Translate] [Seksyen 8] [Kurang Selesa]
[Nate Hardison] [Universiti Harvard]
[Ini adalah CS50.] [CS50.TV]
>> Selamat datang ke kedua untuk seksyen terakhir kami.
Pada minggu ini, kita akan bercakap tentang PHP, dan kemudian minggu depan
kami akan melakukan kajian sedikit untuk Kuiz 1.
Kami akan bermula pada 3 halaman masalah set pek,
dan kita akan bekerja melalui seksyen soalan agak cepat.
Pada halaman 3, kita mula bercakap tentang perbezaan ini antara C dan PHP
dalam erti kata bahawa PHP adalah bahasa dinamik ditaip,
manakala C statik ditaip,
dan sesiapa yang benar-benar cepat melakukan apa-apa kod dalam sesuatu seperti PHP
atau Python atau Ruby sebelum ini, menutup?
Yang sama sekali baru? Okay.
>> Semua bahasa ini bahawa saya hanya disebutkan
adalah sangat berbeza dari bahasa seperti C dan C + + dan Java
dalam erti kata bahawa apabila anda mengisytiharkan pembolehubah anda tidak perlu mengisytiharkan
apa jenis pembolehubah ia adalah, jadi dalam C kita telah terjebak perlu untuk sentiasa berkata
ini akan menjadi pembolehubah int, atau ini akan menjadi satu pemboleh ubah * char,
sedangkan dengan PHP, dengan Python, dengan Ruby,
dengan banyak bahasa yang lebih moden ini anda tidak perlu berbuat demikian pada semua.
Anda hanya mengisytiharkan pembolehubah anda, dan dalam kes PHP
anda mengaku bahawa ia adalah pembolehubah dengan awalan dengan tanda $,
dan kemudian jenis pembolehubah adalah ditentukan oleh apa-apa nilai ia memegang,
yang adalah jenis sejuk.
Untuk bermain-main dengan sedikit ini sedikit, kita mempunyai sampel kod PHP di sini
di antara tag permulaan dan akhir.
Kami menggunakan jenis ini seperti HTML dalam erti kata bahawa
kami telah mendapat kurungan sudut sini untuk membuka dan menutup.
Anda akan melihat ini dengan HTML.
Anda akan melihat perkara yang sama sintaks dengan XML juga.
>> Ini menunjukkan permulaan blok PHP.
Ini php? Adalah khusus untuk PHP.
Kami menutup segala-galanya dengan?> Serta.
Mari kita membuka fail dalam perkakas kita menggunakan apa sahaja yang anda ingin.
Dalam paket ini ia mengatakan untuk memanggil dynamic.php.
Sebenarnya, anda boleh memanggil ia apa sahaja yang anda ingin, tetapi nama fail akan tampil
dan menjadi penting kemudian, jadi hanya ingat apa sahaja yang anda memanggilnya.
Saya akan beralih ke perkakas,
dan saya akan membuat sebuah direktori untuk
seksyen 9 Saya percaya kita berada di sekarang.
Dan kita akan pergi ke seksyen 9,
dan saya akan menggunakan gedit.
Mari kita lihat, gedit, dan saya akan memanggil dynamic.php lombong.
Ledakan.
Di Dalam dynamic.php, kerana ini adalah fail PHP
dan saya mahu menjalankan ini melalui jurubahasa PHP
Saya perlu untuk memulakan segala-galanya bermula dengan orang-orang tags terbuka,
jadi saya akan untuk memulakan hak mereka jauh,
memberikan saya sedikit ruang di antara tag,
dan kemudian titik latihan ini adalah untuk bermain-main dengan
fungsi ini dipanggil gettype, jadi gettype, fungsi ini di sini.
>> Perhatikan bahawa ada tidak menekankan atau ruang atau sempang atau apa-apa seperti itu
memisahkan 2 perkataan, dapatkan dan taip, hanya satu perkataan sama sekali.
Tetapi apa yang ini akan lakukan jika saya lulus dalam pembolehubah untuk gettype,
katakan $ var atau $ x,
ini akan memberitahu saya jenis dalam format debugging
apa nama jenis itu.
Kami akan mencuba di sini.
Khususnya, jika anda melihat kembali pada spec pset
kami telah mendapat beberapa baris yang berbeza kod di sini.
Dalam baris pertama kod kita memulakan variabel ini, $ var,
menjadi sama ke 7, dan kemudian kita mempunyai ini selaras printf
mengatakan hey, var printf adalah kosong.
Printf adalah salah satu daripada banyak cara kita boleh mencetak perkara dalam PHP.
Selalunya anda akan melihat fungsi echo bukannya printf digunakan,
tetapi printf kita semua biasa dengan telah pengekodan dalam C untuk seketika.
Apa yang anda sebenarnya boleh lakukan mari kita lihat jika kerja-kerja salinan dan tampal.
Saya akan memberikan ini cuba.
Kami akan kembali ke perkakas.
Okay, dan di sana kita pergi.
Dan jarak adalah funky, tetapi di sini kita pergi.
Kami telah mendapat kod ini di sini.
>> [Pelajar] Apakah ia gaya yang tidak baik ke tab ia?
Maaf?
[Pelajar] Adakah ia konvensional ke tab ia?
Betul, jadi Sam bertanya jika ia adalah konvensyen ke tab atau tidak.
Biasanya ya.
Dalam kes ini, saya telah memilih untuk tidak.
Secara jujur, anda akan melihat perkara-perkara yang berbeza di kalangan pengaturcara berbeza.
PHP biasanya sering digunakan dalam kombinasi dengan HTML
dan bahasa-bahasa lain, dan sebagainya kadang-kadang percetakan akan kelihatan funky
jika anda inden dalam permulaan PHP dan tag akhir.
Ia benar-benar bergantung.
Dalam kes ini, copy dan paste tidak tampal tab untuk saya,
tetapi ia pasti tidak, seperti yang anda kata, membuat ia jelas.
Baiklah, jika anda menyimpan kod ini di dynamic.php
maka apa yang anda boleh lakukan ialah datang ke tetingkap terminal anda di mana saya sampai di sini
dalam gedit, dan untuk melakukan bersamaan menyusun
menggunakan membuat dan kemudian berjalan kod anda dalam C
semua yang anda perlu lakukan dengan fail PHP adalah memulakan jurubahasa PHP,
yang merupakan satu program kecil yang dipanggil PHP,
dan hujah yang anda berikan kepada jurubahasa adalah fail yang anda mahu untuk mentafsir.
Dalam kes ini, dynamic.php.
Oop, di mana saya meletakkan ia?
Oh, saya meletakkan ia dalam seksyen 9, dan di sini saya. Itulah sebabnya.
>> Sekarang, jika saya berjalan itu lagi
kita lihat bahawa dalam gettype fungsi panggilan pertama saya
var adalah integer.
Dalam var datang adalah rentetan, dan kemudian dalam var satu pertiga adalah boolean.
Apa yang menarik tentang perkara ini ialah jika kita tatal kembali kita lihat bahawa
ini adalah jenis yang sama dengan orang-orang yang kita telah dalam C.
Kami mempunyai ints dalam C.
Kami jenis mempunyai rentetan dalam C,
jadi rentetan tidak adalah jenis yang benar-benar legit dalam erti kata bahawa
rentetan CS50 kami adalah benar-benar apa?
Maaf? Missy?
[Missy] Char *.
Ya, ia adalah ini * char kita digunakan.
Pada awal-awal semester kita telah menggunakan jenis tali,
tetapi ia adalah benar-benar * char bawah hood.
Kita hanya jenis yang ditakrifkan, sedangkan dalam PHP rentetan ini adalah satu jenis sebenar.
Terdapat tidak lebih daripada ini * char jenis barangan.
>> Anda akan melihat bahawa kita boleh melakukan banyak perkara lagi dengan rentetan
lebih mudah dalam PHP daripada kita boleh dalam C,
dan akhirnya, kita mempunyai jenis ini boolean, dan perbezaan yang besar di sini adalah bahawa
jika kita tatal kembali ke bawah kita lihat bahawa nama jenis ini
kini integer, tali, dan boolean bukannya int dan bool,
dan sebagai anda memilih bahasa pengaturcaraan yang berbeza,
menganggap bahawa pada satu ketika dalam hidup anda, anda akan bersentuhan dengan
yang berbeza, anda akan notis sedikit sifat-sifat seperti ini
di mana C panggilan integer ints.
Sesetengah memanggilnya integer.
Terdapat istilah lain yang anda akan menghadapi.
Int Besar yang kita lihat hari ini dalam SQL.
Terdapat juga nombor dan kemudian bool, boolean,
segala macam perbezaan di sana.
>> Ini tidak terlalu menarik tetapi sekarang saya akan memberikan anda sedikit masa-
jika kita zum keluar untuk bekerja melalui senaman ini di bahagian bawah halaman 3
di mana ia meminta apa jenis sesuai dengan nilai-nilai ini di sini di bawah.
Kami mempunyai 3.50.
Kami mempunyai perkara ini di sini, yang menarik.
Kami tidak pernah melihat bahawa sebelum ini, walaupun begitu, jika anda telah mengikuti bersama-sama dalam kuliah
anda mungkin sudah tahu apa yang.
Kemudian kita mempunyai ini, yang ini adalah jenis funky.
Kamu kenal siapa ini.
Apakah ini dalam C?
Sam? Apakah ini akan memberikan anda di C?
Ia akan membuka fail yang dipanggil dynamic.php dan membuat ia boleh dibaca.
Ya, dan apa yang akan menjadi jenis pembolehubah yang kita akan menetapkan ini? >> File bintang.
Tepat sekali, kita akan memberikan ini kepada bintang fail.
Ini adalah PHP sah juga.
Main. Lihat apa yang berlaku apabila anda lulus yang menjadi gettype.
Dan kemudian juga menyemak apa nol ialah, apa yang mungkin dalam PHP.
Saya akan memberikan anda beberapa minit.
Anda benar-benar boleh menyalin dan tampal nilai-nilai,
dan kemudian kita akan melakukan panggilan rawak sedikit kepada anda
dan lihat apa yang anda mendapat.
>> [Pelajar] Saya mempunyai satu soalan. << Yeah.
Dalam salah satu kuliah Daud berkata ada sesuatu yang anda boleh meletakkan di atas fail anda
supaya anda tidak perlu menaip dalam PHP setiap masa.
Apa itu?
Beliau mungkin bercakap tentang paun bang, bang hash.
Ia adalah arahan bahawa jika anda menandakan fail anda sebagai laku
maka apa yang ia adalah apabila anda melaksanakan fail
ia akan memberitahu program shell
untuk menggunakan jurubahasa PHP untuk mentafsir kandungan fail.
Soalan apakah ini selaras khas
bahawa kita boleh termasuk di bahagian atas fail PHP kita untuk tidak perlu termasuk
ini selaras PHP atau perintah ini PHP apabila kita mahu untuk melaksanakan fail?
Dan anda sebenarnya boleh melakukan ini dengan sekumpulan fail yang berbeza.
Saya percaya ia bergantung di mana perduaan PHP disimpan,
tetapi sering usr / bin / php adalah tempat yang baik untuk memulakan.
Anda boleh memahami ini keluar tepat dengan akan kembali ke perkakas anda
dan menaip yang php.
Arahan yang angka keluar apabila anda melaksanakan binari
atau perintah mana fail yang sepadan.
Ini memberitahu saya bahawa PHP adalah benar-benar aliasing fail ini binari
yang disimpan dalam usr / bin, yang mana banyak daripada binari sistem dipasang.
Sebagai contoh, jika saya menatal sehingga ke atas, sekarang bahawa saya telah meletakkan ini #! selaras di sini
Saya boleh tatal ke bawah, dan saya boleh cuba untuk menjalankan
dynamic.php, tetapi saya mendapat kesilapan ini tentang kebenaran dinafikan,
dan apa yang bermakna adalah bahawa fail ini kini tidak memberi keizinan laku.
Ia tidak ditandakan sebagai fail bahawa seseorang boleh menjalankan.
>> Apabila anda berlari Buat atau dilafaz dan anda mendapat laksana dari ia
pengkompil adalah bijak untuk mengetahui bahawa hey, saya membina laksana.
Anda mungkin mahu untuk melaksanakan, jadi ia secara automatik akan mengkonfigurasi
kebenaran untuk anda.
Ini tidak berlaku, walaupun, apabila anda mencipta fail biasa dari awal,
sebab yang biasanya anda tidak mahu mempunyai apa-apa fail pada sistem anda menjadi laku,
jadi anda sebenarnya perlu pergi dalam dan manual melakukannya.
Cara yang paling mudah untuk melakukannya adalah dengan arahan chmod,
dan chmod + x mengatakan menambah bit executable
kerana ada sedikit baca, sedikit menulis dan bit executable,
r, w dan x,
dan mengatakan chmod + x akan bertukar pada bit executable
maka fail yang kita tentukan, yang dalam kes ini akan dynamic.php.
>> [Pelajar] Adakah yang dihidupkan untuk semua orang?
Mari kita lihat ini, jadi bagaimana saya akan memeriksa untuk melihat kebenaran?
Adakah anda tahu bagaimana saya hendak memeriksa untuk melihat kebenaran fail?
[Sambutan pelajar didengar]
Maaf? >> [Pelajar] XSD.
XSD memberikan kita fail dalam hacks.
Menyenaraikan semua fail,-l, akan menunjukkan saya semua fail dalam direktori saya
jenis panjang mereka, lantung penyenaraian, dan sebagainya di sini kita lihat bahawa
fail ini dynamic.php
diubah buat kali terakhir 5 Nov di 04:21 PM.
Pemilik fail ini jharvard.
Itulah pengguna yang log masuk
Itulah pengguna Saya bekerja sebagai,
dan jika anda juga di dalam perkakas anda juga bekerja sebagai jharvard pengguna.
Anda berada dalam kumpulan pelajar,
dan ini adalah perkara-perkara yang anda akan lihat sering cukup.
>> Kita boleh pergi ke banyak terperinci di sini,
tetapi bagi sebahagian besar apa yang anda mahu melihat apabila anda sedang mencari untuk melihat
sama ada atau tidak fail boleh laksana terutamanya
pengguna yang memiliki fail, pemilik,
jadi ini jharvard, dan kemudian kita mempunyai
bit kebenaran di sini di sebelah kiri,
dan cara untuk membaca ini adalah bahawa bit terakhir
biasanya digunakan untuk menandakan sama ada atau tidak sekurang-kurangnya dalam kes ini
ini sedikit terakhir selalunya akan bersedia untuk iklan untuk menunjukkan
bahawa fail adalah direktori dan tidak hanya fail biasa.
Kemudian berikut 3 bit di sini
menentukan kebenaran bahawa pemilik fail telah,
demikian dalam jharvard kes ini, sebagai pemilik fail, boleh membaca dan menulis fail ini,
tetapi ada melontarkan mengatakan bahawa jharvard tidak boleh melaksanakan fail ini.
Seterusnya 3 bit adalah bagi kumpulan itu, jadi ini adalah kumpulan pelajar,
jadi jika terdapat pengguna berganda pada perkakas saya,
dan kami mempunyai beberapa pengguna sebagai sebahagian daripada kumpulan pelajar,
maka mereka semua boleh membaca fail ini, tetapi mereka tidak boleh menulis,
dan begitu juga orang lain, dunia
hanya dapat membaca fail ini juga.
Ada yang baik, writeup panjang tentang perkara ini,
jadi anda boleh membaca dalam talian.
Dalam set spec masalah kita pergi ke ini dengan lebih terperinci.
>> [Pelajar] Apakah 218 merujuk kepada dunia?
218-off atas kepala saya saya lupa,
tetapi tidak.
Mari kita lihat. Saya blanking bahawa sekarang.
Kembali ke apa yang kita kira-kira untuk melakukan dengan ini chmod + x
di mana kita mahu untuk memberi kebenaran laku dynamic.php,
dan soalan adalah sama ada atau tidak ini akan memberikan kebenaran laku kepada semua orang
atau hanya jharvard, dan kita boleh melihat perkara ini dengan
menjalankan arahan dan menaip ls-l,
dan sekarang kita lihat bahawa ia ditandakan sebagai laku.
Anda lihat bahawa terdapat perubahan warna.
Sekarang dynamic.php disenaraikan dalam warna hijau,
dan ia kelihatan seperti jawapan kepada soalan apa, Charlotte?
[Charlotte] Hanya jharvard. >> Hanya jharvard, yeah.
>> Jika kita mahu menghidupkan sedikit laksana untuk semua orang
bagaimana kita boleh berbuat demikian?
Mana-mana pemikiran? >> A + x?
Ya, sebenarnya.
Charlotte berkata kita boleh lakukan chmod x + dynamic.php,
dan kini jika kita menjalankan ls-l kita lihat bahawa bit laku
sememangnya dihidupkan untuk semua orang.
Dan anda sebenarnya boleh melakukan perkara yang terbalik ini, jadi anda boleh menghidupkan ia dimatikan untuk semua orang
menggunakan tolak.
Kini ia dimatikan, dan kini kita boleh menghidupkan kembali untuk jharvard
supaya kita sebenarnya boleh menjalankan ia kini,
dan sekarang anda lihat apabila kita menjalankan kod khas ini #! baris di bahagian atas,
#! talian, memberitahu shell,
memberitahu terminal kami hey, apabila fail ini dijalankan,
menggunakan / usr / bin / php untuk mentafsir fail ini
dan kemudian mencetak output.
[Soalan pelajar didengar]
Pasti, izinkan saya skrol kembali. Sama seperti ini.
Anda akan melihat semua ini arahan bermula dengan pound ini dan kemudian tanda seru,
kadang-kadang dipanggil shebang, bang hash.
>> [Pelajar] Bagaimana kita boleh berjalan dengan php dynamic.php sebelum kita membuat ia laksana?
Persoalannya ialah bagaimana kita boleh menjalankan ini menggunakan binari PHP
manakala dynamic.php tidak boleh laksana?
Ini adalah sangat penting kerana ini adalah bagaimana
ia akan berfungsi apabila anda menulis set masalah 7.
Kebanyakan masa PHP fail tidak langsung laku.
Cara yang bekerja adalah kerana ia adalah binari PHP itulah laku.
Jurubahasa adalah perkara yang sedang dilaksanakan,
dan sebagainya apa yang ia melakukan secara literal slurping dalam keseluruhan kandungan
fail dynamic.php kami dan barisan akan demi baris
dan melaksanakan arahan mereka, jadi ia menggunakan fail PHP kita
sebagai satu senarai arahan.
Ia tidak langsung menyempurnakannya.
Itulah di mana kita mengatakan bahawa fail-fail ini ditafsirkan pada masa jangka.
Ia adalah bahasa masa tayangan bukan sesuatu yang ditentukan pada masa kompil,
bukan bahasa yang disusun seperti C.
>> Adakah terdapat cara untuk mendapatkan bahasa jangka masa untuk bertindak seolah-olah ia adalah bahasa menyusun masa,
seperti jika anda mempunyai semua berjalan yang dilakukan pada pelayan
bukannya anda tahu apa yang saya maksudkan?
Ya, jadi persoalannya ialah
ada satu cara untuk mendapatkan bahasa masa yang dijalankan untuk bertindak lebih seperti masa kompil jenis bahasa?
Dan ada, maksud saya, yang merupakan kawasan aktif penyelidikan bagi banyak syarikat-syarikat ini.
Saya percaya Facebook telah dilakukan banyak kerja dengan PHP
dan menyusun ke bawah, menjadikan ia lebih cepat, mengoptimumkan
sejak laman mereka dibina pada PHP.
Jika anda telah mengikuti node.js pada semua,
yang adalah jenis jurubahasa JavaScript
menjadi mampu untuk menjalankan JavaScript luar pelayar, di luar pelayar web anda,
kerana tradisinya JavaScript hanya akan berjalan di dalam Firefox atau Chrome,
dan ia akan digunakan untuk membuat animasi sejuk berlaku pada laman web
dan membuat laman web anda dinamik.
Itu telah dibina di atas banyak kerja bahawa Google telah dilakukan
untuk membuat JavaScript dan C + +
mengikat bersama-sama, jadi terdapat banyak penyelidikan aktif untuk
mendapatkan bahasa ini untuk berinteraksi dan mengoptimumkan mereka,
terutamanya kerana begitu ramai orang boleh kod dalam PHP dan JavaScript
kerana ia adalah lebih mudah.
Ia banyak lebih bagus. Anda tidak mempunyai petunjuk.
Anda tidak mempunyai jenis yang terapung di sekeliling.
Mereka mahu mendapat manfaat daripada bahasa ini masa kompil
dengan semua penyemakan jenis dan kelajuan dan penggunaan memori yang lebih rendah dan semua itu
sementara masih mengekalkan fleksibiliti dan kemudahan penggunaan ini yang baru.
>> Kembali ke rancangan asal kami serangan.
Kami telah mendapat beberapa soalan-soalan ini di sini dalam spec set masalah kita.
Mari kita pergi melalui mereka benar-benar cepat, dan kita akan pergi di sekitar bilik.
Charlotte, apa jenis ialah RM3.50?
[Charlotte] Itulah double. >> Ia adalah double.
Jimmy, apakah yang satu ini datang? >> Satu pelbagai.
Pelbagai, hebat, dan Jared, apakah fopen?
[Jared] Ia adalah sumber. >> Ia adalah sumber.
Itulah jenis yang baru, bukan bintang fail, bukan fail.
Ia adalah sumber adalah jenis dalam PHP,
dan saya minta maaf, Ella, batal terakhir adalah apa?
Menyeimbangkan.
Nol, bagaimana ia dieja dalam PHP? >> Cara yang sama.
Cara yang sama, ibu? >> Yeah.
Ya, semua hak.
Di sini kita pergi, kita telah mendapat dua, kita telah mendapat pelbagai,
kami telah mendapat sumber, dan kemudian kami telah mendapat null.
Mari kita lihat sekarang anda dilihat
mari kita lihat, jadi sekarang saya rasa apa yang saya juga mahu lakukan adalah tarik sehingga
ini laman web di sini, ini php.net / manual,
jadi jika anda semua salinan itu dan membuka pelayar web.
Saya akan tarik sehingga Chrome, meletakkan bahawa masuk
Saya mahu menunjukkan kepada anda ini bukan sahaja kerana
kita boleh bercakap sepanjang hari tentang jenis dan semua bahawa barangan yang menyeronokkan
tetapi kerana ini adalah manual PHP,
dan terdapat banyak pengaturcara PHP di luar sana.
Terdapat banyak laman web PHP di luar sana,
dan hasilnya, terdapat banyak dokumentasi di PHP,
dan manual, php.net ini, adalah tempat yang benar-benar baik untuk pergi
apabila anda mempunyai soalan tentang apa cara terbaik untuk melakukan X dalam PHP
atau apakah fungsi kelihatan seperti?
Hanya jenis semakin biasa dengan apa ini kelihatan seperti kerana
anda akan datang ke sini sering, sedikit untuk masalah menetapkan 7.
>> Jika anda akhirnya melakukan projek akhir yang menggunakan PHP
ini akan menjadi satu tempat yang anda akan menjadi sangat baik berkenalan dengan.
Selalunya cara orang melakukan ini adalah mereka menggunakan Google untuk mencari laman web,
dan mereka tidak menggunakan kotak carian itu di sini di sebelah kanan atas, yang adalah jenis kecil.
Jika anda Googling sekitar untuk melakukan sesuatu dengan PHP dan anda lihat
salah satu pautan manual pop up anda biasanya boleh bergantung pada itu
sebagai sumber yang agak baik.
Awesome, begitu daripada jenis ini, hanya keluar dari rasa ingin tahu,
yang mana tidak kita melihat?
Apa sahaja yang kita tidak pernah dilihat di sini?
[Pelajar] Sumber. >> Kami melihat sumber dengan panggilan fopen.
[Pelajar] Objek Objek >> kita tidak pernah melihat pasti.
Callback yang kita tidak pernah melihat.
Terdapat beberapa ini pseudo-jenis.
Kami pasti hanya melihat integer dan double.
Kami tidak melihat beberapa orang lain, jadi jika kita klik pada integer
kita boleh melihat terdapat sebarang integer lain bahawa mereka mempunyai di sini?
Adakah mereka semua begitu integer, integer, integer.
Sesetengah bahasa lebih besar jenis integer,
seperti yang kita lihat pada hari ini MySQL terdapat int dan kemudian int besar.
Sejuk.
>> Jadi, PHP manual.
Mari kita kembali kepada spec set masalah kita, dan kita sekarang akan tatal ke bawah ke halaman 4.
Salah satu perkara yang berlaku apabila anda mendapat bahasa ini
yang tidak mempunyai ini menaip statik, jadi bahasa ini di mana anda perlu untuk mengisytiharkan
jenis depan sehingga pembolehubah
anda mendapat kes-kes di mana anda mungkin mula mempunyai pembolehubah jenis yang berbeza
berinteraksi antara satu sama lain,
dan PHP melakukan perkara ini di mana ia cuba untuk melakukan
apa yang dianggapnya perkara yang paling wajar untuk berbuat
apabila anda mempunyai 2 jenis yang berbeza berinteraksi dengan satu sama lain.
Sebagai contoh, jika kita melihat baris kod yang betul di sini
anda melihat bahawa kita telah mendapat apa yang berlaku apabila
kita cuba dan menambah rentetan 1 ke 2 integer.
Apakah yang akan berlaku jika kita cuba dan menambah rentetan yang tidak nilai berangka
tetapi watak-watak yang agak sebenar, CS kepada bilangan 50?
Kemudian kita akan melihat ada apa-apa yang berbeza yang berlaku di mana
bukannya menambah rentetan kepada bilangan kami menambah nombor kepada rentetan,
dan sebagainya dan sebagainya ke titik di mana kita mendapat
beberapa jenis barangan pelik betul di sini di mana kita telah mendapat 7 + benar.
Apa palang pintu itu adakah itu bermakna?
>> Jika anda semua pergi ke hadapan dan tampal beberapa kod ini ke dalam perkakas anda.
Anda boleh menyimpan dalam dynamic.php.
Kita akan lihat apa yang berlaku.
[Pelajar] Hanya menggunakan cetak, tidak printf?
Ya, jadi anda akan mendapati bahawa cetak adalah juga fungsi yang sah untuk mencetak dalam PHP.
Terdapat banyak cara yang berbeza untuk melakukannya.
Kita akan melihat dengan beberapa contoh kemudian sekali kita mula bercakap
tentang masalah yang unik yang kita pergi untuk menulis
dan kemudian masalah kepekatan yang kita pergi untuk menulis
bahawa walaupun kita mempunyai fopen dan fclose
yang sering tidak cara yang paling mudah untuk membaca dalam kandungan fail.
PHP mempunyai banyak ini holdovers C seperti.
[Pelajar] Apabila saya meletakkan dalam semua 6 perkara-perkara yang saya hanya mendapat satu nombor sebagai output.
[Nate H.] Apabila anda meletakkan dalam semua 6 perkara-perkara ini.
Mari kita lihat adalah kerana ia adalah mungkin-
satu perkara adalah bahawa panggilan cetak tidak ditamatkan pada akhir dengan garisan baru.
Ada tiada baris baru memisahkan setiap panggilan cetak,
jadi mungkin anda mendapat satu nombor yang besar,
dan ia adalah benar-benar hanya amalgam aksara baris baru.
[Pelajar] Okay, bagaimana saya membuat pasti-
Nah, terdapat sekumpulan cara yang berbeza.
Anda secara manual boleh dimasukkan ke dalam cetak aksara baris baru,
gema aksara baris baru,
mencetak baris baru.
[Pelajar] Jadi echo adalah perkara yang sama seperti printf?
>> Printf adalah seperti C printf
ke mana anda hendak mencetak rentetan diformat.
Anda membekalkan format string dan kemudian semua placeholder pembolehubah.
Ia sering sesuatu yang tidak digunakan
mari kita lihat, seperti penafian,
Saya kurang biasa dengan PHP daripada saya dengan bahasa web yang lain,
dan apabila saya telah diprogramkan dalam PHP, saya biasanya tidak menggunakan printf
kerana saya mendapati ia lebih cepat untuk menggunakan keupayaan interpolasi rentetan bahawa ia mempunyai,
yang kita akan pergi ke dalam dan saya akan menunjukkan kepada anda dalam hanya sesaat,
sedangkan dalam C kita jenis mempunyai untuk melakukan perkara ini hacky untuk mendapatkan ia untuk mencetak dengan betul.
Anda sebenarnya boleh meletakkan pembolehubah langsung kepada rentetan dalam PHP.
Printf adalah jenis terlalu lama untuk apa yang saya lakukan biasanya. Ya, Ella.
[Ella] Secara umumnya jika anda mendapat ralat menghuraikan maksudnya-
seperti di C ia tidak memberitahu anda dengan tepat di mana kesilapan dan apa yang ia adalah,
jadi adakah itu bermakna melihat melalui kod keseluruhan anda dan angka ia keluar?
Ia biasanya lebih disasarkan daripada itu.
Saya fikir dalam kes itu, ia adalah di luar sedikit,
jadi saya fikir dalam hal yang kita telah hilang dengan koma bernoktah.
Ia telah cuba untuk membuat rasa segala-galanya,
jadi seperti bahasa ini ditafsirkan, jurubahasa akan cuba
dan melakukan yang terbaik untuk membuat semua kerja-kerja yang sesuai.
>> Anda akan lihat, sebagai contoh, dalam menutup
anda akan sering-line penyata akhir dengan semicolon hanya seperti yang mereka lakukan dalam PHP,
sama seperti yang mereka lakukan di C.
Dalam menutup beberapa penterjemah JavaScript
dalam banyak pelayar akan dimasukkan ke dalam koma bertitik untuk anda
jika anda berlaku untuk hilang mereka.
Mereka akan cuba dan menampung untuk sloppiness beberapa di pihak anda.
Itulah di mana ia mungkin cuba dan cuba dan cuba untuk membuat perkara yang kerja,
dan akhirnya ia akan sampai ke titik di mana ia berkata okay,
Saya tidak boleh membuat perkara yang bekerja pada menyelamatkan, dan itulah di mana anda akan mendapat nombor talian
yang mungkin kelihatan luar sedikit dari tempat yang tepat.
Okay, jadi mari kita pergi melalui ini benar-benar cepat.
Kami berhenti dengan Ella, jadi mari kita pergi ke Missy,
dan Missy, apakah cetakan 1 rentetan ditambah nombor 2 memberikan anda?
[Missy] 3. >> 3.
Adakah yang masuk akal? Susun?
Adakah ia memberi anda nombor? Adakah ia memberi anda rentetan?
[Missy] nombor. >> Ia adalah nombor satu.
Tetapi ia percetakan, jadi ia akan memberikan anda beberapa jenis tali.
>> Satu perkara yang kita boleh lakukan untuk menyemak ini
jika kita lakukan $ var = 1 + 2
dan kemudian kita katakan Gema gettype,
jadi kita menggunakan sejenis ketiga percetakan di sini.
Sekarang kita boleh melihat apa yang berlaku di sini.
Di sini apa yang kita telah mendapat adalah kita mendapat integer daripada ini.
Walaupun kita telah menambah rentetan ini kepada beberapa,
kita tidak mendapatkan rentetan daripada itu, seperti Missy berkata.
Kami telah mendapat integer.
Okay, jadi mari kita lihat, bersebelahan sehingga, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H.] 50. Adakah yang masuk akal?
[Kevin] Yeah.
[Nate H.] Mengapa? Mengapa ia masuk akal untuk anda?
[Kevin] Kerana ia hanya mempunyai tali, yang mempunyai nilai sifar nombor.
Ya, hebat.
Jenis situasi samar-samar, tetapi ia adalah baik untuk mengetahui apa yang berlaku.
Stella, apa yang berlaku seterusnya dengan nombor 1 + string 2?
[Stella] 3. >> 3 lagi.
Dan dalam kes ini, adakah kita mendapatkan rentetan atau nombor?
>> Mari kita memberikan ini cuba.
Sesiapa yang lebih cepat daripada saya mendapat jawapannya? Charlotte?
Oh, saya didn't-okay, mari kita lihat, kita akan melakukan perkara yang sama perkara
di mana kita telah mendapat beberapa campur rentetan, dan kita akan echo jenis,
lihat apa yang kita dapat.
Kami juga mendapat integer.
Ia tidak kira yang mana satu adalah rentetan, yang mana satu adalah nombor.
Kami masih akan mendapat integer.
Ia masih akan melakukan apa yang kita boleh harapkan.
Baiklah, jadi Sam, apa yang kira-kira 90 + 9 botol bir di dinding?
[Sam] 99. >> 99.
Tiada botol bir di dinding, walaupun.
Ia memberikan kita lebih sedikit maklumat tentang apa yang berlaku.
[Sam] Jika anda telah menulis 9 dalam surat
maka anda akan mempunyai 90, betul-betul?
[Nate H.] Yeah.
Persoalannya ialah jika kita hendak ditulis 9 sebagai N-I-N-E
kita akan mendapat 99 atau 90?
Kami ingin mendapatkan 90.
Ia benar-benar hanya mencari aksara angka.
Ia tidak bijak untuk mengiktiraf perkataan bilangan dan barangan yang. Ya.
>> [Pelajar] Adakah terdapat perkara yang sedemikian sebagai typecasting dalam PHP?
Terdapat, dan ia betul-betul cara bagaimana anda akan melakukannya dalam C.
Bagaimana kira-kira 10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H.] Yeah, jadi apa yang mungkin mengejutkan tentang perkara ini?
Apa yang akan berlaku jika anda melakukan ini jenis yang sama perkara dalam C,
jika anda lakukan 10/7 dalam C?
[Charlotte] Ia hanya akan memberikan anda bergantung kepada bagaimana anda typecasted Saya rasa
ia akan memberi anda hanya bilangan yang terhad digit selepas perpuluhan.
Ya, jadi bilangan yang terhad digit selepas perpuluhan.
Apa lagi yang mungkin akan ia memberi anda apa-apa digit selepas perpuluhan?
Selalunya tidak, jadi lagi, bergantung kepada bagaimana anda typecasting
ia boleh atau tidak boleh menukar nombor titik terapung.
Berikut adalah jenis baik bahawa ia tidak.
Kalaulah kami menunjukkan anda kembali ini apabila kita mula melakukan ini jenis barangan dalam C
ia mungkin akan membuat rasa lebih sedikit
bahawa ia tidak hanya pergi ke 1.
Dan kemudian akhirnya, Jamie, apa yang kira-kira 7 + benar?
[Jamie] 8. >> 8.
Apa maksudnya?
Saya rasa ia hanya memberikan benar nilai 1.
Yeah. Apakah yang akan berlaku jika kita menukar bahawa untuk palsu?
[Pelajar] 7.
Ya, jadi ingat di mana kita bercakap tentang nilai-nilai binari,
1 berada di, 0 menjadi luar?
Sekarang kita perlu benar adalah 1, 0 adalah palsu,
dan anda mungkin tidak melihat ini dalam contoh C yang kita lakukan semester ini yang lalu,
tetapi sejarah jenis bool dalam C tidak menjadi sejenis sebenar,
jadi orang telah menggunakan 0 dan 1 di tempat yang benar dan palsu.
Ini adalah manifestasi itu.
>> Okay, jadi salah satu bahagian penting tentang semua ini
adalah bahawa kita mempunyai jenis yang berbeza.
Mereka boleh berinteraksi antara satu sama lain.
Mereka sering boleh berinteraksi antara satu sama lain dengan cara yang baik, seperti yang kita telah melihat di sini.
Ia adalah baik untuk dapat mempunyai rentetan 1 dan nombor 2, menambah mereka bersama-sama dan mendapatkan 3.
Yang masuk akal.
Walau bagaimanapun, apabila anda menulis laman web, dan terutamanya apabila anda memproses
input pengguna, jadi katakan anda telah menulis satu bentuk web
yang mengumpul maklumat dari pengguna dan kemudian pergi untuk memproses
pada akhir belakang, di sebelah pelayan dalam kod PHP anda
jika anda menjangkakan bahawa nilai yang pengguna ditaip dan diserahkan
untuk membentuk anda untuk menjadi integer atau untuk menjadi nombor titik apung atau sesuatu seperti itu
anda perlu untuk membuang ia jelas
dan kemudian melakukan beberapa penyemakan jenis.
>> Anda tidak mahu hanya bergantung kepada sistem ini menjugel jenis untuk membuat perkara yang bekerja keluar,
terutamanya atas sebab-sebab keselamatan dan hanya untuk ketegapan laman web anda.
Hanya sesuatu yang perlu diingat bahawa apabila anda mengendalikan data borang,
apa-apa yang datang dalam jawatan itu atau pada superglobals get
pastikan bahawa anda sentiasa mengesahkannya dan menukar ia dan cuma sesuai ia.
Dan seperti kita bercakap tentang masa lalu bahawa typecasting
dalam PHP adalah sama seperti dalam C di mana anda mempunyai kurungan
dan kemudian jenis.
Menyimpan bahawa dalam fikiran.
Salah satu fungsi yang akan datang dalam berguna apabila anda lakukan ini
kita telah menggunakan dan ini adalah jenis sebagai selain-
kita telah menggunakan fungsi ini gettype di sini
untuk memikirkan jenis pembolehubah,
dan ketika ini adalah berguna untuk debugging dan untuk melihat apa jenis pembolehubah
anda tidak mahu untuk menggunakan ini, sebagai contoh, dalam keadaan di mana
anda memeriksa untuk melihat jika gettype $ var = integer melakukan sesuatu.
Ini adalah buruk, buruk, buruk.
Sebaliknya terdapat fungsi-fungsi yang dipanggil ialah integer, tali,
adalah pelbagai yang anda mahu untuk menggunakan sebaliknya, jadi dalam kes ini
apa yang saya mahu lakukan dan bukannya lelaki ini di sini
menggunakan var integer.
Dan mereka sering dirujuk adalah * is_ dalam erti kata bahawa anda boleh menggantikan * dengan integer,
tali, dan sebagainya, dan hanya untuk memastikan benar-benar cepat
ini adalah int php.
Kelihatan seperti anda boleh lakukan sama ada int atau ada ialah integer serta?
Ya, alias, begitu int alias integer.
Sejuk.
>> Bagaimana kita lakukan?
Mari kita mengambil kadar sedikit.
Sekarang kita akan bercakap tentang tatasusunan, jadi seperti yang anda boleh lihat
dalam bahagian seterusnya spesifikasi kita bercakap tentang bagaimana array dalam PHP
adalah sedikit berbeza daripada mereka berada dalam C.
Sebenarnya, mereka jenis amalgam
tatasusunan bahawa anda telah datang ke tahu dan cinta dalam C
di mana segala-galanya adalah dari jenis yang sama
berturut-turut dan contiguously disimpan dalam ingatan,
dan anda mempunyai indeks ini angka.
Anda mempunyai indeks 0, index 1, indeks 2,
dan anda menyimpan nilai pada mereka indeks.
Anda juga di C, apabila anda menulis Speller, banyak anda
melakukan pendekatan jadual hash, dan anda melihat bahawa di sana kami terpaksa
pelbagai jenis penyimpanan, di mana kita telah pemetaan
kunci kepada nilai, jadi apabila anda cuba untuk menyimpan sesuatu dalam jadual hash
anda mempunyai untuk menentukan bahawa anda mahu untuk menyimpan ia dengan kunci tertentu,
utama yang menentukan lokasi nilai dan di mana ia akan disimpan.
Anda telah jenis mendapat kedua-dua mereka konsep yang berlaku pada masa yang sama dalam pelbagai PHP,
dan hasilnya, kita sering menyeru ini array bersekutu
di mana kita mengaitkan kunci dalam nilai.
Dalam bahagian ini seterusnya kita bercakap tentang tatasusunan PHP mudah
di mana kita mempunyai kekunci a, b, dan c,
semua tali, pemetaan untuk integer 1, 2, dan 3.
Dan anda boleh mempunyai kunci jenis yang berbeza.
>> Anda boleh mempunyai beberapa kunci yang tali, beberapa kunci yang adalah integer.
Anda boleh mempunyai nilai-nilai yang jenis yang berbeza.
Anda boleh mempunyai nilai yang rentetan, nilai yang integer,
nilai itulah objek atau pelbagai yang lain, sebagai contoh,
semua objek pelbagai yang sama, yang merupakan jenis pelik.
Anda tidak perlu untuk mempunyai pelbagai yang hanya mendapat satu jenis unsur di dalamnya.
Anda boleh mempunyai banyak perkara yang berbeza berlaku di sana.
Perkara lain yang perlu diperhatikan adalah bahawa apabila anda melihat sesuatu seperti ini dalam kod anda,
yang merupakan PHP sah untuk mengisytiharkan pelbagai seperti ini, 0, 1, 2, 3, 4, 5,
yang akan mengisytiharkan dimulakan $ arr menjadi array ini.
Tetapi apa yang anda sebenarnya mendapat di bawah hood ini jenis tersirat
generasi kunci di mana kita telah mendapat 0-0, 1-1, 2-2, 3 hingga 3.
Dan ternyata bahawa walaupun anda lakukan mempunyai pelbagai seperti lelaki ini di sini
di mana anda mempunyai a, b dan c sebagai kunci
dan kemudian anda mula menggunakan kaedah array menolak untuk mula menggunakan array ini seperti timbunan,
supaya anda boleh melihat bahawa objek ini pelbagai, pelbagai ini adalah benar-benar menjadi beban.
Kita boleh menggunakan ia sebagai array. Kita boleh menggunakan ia sebagai sebuah jadual hash.
Kita boleh menggunakan ia sebagai timbunan.
Apabila anda mula menolak perkara-perkara ke array ini
perkara pertama yang anda menolak ke ini akan menjadi indeks 0 dan kemudian index 1 dan indeks 2.
Anda boleh mendapatkan ini jenis generasi tersirat kunci
melainkan anda tentukan mereka jelas.
Cara anda menentukan kunci jelas, sudah tentu, adalah dengan menggunakan tatatanda kurungan,
yang serupa dengan array kecuali bukannya hanya membenarkan
indeks integer di sini, kini kita membenarkan apa-apa.
Jika anda mahu kunci anda untuk menjadi rentetan, anda akan menentukan ia seperti ini.
Jika anda mahu ia menjadi satu int, anda tentukan dengan int yang anda mahu gunakan.
>> Soalan bahawa setakat ini?
Salah satu perkara yang baik mengenai idea ini
adalah bahawa anda hanya boleh mempunyai satu nilai yang disimpan dengan kunci tertentu.
Jika kita kembali kepada kami perkakas-mari saya padam beberapa barangan ini.
Dan mari kita katakan saya memulakan pelbagai untuk menjadi 0, 1, 2, dilakukan.
Jika saya kini tahu bahawa, sebagai contoh, jika saya echo $ arr [0]
Saya akan mendapatkan 0 nilai yang dicetak keluar,
dan sejak ada boleh hanya pernah menjadi salah satu nilai yang disimpan untuk kunci tertentu
jika saya menyimpan sesuatu pada $ arr [0], mengatakan,
maka saya tahu apabila saya echo $ arr [0] sekali lagi
Saya tidak akan untuk mendapatkan 0 dicetak seperti sebelum ini.
Saya hanya akan mendapat.
Jadi ini pada dasarnya mengatakan bahawa saya tidak boleh mempunyai $ arr [0] menyimpan 2 nilai-nilai yang berbeza.
Ia tidak boleh menyimpan kedua-dua 0 dan rentetan, seperti ini benar-benar menggantikan
apa yang berada di $ arr [0] sebelumnya.
Sebab saya membawa sehingga ini menjalankan ia, lihat apa yang berlaku.
Lihat di sini bahawa saya mendapat 0 dicetak dan kemudian turun di sini.
Tiada baris baru di sana kerana saya adalah malas dan tidak meletakkan bahawa masuk
Apa yang sejuk kira-kira ini adalah kita boleh gunakan ini sebagai satu cara
untuk menangkap idea ini set
di mana kita tidak boleh mempunyai kunci berganda dalam array.
Kita tidak boleh mempunyai kunci yang sama dalam array.
Saya tidak boleh mempunyai 0 utama dan nilai 1 dan 0 utama dan nilai
atau 0 utama dan nilai sebenar.
Kekunci semua ada hanya 1 utama dalam array.
Walaupun anda boleh mempunyai nilai yang sama yang disimpan
beberapa kali dalam array bawah kunci yang berbeza
ia tidak mustahil untuk mempunyai kunci yang sama beberapa kali dalam pelbagai PHP anda.
>> Jika kita melihat masalah ini seterusnya, unique.php,
di mana kita mahu membuka fail PHP
mengandungi senarai rentetan, satu rentetan setiap baris,
dan kita mahu untuk mencari semua rentetan yang unik dalam fail yang
semua yang perlu kita lakukan adalah menggunakan salah satu tatasusunan PHP
dan menggunakan tali dalam fail sebagai kunci kepada pelbagai ini
dan menyimpan mengemaskini pelbagai kami kerana kami menyimpan kekunci ini baru.
Seperti yang kita baca setiap baris fail kita boleh menyimpan dalam array,
dan pada akhir kita akan mempunyai sebagai kunci kami dalam pelbagai kami
semua rentetan unik dalam fail.
Adakah yang masuk akal?
Mari kita lihat bagaimana kerja-kerja ini.
Kami akan membuka, mengikut spesifikasi, fail baru yang dipanggil unique.php.
Buka. Alamak, maaf, fail baru.
Kami akan bermula dengan tag permulaan dan akhir yang sama.
Kami akan menyimpannya dalam seksyen 9, dan kita akan memanggil ia unique.php.
Okay, sekarang zum masuk
Idea di sini adalah membuka fail,
membaca file selaras dengan garis.
Bagi setiap baris dalam fail
kita akan mempunyai array di mana kita mempunyai
garis sebagai kunci kami.
Dan kemudian apabila kita sampai ke akhir di sini
Kunci $ arr garis unik
dari fail kerana kita tahu bahawa jika saya meletakkan garis ke dalam array ini
beberapa kali ia hanya akan menyimpan mengatasi nilai lama,
dan kita sebenarnya boleh meletakkan garis pelbagai seperti dirinya seperti itu.
>> Ini adalah jenis pelik.
Kami menyimpan sepasang nilai yang sama penting lebih dan lebih dan lebih lagi,
tetapi sejak kita dijamin bahawa akan ada hanya 1 utama dipanggil garis
jadi jika kita mempunyai fail yang mengatakan fail bunyi haiwan dan ia mempunyai CBC, CBC,
Meow, Meow, moo, moo, dan setiap kali kita membaca bunyi haiwan keluar
seperti CBC dan kita menyimpannya dalam pelbagai kami, kami mendapat CBC, dan kemudian kali kedua
kami menyimpan CBC ia akan menimpa kali pertama bahawa kita disimpan.
Pada akhirnya kita hanya akan mempunyai satu catatan dalam array
bagi setiap bunyi haiwan dalam fail bunyi haiwan kami.
Adakah anda semua berasa yakin bahawa anda boleh menangani pembukaan fail dalam PHP?
Salah satu cara untuk melakukannya-mari kita pergi melalui cara ini cepat-satu untuk melakukannya
dengan fopen, seperti yang kita lihat sebelum ini.
Anda boleh fopen some_file.txt.
Anda bisa buka di dalam mod membaca, seperti dalam C.
Itulah salah satu cara yang sempurna baik untuk melakukannya.
Anda juga maka untuk membaca dalam garis fail demi baris
mempunyai fungsi yang sama, ramai di antara mereka, yang anda telah lakukan dalam C.
Anda mempunyai fgets.
Anda mempunyai feof, walaupun kita tidak suka menggunakan yang
kerana, ingat, yang tidak besar dalam C.
Anda boleh melakukannya dengan cara yang sama,
tetapi di sini adalah satu perkara yang benar-benar sejuk.
Maaf, saya tidak mahu lakukan $ file, tetapi terdapat fungsi dipanggil fail dalam PHP,
dan fungsi ini di sini adalah sejuk kerana ia membaca keseluruhan kandungan
fail yang anda tetapkan, jadi some_file.txt,
membaca keseluruhan kandungan fail ini ke dalam array
dan kemudian membolehkan anda melelar ke atasnya, yang cukup bagus.
>> Jika kita pergi, sebagai contoh, kepada pelayar web kami
dan kita melihat Google untuk fail PHP
anda boleh lihat di sini bahawa pengguna kami mengatakan fail yang membaca seluruh fail ke array,
dan kita boleh file_get_contents untuk kembali kandungan fail sebagai rentetan,
tetapi biasanya hanya mendapat ia sebagai array adalah benar-benar baik kerana apa yang ia
ia pecah ia sehingga supaya setiap elemen
dalam array adalah salah satu garis fail,
jadi jika kita melihat pada 0 fail, itulah baris pertama fail.
Fail 1, baris kedua, Fail 2, ketiga baris, dan sebagainya dan sebagainya.
Ia tidak akan menjadi baik jika itu semua anda terpaksa lakukan dalam C?
Cukup bagus.
David menunjukkan ini dalam kuliah, dan ungkapan beliau menunjukkan
bahawa di samping kepada standard kami untuk gelung-dalam PHP kita terpaksa
($ i = 0; i <10; i + +),
dan anda boleh melakukan ini dalam PHP juga, perkara yang sama-
kita juga mempunyai ini membina sejuk dipanggil foreach.
Foreach adalah benar-benar berguna apabila iterating atas tatasusunan atau struktur data
kerana ia membolehkan anda untuk tarik keluar setiap elemen array
tanpa perlu untuk manual melakukan pengindeksan sendiri,
tanpa perlu manual mewujudkan pembolehubah indeks, kenaikan ia,
tarik keluar nilai dalam array pada ketika itu, kerana itulah satu perkara yang sangat biasa lakukan.
>> Anda mungkin telah dilakukan bahawa tan kali apabila anda telah melakukan barangan C
sepanjang semester, jadi dengan ini foreach
kita boleh gelung lebih pelbagai fail ini,
dan sintaksis adalah bahawa kita mahu gelung kini lebih pelbagai ini
dan menyatakan bahawa pembolehubah yang kita akan gunakan untuk menyimpan
elemen array ini tempatan, tempatan untuk skop gelung foreach ini,
kita akan memanggilnya garis.
Jika ia merupakan satu fail perkataan sahaja dan ada satu perkataan dalam satu barisan
kita boleh memanggil ia perkataan juga, benar-benar hanya anda memberikan nama ini,
apa sahaja yang anda mahu panggil ia,
dan kemudian di dalam gelung anda boleh melakukan apa sahaja yang anda mahu dengan baris ini berubah-ubah.
Jika ia tidak cukup untuk mendapatkan nilai array dan anda juga mahu mendapatkan
indeks bersama-sama dengan ia anda boleh menentukan nama bagi indeks
serta nilai, dan kini anda mempunyai akses kepada 2 pembolehubah.
Anda mempunyai $ i dan garis
mana $ i ialah indeks dalam array,
dan garis adalah garis yang anda diambil dari fail.
Sebagai contoh, jika kita mahu untuk mencetak echo line 0 fail seperti ini,
kita boleh melakukannya seperti ini, "Baris $ i fail adalah $ talian,"
dan di sini adalah sesuatu yang kita juga tidak pernah melihat lagi sama ada
di mana saya hanya benar-benar dilangkau lebih keseluruhan ini% s% d perniagaan
bahawa kita terpaksa berurusan dengan dalam C, dan sebaliknya saya telah pergi terus ke
menulis pembolehubah selaras dalam rentetan saya.
>> Ini dipanggil interpolasi yang berubah-ubah, tali interpolasi
mana anda pemadat pembolehubah yang betul, dan jurubahasa PHP
cukup pintar apabila ia membaca melalui rentetan yang bermula dengan dua petikan-
tidak petikan tunggal, dengan rentetan dipetik tunggal anda tidak boleh melakukan ini-
tetapi dengan tali yang dipetik kembar yang ia membaca melalui ia mencari pembolehubah.
Ia memburu mereka ke bawah, dan jika ia melihat pembolehubah ia akan mengambil nilai pembolehubah
dan barangan ke dalam tali jika ia boleh menukar ia ke dalam perwakilan rentetan,
yang cukup bagus.
Untuk sekarang, mari kita mengulas keluar rehat daripada segala-galanya,
menyimpan ini, dan apa yang boleh kita lakukan sekarang adalah kita boleh membuka fail
bahawa kita boleh memanggil some_file.txt-mari mencipta fail baru
dan kita boleh dimasukkan ke dalam sekumpulan barangan karut di sini hanya untuk menguji semua keluar,
simpan, hubungi ia some_file.txt, seperti yang saya lakukan di sini di atas,
dan sekarang jika saya mengezum keluar hanya untuk memastikan segala-galanya adalah dalam sama direktori-
ia kelihatan seperti saya mempunyai unique.php dan some_file.txt dalam direktori yang sama.
Jika saya menjalankan unique.php php
lihat bagaimana ia mencetak keluar setiap baris dalam fail saya dan apa garisan?
>> Itu cukup kuat, betul-betul?
Lihat, ia mengambil masa 3 baris kod untuk membuka fail.
Nah, 4 baris kod. Saya tidak boleh dikira hari ini, jelas.
Tetapi benar-benar hanya 2 baris menarik kod, kerana 2 yang lain adalah pendakap kerinting,
tetapi dalam kod ini banyak kita dapat membuka fail, melelar melaluinya,
tarik keluar nombor garis dan garis sendiri
dan mencetak ia keluar.
Barangan sejuk. Charlotte.
[Charlotte] Saya mempunyai soalan tentang sintaks.
Jadi foreach tawaran dengan setiap baris tunggal fail yang anda buka,
dan kemudian apabila anda mahu melakukan perkara-perkara dengan setiap baris tunggal anda hanya melakukan ia sebagai
dan kemudian mengaitkan nilai.
[Nate H.] Apa yang boleh anda lakukan di sini-soalan adalah
foreach mempunyai kaitan dengan array, jadi sintaks foreach
adalah benar-benar foreach, dan notis bahawa terdapat ruang tidak
atau apa-apa antara dan setiap.
Mereka mempunyai untuk pergi betul-betul bersebelahan antara satu sama lain,
dan kemudian ia mengambil masa dalam array,
dan kemudian anda mempunyai kata kunci lain yang dipanggil sebagai yang telah berada di situ,
dan kemudian selepas itu sebagai sama ada anda boleh meletakkan satu nama yang berubah-ubah,
di mana anda akan menarik keluar nilai array,
bukan indeks, atau jika anda melakukannya kerana kita telah ditulis di bawah
anda mendapat kunci dan nilai-nilai.
Anda mempunyai elemen foreach array atau sepasang array dimasukkan kepada nilai
atau hanya sebagai nilai.
Bergantung kepada apa yang anda perlukan, jika anda tidak perlu kunci,
maka anda boleh pergi dengan nilai.
Jika anda mahu kunci anda boleh pergi dengan mereka juga.
>> [Charlotte] Saya juga menyedari bahawa kami tidak pernah mengisytiharkan i atau talian.
Bagaimana ia tahu apa yang mereka?
[Nate H.] Apa yang kamu maksudkan dengan mengisytiharkan?
[Charlotte] Kami tidak pernah memberitahu mereka apa yang i atau talian cara.
[Nate H.] Kami tidak pernah memberitahu komputer apa yang saya atau talian bermakna dari segi-
[Charlotte] Bahawa mereka sedang diindeks atau bahawa they're-
[Nate H.] Kami tidak pernah memberitahu bahawa ini adalah sepatutnya menjadi indeks atau kunci dan nilai,
dan itulah kerana itulah jurubahasa PHP.
Ini berfungsi sebagai perisytiharan itu dan berkata okay, kunci akan menjadi
pembolehubah yang dipanggil i disimpan dalam pembolehubah yang dipanggil i.
Nilai tersebut akan disimpan di dalam garis ubah dipanggil,
jadi ini berfungsi sebagai pengisytiharan pembolehubah ini
dan mengatakan $ i adalah kunci, dan $ talian adalah nilai.
Ya, Ella.
[Ella] Jika kunci tidak dilakukan berangka
bagaimana ia memutuskan apakah perintah ia akan mencetak segala-galanya?
Adakah ia hanya seperti perintah yang ia dimasukkan ke dalam?
[Nate H.] Mari kita mencuba.
Mari kita mewujudkan pemboleh ubah yang dipanggil arr,
dan boleh kita lakukan pergi ke 7.
Katakan 0 pergi kepada pelbagai lain dengan 1, 2, atau epal.
Mari kita mengatakan 7 pergi ke 1, b pergi ke 2,
dan 3 pergi hingga 4.
Ini adalah jenis contoh gila mencari kerana kita mencampurkan sehingga
rentetan dan integer seluruh tempat.
Tiada perintah yang sebenar kepada pelbagai ini.
Maksud saya, kita boleh memerintahkan segala-galanya dalam susunan abjad oleh kunci.
Kita boleh memerintahkan segala-galanya abjad oleh nilai.
>> Kita boleh cuba dan mengambil kira bahawa beberapa rentetan, beberapa ints,
dan kita boleh cuba dan menukar mereka semua jenis yang sama dan melihat apa yang berlaku,
atau kita boleh menganggap mereka dalam nilai di mana kita sudah memasuki mereka
di mana kita meletakkan lelaki ini dalam pertama, lelaki ini di tempat kedua, lelaki ini di tempat ketiga,
lelaki ini dalam keempat, dan sebagainya et.
Mari kita lihat apa yang berlaku apabila kita menjalankan kod ini.
Jika kita tatal ke bawah dan melakukan perkara yang sama perkara,
dan di sini ia bukan mencetak barisan baru.
Apabila ia membaca perkara keluar fail ia termasuk barisan baru dalam nilai,
yang mengapa ia dicetak dengan baik, sedangkan di sini ia tidak,
jadi itulah mengapa segala-galanya smushed bersama-sama.
Mari kita tambahkan baris yang baru hanya untuk membuat perkara-perkara yang baik.
Mari kita jalankan lagi ia, dan sebagainya di sini
melihat apa yang berlaku.
Ia dicetak segala-galanya dalam perintah itu di mana kita meletakkan ia ke dalam array.
Ia tidak memelihara perintah dalam erti kata itu.
>> Akan kembali kepada masalah ini unik
di mana kita mahu menjadi mampu untuk melelar lebih fail,
dan kami akan memberikan some_file.txt,
dan kita pergi untuk melelar lebih seperti ini.
Kami berkata bahawa kita mahu menggunakan array untuk memastikan bahawa kita akan mendapat semua
garis unik keluar dari sana, dan kita boleh melakukan yang benar-benar mudah
dengan hanya menyimpan dalam pelbagai bahawa kita sudah tentu mengisytiharkan luar skop gelung,
dan kita berkata bahawa jika kita menggunakan baris dalam fail sebagai kunci dalam pelbagai kami
jika kita memasuki garis pendua kita akan mengatasi nilai sebelumnya.
Ia tidak pernah mustahil untuk mempunyai 2 kunci yang sama dalam pelbagai sama.
Kita boleh berbuat demikian.
Kami akan menghilangkan kenyataan echo ini di sini.
Di sini kita menyimpan baris dalam fail dalam pelbagai kami
menggunakan dirinya sebagai kunci.
Tiada apa-apa kepadanya, dan ia ternyata bahawa kita tidak perlu kunci ini.
Kita tidak perlu bahawa saya berubah-ubah.
Pada ketika ini, jika kita adalah untuk melakukan satu lagi gelung foreach
dan kita gelung lebih arr setiap
dan garis kini jika kita echo-oops, maaf.
Kita tidak boleh menggunakan koma. Kita perlu menggunakan ini sebagai kata kunci.
Sekarang jika kita echo garis kita harus mendapatkan semua perkataan yang unik dalam fail.
Jika kita pergi sehingga some_file.txt,
dan katakan kita lakukan epal, pisang, epal, epal, pisang,
jika kita sedang mencetak semua perkataan yang unik dalam fail ini kita hanya perlu mendapatkan
epal dan pisang untuk mencetak.
Jika kita menyimpan ini, sekarang di sini kita akan zoom kembali dalam,
unique.php php, dan ta-da.
Kami telah berjaya uniqued fail.
>> Bahagian akhir masalah ini meminta anda untuk menyelesaikan pelbagai ini sebelum anda dicetak keluar
kerana dalam contoh mudah ini bahawa kita baru sahaja dilakukan
kita bernasib baik dalam erti kata bahawa fail
kita lakukan ini contoh yang tersusun dengan epal dan pisang.
Ia telah disusun.
Tetapi menggunakan fungsi apapun yang mudah anda boleh menyusun pelbagai, yang cukup bagus.
Perkara terakhir yang saya mahu bercakap dengan anda semua tentang benar-benar cepat
adalah bahawa ini jenis PHP adalah semua baik dan baik, dan ia sangat berguna
untuk tahu bagaimana untuk melakukannya jika anda pernah perlu untuk melakukan sedikit, perkara yang cepat programatik.
Sebagai contoh, jika saya perlu untuk menulis program itu, berkata,
meletakkan semua orang kepada bahagian-bahagian yang saya tidak akan pergi dan menulis di C.
Ia akan menjadi panjang.
Ia akan menjadi jenis sakit, terutamanya jika terdapat fail yang terlibat,
hanya kerana anda semua telah dilihat.
Ia begitu baik bahawa hanya dengan kod ini banyak di sini
kita mampu untuk merobek melalui fail, tarik keluar semua nilai-nilai yang unik
dan mencetak mereka keluar.
>> Walau bagaimanapun, bagi tugasan anda, untuk projek-projek anda,
jika anda membina laman web dengan PHP kuasa adalah bahawa
kita menjalankan fail PHP kita melalui penterjemah ini,
dan jurubahasa memproses segala-galanya di dalam tag PHP,
meninggalkan segala-galanya tidak disentuh dan meludah keluar keputusan.
Kita boleh melakukan ini untuk membina HTML programatik.
Sekarang, jika kita kembali kepada spesifikasi, masalah terakhir dalam spesifikasi
bercakap tentang idea ini kepekatan
dan mewujudkan menu drop-down,
yang anda mungkin atau mungkin tidak mahu lakukan, bergantung kepada apa projek akhir anda lakukan,
yang membolehkan pengguna untuk memilih dari senarai semua kepekatan yang mungkin
kepekatan mereka.
Sekarang, ini adalah jenis sakit untuk menaip keluar ini
dan perlu melakukan semua ini secara manual, terutama apabila anda perlu memastikan
bahawa anda mempunyai semua kurungan sudut di tempat yang betul dan semua petikan di tempat yang betul,
jadi dengan PHP, anda boleh melakukan ini programatik, dan anda boleh melakukan ini benar-benar cepat.
>> Mari kita lihat bagaimana untuk melakukan ini.
Kami akan membuka fail baru.
Kami akan meletakkan dalam tags PHP kita.
Kami akan memanggilnya concentrations.php,
dan kini apabila anda melakukan ini, jenis perkara yang baik untuk berfikir tentang
apabila anda cuba untuk campuran dan perlawanan PHP dan HTML anda
memikirkan, okay, apakah bahagian yang saya mahu programatik menjana?
Apakah bahagian yang saya programatik boleh menjana?
Ia adalah benar bahawa anda boleh melakukan semua HTML anda
di dalam blok PHP.
Anda boleh echo semua HTML sebagai rentetan.
Sebagai contoh, jika saya mahu mula melakukan tag pilih dalam PHP
Yang boleh saya katakan gema, mengatakan pilih nama kepekatan =,
dan kemudian turun di bawah saya boleh mempunyai satu lagi tag gema
atau gema lain dipanggil menutup pilih.
Ini adalah satu cara untuk melakukannya kerana apa ini benar-benar akan melakukan
mencetak rentetan ini apabila ia berjalan melalui jurubahasa PHP,
jadi hasilnya akan HTML.
Jika saya simpan fail ini kerana ia adalah sekarang
dan saya menjalankan concentrations.php php
melihat apa yang saya dapat.
Saya mendapat tag ini terbuka pilih dekat.
>> Jika saya adalah untuk melakukan ini dan saya adalah untuk menyelamatkan keputusan ini ke fail,
berkata, concentrations.html-tunggu, ia kelihatan seperti l telah pergi ke sampingan yang lain-
kini jika saya membuka sini concentrations.html anda lihat saya mempunyai fail HTML yang sah.
Adakah yang jenis pelik?
Kami menggunakan PHP untuk mencipta HTML, mewujudkan HTML yang sah.
Cara kita lakukan ialah kita hanya mempunyai cetakan PHP
HTML yang kita mahu ia untuk mencetak.
Ini adalah benar-benar bagaimana laman web PHP bekerja.
Apabila anda melawat sebuah laman web yang menghantar anda kepada sesuatu seperti
sesuatu, sesuatu, sesuatu dot com slash index.php
komputer benar-benar memanggil index.php,
berjalan melalui jurubahasa PHP, dan apa-apa sampah keluar
ia menghantar kembali ke penyemak imbas dan berkata hey, pelayar, mentafsirkan ini sebagai HTML.
Perkara yang baik adalah bahawa ia boleh menjadi sakit untuk sentiasa menulis echo, echo, echo, echo
dan sertakan segala-galanya dalam petikan seperti ini, jadi jika anda mahu menulis
HTML yang akan menjadi statik diri anda boleh melakukannya seperti ini,
meletakkan ia di luar, tutup,
dan kemudian di sini anda hanya diletakkan di dalam tag PHP yang anda tahu
anda mahu programatik menjana, dan dalam kes ini ia adalah orang-orang tags pilihan
yang sakit untuk menjana.
>> Sebagai contoh, kita boleh menjana tags pilihan seribu
dengan melakukan sesuatu seperti ini, $ i <1000, i + +
dan berkata nilai pilihan echo = $-Oop, saya tidak boleh berbuat demikian.
Nah, mari kita mencubanya dan lihat apa yang berlaku.
$ I dan kemudian mengatakan $ i </ pilihan.
Bukannya perlu menaip bahawa tag pilihan seribu kali yang berbeza
Saya menggunakan kod PHP untuk menjana secara automatik, programatik.
Jenis bagus. Yeah.
Saya ingat ini disebut sama ada dalam ceramah atau Walkthrough,
tetapi apa perbezaan antara tanda petikan,
orang-orang yang normal dan perkara-perkara yang tunggal?
Itulah sebenarnya sesuatu yang saya lakukan salah di sini bahawa saya akan menunjukkan kepada anda.
Petikan tunggal tidak membenarkan mana-mana aksara khas,
jadi segala-galanya di dalam rentetan tunggal yang dipetik ditafsirkan secara literal.
Jika saya terpaksa \ n dalam petikan tunggal dan saya menyimpan ini, sebagai contoh,
dan sekarang saya pergi ke sini dan jalankan ia-
oops, di mana saya hendak pergi?
Oh, ia kerana saya terlupa $.
>> Sekarang, jika saya membuka sebenarnya, di sini, kita akan menyingkirkan menaip ia ke fail.
Kami hanya akan membaca.
Di sini anda melihat bahawa saya telah mendapat ini literal \ n dalam string, seperti tidak sejajar baru yang sebenar,
dan begitu juga, bukan sebenarnya penentudalaman nilai ini berubah-ubah
ia memberikan saya $ i sendiri, yang merupakan jenis sakit.
Cara sekitar ini adalah untuk menggunakan tanda petikan berganda,
dan kemudian apabila anda menggunakan tanda petikan berganda ia akan sebenarnya
betul menyisipkan nilai-nilai semua pembolehubah ini di sini
dan juga mengiktiraf ini \ n untuk menjadi barisan baru bahawa ia adalah
dan tidak \ n.
Menggunakan yang tunggal adalah baik apabila anda mempunyai
watak-watak yang mungkin ditafsirkan sebagai aksara khas kerana maka anda tidak perlu
melarikan diri mereka sentiasa.
Perkara yang boleh mendapatkan kotor, dan sering cara yang saya lakukan,
hanya untuk membuat perkara yang mudah, adalah bahawa jika saya akan mempunyai apa-apa
HTML seperti dalam kod saya saya akan termasuk edit dalam petikan tunggal
dan kemudian menggunakan pengendali dinamika
untuk menyatukan pembolehubah masuk
Ini adalah satu lagi cara melakukannya
di mana kita telah mendapat titik yang akan menyambung ini adalah rentetan
dengan ini dengan ini dengan ini,
dan sekarang saya tidak perlu untuk melarikan diri ini petikan berganda.
Saya tidak mempunyai untuk menggunakan lelaki ini untuk melarikan diri.
Mereka benar-benar akan dicetak sebagai tanda petikan berganda dan kemudian lelaki ini di sini.
Ini merupakan satu lagi cara mencampurkan semua bersama-sama.
>> [Pelajar] Juga, apabila anda bergema gettype terdapat tiada tanda petikan pada semua.
Betul, jadi echo adalah jenis yang istimewa dalam erti kata bahawa anda tidak perlu kurungan.
Anda tidak perlu mempunyai sebutharga menandakan semestinya sekitar pembolehubah,
seperti ia adalah sah untuk mengatakan echo $ i, dan ia akan mentafsirkan ini sebagai rentetan.
Ia akan melakukan pelakon, jadi kita boleh melakukan ini, dan itulah sah juga, tetapi kita tidak memerlukannya.
Ia adalah pilihan.
Dalam set masalah minggu ini melihat keluar untuk banyak jenis ini barangan
di mana anda pergaulan dan padanan HTML dengan PHP
seperti ini, dan sekarang jika kita skrol kembali dan kami menjalankan ini
kita dapat melihat bahawa kita mempunyai sekumpulan keseluruhan nilai opsyen
yang hanya mendapat dicetak.
Kami mempunyai semua ini HTML yang mendapat dihasilkan benar-benar cepat untuk kita.
Saya akan meninggalkan ia sebagai latihan.
Ia adalah sangat serupa dengan membaca fail yang kita lakukan sebelum ini.
>> Terdapat fail concentrations.txt yang anda boleh tarik turun dari CDN,
dan anda boleh membukanya menggunakan helah yang sama foreach yang kita lakukan sebelum ini,
dan foreach anda hanya perlu echo satu pilihan dan plug dalam
nilai-nilai yang sesuai, kunci yang sesuai dan indeks,
dan kemudian anda mendapatkan drop down yang benar-benar mencipta
programatik untuk anda semua kepekatan yang berbeza di Harvard.
Satu perkara yang berguna untuk memiliki.
Terdapat banyak barangan tatarajah bagi tugasan ini.
Jika anda telah tidak dilakukan ia sudah mengambil setengah jam seterusnya, jam,
sedikit masa malam pasti pasti,
berjalan melalui spec set masalah,
lihat apa yang berlaku dengan menubuhkan vhosts, tuan rumah tempatan, semua barangan itu.
Salah satu perkara yang menunjukkan sekarang adalah bahawa
dalam set masalah yang paling kita telah pergi ke dalam folder Dropbox anda
dan kemudian memuat turun fail zip set masalah dan unzipping ia.
Untuk set masalah ini anda tidak mahu.
Anda mahu pergi ke dalam direktori vhosts ini.
Anda akan mahu pergi ke vhosts dan pergi ke dalam direktori tuan rumah tempatan di dalamnya,
dan ini adalah di mana anda akan mahu untuk merobohkan fail zip,
unzip, dan bersedia untuk pergi.
Anda akan perlu mengikuti langkah-langkah rapat.
>> Jika anda mempunyai sebarang soalan, menghantar e-mel, pos Bincangkan, datang waktu pejabat.
Thanks guys. Minggu depan kita akan mempunyai sesi kajian untuk kuiz.
Nikmati set masalah terakhir anda. Saya berharap ia semua pergi benar-benar baik.
[CS50.TV]