Doug LLOYD: Yani biz ettik C çok iş yapmış, ve C gerçekten serin dil size verir çünkü Gerçekten dalış yeteneği programlarınızı düşük seviyede. Biz şeyler yapmak olsun manipüle gerçekten dakika bellek bireysel bayt. Gerçekten değineği Geri Çağırma bize bu esneklik sağlar. Ama biz her zaman olması gerekiyor ayrıntı bu ince taneli seviyesi Bizim programlarda? Muhtemelen değil, değil mi? Ve biz gidiyoruz olmak arasında bir trade-off Gerçekten, gerçekten yapmak mümkün dakika şeyler ve gerçekten Biz düşünmek zorunda değilsiniz büyük şeyler hakkında biz uygulamak zorunda değilsiniz Bu gerçekten büyük fikirler eğer onlar zaten bizim için inşa ediyoruz genellikle büyük bina için programlar veya büyük projeler, biz muhtemelen tarafında err için gidiyoruz Daha fazla dil şeyler inşa sahip Bizim için, yerine sahip Düşük seviyeli şeyler. PHP gerçekten devreye giriyor Ve bu. Şimdi, nedenlerinden biri Biz CS50 PHP öğretmek olduğunu o ağır esinlenerek oluyor ki C. Ve aslında, benim görüşüme göre, iki gerçekten vardır progenitör dilleri bu günümüzde çok yaygındır. C ve LISP. Ve onlar progenitör dilleri konum Her diğer modern programlama çünkü geliştirdiği dil O zamandan beri ilham Bir ya da diğer sözdizimsel tarafından. PHP sözdizimsel çok benzer C Şema gibi dillerde ise örneğin, bu Eğer duymuş olabilirsiniz ağır bir dille esinlenerek eski bir dildir denilen LISP. Biz öğretmek nedeni So CS50 PHP, yani temelde olarak C bilerek Bu noktada yaptığımız gibi, Eğer verir toplayıp PHP, çok daha yüksek seviyeli şeyler yapmak yeteneği C yok daha, değil, bu engel çok, Zaten var çünkü sözdizimi temel fikir. C neredeyse civarında olmuştur Bu noktada 45 yıl. PHP yaklaşık 20 yıldır civarında olmuştur. Ve bu 25 yıl içinde , programcılar arasında belirlenen onlar kadar verecek daha doğrusu, üst düzey yetenekleri var ve hatalar ve mücadeleler arasında 20 yıllık PHP ve diğer modern dillere yol açtı. PHP'nin büyük bir seçim yazılım için dil için allow-- o Seni ki- yazılım bu şeyler yapmak gerek C aslında karmaşıktır. Yani, örneğin, çalışma C dizeler Çünkü, çok karmaşık Bildiğimiz gibi, C dizeleri Gerçekten karakter sadece diziler bulunmaktadır. Bu yerleşik bir veri türü değildir. Ya da belki daha da önemlisi, biz bile C kapağı yoktu bir şey, Yapmanız gereken ne olur Bazı bilgisayar ağ? Pekala? C bunu yapmak yeteneğine sahiptir, ama o kadar var gizemli ve aslında yapmak çok zor. O takdirde hoş olmaz mıydı dil yerleşik, kolay bir yol vardı ağ uygulamak? Ve PHP yapar bir dildir, ya da, bu biraz daha kolaylaştırır. Dediğim gibi, PHP çok ağır ilham olduğunu C. sözdizimi çok benzer. Ve bu yüzden umarım yapmak gerekir birinden diğerine geçişi Bazı biraz daha yumuşak diğer diller olabilir. PHP yazmaya başlamak için, sadece açmak .php dosya uzantısına sahip bir dosya. Teknik olarak bu değildir Aslında gerekli ama sözdizimi gibi şeyler istiyorsanız bu tür böylece, IDE vurgulayarak adları veya değişken isimleri, fonksiyonlar, Eğer dilin kelimeleri biliyorum Bir vurgulanır Belirli renk, genellikle ile dosyalarınızı isim istiyorum Belirli bir dosya uzantısı. Yani biz bir php ile dosya adında ettik uzatma, ama sonra da PHP ile biz yazmak tüm PHP kodu Dosya bu PHP içine alınması gerekir Gördüğümüz sınırlayıcı Burada ekranda. Açılı ayraç? Php başlatın. Sonra bizim PHP'nin tüm bilgileri Biz arasında istediğiniz kodu. Ve daha sonra ? açılı ayraç kapatın. Bu, o zaman yapmazsanız ne olacak? Bu çökmesine gitmiyor. Bu gitmiyor Gerçekten bizim programı berbat. Ama sahip gitmiyor İstediğimiz etkisi. Ne olacak Ne gerçekten, biz denemek ve bu programı çalıştırdığınızda o, her şey değil bu ayraçları arasındaki kelimesi kelimesine dışarı basılabilir gidiyor. Bu gitmiyor Aslında kod yürütmesine, o gidiyor sadece kelimesi kelimesine çıktısını. Şimdi neden böyledir? Yani C bilinen şeydir derlenmiş bir dil olarak. Muhtemelen aşina Programlarınızı yapma aşaması, .c dosya ve .h dosyaları dönüm make tek bir yürütülebilir, Özellikle kullanılarak Bizim derleyici olarak tınlamak. PHP olsa da, yok Bu eşdeğeri vardır. PHP bir denir ne yorumlanmış dil. Ve bu ne anlama geliyor? Eh, biz dönüştürmek zorunda kalmazsınız birler ve sıfırlar bizim kaynak kodu önceden. Aksine, bir program var, bu da adlandırılır PHP ve PHP anlar, sıralama anında yapabilirsiniz. Yani, gerçekten tam doğru değil ama oldukça iyi bir benzetme var arasında neler. Bu, bu yorumlama var anında sıfır ve olanları. Ve eğer öyleyse o bilmiyor nasıl bir şey işlemek için, o bilmiyorsa nasıl süreç PHP, muhtemelen Doğru, orada o metni koymak istedi? Muhtemelen kod koymak istedim Orada, o PHP-- arasında olmasa bile PHP sınırlayıcı. Ama-- yüzden gitmiyor Sizin için silmek için, sadece temelde atmak oluyor. Yani yazdırmak için gidiyor ekrana dışarı. Kötü bir gibi görünüyor bu şey, ama aslında var Gerçekten olacak İyi bir şey, biz olacak şekilde biz hakkında konuşmak ne zaman bakın PHP web geliştirme, bu demektir, çünkü biz PHP ve HTML serpmek. Biz onları bir arada kullanabilirsiniz daha dinamik bir web sayfası oluşturmak. Ama o daha PHP web geliştirme video. Yani PHP sözdizimi nedir? İşte bu videoyu tüm hakkında ne olduğunu. Bunun hakkında konuşalım. Yani, değişkenler başlatmak için. PHP değişkenleri vardır. Sadece büyük iki Var C arasında farklar İlk var olduğunu Hiçbir tür belirteci. Biz, int söylemek zorunda değilsiniz Char, şamandıra, tüm bu şeyler. Biz artık bunu yapmak zorunda değilsiniz. PHP modern bir dildir. Bu sen anlamaya olabilir yapmak ya da en iyi yapmaya çalışıyorum Yapmanız çalıştığınız ne olduğu sanırım. Yani oldukça güzel. Başka bir şey, tüm değişken olduğunu isimleri dolar işareti ile başlamak zorunda. Bu alışmak bir şey. Çünkü, biraz garip PHP anlayabiliyorum böylece var ne bir değişken olduğunu ve ne değildir. Böylece her Değişken adı Bir dolar işareti ile başlar. Yani C biz bir şey diyebilirsiniz Bu gibi int x = 54. Biz PHP artık bunu yapmak zorunda değilsiniz. Biz sadece x = 54 $ söyleyebiliriz. Ve biz C, örneğin söyleyebiliriz, Biz CS50 .H pound-dahil olsaydı başlık dosyası, biz söyleyebiliriz Dize ifade = "Bu CS50 olduğunu." Biz gerçi, PHP bunu yapmak zorunda değilsiniz. Biz sadece $ ifade söyleyebiliriz = "Bu CS50 olduğunu." Ve aslında, dize artık PHP yerleşik bir veri türü, ya da daha doğrusu PHP anlar bir dize nedir. Bir diziden ayrı var karakter C'DE gibi Tüm favori C koşullu ifadeler Hala kullanmak için kullanılabilir. Yani orada hiçbir büyük bir geçiş. Biz olabilir say-- olabilir Böyle ifadeleri. $ y 43 ise ya $ z = 15. Yani oldukça basittir. Biz if ve else olabilir. Biz eğer ve else if olabilir. Ve bir şey fark Oldukça burada güzel ve bu Bunlardan biri tür C, haber karşısında PHP avantajları hangi işlevi burada kullanacağınız değil mi? Biz karşılaştırmak için == kullanıyorsanız Değişken, $ isim, bir dizeye. Biz doğru, C yapamam? Biz adında bir işlevi kullanmak zorunda StrComp ya StrEndComp veya onunla ilgili kuzen. Ve böylece zaten biz bu avantajları görüyoruz. Biz bir şey yapmak zorunda değilsiniz olarak aptal ya da belki unintuitive adında bir işlev çağrısı olarak StrComp Ben sadece test etmek istiyorsanız ister bir değer bir dize eşittir. Ben sadece, eşittir eşittir kullanabilirsiniz gibi başka bir şey yapabilirdi. Yani bir avantaj var. Bazen arada, belki elseif, else if olarak tek kelimeyle bakın. Ve bu da PHP Tamam. Yani bazen böyle görebilirsiniz. Bu bir yazım hatası değil. PHP aslında elseif anlar. Bilmiyorum neden Bu uygulamaya karar verdi, ama biz defalarca gördüğümüz gibi Şimdiye kadar bizim videolar boyunca, Biz programcılar ise onu seviyorum Biz hızlı bir şekilde şeyler yapabilirsiniz böylece uzay kurtulmak görünüşe göre büyük bir avantajdır. Yani eğer ve elseif var. Biz de üçlü operatörü var, Geri çağırma soru işareti kolon, else if gerçekten kısa form için veya koşullu dallanma. Ve görünüşe göre, bu, Ne biz burada yapmaya çalışıyoruz değişken atama olduğunu doğru ya da yanlış $ mektup, $ var olmasına bağlı bir alfabetik karakterdir. Yani bu isalpha oldukça benzer Biz C'den aşina olduğunuzu Bu PHP eşdeğer tür. Fonksiyonu görünüşte ctype_alpha denilen ama bu PHP bunu nasıl. Peki tüm bu eğer, olması olduğunu gidiyor $ var bir mektup, $ mektup doğrudur. $ Var bir mektup değilse, $ mektup yanlıştır. Biz de hala anahtar ifadeleri var. Biz C gelenler de hatırlıyorum. Orada çok üst kısmında, biz bunu nasıl olsun int veya dize olsun gibi bir şey. Yani PHP yerleşik olduğunu vardır. Artık CS50 kitaplığı gerekmez. Biz sadece işlev readline kullanabilirsiniz. Bu ne yapacak baskı olduğunu mesajın üzerinden, "Sizin devlet, lütfen "ve ardından istemi yanıp sönen giriş için kullanıcı bekliyor biraz bilgi. Şimdi başka ne fark Biz anahtarı ile yapabilirsiniz. Eğer daha önce kullandıysanız, O anahtarı Hatırlayacağınız tamsayılar hemen hemen sınırlıdır ve karakterler, ama şimdi biz dizeleri kullanabilirsiniz. Ve aslında, switch deyimi PHP biraz daha esnek C. onun kuzeni daha Döngüler. Sadece Koşullamalar gibi, tüm Eski favoriler hala vardır. Biz sayarken döngüler var 1, bu durumda 100. Biz while döngüleri yapmak var Bu, 1 ile 100 saymak ve biz döngüler için var Bu 1'den 100'e kadar saymak. Yani orada büyük bir atılım. Sözdizimi güzel tam olarak aynı çok, şimdi biz kullanıyoruz hariç Dolar işareti değişken yerine tamsayı değişkenleri bildirmek veya Bizim sayaçlar için böyle bir şey. Şeyler olsun İşte burada olsa da, C'den çok daha iyi. Diziler. Yani biz çağırmak zaman sırayla, C bahsediyoruz Bize büyümeye ve küçültmek için bilgi setleri, Biz varsayılan sıralamak için gerekli Bağlantılı bir listenin bu fikri, C diziler boyutu tespit edildi çünkü. Onları küçültmek olamazdı. Onları büyümek olamazdı. Biz bellek, yeniden tahsis etmek zorunda ve tüm bu çılgınlık yapmak veya bağlı listeler, kullandığınız biraz daha fazla yer kaplar. Ama PHP, diziler vardır Artık boyutu sabit değildir. Onlar büyüyebilir ve küçültmek olabilir. Yani yine, bu 20 yıl varolduğunu C ilk sürümü arasında ve ilk sürüm PHP, Biz biliyorsunuz, karar verdi Gerçekten harika olurdu Biz bu yapabileceğini. Ve böylece biz bu hayata. Yani PHP diziler içinde sabit değildir boyut, ve PHP değil, çünkü gerçekten Programcı ön dönük olması türleri kavramlar, Biz veri tiplerini karıştırıp Bizim dizide de. Yani biz bile hepsini kullanmak zorunda değilsiniz tamsayı veya tüm kayan noktalar, Hepimizin bir karışımı olabilir Tek bir dizide çeşitleri. Bir dizidir bildirme Oldukça basit. Sadece başka bir değişken gibi. $ nums = array (1, 2, 3, 4), dizi bir fonksiyonu olduğu Bu PHP içinde yerleşik olduğunu Sizin için bir dizi yaratacaktır. Bu dört değer dizisi oluşturur, Bu durumda sayılar, $ nums çağırdı. Ve bunu yapmak için birden fazla yolu var. Ve biz gidiyoruz Bu PHP bir çok görüyorum. PHP birçok farklı tarafından geliştirilmiştir insanlar büyür ve büyür ve büyür ve. Genellikle var değil sadece iki ya da PHP bir şeyler yapmak için üç yol, Genellikle 10 veya 20 gibi var. İşte sadece başka bir ortak var Bir diziyi bildirmek için bir yol. $ nums = köşeli parantez 1, 2, 3, 4. Yani bu tür C'nin açıya benzer bir daha doğrusu, kaşlı ayraç gösterimini br--. $ - ya da int nums kare olurdu parantez küme ayracı 1, 2, 3, 4 eşittir. PHP yılında $ nums = kare var dirsekleri 1, 2, 3, 4. Ancak bu örneklerin her ikisi beni buraya ver Bu durumda tamsayılar dört bir dizi. Ben şimdi bir şey çakmak ne isterseniz? Peki ben sadece $ nums 4 söyleyebiliriz ki Yine, biz hala burada 0'dan sayıyorsanız PHP, beşinci olurdu dizi elemanı. Ben sadece söyleyebiliriz. Ben bir SEG acı gitmiyorum Benim dizisi, sadece, çünkü arıza Bu karşılamak için büyümeye devam. Bu doğru, çok güzel değil mi? Ve aslında, ben bile gerek yok Ben koymak istediğiniz yere belirtin. Ben sadece bu sadece söyleyebiliriz Sağ sonuna kadar üzerine tack, ya da ben bile sadece olabilir $ Nums 20 veya 1000 söylüyorlar. Bu gerçekten önemli değil. Hala sadece gidiyor sonuna doğru onu tack. Yani büyümek ve biz konum as-- edebilirsiniz Burada onu karşılamak için gitmiyor, ama ben splice ya da şerit olabilir hem de dizinin dışına elemanları, ve dizi karşılamak için küçüleceği şimdi eksik veya boş alan. Çakmak için başka bir yolu var Bir dizi üzerine bir şey, bu array_push adı verilen bir fonksiyonudur. Yani yine olmanın sadece bu fikri işler çok farklı şekillerde yapmak mümkün. Yani biz şimdi üç farklı şekilde gördüm Bir dizinin üzerine başka bir öğe çakmak. Yani bu başka bir eleman ekler $ nums dizinin sonuna. Ve bizim veri türlerini karıştırabilirsiniz. Yani ben bir dizi olabilir 1, 2, 3, 4, ancak 1 doğru, 3, 4, Nerede gerçek bir Boolean ve sonra Ben başka bir öğe üzerinde tack istiyorsanız Bu dizi, belki bir dize, Dize "Beş," Ben bunu yapabilirim. Ve şimdi benim dizi olur Gerçek 1, 3, 4, beş olabilir. Kelime beş değil, tam sayı 5. Yani orada bir esneklik bir sürü. Esneklik alır hatta daha iyi olsa da, PHP şey için desteği vardır çünkü bir ilişkisel dizi denir. Ve biz bir çeşit belirsiz konuştuk C yaklaşık ilişkisel diziler hash tabloları bağlamında, çünkü Ne ilişkisel diziler gerçekten hepsi anahtar yapıyoruz hakkında değer çifti dönüşümler. Ve bu durumda, keys-- Biz C dizilerle tanıdık tuşları endeks sayılardır. 0, 1, 2, 3. Ve değerler bulmak ne dizi 0, dizi 1, böylece dizi 2 ve. Yani tuşları dizinlerinin, ve değerler Bu dizi konumda nedir, Bu indeks tarafından belirlenen. Ama PHP, biz bunu yapmak zorunda değilsiniz dizinin 0 kavramı, dizi 1, dizi 2 Artık. Biz şimdi gerçek kelimeleri kullanabilirsiniz değerlere tuşları eşleştirmek için. Ve bu yüzden böyle bir şey söyleyebiliriz. Ben kullanarak bir dizi oluşturabilirsiniz aşağıdaki gibi köşeli ayraç sözdizimi. $ pizzalar = köşeli ayraç "peynir" ve sonra çift ​​ok gösterimi bu tür, 8.99, "acıkmak," 10.99-- 9.99 ok ve benzeri. Ve böylece burada ne oluyor? Aslında ne yapıyorum? Ben anahtar değer çifti eşlemelerini oluşturma. Bunun yerine söyleyerek, örneğin, pizzalar 0, adet 1, pizzalar 2, Ben şimdi pizza diyebilirim peynir, pizza sucuk, ve değerlere bakın bunlarla ilişkili. Yani burada bizim tuşları yeşil bulunmaktadır. Peynir, sucuk, sebze, bufalo tavuk. İşte yapar oktur Bu anahtar değer çifti haritalama. Ve sonra burada değerlerdir Bu dizi konumda. Bu yüzden dizinin 0 8.99 eşittir demek gibi. Anahtar 0'dır. Değeri 8.99 olduğunu. Şimdi dizi peynir söylemek, ya da bu olabilir vaka pizza peyniri, peynir, anahtar ve ben de bulacaksınız Pizza peyniri 8.99 olduğunu. Ben orada bulmak değerdir. Yani işler gibi diyebilirim. $ Pizza peyniri = 7.99. Ben bir satış yaşıyorum söylüyorlar. Ben damla istiyorum dis-- istiyorum peynir pizza fiyatı. Ya da ben sebze kullanabilirsiniz pizza durumun bir parçası olarak, ya da ben yeni bir öğe ekleyebilirsiniz benim Dizi, sadece ben daha önce yapabilirdi gibi. Ben bu yeni bir öğe ekleyebilir Anahtar "pastırma" ile ilişkisel dizi ve değer 13.49. Ama bu tür bir sorunu tanıttı Bir saniye düşünmek durumunda. Nasıl bu dizi yineleme ki? Sağ? C, biz sadece olurdu döngü için, tipik olarak, bu 0'dan aday olacağını 1 eksi dizinin boyutu. Dizi de n öğeleri vardır, Geçerli indeksler n eksi 1 0 vardır. Yani biz bir for döngüsü kullanabilirsiniz her elemanın adım adım. Ama bu gerçekten değil dava artık, değil mi? Şimdi anahtar değeri çift var nereye tuşları kelimeler dönüşümler, nasıl kelimelerin tüm yineleme mi? Eh, neyse ki, PHP vardır Bir yol da bu başa ve bu yüzden geri atlarsınız Bir saniye döngüler için ilmeğin 4 tür tanıtmak için bu PHP bir foreach döngüsü denilen bulunmaktadır. Ve ne bir foreach döngüsü yapar ise Temelde aynı fikir. Sen dizinin her türlü kullanabilirsiniz. Ama temelde döngüsü için aynı fikir yerine kullanılması haricinde, indeks numaraları, sadece Bu garip sözdizimi nerede var Eğer her eleman arama Bu döngü amaçları için bir isim. Bu durumda, bu yüzden foreach ($ anahtar olarak $ dizi). Temelde, bu açıklama notları olarak, Foreach döngü içinde her tek gitmek için gidiyor genellikle $ dizi unsuru bir ilişkisel dizi olacak, ama gerçekten dizinin her türlü olabilir Eğer PHP istediğiniz. Ve bu her zaman döngüsü için size belki $ dizi köşeli parantezler söylediler $ i, sadece $ anahtarını söyleyebiliriz. Yani $ anahtar, her bir ad olur PHP ilişkisel dizi indeksi, ve böylece bu gibi kullanabilirsiniz. Yani, örneğin, biz ettik Şimdi bizim pizzalar dizi var. Ben tür onu sıkışmış ettik Orada köşeye bu yüzden hızlı bir örnek yapmak için kullanabilirsiniz. Ben foreach ($ pizzalar derseniz $ pizza), iyi, ne oluyor? Eh, ben her yineleme için gidiyorum array $ pizza tek eleman, ve bunu yaparken de, ben diyeceğim her eleman, zaman içinde değilim döngü o vücudun pizza, $. Yani bu bir tür var stand-in, hatırlama, o $ Pizza bir stand-söyleyerek içindir $ pizzalar köşeli parantezler $ i Biz döngü, nerede bir kullanıyormuş Bu durumda $ i = 0, gidebiliriz, $ i 3 =. Biz anahtar değer çiftlerini olmasaydı Burada, bu eleman, 0, 1, 2, 3 olacaktır, ve biz gitmek için döngü için kullanmak $ pizzalar 0, $ pizzalar 1, $ 2 pizzalar, $ pizzalar 3. Yani şimdi sadece pizza ikame edilir, $ bireysel anahtar için. Peki bu yazdırmak için gidiyor? Ben $ pizza yazdırmayı ediyorum. Ne at-- bulmak için gidiyorum Ben, $ pizza $ çıktısını olur? Sağ? Ben yazdırmak için gidiyorum Pizza i elemanı, ne yazdırmak için gidiyorum? Ben yazdırmak için gidiyorum o konumda değerler, değil mi? Yaptığımız sanki gibi C bağlamında bu biz genellikle bizim yineleyici kullanmayın Değişken, i = 0, i az 3 int i 0, 1, 2, 3 yazdırmak için, ++. Biz dizi üzerinden 0 yazdırırken dizi 1, dizi 2, dizi 3. Ve böylece bu yazdırır bu ne olduğunu. Bu fiyat listesi. 8.99, 9.99, 10.99, 11.99. Şimdi, burada hızlı bir notu. Bir foreach döngüsü mutlaka yok sırayla şeyler çıktı. Bu garanti değil. Genellikle yapar. Genellikle amacıyla tabanlıdır hangi unsurlar diziye eklenir, yani sadece akılda tutulması. Bu sırayla olmayabilir. Ama foreach döngüsü yineleme olacak her elemanın karşısında Söz konusu dizi. Bu durumda, yine, Bu dizi $ pizza olduğunu. Ben eğer, olsa da, sözdizimi değiştirebilirsiniz Ben anahtarı ve değeri de istiyorum. Bunun yerine $ pizza söyleyerek $ pizza gibi, ben bu diyebilirim. Ve ben var ne bakmak durumunda Burada yeşil vurgulanır, Bir anahtar değeri çifti haritalama gibi görünüyor. Ve böylece sen-- eğer olmasa bile Tamamen bunu yapmak için neler emin, muhtemelen tahmin O $ Tepesi oluyor Bu durumda anahtar ve $ fiyat değer olacak. Yani şimdi her eleman ikame ediyorum $ önemli bir değer çifti olarak pizza, ve şimdi anahtarına başvurabilirsiniz ve değer, kudret kullanışlı, örneğin, aşağıdaki gibi. "Bir bütün" - Bu çok biridir Baskı burada-- "Bir bütün" oluyor Tepesi sonra fiyat ve "pizza $ maliyeti" Ben bir süre ve bir ters eğik çizgi n yazdırmak. Yani şimdi, haber tekrar erişimi anahtar, $ Tepesi ve değer, $ fiyat. Peki bu ne tahmin edebilirsiniz yazdırmak için gidiyor? Baskı tabloların bir çok şey var, ama sadece bir eğik çizgi n var, bu yüzden bir şey yazdırmak için gidiyor tek bir kod satırında bir entire--. Ben anahtarına başvurabilir ve değer, o zaman şimdi, yerine edememek fiyatları yazdırmak için, Ben böyle bir şey yazdırabilirsiniz. "Bir bütün peynirli pizza 8,99 $ maliyeti." Ve şimdi keys-- tüm kullanıyorum peynir, sucuk, sebze, manda chicken-- ve değerler. 8.99, 9.99, 10.99, 11.99 yüzden sadece farklı bir yolu bir foreach döngüsü yapmak için o yerine Sadece, değerlere erişim sağlayan size verir siz-- sadece verir anahtarları ve değerleri erişim. Yani bilgi yazdırarak. Zaten o bir çift yaptık farklı yollar, sen fark etmiş olabilirsiniz. Iki işlevi öncelikle ettik baskı ve yankı görüldü bulunmaktadır. Ve hemen hemen tüm niyet ve amaçları, bunlar tam olarak aynıyız. They're-- çok ince var bile değmez fark temelde her yerde biniyorlar, ama muhtemelen kullanabilirsiniz sen baskı kullanabilirsiniz hem de yankı. Ve bu sadece iki değil. PHP farklı bir yeri vardır şeyleri yazdırmak için yollar, ve aynı zamanda entegre yol var dize ortasına değişkenleri. Yani C çağırmak, do you hangi işlevi hatırlıyorum Biz değişkenleri yerine kullanabileceğiniz şeylerin içine biz yazdırmak istediğiniz? Muhtemelen bu kullanmak oldukça çok çalışır. printf, değil mi? Yani bu biz içinde önce vardı ne Bizim foreach döngüsü kapsamında evi. Biz bu beş vardı Ayrı baskı tablolar, tek olduğu yolu gerçekten zaman biliyordu nasıl mesaj yazdırmak için. Ben nasıl entegre bilmiyordum benim PHP koduna tepesi değişken $. Şey, ben sadece bir tahminde alındığı takdirde, printf, aslında çalışmış olurdu. printf kullanabilir miyim bir işlevdir PHP, sadece ben C. kullanabilirsiniz Seviyorum Ve böylece böyle bir şey, printf, yine, biz o aşina. İlk% s değiştirilir $ Tepesi değeri ile. İkinci% s değiştirilir $ fiyat değeri ile. Ve bu yüzden interpellating ediyorum, hangi sadece bir fantezi yoludur demenin ben yapışmasını ediyorum Bu konuma değişkenler. Yani tepesi de $ takmayı ediyorum nerede Kırmızı% s $ fiyat nerede mavi% s ve ve sonra ben mesajı alacağı "Bir bütün peynirli pizza 8,99 $ maliyeti." Gerçi bunu yapabilirim Sadece yolu. Belki bu yöntemi kullanmak isteyeyim. Bu en yaygın ne aslında Değişken gensoru denir. Ben bir yankı kullanabilirsiniz. Biz göreceğiz gibi ben de bir baskı kullanabilirsiniz. Ama burada ne oluyor? Her şeyden önce, ben var Dolar işareti kaçış. Biz aslında ne zaman Çünkü hatırlıyorum Pizza fiyatları yazdırarak, Aslında onları biçimlendirme oldu Bir dolar işareti ile parasal rakamlar. Ama biz de dolar işaretleri kullanıyorsanız PHP değişken isimlerini temsil etmek, ve özellikle ben olduğumda kıvırcık bu yöntem kullanılarak brace değişkeni gensoru yöntemi ihtiyacım öyle değil bu yüzden benim dolar işareti kaçmak Ben bir değişken bahsediyorum düşünüyorum. Bu, aslında gidiyor Kelimenin tam anlamıyla bir dolar işareti yazdırın. Yani bir çeşit onu benzetme Orada sonunda gördüğünüz. Aslında değil Baskı ters eğik çizgi n, değil mi? Bu yeni bir satır karakterini yazdırır. Bu gitmiyor bu-- Baskı ters eğik çizgi dolar işareti, Sadece yazdırmak için gidiyor dolar işareti karakteri. Aynı fikir. Dizileri Kaçış ne bunlar denir. Ama ben yapmıyorum fark % s değiştirmelerin herhangi bir tür, Ben sadece tam anlamıyla takmayı ediyorum bu değişkenlerde. Ve böylece paha burada ne olacağını ki $ topping-- değeri yine sadece biz oldum ne tutuyor böylece far-- peynir bahsediyoruz alacağı Orada takılı. Ve $ fiyat ne olursa olsun değer olurdu pizza da, köşeli parantez, peynir, Hangi 8.99 idi. Ve böylece bu da yazdırmak istiyorum "Bir bütün peynirli pizza 8,99 $ maliyeti." Dediğim gibi, ben kullanabilirsiniz yerine eko burada yazdırmak ve işlevsellik olmak tam olarak aynı hemen hemen. Aynı şeyi yazdırmak istiyorum. Bunu yapmanın başka bir yolu var, ve bu başka bir avantajı PHP dizeleri ile çalışıyor. Biz dize birleştirme yapabiliriz. Biz de, C bu yapabileceğini, strcat adında bir işlevi kullanarak, ama yine biz vardı Ayrı işlevleri çağırmak. Bunu yapmak için bütün bu karışıklık oldu. Biz vardı string.h sterlin-sayılabilir. Bu doğru bir üretim oldu? Ama şimdi ben sadece bu nokta operatörünü kullanabilirsiniz Birlikte dizeleri bitiştirmek için. Ben de "A bütünü" bitiştirmek yaşıyorum ve Daha sonra ne olursa olsun $ tepesi değeri, ve sonra başka bir Dize, "pizza maliyeti $" ve bitiştirme ne olursa olsun $ fiyat değeridir ve daha sonra en sonunda ben dönem ters eğik çizgi n üzerinde teyel. Ve böylece bu da olur "Bir bütün" çıktısını - Yine, biz ilk bahsediyoruz eğer bu pizzalar array-- unsuru "Bir bütün peynirli pizza 8,99 $ maliyeti." Dönem yine ters eğik çizgi n, ile $ Tepesi ve $ fiyat ikame Bizim foreachta belirtilen vardı ne anahtar değeri çifti haritalama olarak döngü. PHP fonksiyonları işleyebilir. Fonksiyonlar çeşit vardı C ayrılmaz, biz gördük. Değişkenler gibi, biz gerek yok , işlevin dönüş türünü belirtin Gerçekten önemli değil çünkü. Ve biz belirtmeyen Herhangi bir parametre veri tipleri, onlar gerçekten yok çünkü olsun, biz PHP gördüm gibi. Her fonksiyon tanıtıldı function anahtar sözcüğüyle. Yani biz PHP işaret nasıl ne bahsediyoruz bir işlevdir. Ve biz gerek yok tüm ana başa, tercüman, çünkü PHP tercüman, yukarıdan aşağıya doğru çalışır, ne olursa olsun. O görürse yapabilir bir işlev çağrısı, bu olacak işlev çağrısı bulmak gidin, Hatta daha sonra gelirse. Ama yukarıdan okumak için gidiyor alt, bu yüzden belirtmek gerekmez, Başlamadan nerede burada. Siz hattı 1 başlayacak senin PHP oradan aşağı çalışmak ve. Yani burada biz yaratacak nasıl Bir işlev hard_square çağırdı. Görünüşe göre bir tane alır parametresi, ben $ x arıyorum. Bu işlev sadece karmaşık çeşitli şeyler göstermek için. Biz hala dönüş değerlerine sahiptir. Burada bir for döngüsü kullanıyorum. Ama temelde sadece, bu ne var Sadece $ x kez $ x TL'dir. Ne Aslında sadece ekliyor yapıyorum x x kez 0 veya $ sıfır $ x kez x. Ama tam olarak etkin bir şekilde $ x kez $ x çarparak aynı. Ben hala bir değer döndürebilir, Bu durumda $ sonucunda, ve PHP bir işlev yaptık. Burada bağlamda kullanmak nasıl bu. Bu yüzden belki de bazı PHP dosyası içinde değilim. Oradaki mavi edin Benim PHP sınırlayıcı kullandım, açılı ayraç soru işareti php. Arasındaki olarak tümü Ben yazmak istiyorum PHP. Yani görünüşte get-- gidiyorum Ben kullanıcı istemi gidiyorum Bana bir numara, mağaza vermek için bu Değişken, bu değişken $ x mağaza, ne onlar bana verdi. Sonra yankı gidiyorum bu değerin hard_square, ve görünüşe göre gidiyor yeni bir satıra tack ayrıca, ve daha sonra I olacak böylece hard_square işlevi tanımlar Ben yaptığınızda o hard_square için çağrı ben neden bahsettiğimi biliyor. Şimdi, ben de yapabilirim böyle bir şey. Bu biraz farklıdır. Neredeyse tam olarak Daha önce ne gördüm aynı, x yerine $ söyleyerek hariç Orada parametresi hard_square olarak, Ben $ x = 10 diyorum. Yani bu bir örnektir defansif programlama, Programlarınızı koruma Kötü niyetli kullanıcılara karşı. Bu, bazı hata yapmak için bir yoldur biz gerçekten did not olmadığını kontrol C. bir seçenek olarak var biz asla olabilir bir şeyin varsayılan değeri belirtin. Biz her zaman kontrol etmek zorunda olup, örneğin, Biz getString bir çağrı yaptı, eğer oldu en uygun derhal biz sonra Biz teslim olduğunu kontrol dize olsun Kullanıcı bize verdi null eşit değildir biz başlatmak için istemiyorum çünkü boş bir dize ile çalışıyor. İşte, bu bir yoldur Bu karşı korumak için. Kullanıcı bize bir şey vermezse her nasılsa, ne yapacağız? Peki, biz sadece söyleyeceğim ne olursa olsun Onlar bize vermedi, Biz sadece yerine 10 takmak için gidiyoruz. Onlar bize bir değer vermediler Yani, Sadece varsayılan olarak 10 kullanın. Ve işte, Ben yapıyorum fark Bir hard_square çağrısı, ama hiçbir istemi var kullanıcıya, değil mi? Ben sadece boş bir çağrı yapıyorum. Ama benim işlevi hard_square bir parametre bekliyor. Bu ne yazdırmak için gidiyor? Bu doğru, 100 yazdırmak için gidiyor? Kullanıcı vermedi Çünkü Bana bir şey ver. Ve bu yüzden sadece varsaymak gidiyorum 10-- 10 varsayılan değerdir. Ve böylece bu yazdıracak 100 üzerinden kendi satırında. PHP dosyaları gerekmez sadece tek bir dosya olabilir. Birlikte birden fazla dosya birleştirebilirsiniz, Sadece C. yapabilirsiniz yolu gibi Biz C bir yapmak genellikle olduğu yaptım #include başlık dosyaları çekti olsun. Biz PHP bunu yapmayız. Biz require_once denen bir şey yapmak. Ve sonra tüm bu var şey, bu __dir__ ne? Bu sadece bir özel var değişken veya özel sabit Gerçekten, ne belirler Geçerli dizin. Ve böylece bakmak için gidiyor Geçerli dizinde Bir dosya adında cs50.php için burada, bu örnekte, ve bu dosyayı sopa gidiyor PHP programının en üstünde, Eğer gerektiren koymak olduğunu varsayarak PHP dosyasının en üstünde hat kez. Bu nedenle, öncelikle PHP, kullanılan ancak yalnız olarak kullanılmaz web tabanlı programlama dili olarak. Yani için geldi gerçekten nasıl. Ama tam Gördüğümüz olarak dil. Biz hemen hemen her şeyi gördüm o C benzer olduğunu yapabilirsiniz, ve bir halt yapabilirsiniz Bundan daha çok. Ama bu, çünkü tam bir dil ve biz o komut satırı programlama yapabilirsiniz. Biz komut satırı programları çalıştırabilirsiniz. Bütün bu komutu çalıştırmak için gerekli oluyor PHP ile yazılmış oluyor satırı programı Eğer bir PHP yorumlayıcı olması. Bu yüzden karşı bir çeşit benzer var Sisteminizde bir derleyici olan Eğer C kodu derlemek istiyorsanız çalıştırılabilir dosyaları çevirmek için. Bir PHP yorumlayıcısı olması gerekir Bu sisteminizde mevcut böylece PHP dosyalarını yorumlamak olabilir. Eğer varsayarak, ve genellikle Bu tercüman, PHP denir ve genellikle çoğu ile birlikte oluyor siteleri veya PHP teçhizatları kesinlikle online almak ve olabilir PHP yorumlayıcısı adı Biz CS50 IDE sahiptir. Tüm yapmanız gereken tip php dosyasıdır. Ve ne programın yapacak bu kadar olduğunu ile koşacağız tercüman, bu kadar olan her şeyi görmezden gidiyor olup, söz mark-- arasında ya da, açılı ayraç soru işareti php, PHP ayraçları, ve çıktısını ve yorumlamak ve yürütecek PHP sınırlayıcı içinde kodu. Yani CS50 IDE üzerinden pop izin ve PHP dosyaları bir çift göz var, olarak, PHP dosyaları bir çift çalışan CS50 IDE komut satırı arayüzü. Yani burada biz CS50 IDE olan ve ben özgürlük aldım bir hello1.php adlı bir dosyayı açmadan. Bu Ve görünüşe göre, içindekiler Dosya, orada sadece PHP sınırlayıcılardır ve yankı arasında ("hello, world"). Bu oldukça basit bir PHP programıdır. Ben sadece aşağı kaydırmak için gidiyorum Burada benim Terminal penceresine, ve ben php yazın gidiyorum hello1.php, butonu tıklayın. Merhaba Dünya. İşte biz muhtemelen ne var bunu yapmak için bekliyor, değil mi? En gidip alalım Başka bir programa bakmak. hello2.php. Hemen hemen aynı şey, burada çok oluyor değil. Bu sefer, ama, ben soracak gidiyorum Kullanıcı bana isimlerini vermek. Yine o taleb işlevi kullanıyorum. $ name = taleb. Bu istemi var "Adın ne?" Görünüşe göre ben değilim baskı kendi satırında. Ve sonra, bu yüzden çizgi aşağıda Bu istemi olacak nerede kullanıcı kendi adını girebilirsiniz. Ve sonra ben biraz kullanarak yaşıyorum 3. hatta burada değişken gensoru "Merhaba" yazdırmak ve ne olursa olsun kullanıcı türleri. Yani bu Merhaba, diyerek benzer, virgül,% s biz C. printf kullanarak sanki Yani Gidip bu programı çevirsin. Yani yine, aşağı kaydırma edeceğiz Benim Terminal penceresine. php hello2.php. Adın ne? Doug. Merhaba, Doug. Ben de başka var Dosya hello3.php denir. Ben temizlemek için gidiyorum benim Kontrol L ile ekran, ve ben o idam edeceğim. Adın ne? Doug. Merhaba, Doug. Yani davranış aynıdır hello2.php, ama neden hello3.php mı? İşte fark bu. Bu durumda, bildirim Burada 1. satırda, Ben değil bir şey var PHP ayraçları arasında. Ben sadece bir konrtol ya da ben yazdırırken ediyorum Sadece "Adın nedir?", daktilo PHP yorumlayıcısı bu gördüğünde, onu hiçbir fikri nasıl PHP olarak yorumlamak olup, ve bu yüzden yerine, başarısız Sadece o tükürmek için gidiyor. Yani, şimdi hat 3 benim çağrı fark taleb, artık hiçbir istemi var. Ben aslında sadece aşağıdaki amaçlara ne zaman gidiyorum PHP yorumlayıcısı, bu görür o yazdırmak için gidiyor "Adın ne?" Sonra here's--, tamam, oh, görüyor her şey olacak böylece, PHP olarak yorumlanır Bu işler bu yüzden. Ben mutlaka soracak gerekmez taleb içinde kullanıcı aşağıdaki amaçlara, Ben sadece dışarıda olabilir PHP sınırlayıcı ve tercüman izin Sadece benim için yazdırmak için. Yani aslında sadece yok PHP sınırlayıcı bir set var Programda. Aslında, bunların birkaç olabilir Açılış ve gerektiğinde bunları kapanış. Yani bir göz atalım programların bir çift burada CS50 IDE biz sahip bu fikri göstermektedir ayrılmış PHP birden ayarlar. Tamam, bu yüzden bir dosya açtım Burada add1.php denir. Ve burada neler olduğunu fark. Tıpkı daha önce, ben bir Tek PHP sınırlayıcı ayarlayın. Ben yazdırmak için gidiyorum mesajı, "Bana bir numara verin." Sonra bir satır okuyacağım ve değişken $ NUM1 saklayın. Sonra tekrar yazdırmak için gidiyorum. Bana ikinci bir sayı verin. Kullanıcı, mağazasından bir satır okumak onlar $ Num2 içinde yazdığınız ne olursa olsun. Onları bir arada ekleyin ve saklayın $ toplam adında bir değişken sonuçlanır, ve ardından ", çıktısını Bu iki sayının toplamı ise, "ve sonra gensoru Orada değişken $ toplamı. Yani sadece bu çalışmasına izin tercüman aracılığıyla Bu bizim ne bekliyoruz olduğunu onaylayın. php add1.php. Bana bir numara, 3 veriniz. Bana ikinci bir sayı, 4 veriniz. Bu iki sayının toplamı 7'dir. Yani 3 artı 4 var. Tamam mı? Orada Yani hiçbir şey korkunç fantezi. Ve şimdi add2.php kadar açalım. Burada, PHP bir çift var Orada setleri sınırlandırılmış, değil mi? Çizgiler 1, 3-- hat 1 ve 3 hiçbir PHP sınırlayıcı var. Peki ne zaman tercüman bu sadece, onları görür Tam tükürmek olacak ne var yazdığınız. Ben nereye kadar işte Benim isteyen yapıyor. Hatları 2 ve 4, gördüğümüz çok Tanıdık $? sınırlayıcı php sort, böylece bu iki satır vardır PHP gibi idam edecekler. Ve sonra hat 5, ben bu var Burada garip bir şey, değil mi? Bu açılı ayraç soru işareti eşittir işareti. Hatta biraz daha ileri yakınlaştırmak olacak. Bunu ben ne görebiliyorum Sağ orada yaklaşık bu $ bahsediyoruz? =. O o kadar yaygın olduğunu çıkıyor Biz PHP bir dizi açmak nedeni sınırlayıcı bir değer yazdırmak olduğunu. Ve biz yapacağımız bu. Ama bu bile kestirme var. $? = Diyerek PHP kısaltmasıdır $ gibi bir şey? php echo toplamı NUM1 ve Num2 evi. Yani bu sadece başka bir Bunun için steno. Ben bu programı, php add2.php çalıştırın Yani eğer. Ben biraz aşağı yakınlaştırın edeceğiz. Bana bir numara, 4 veriniz. Bana ikinci bir sayı verin. Ve ben gerçekten umurumda değil çünkü PHP veri tipleri, ben 4.8 diyebilirim. Bu iki sayının toplamı 8.8. Bu fonksiyon oldukça fazla davranır Biz beklediğiniz tam olarak aynı, de. Ve ben bir daha açmış Buraya kadar dice.php denir. Yine bu deneyin. Ben kimse burada daha denilen var Ayrıca, bakınız dice1.php, O açılı ayraç soru vardır Orada eşittir işareti gösterimde işaretleyin ancak bu durumda ben fark Fonksiyon rand, çağırarak hangi senin gibi Tahmin edebileceğiniz rastgele bir sayı üretir. "Sen, bir rulo" ve gidiyor + bazı rasgele sayı, mod 6 hesaplamak 1. Yani bana numarayı vereceğiz 1 ila 6 aralığındadır. Mod 6 bana vereceğini unutmayın 0 ila 5 arasında değişen bir sayı ama zar rulo taklit ediyorsam, Hangi Burada ne yapıyorum, Ben bu zar 0'dan gitmek istemiyorum 5, ben 1 ile 6 arasında gidip zar istiyoruz. Ve böylece bu almak için bir yoldur 1 ila 6 aralığında ben. Ben iki kez yapıyorum. Yani görünüşe göre ben haddeleme ediyorum Bu programda iki zar. Yani benim ekranı temizlemek olacak, ve ben php dice1.php yapacağız. Sen 4 ve 2 yuvarlandı. Ve ben programı çalıştırmak durumunda Yine, bir 5 ve 5 yuvarlandı. Yani programı çalıştırmak her zaman, Ben, farklı numaralar alıyorum Çünkü yapmak her zaman bu nedenle, bitti başlıyor. Bu yeni bir oluşturmak için gidiyor Benim için rasgele sayı kümesi. Biz alışık Yani eğer C çalışan programlar, Biz ./ yazarak alışık Doğru, bir programın adı? Yani hepimizin yaptık nasıl C programlarımızın ana kadar. Biz de PHP yapabilirsiniz bir şey ekleyerek denilen Bizim PHP dosyasının üstüne bir mesele. Ben aptal bir kelimenin tür olduğunu biliyorum. Bu karma bang kısa. Oradaki ilk iki karakter var. Biz ünlem diyoruz hatırla bilgisayar bilimleri sık patlama. Aynı zamanda keskin patlama için olabilir. Yorumlamak için bir kaç yolu var. Ama temelde özel bir tür olduğunu bir komut olduğu PHP yorumlayıcı oh, istediğim gibi anlar Bu programı çalıştırmak için, hangi görünüşte / user / bin / php, hangi nerede PHP yorumlayıcı aslında Özellikle bizim sistemde yaşıyor. Bu-- Peki burada olur tercüman, ah, anlar Ben görünüşte kullanmak gerekiyor Bu programda bu dosyayı çalıştırın. Ve bu yüzden seni tanır adım üzerinden atlamak için php something.php söylemek zorunda. Bir başka yakalamak var Burada, ki bu eğer Bizim programları istiyorum beklendiği gibi, biz işe denilen bir şeyler yapmak gerekiyor Bir dosya izin değişikliği. Ve biz go-- olacak ve biz biraz konuşalım biraz daha ilgili dosya izni değişiklikleri Bizim MVC video, ancak bunu yeterli Bu yapmanız gereken şey olduğunu söylemek hale getirmek için kayıt .php dosyaları çalıştırılabilir. Yani bu bir göz atalım CS50 IDE bizim son örneği üzerinde. Yani burada IDE içinde ben bu iki dosya var Olmamaya görünen PHP dizini .php olarak adlandırılır. Ben bir işlevi çağrılır var DİNLEME EKLE Bir dosya adında Add3 var ve bir dosya dice2 çağırdı. Yani hızlı atalım bakmak ve Add3 açmak. Ve başında görebileceğiniz gibi Benim dosyanın doğru, bu shebang var? Bu karma işareti ünlem. Şimdi, belki de olacak nedense fark, Ben herhangi bir sözdizimi yok Artık vurgulayarak, ve bu, daha önce ima budur hangi Benim dosya adı yoksa o oldu .php, ben parası yok sözdizimi artık vurgulayarak. Bu dosya sadece Add3 denir. Daha sonra bunu çalıştırmak böylece ./ Add3 olup ./ add3.php ile. Yani nedenden hala var İnce, bu hala geçerli PHP değil, fakat, çünkü vurgulanan sözdizimi değil Bu dosya something.php denir. Yani tek gerçek fark Burada artı mesele. Yani ne olur görelim Ben denemek ve bu programı çalıştırın. ./ Add3, sadece ben C. Bash ile yaptığınız gibi. ./ Add3 izni reddedildi. Bu gidiyoruz nedir unutmak görmek için değiştirmek için chmod komutunu kullanın Dosyanın izinlerini. O düzenli PHP çıkıyor Dosyaları sadece idam edilemez. Bunlar yorumlanabilir ama konum Burada biraz farklı bir şey yapıyor. Biz onu infaz ediyoruz. Ve bu yüzden izin eklemeniz gerekir icra, a + x için Add3 chmod. Sonra ./ Add3 söyleyebiliriz. Bana bir numara verin. 5, 6. Bu iki sayının toplamı 11'dir. Benzer şekilde, ben zaten CHMOD değeri var dice2, bu yüzden sadece, dice2 ./ yazabilirsiniz Eğer bir 1 ve 1 haddelenmiş, sen böylece bir 5 ve 4, ve devirdi. Yani oldukça fazla PHP sözdizimi fikri, değil mi? Aracılığıyla almak için bir çok şey var, biliyorum. Ama umarım bu PHP şimdi gördüm C gerçekten farklı değil ve gerçekten bize yeteneği verir bir çentik ya da iki şey almak için. Biz gerçekten endişelenmenize gerek yok biz gerçekten yok about-- çok hakkında çok fazla endişelenmenize gerek düşük seviyeli ayrıntıları biz Doğru, C dert etmek zorunda kaldı? Biz yüksek odaklanabilirsiniz düzey şeyler o PHP yapmamızı sağlar ve için almak Bizim için çalışacağını verildi. Yani, şimdi bize yeteneği verir PHP C geçiş, çok daha programlar yapmak karmaşık ve belki de çok daha sağlam. O yüzden eğlenceli çalışma var umut PHP ile ve Doug Lloyd değilim. Bu CS50 olduğunu.