डौग लॉयड: तो हम है सी में काम करने के लिए बहुत कुछ किया, और सी एक वास्तव में अच्छा है भाषा तो यह आपको देता है क्योंकि वास्तव में गोता लगाने के लिए क्षमता अपने कार्यक्रमों में निम्न स्तर। हम के रूप में बातें करने के लिए मिलता है जोड़ तोड़ के रूप में वास्तव मिनट स्मृति के व्यक्तिगत बाइट्स। वास्तव में संकेत दिए कि याद हमें लचीलापन है कि अनुमति देते हैं। लेकिन हम हमेशा की आवश्यकता है विस्तार की है कि ठीक अनाज स्तर हमारे कार्यक्रमों में? शायद नहीं, है ना? और हम हैं करने के लिए जा रहे हैं होने के बीच एक व्यापार बंद वास्तव में, वास्तव में ऐसा करने में सक्षम मिनट बातें और सच में, सच हम सोचते हैं की जरूरत नहीं है कि बड़ी बातें के बारे में, हम को लागू करने की जरूरत नहीं है ये सच में बड़े विचारों यदि वे पहले से ही, हमारे लिए में निर्मित कर रहे हैं आम तौर पर बड़े निर्माण के लिए कार्यक्रम या बड़ी परियोजनाओं, हम शायद ओर गलती करने जा रहे हैं की अधिक भाषा सामान में निर्मित होने हमारे लिए, बजाय होने की निम्न स्तर के सामान। पीएचपी वास्तव में आता है और वह है जहाँ। अब, कारणों में से एक हम CS50 में पीएचपी सिखाना कि यह भारी से प्रेरित बात यह है कि सी और वास्तव में, मेरी राय में, दो वास्तव में देखते हैं पूर्वज भाषाओं कि आजकल बहुत आम हैं। सी और लिस्प। और वे पूर्वज भाषाओं रहे हर दूसरे आधुनिक प्रोग्रामिंग क्योंकि विकसित किया गया है कि भाषा तब से प्रेरित है एक या दूसरे वाक्य रचना की दृष्टि से। पीएचपी वाक्य रचना से बहुत समान है सी के लिए, योजना जैसी भाषाओं जबकि, उदाहरण के लिए, जो यदि आप के बारे में सुना हो सकता है भारी एक भाषा से प्रेरित है एक पुराने भाषा है जो कहा जाता है, तुतलाना,। हम सिखाने कारण तो CS50 में पीएचपी कि है, मौलिक रूप में सी जानने के द्वारा आप इस बिंदु पर कर के रूप में, आप देता है, जो उठा पीएचपी, बहुत उच्च स्तर काम करने की क्षमता सी करता है, की तुलना में नहीं है कि एक बाधा के ज्यादा, आप पहले से ही है क्योंकि वाक्य रचना के मूल विचार। सी लगभग के लिए चारों ओर हो गया है इस बिंदु पर 45 साल। PHP के बारे में 20 साल के लिए चारों ओर हो गया है। और कहा कि 25 साल में , प्रोग्रामर के बीच में निर्धारित किया है कि वे ज्यादा होगा बल्कि, उच्च स्तर की क्षमता है और गलतियों और संघर्ष बीच में 20 साल की PHP और अन्य आधुनिक भाषाओं के लिए नेतृत्व किया। के पीएचपी का एक उपयुक्त स्थान सॉफ्टवेयर के लिए भाषा के लिए allow-- कि जहां आप that-- सॉफ्टवेयर में है कि काम करने की जरूरत सी वास्तव में जटिल हैं। तो उदाहरण के लिए, काम सी में तार के साथ क्योंकि बहुत जटिल है, हम जानते हैं, सी में तार वास्तव में पात्रों में से सिर्फ सरणियों हैं। यह एक निर्मित में डेटा प्रकार नहीं है। या शायद अधिक मौलिक, हम भी सी में कवर नहीं किया कुछ, आप क्या करने की जरूरत है, तो क्या कुछ कंप्यूटर नेटवर्किंग? ठीक है? सी ऐसा करने की क्षमता है, लेकिन यह तो है रहस्यमय और वास्तव में ऐसा करना मुश्किल है। अगर यह अच्छा नहीं होगा भाषा में निर्मित एक, आसान रास्ता नहीं था नेटवर्किंग को लागू करने के लिए? और पीएचपी कि बनाता है एक भाषा है, या, कि बहुत थोड़ा अधिक सुविधा। जैसा कि मैंने कहा, पीएचपी बहुत भारी प्रेरित है सी से वाक्य रचना के समान है। और इसलिए यह उम्मीद है कि बनाना चाहिए एक से दूसरे के लिए संक्रमण कुछ की तुलना में थोड़ा नरम अन्य भाषाओं हो सकता है। पीएचपी लेखन शुरू करने के लिए, बस के ऊपर खुला php फ़ाइल विस्तार के साथ एक फ़ाइल। तकनीकी तौर पर यह नहीं है वास्तव में आवश्यक है, लेकिन आप वाक्य रचना की तरह बातें करना चाहते हैं उस प्रकार के तो, आईडीई में प्रकाश डाला नाम, या चर नाम, कार्य, आप भाषा के खोजशब्दों जानते एक में डाला जाता है विशिष्ट रंग, आप आम तौर पर के साथ अपनी फ़ाइलें नाम करना चाहते एक खास फाइल एक्सटेंशन। इसलिए हम एक php के साथ हमारे फ़ाइल का नाम है विस्तार है, लेकिन फिर भी पीएचपी के साथ हम चाहते हैं कि लिखने में सभी PHP कोड फ़ाइल इन पीएचपी में संलग्न हो गया है हम देखते हैं कि सीमांकक यहाँ स्क्रीन पर। कोण ब्रैकेट? PHP शुरू करने के लिए। तो फिर हम अपने पीएचपी के सभी लिखने हम बीच में चाहते हैं कि कोड। और फिर ? कोण कोष्ठक बंद करने के लिए। हम इस, तो ऐसा नहीं करते हैं क्या होने जा रहा है? यह दुर्घटना करने के लिए नहीं जा रहा है। यह करने के लिए नहीं जा रहा है वास्तव में हमारे कार्यक्रम को बर्बाद। लेकिन यह करने के लिए नहीं जा रहा है हम चाहते हैं कि प्रभाव। ऐसा करने के लिए क्या हो रहा है, सच है, हम कोशिश करते हैं और इस कार्यक्रम को चलाने जब कि, सब कुछ नहीं है उन लोगों सीमांकक के बीच शब्दशः बाहर मुद्रित किया जा रहा है। यह करने के लिए नहीं जा रहा है वास्तव में कोड को निष्पादित, यह करने के लिए जा रहा है, बस शब्दशः इसे बाहर प्रिंट। अब क्यों मामला है? इतनी सी में जाना जाता है है एक संकलित भाषा के रूप में। तुम्हें शायद के साथ परिचित हो अपने कार्यक्रम बनाने के कदम, ग फ़ाइलों और ज फ़ाइलों मोड़ मेकअप के साथ एक एकल निष्पादन में, विशेष रूप से उपयोग कर रहा हमारे संकलक के रूप में बजना। पीएचपी, हालांकि, ऐसा नहीं करता इस समकक्ष है। पीएचपी एक क्या कहा जाता है व्याख्या की भाषा। और उसका क्या मतलब है? खैर, यह हम परिवर्तित करने के लिए नहीं है इसका मतलब शून्य और लोगों को हमारे स्रोत कोड पहले से। बल्कि, वहाँ एक कार्यक्रम है, जो भी कहा जाता है PHP और समझता है कि पीएचपी, एक तरह से यह मक्खी पर कर सकते हैं। यही कारण है कि वास्तव में बिल्कुल सही नहीं है लेकिन यह एक बहुत अच्छा सादृश्य है का क्या हो रहा है। यह उन लोगों की व्याख्या है मक्खी पर शून्य और लोगों को। और अगर ऐसा है यह पता नहीं है कैसे कुछ पर कार्रवाई करने के लिए, यह पता नहीं है कि कैसे करने के लिए प्रक्रिया पीएचपी, आप शायद ठीक है, वहाँ है कि पाठ में डाल करना चाहते थे? तुम्हें शायद में कोड डाल करना चाहते थे वहाँ, यह PHP-- के बीच नहीं है, भले ही पीएचपी सीमांकक। But-- तो यह नहीं जा रहा है आप के लिए इसे नष्ट करने, यह सिर्फ मूल रूप से इसे त्यागने के लिए जा रहा है। तो यह मुद्रित करने के लिए जा रहा है यह स्क्रीन करने के लिए बाहर। यह एक बुरा है जैसे यह लगता है बात है, लेकिन वास्तव में यह है एक सच होने जा रहा अच्छी बात है, हम करेंगे के रूप में हम के बारे में बात करते हैं तो देखते हैं PHP वेब विकास, इसका मतलब यह है क्योंकि हम कर सकते हैं PHP और एचटीएमएल बिखेरना। हम उन्हें एक साथ उपयोग कर सकते हैं एक और अधिक गतिशील वेब पेज बना। लेकिन में उस पर और अधिक PHP वेब विकास पर वीडियो। तो पीएचपी की वाक्य रचना क्या है? यही कारण है कि इस वीडियो के बारे में क्या है। चलो इसके बारे में बात करें। तो, चर बाहर शुरू करने के लिए। PHP चर मौजूद हैं। सिर्फ बड़े वहाँ रहे हैं दो सी से मतभेद पहला यह है कि वहाँ कोई प्रकार विनिर्देशक। हम, पूर्णांक कहने के लिए नहीं है चार, नाव, वह सब सामान। हम अब और ऐसा करने के लिए नहीं है। पीएचपी एक आधुनिक भाषा है। यह आप क्या कर रहे हैं यह पता लगाने कर सकते हैं करते हैं या एक सबसे अच्छा बनाने की कोशिश तुम क्या करने की कोशिश कर रहे हैं के रूप में क्या लगता है। तो यह है कि बहुत अच्छा है। दूसरी बात यह सब चर यह है कि नाम एक डॉलर के हस्ताक्षर के साथ शुरू करना है। यही कारण है कि करने के लिए इस्तेमाल करने के लिए बस कुछ है। इसकी वजह यह है, थोड़ा अजीब है पीएचपी समझ सकते हैं कि तो यह है क्या एक चर है और क्या नहीं है। इसलिए हर चर नाम एक डॉलर के हस्ताक्षर के साथ शुरू होता है। इतनी सी में हम कुछ कह सकते हैं इस तरह, पूर्णांक एक्स = 54। हम पीएचपी में अब और ऐसा करने के लिए नहीं है। हम सिर्फ एक्स = 54 $ कह सकते हैं। और हम सी में, उदाहरण के लिए, कह सकते हैं, हम CS50 ज पौंड को शामिल किया था, तो हेडर फाइल, हम कह सकते हैं स्ट्रिंग वाक्यांश = "इस CS50 है।" हम हालांकि, पीएचपी में है कि ऐसा करने की जरूरत नहीं है। हम सिर्फ $ वाक्यांश कह सकते हैं = "इस CS50 है।" और वास्तव में, स्ट्रिंग अब है PHP में एक निर्मित में डेटा प्रकार, या यों कहें पीएचपी समझता एक स्ट्रिंग है क्या। यह एक सरणी से अलग है पात्रों का यह सी में है की तरह सभी अपने पसंदीदा सी से सशर्त बयान अभी भी आप का उपयोग करने के लिए उपलब्ध हैं। तो वहाँ कोई बड़ा परिवर्तन। हम हम कर सकते हैं say-- कर सकते हैं इस तरह बयान करते हैं। $ Y 43 है, तो या $ जेड = 15। तो यह है कि बहुत सीधा है। अगर हम और कुछ हो सकता है। अगर हम और अगर नहीं तो हो सकता है। और कुछ नोटिस सुंदर यहाँ अच्छा है, और इस उन में से एक की तरह है सी, नोटिस बनाम पीएचपी के फायदे क्या समारोह हम यहाँ का उपयोग नहीं कर रहे हैं? हम एक तुलना करने के लिए == उपयोग कर रहे हैं चर, $ नाम, एक स्ट्रिंग के लिए। हम सही, सी में ऐसा नहीं कर सकता है? हम नामक एक समारोह का उपयोग किया था StrComp या StrEndComp या किसी इससे संबंधित चचेरे भाई का। और तो पहले से ही हम इन फायदों को देखते हैं। हम कुछ करने की जरूरत नहीं है मूर्ख के रूप में या शायद unintuitive कहा जाता है एक समारोह में बुलाने के रूप में StrComp मैं सिर्फ परीक्षण करना चाहते हैं चाहे वह एक मूल्य के एक स्ट्रिंग के बराबर होती है। मैं तो बस के बराबर होती है इस्तेमाल कर सकते हैं जैसे मैं कुछ और कर सकता है। तो एक फायदा नहीं है। कभी-कभी, जिस तरह से आप कर सकते हैं elseif, बाकी के रूप में अगर एक शब्द में देखते हैं। और उस के रूप में अच्छी तरह से PHP में ठीक है। तो कभी कभी आपको लगता है कि देख सकते हैं। यह एक टाइपो नहीं है। पीएचपी वास्तव में elseif समझता है। मैं नहीं जानता कि क्यों वे कि लागू करने का फैसला, लेकिन हम कई बार देखा है के रूप में अब तक हमारे वीडियो भर में, हम प्रोग्रामर यदि यह प्यार हम जल्दी से बातें कर सकते हैं तो यह है कि अंतरिक्ष से छुटकारा मिल रहा जाहिरा तौर पर एक बड़ा लाभ है। तो यह है कि यदि और elseif है। हम यह भी त्रिगुट ऑपरेटर है, स्मरण करो सवालिया निशान पेट, अगर नहीं तो वास्तव में कम फार्म के लिए या सशर्त शाखाओं में बंटी। और जाहिर है, इस में, क्या हम यहाँ क्या करने की कोशिश कर रहे हैं चर आवंटित किया गया है सही है या गलत या तो $ पत्र, $ वर पर निर्भर करता है एक अल्फाबेट है। इसलिए इस isalpha करने के लिए बहुत समान है हम सी से से परिचित हैं कि इस पीएचपी में बराबर की तरह है। समारोह जाहिरा तौर पर है ctype_alpha कहा जाता है, लेकिन लगता है कि हम पीएचपी में इसे कैसे करते हैं। तो यह सब करते हैं, तो हो सकता है जा रहा है $ वर एक पत्र है, $ पत्र सच है। $ वर एक पत्र नहीं है, $ पत्र झूठा है। हम यह भी अभी भी स्विच बयान है। हम सी से उन लोगों के रूप में अच्छी तरह से याद करते हैं। वहाँ बहुत शीर्ष पर, कि हम कैसे करते हैं मिल पूर्णांक या तार मिल की तरह कुछ। तो पीएचपी में बनाया गया है कि है। हम अब और CS50 पुस्तकालय की आवश्यकता नहीं है। हम सिर्फ समारोह ReadLine उपयोग कर सकते हैं। क्या ऐसा करने के लिए जा रहा है प्रिंट है संदेश बाहर, "अपने राज्य, कृपया, "और उसके बाद शीघ्र निमिष निवेश करने के लिए उपयोगकर्ता के लिए इंतजार कर कुछ जानकारी। अब क्या बाकी नोटिस हम स्विच के साथ कर सकते हैं। इससे पहले कि आप इसे इस्तेमाल किया गया है, आपको लगता है कि स्विच याद कर सकते हैं पूर्णांकों के लिए बहुत ज्यादा ही सीमित है और वर्ण, लेकिन अब हम तार का उपयोग कर सकते हैं। और वास्तव में, स्विच बयान पीएचपी में बहुत थोड़ा अधिक लचीला है सी से अपने चचेरे भाई से छोरों। की बस सशर्त तरह, सभी अपने पुराने पसंदीदा वहाँ अभी भी कर रहे हैं। हम गिनती कि जबकि छोरों है 1 से इस मामले में 100 के लिए। हम छोरों, जबकि ऐसा है कि, 1-100 गिनती और हम छोरों के लिए है कि 1-100 गिनती। तो वहाँ कोई बड़ी छलांग। वाक्य रचना बहुत है बिल्कुल वैसा ही ज्यादा है, अब हम प्रयोग कर रहे छोड़कर डॉलर के हस्ताक्षर चर बजाय पूर्णांक चर घोषित करने की या हमारे काउंटर के लिए ऐसा कुछ। चीजें एक मिलता है, जहां यहाँ है हालांकि, सी की तुलना में बहुत बेहतर है। सारणियों। इसलिए हम थे याद है जब आदेश में, सी के बारे में बात कर रही है हमें आगे बढ़ने और हटना करने के लिए जानकारी के सेट, हम डिफ़ॉल्ट की तरह करने की जरूरत एक लिंक सूची के इस विचार को, सी सरणियों आकार में तय किया गया है। हम उन्हें हटना नहीं कर सका। हम उन्हें बढ़ने नहीं कर सका। हम स्मृति reallocate करना पड़ा और यह सब पागलपन करना या लिंक सूचियों का उपयोग करें, जो बहुत थोड़ा अधिक स्थान ले। लेकिन पीएचपी में, सरणियों हैं अब और आकार में तय नहीं। वे विकसित कर सकते हैं और वे सिकुड़ कर सकते हैं। तो फिर, इन 20 साल से अस्तित्व में है कि सी की पहली रिलीज के बीच और पहली रिलीज पीएचपी, हम तुम्हें पता है, कि फैसला किया यह वास्तव में बहुत अच्छा होगा हम यह कर सकते हैं। और इसलिए हम इस लागू किया है। तो पीएचपी सरणियों में निश्चित नहीं होते आकार, और पीएचपी नहीं करता है, क्योंकि वास्तव में प्रोग्रामर का सामना सामने है प्रकार के विचार, हम डेटा प्रकार के मिश्रण कर सकते हैं हमारे सरणियों में भी है। इसलिए हम भी सभी का उपयोग करने की जरूरत नहीं है पूर्णांकों या सभी अस्थायी अंक, हम सब का मिश्रण हो सकता है एक एकल सरणी में विभिन्न प्रकार की। एक सरणी है घोषणा बहुत सीधा। यह सिर्फ किसी भी अन्य चर की तरह है। $ Nums = सरणी (1, 2, 3, 4), सरणी एक समारोह किया जा रहा है कि पीएचपी में बनाया गया है कि आप के लिए एक सरणी पैदा करेगा। यह चार मानों की सरणी बनाता है, इस मामले में नंबर, $ nums बुलाया। और यह करने के लिए एक से अधिक रास्ता नहीं है। और हम करने जा रहे हैं इस पीएचपी में एक बहुत देखते हैं। PHP कई अलग से विकसित किया गया है लोग बढ़ता है और बढ़ता है और बढ़ता है और। वहां आम तौर पर न सिर्फ दो या दो से पीएचपी में कुछ करने के लिए तीन तरीके हैं, आमतौर पर 10 या 20 की तरह नहीं है। यहां सिर्फ एक आम बात है एक सरणी की घोषणा करने के लिए रास्ता। $ Nums = वर्ग ब्रैकेट 1, 2, 3, 4। तो इस तरह सी कोण के समान है बल्कि, घुंघराले ब्रेस संकेतन br--। $ - या यह पूर्णांक nums वर्ग होगा कोष्ठक घुंघराले ब्रेस 1, 2, 3, 4 के बराबर होती है। पीएचपी में यह $ nums = वर्ग है कोष्ठक में 1, 2, 3, 4। लेकिन इन उदाहरणों के दोनों यहाँ मुझे दे इस मामले पूर्णांकों में चार की एक सरणी। अब मैं इस पर कुछ हमले के लिए क्या करना चाहते हैं? वैसे मैं सिर्फ $ nums 4 कह सकते हैं, जो फिर, हम अभी भी यहाँ से 0 से गिनती कर रहे हैं पीएचपी में, पांचवां होगा सरणी के तत्व। मैं सिर्फ इतना है कि कह सकते हैं। मैं एक SEG पीड़ित करने के लिए नहीं जा रहा हूँ मेरी सरणी बस है, क्योंकि गलती कि समायोजित करने के लिए विकसित करने के लिए जा रहा है। यह ठीक है, बहुत अच्छा है? और वास्तव में, मैं भी करने की जरूरत नहीं है मैं यह करना चाहते हैं, जहां निर्दिष्ट करें। मैं सिर्फ इस और सिर्फ कह सकते हैं सही अंत करने के लिए उस पर हमले, या मैं भी सिर्फ सकता है $ nums 20 या 1,000 कहते हैं। यह वास्तव में कोई फर्क नहीं पड़ता। यह अभी भी सिर्फ जा रहा है अंत करने के लिए सही पर यह हमले। तो मैंने जाना, और हम कर रहे हैं as-- कर सकते हैं यहाँ में इसे कवर करने के लिए नहीं जा रहा, लेकिन मैं ब्याह या पट्टी कर सकते हैं के रूप में अच्छी तरह से सरणी के बाहर तत्वों, और सरणी समायोजित करने के लिए हटना होगा कि अब गायब है या खाली जगह। हमले के लिए एक और रास्ता नहीं है एक सरणी पर कुछ है, जो array_push नामक एक समारोह है। तो फिर, किया जा रहा है सिर्फ इस विचार बातों के कई अलग अलग तरीके से करने में सक्षम। तो क्या अब हम तीन अलग अलग तरीकों से देखा है एक सरणी पर एक और तत्व हमले के लिए। तो यह एक और तत्व कहते हैं $ nums सरणी के अंत करने के लिए। और हम अपने डेटा प्रकार मिश्रण कर सकते हैं। इसलिए मैं नहीं की एक सरणी हो सकता था 1, 2, 3, 4, लेकिन 1, सच, 3, 4, जहां सच एक बूलियन है, और उसके बाद मैं एक और तत्व पर हमले करना चाहते हैं कि सरणी के लिए, शायद एक स्ट्रिंग, स्ट्रिंग "पाँच," मैं ऐसा कर सकता है। और अब मेरे सरणी होगा सच 1, 3, 4, पाँच होना। शब्द पांच, नहीं पूर्णांक 5। तो वहाँ लचीलेपन का एक बहुत। लचीलापन हो जाता है और भी बेहतर है, हालांकि, पीएचपी कुछ के लिए समर्थन किया है क्योंकि एक साहचर्य सरणी बुलाया। और हम एक तरह से अस्पष्ट बात की सी में के बारे में साहचर्य arrays हैश तालिकाओं के संदर्भ में, क्योंकि में क्या साहचर्य arrays वास्तव में सभी कर रहे हैं चाबी बना रहे हैं के बारे में मूल्य जोड़ी मैपिंग। और अगर इस मामले में, keys-- हम, सी से सरणियों के साथ परिचित हो चाबियाँ सूचकांक संख्या रहे हैं। 0, 1, 2, 3। और मूल्यों को हम पाते हैं कि क्या कर रहे हैं सरणी 0, सरणी 1, इतने पर सरणी 2, और। तो चाबियाँ अनुक्रमित रहे हैं, और मान रहे हैं उस सरणी स्थान में क्या है, कि सूचकांक द्वारा निर्दिष्ट। लेकिन PHP में, हम यह करने की जरूरत नहीं है सरणी 0 की धारणा, श्रेणी 1, श्रेणी 2 अब और नहीं। अब हम वास्तविक शब्दों का प्रयोग कर सकते हैं मूल्यों के लिए चाबी नक्शा करने के लिए। और इसलिए मैं कुछ इस तरह कह सकते हैं। मैं का उपयोग कर एक सरणी बना सकते हैं इस प्रकार के रूप वर्ग कोष्ठक सिंटेक्स। $ पिज्जा = वर्ग ब्रैकेट "पनीर" और उसके बाद डबल तीर संकेतन के इस तरह, 8.99, "पेपरोनी," 10.99-- 9.99 तीर और इसी तरह। और तो क्या हो रहा है यहाँ? मैं वास्तव में क्या कर रहा हूँ? मैं महत्वपूर्ण मूल्य जोड़ी मैपिंग पैदा कर रहा हूँ। तो कह के बजाय, उदाहरण के लिए, पिज्जा 0, टुकड़े 1, पिज्जा 2, अब मैं पिज्जा कह सकते हैं पनीर, पिज्जा पेपरोनी, और मूल्यों के लिए देखें उनके साथ जुड़े। तो यहाँ हमारे चाबियाँ हरे रंग में हैं। पनीर, पेपरोनी, सब्जी, भैंस चिकन। यहाँ आता है कि तीर है इस कुंजी मान जोड़ी मानचित्रण। और फिर यहाँ मान रहे हैं उस सरणी स्थान पर। तो यह सरणी 0 8.99 के बराबर होती है कह की तरह है। कुंजी 0 है। मूल्य 8.99 है। मैं अब सरणी पनीर का कहना है, या इस में कर सकते हैं मामले पिज्जा पनीर, पनीर, कुंजी है और मैं क्या मिल पिज्जा पनीर 8.99 है। यही कारण है कि मैं वहाँ लगता है कि मूल्य है। तो मैं चीजों की तरह कह सकते हैं। $ पिज्जा पनीर = 7.99। मैं एक बिक्री हो रही हूँ कहना। मैं मैं ड्रॉप करना चाहता हूँ dis-- चाहते हैं पनीर पिज्जा की कीमत। या मैं सब्जी का उपयोग कर सकते हैं पिज्जा एक शर्त के हिस्से के रूप में, या मैं एक नया तत्व को जोड़ सकते हैं मेरी सरणी, बस मैं पहले से कर सकता है पसंद है। मैं यह करने के लिए एक नए तत्व जोड़ सकते हैं कुंजी "बेकन" के साथ साहचर्य सरणी और मूल्य 13.49। लेकिन इस तरह की एक समस्या का परिचय आप एक दूसरे के लिए इसके बारे में सोचो। हम कैसे इस सरणी के माध्यम से पुनरावृति होगा? है ना? सी में, हम सिर्फ एक होता है पाश के लिए, आम तौर पर, कि 0 से चला जाएगा शून्य से 1 सरणी के आकार। सरणी में n तत्वों है, वैध अनुक्रमित n शून्य से 1 0 कर रहे हैं। तो हम करने के लिए एक पाश के लिए इस्तेमाल कर सकते हैं हर एक तत्व के माध्यम से कदम। लेकिन यह सच नहीं है मामला अब और नहीं, है ना? अब हम महत्वपूर्ण मूल्य जोड़ी है, जहां चाबियाँ शब्द हैं जहां मैपिंग, कैसे हम शब्दों के सभी पुनरावृति हो? ठीक है, सौभाग्य, पीएचपी है एक तरह से, भी इस के साथ सौदा करने के लिए और इसलिए हम वापस कूद जाएगा एक पल के लिए छोरों को पाश की एक चौथाई तरह लागू करने के लिए कि पीएचपी एक foreach पाश बुलाया में मौजूद है। और क्या एक foreach पाश करता है यह मूल रूप से एक ही विचार है। आप सरणी के किसी भी प्रकार के लिए इसका इस्तेमाल कर सकते हैं। लेकिन यह मूल रूप से है पाश के लिए एक के रूप में एक ही विचार है, के बजाय इस्तेमाल करने के अलावा सूचकांक संख्या, तुम बस इस अजीब वाक्य रचना जहां है आप हर एक तत्व फोन इस लूप के प्रयोजनों के लिए एक नाम है। इस मामले में तो, foreach ($ कुंजी के रूप में $ सरणी)। असल में, उस टिप्पणी नोटों के रूप में, कि foreach पाश के अंदर, यह हर एक के ऊपर जाने के लिए जा रहा है आम तौर पर है, जो $ सरणी के तत्व एक साहचर्य सरणी होने के लिए जा रहे हैं, लेकिन वास्तव में सरणी किसी भी तरह का हो सकता है आप PHP में चाहते हैं। और हर बार है कि पाश के लिए एक तुम हो सकता है $ सरणी वर्ग कोष्ठक ने कहा है $ मैं, तुम सिर्फ $ कुंजी कह सकते हैं। तो यह है कि $ कुंजी हर एक के लिए एक उर्फ ​​हो जाता है अपने PHP साहचर्य सरणी के सूचकांक और इसलिए आप इसे इस तरह से उपयोग कर सकते हैं। तो उदाहरण के लिए, हम है अब हमारे पिज्जा सरणी मिला है। मैं एक तरह से यह tucked गए हैं वहाँ कोने में इसलिए हम एक त्वरित उदाहरण ऐसा करने के लिए इसका इस्तेमाल कर सकते हैं। मैं के रूप में foreach ($ पिज्जा कहते हैं $ पिज्जा), ठीक है, क्या हो रहा है? खैर, मैं हर माध्यम से पुनरावृति करने के लिए जा रहा हूँ सरणी $ पिज्जा का एक तत्व, और ऐसा करने में, मैं फोन करने के लिए जा रहा हूँ हर तत्व है, जब मैं अंदर हूँ पाश के लिए उस के शरीर की, पिज्जा $। तो यह है कि एक की तरह है स्टैंड में, याद है, कि $ पिज्जा एक स्टैंड में कहने के लिए है $ पिज्जा वर्ग कोष्ठक $ मैं हम पाश, जहां हम के लिए एक का उपयोग कर रहे थे, तो इस मामले में $ i = 0, से जा सकते हैं, $ मैं 3 =। हम महत्वपूर्ण मूल्य जोड़े नहीं था यहाँ, इस तत्व 0, 1, 2, 3 होगा, और हम जाने के लिए एक पाश के लिए प्रयोग करेंगे $ पिज्जा 0, $ पिज्जा 1, $ पिज्जा 2, $ पिज्जा 3। तो अब सिर्फ पिज्जा प्रतिस्थापन डॉलर जो अलग-अलग कुंजी के लिए। तो क्या यह बाहर मुद्रित करने के लिए जा रहा है? मैं $ पिज्जा बाहर मुद्रण कर रहा हूँ। क्या मैं at-- खोजने के लिए जा रहा हूँ मैं मैं $ पिज्जा $ प्रिंट आउट तो क्या होगा? है ना? मैं बाहर मुद्रित करने के लिए जा रहा हूँ पिज्जा की ith तत्व, क्या मैं मुद्रित करने के लिए जा रहा हूँ? मैं बाहर मुद्रित करने के लिए जा रहा हूँ उस स्थान पर मूल्यों, है ना? हम क्या कर रहे थे जैसे कि अगर सी के संदर्भ में यह, हम आम तौर पर हमारे इटरेटर का उपयोग नहीं करते चर, मैं = 0, मैं कम से कम 3 है int मैं 0, 1, 2, 3 बाहर मुद्रित करने के लिए ++। हम सरणी 0 बाहर मुद्रण कर रहे हैं श्रेणी 1, श्रेणी 2, सरणी 3। और इसलिए इस बाहर प्रिंट क्या यह है। यह कीमतों की सूची है। 8.99, 9.99, 10.99, 11.99। अब यहाँ एक त्वरित टिप्पणी। एक foreach पाश जरूरी नहीं है क्रम में बातें बाहर प्रिंट। यह गारंटी नहीं है। यह आमतौर पर होता है। यह आमतौर पर आदेश में पर आधारित है जो तत्व सरणी के लिए जोड़ रहे हैं, तो बस मन में है कि भालू। यह क्रम में नहीं हो सकता है। लेकिन एक foreach पाश पुनरावृति होगा हर एक तत्व के पार सवाल में सरणी की। इस मामले में, फिर से, उस सरणी $ पिज्जा है। मैं अगर, हालांकि, वाक्य रचना को बदल सकते हैं मैं चाबी और मूल्य दोनों चाहते हैं। इसके बजाय $ पिज्जा कहने का $ पिज्जा के रूप में, मैं यह कह सकते हैं। और तुम मुझे क्या किया है पर नजर डालें तो यहां हरे रंग में प्रकाश डाला, यह एक महत्वपूर्ण मूल्य जोड़ी मानचित्रण की तरह लग रहा है। और तो you-- यदि आप नहीं कर रहे हैं, भले ही पूरी तरह से यह करने के लिए क्या हो रहा है यकीन है, आप शायद अनुमान लगा सकते हैं कि $ टॉपिंग जा रहा है इस मामले में महत्वपूर्ण हो सकता है और $ कीमत मूल्य होने जा रहा है। इसलिए मैं अब हर तत्व प्रतिस्थापन रहा हूँ $ का एक महत्वपूर्ण मूल्य जोड़ी के रूप में पिज्जा, और अब मैं चाबी का उल्लेख कर सकते हैं और मूल्य, जो हो सकता है काम में, उदाहरण के लिए, के रूप में इस प्रकार है। "एक पूरी" - यह एक बहुत की है मुद्रण here-- "एक पूरी" चल रहा है टॉपिंग तो कीमत है, और "पिज्जा $ लागत" मैं अवधि और एक बैकस्लैश एन बाहर प्रिंट। तो अब, नोटिस फिर मैं करने के लिए उपयोग किया है एक चाबी, $ टॉपिंग, और एक मूल्य, $ मूल्य। तो क्या आप यह अनुमान लगा सकते हैं बाहर मुद्रित करने के लिए जा रहा है? प्रिंट बयान के एक बहुत कुछ है, लेकिन केवल एक बैकस्लैश वहाँ n है, तो उस पर कुछ प्रिंट करने जा रहा है कोड की एक लाइन पर एक entire--। मैं चाबी का उल्लेख कर सकते हैं और मूल्य है, तो अब, बजाय सिर्फ सक्षम होने का कीमतों बाहर मुद्रित करने के लिए, मैं कुछ इस तरह बाहर मुद्रित कर सकते हैं। "एक पूरे पनीर पिज्जा $ 8.99 खर्च होती है।" और अब मैं keys-- के सभी का उपयोग कर रहा हूँ पनीर, पेपरोनी, सब्जी, भैंस chicken-- और मूल्यों। 8.99, 9.99, 10.99, 11.99 तो यह सिर्फ एक अलग तरीका है एक foreach पाश क्या करने कि बजाय का बस, आप मूल्यों तक पहुँच देने यह तुम देता you-- यह सिर्फ देता है कुंजी और मूल्यों के लिए उपयोग। तो जानकारी को छापता है। मैं पहले से ही इसके बारे में कुछ कर लिया है अलग अलग तरीकों से, आपने गौर किया हो सकता है। दो कार्य हम मुख्य रूप से है प्रिंट और गूंज देखा जाता है। और बहुत ज्यादा सब उद्देश्यों के लिए है और उद्देश्यों, वे वही कर रहे हैं। They're-- एक बहुत ही सूक्ष्म वहाँ लायक भी नहीं है कि अंतर मूल रूप से हर जगह में हो रही है, लेकिन आप शायद का उपयोग कर सकते हैं आप प्रिंट उपयोग कर सकते हैं के रूप में अच्छी तरह से गूंज। और कहा कि केवल दो नहीं है। पीएचपी अलग से एक बहुत कुछ है चीजें बाहर मुद्रित करने के तरीके, और यह भी एकीकृत करने के तरीके की है स्ट्रिंग के बीच में चर। इतनी सी से याद करते हैं, आप ऐसा करेंगे क्या समारोह याद हम चर स्थानापन्न करने के लिए उपयोग कर सकते हैं बातों में हम बाहर मुद्रित करने के लिए करना चाहते हैं? आप शायद इस का उपयोग काफी एक बहुत कार्य करते हैं। printf, है ना? तो यह है कि हम अंदर से पहले क्या किया है हमारे foreach पाश के संदर्भ में। हम इन पांच था अलग प्रिंट बयान, कि केवल था क्योंकि जिस तरह से मैं वास्तव में समय पर पता था कैसे संदेश का प्रिंट आउट करने के लिए। मैं एकीकृत करने के लिए कैसे पता नहीं था मेरे PHP कोड में टॉपिंग चर $। खैर, मैं सिर्फ एक जंगली अनुमान ले लिया है, तो printf, यह वास्तव में काम किया होता। printf मैं उपयोग कर सकते हैं कि एक समारोह है पीएचपी में, बस मैं सी में इसका इस्तेमाल कर सकते हैं जैसे और तो कुछ इस तरह, printf, फिर, हम उस के साथ परिचित हो। % s बदल दिया जाता है $ टॉपिंग के मूल्य के साथ। दूसरी% s को बदल दिया जाता है $ मूल्य के मूल्य के साथ। और इसलिए मैं interpellating रहा हूँ, जो सिर्फ एक अच्छा तरीका है कह के मैं चिपका रहा हूँ उस स्थान में चर। इसलिए मैं टॉपिंग में $ plugging हूँ जहां लाल% एस $ कीमत जहां नीले% s है और है, और फिर मैं संदेश मिल जाएगा, "एक पूरे पनीर पिज्जा $ 8.99 खर्च होती है।" मैं हालांकि, यह कर सकते हैं न ही रास्ता है। शायद मैं इस विधि का उपयोग करना चाहते हैं। यह सबसे अधिक है वास्तव में है क्या चर ताछ बुलाया। मैं एक गूंज उपयोग कर सकते हैं। हम देखेंगे के रूप में मैं भी एक प्रिंट इस्तेमाल कर सकते हैं। लेकिन यहां क्या हो रहा है? सबसे पहले, मैं करने के लिए है डॉलर के हस्ताक्षर से बचने। हम वास्तव में थे जब याद रखें, क्योंकि पिज्जा की कीमतों बाहर मुद्रण, मैं वास्तव में उन्हें स्वरूपण था एक डॉलर के हस्ताक्षर के साथ मौद्रिक आंकड़े। लेकिन हम यह भी डॉलर के संकेत का उपयोग कर रहे हैं PHP में चर नाम का प्रतिनिधित्व करने के लिए, और विशेष रूप में मैं कर रहा हूँ जब घुंघराले की इस पद्धति का उपयोग ब्रेस चर ताछ विधि, मैं की जरूरत है यदि ऐसा नहीं होता तो मेरे डॉलर के हस्ताक्षर से बचने के लिए मैं एक चर के बारे में बात कर रहा हूँ। यह वास्तव में करने जा रहा है सचमुच एक डॉलर के हस्ताक्षर प्रिंट। तो एक तरह से करने के लिए इसे analogize तुम वहाँ अंत में क्या देखते हैं। यह वास्तव में नहीं है प्रिंट बैकस्लैश एन, है ना? यह एक नई लाइन चरित्र बाहर प्रिंट। इस तरह से यह करने के लिए नहीं जा रहा है है- प्रिंट बैकस्लैश डॉलर के हस्ताक्षर, यह सिर्फ बाहर मुद्रित करने के लिए जा रहा है एक डॉलर के हस्ताक्षर चरित्र। एक ही विचार है। दृश्यों से बच, क्या इन बातों को कहा जाता है। लेकिन मैं नहीं कर रही हूँ कि नोटिस % s के प्रतिस्थापन के किसी भी प्रकार, मैं सिर्फ शाब्दिक plugging हूँ इन चर में। और तो है- में यहां क्या होगा , कि $ topping-- के मूल्य में फिर से है सिर्फ हम क्या कर रहा हूँ के साथ रखते हुए इसलिए far-- पनीर के बारे में बात कर रही हो जाएगा वहाँ में खामियों को दूर किया। और $ कीमत है जो कुछ भी मूल्य होगा पिज्जा पर, वर्ग कोष्ठक, पनीर, जो 8.99 था। और तो यह भी बाहर प्रिंट होगा "एक पूरे पनीर पिज्जा $ 8.99 खर्च होती है।" जैसा मैंने कहा और, मैं इस्तेमाल कर सकते हैं बजाय गूंज के यहां प्रिंट, और कार्यक्षमता होना बिल्कुल वैसा ही बहुत ज्यादा। यह एक ही बात बाहर प्रिंट होगा। यह करने के लिए एक और रास्ता नहीं है, और यह एक और लाभ यह है पीएचपी के तार के साथ काम कर रहे हैं। हम स्ट्रिंग संयोजन कर सकते हैं। हम भी, सी में यह कर सकता है, strcat नामक एक समारोह का उपयोग कर, लेकिन फिर, हम के लिए किया था अलग कार्यों कहते हैं। यह करने के लिए इस पूरे गड़बड़ थी। हम करना पड़ा string.h पौंड शामिल हैं। यह ठीक है, एक उत्पादन किया गया था? लेकिन अब मैं सिर्फ इस डॉट ऑपरेटर का उपयोग कर सकते हैं एक साथ तार जोड़ना। तो मैंने कहा, "एक पूरी" श्रृंखलाबद्ध रहा हूँ और उसके बाद जो कुछ भी $ टॉपिंग का मूल्य है, और फिर एक और स्ट्रिंग, "पिज्जा लागत $" और फिर concatenating जो कुछ भी $ कीमत का मूल्य है, और फिर अंत में मैं कर रहा हूँ अवधि बैकस्लैश n पर टैकिंग। और तो यह भी होता है "एक पूरी" बाहर प्रिंट - फिर से, हम पहली बार के बारे में बात कर रहे हैं कि पिज्जा array-- के तत्व "एक पूरे पनीर पिज्जा $ 8.99 खर्च होती है।" अवधि, फिर बैकस्लैश एन, के साथ $ टॉपिंग और $ कीमत प्रतिस्थापन हम अपने foreach में निर्दिष्ट किया था क्या के लिए महत्वपूर्ण मूल्य जोड़ी मानचित्रण के रूप में पाश। पीएचपी कार्य संभाल सकते हैं। कार्य की तरह थे सी का अभिन्न अंग के रूप में हमने देखा। चर की तरह, हम की जरूरत नहीं है , समारोह की वापसी के प्रकार निर्दिष्ट यह वास्तव में बात नहीं करता है। और हम निर्दिष्ट नहीं करते कोई पैरामीटर के डेटा प्रकार, वे वास्तव में नहीं है क्योंकि बात नहीं, हम पीएचपी में देखा है। हर समारोह शुरू की है समारोह कीवर्ड के साथ। यही कारण है कि हम उस PHP के लिए संकेत मिलता है कि कैसे है क्या हम के बारे में बात कर रहे हैं एक समारोह है। और हम के लिए नहीं है पर सभी मुख्य साथ सौदा है, दुभाषिया क्योंकि, पीएचपी दुभाषिया, ऊपर से नीचे तक काम करता है, की परवाह किए बिना। यह देखता है, तो आप कर सकते हैं एक समारोह कॉल, यह हूँ समारोह कॉल मिल जाना, यहां तक ​​कि इसे बाद में आता है। लेकिन यह करने के लिए ऊपर से पढ़ने के लिए जा रहा है नीचे, तो हम निर्दिष्ट करने की आवश्यकता नहीं है, तुम कहाँ शुरू यहाँ है। आप की लाइन 1 पर शुरू अपने पीएचपी वहाँ से नीचे काम करते हैं और। यहाँ तो हम पैदा होगा कैसे एक समारोह hard_square बुलाया। जाहिरा तौर पर यह एक लेता है पैरामीटर, मैं $ एक्स बुला रहा हूँ जो। इस समारोह में सिर्फ जटिल है विभिन्न चीजों वर्णन करने के लिए। हम अभी भी वापसी मान हैं। मैं यहाँ एक पाश के लिए उपयोग कर रहा हूँ। लेकिन यह मूल रूप से बस, क्या है सिर्फ $ एक्स बार $ एक्स के बराबर है। क्या मैं वास्तव में सिर्फ जोड़ने का है कर रहा हूँ एक्स एक्स बार शून्य करने के लिए या $ शून्य $ एक्स बार के लिए एक्स। लेकिन इसे प्रभावी ढंग से ठीक है $ एक्स बार $ x गुणा के रूप में ही। मैं अभी भी एक मूल्य वापसी कर सकते हैं, इस मामले में $ परिणाम में, और मैं PHP में एक समारोह में दिया है। यहाँ आप संदर्भ में इसका इस्तेमाल कैसे हो सकता है। तो शायद मैं कुछ PHP फ़ाइल के अंदर हूँ। वहाँ कि नीले रंग में नोटिस मैं अपने PHP सीमांकक का उपयोग किया है, कोण ब्रैकेट प्रश्न चिह्न PHP। उन लोगों के बीच में से सभी कर रहे हैं मैं लिखना चाहता हूँ कि पीएचपी। इसलिए मुझे लगता है कि जाहिरा तौर पर get-- करने जा रहा हूँ मैं उपयोगकर्ता संकेत करने के लिए जा रहा हूँ मुझे एक नंबर, दुकान देने के लिए कि चर, कि चर $ एक्स में दुकान, जो कुछ भी वे मुझे दिया था। तब मैं गूंज लिए जा रहा हूँ कि मूल्य के hard_square, और जाहिरा तौर पर जा रहा एक नई लाइन पर हमले के लिए के रूप में अच्छी तरह से, और फिर बाद में मैं हूँ इसलिए hard_square समारोह को परिभाषित जब मैं कि hard_square करने के लिए कहते हैं, यह मैं के बारे में बात कर रहा हूँ क्या जानता है। अब, मैं भी कर सकता है कुछ इस तरह। यह थोड़ा अलग है। यह लगभग वही है हम पहले क्या देखा के रूप में ही, एक्स के बजाय सिर्फ $ कह के सिवाय वहाँ पैरामीटर hard_square के रूप में, मैं $ एक्स = 10 कह रहा हूँ। तो इस का एक उदाहरण है बचाव की मुद्रा में प्रोग्रामिंग, अपने कार्यक्रमों की रखवाली दुर्भावनापूर्ण उपयोगकर्ताओं के खिलाफ। यह कुछ त्रुटि ऐसा करने के लिए एक ही रास्ता है हम वास्तव में नहीं था कि जाँच सी में एक विकल्प के रूप में है हम कभी नहीं कर सकता कुछ का डिफ़ॉल्ट मान निर्दिष्ट करें। हम हमेशा की जांच की थी चाहे वह, उदाहरण के लिए, हम GetString को फोन किया, तो यह था सबसे उचित तुरंत अगर हम के बाद , हम जाँच की है कि जाँच स्ट्रिंग है कि क्या उपयोगकर्ता हमें दे दिया है कि बातिल के बराबर नहीं है हम शुरू करने के लिए नहीं करना चाहती क्योंकि एक अशक्त तार के साथ काम कर रहे हैं। इधर, यह एक तरीका है उस के खिलाफ की रक्षा के लिए। उपयोगकर्ता हमें कुछ नहीं प्रदान करता है किसी भी तरह, हम क्या करने जा रहे हैं? खैर, हम सिर्फ कहूँगा जो कुछ भी वे हमें नहीं प्रदान की थी, हम बस के बजाय 10 में प्लग करने के लिए जा रहे हैं। वे हमें एक मूल्य नहीं दिया तो, अगर बस डिफ़ॉल्ट रूप से 10 का उपयोग करें। और यहाँ तो, मैं कर रहा हूँ कि नोटिस एक hard_square करने के लिए कहते हैं, लेकिन कोई शीघ्र वहाँ उपयोगकर्ता के लिए, है ना? मैं सिर्फ एक खाली फोन कर रहा हूँ। लेकिन मेरे समारोह hard_square एक पैरामीटर की उम्मीद है। क्या इस बाहर मुद्रित करने के लिए जा रहा है? यह ठीक है, 100 प्रिंट आउट करने के लिए जा रहा है? उपयोगकर्ता नहीं था, क्योंकि मुझे कुछ भी दे। और इसलिए मैं सिर्फ कल्पना करने के लिए जा रहा हूँ 10-- 10 कि डिफ़ॉल्ट मान है। और इसलिए इस प्रिंट होगा बाहर 100 अपनी लाइन पर। PHP फाइलों की जरूरत नहीं है सिर्फ एक ही फाइल हो। आप एक साथ कई सारी फाइलें गठबंधन कर सकते हैं, बस सी में आप कर सकते हैं जिस तरह से पसंद हम सी में एक ऐसा करने के लिए आम तौर पर किया गया था कि क्या किया # शामिल हेडर फाइल में खींच लिया पाने के लिए। हम पीएचपी में ऐसा नहीं करते। हम require_once बुलाया कुछ करो। और फिर इस पूरे वहाँ बात यह है कि इस __dir__ क्या है? यही कारण है कि सिर्फ एक खास है चर, या विशेष निरंतर, वास्तव में, कि क्या निर्दिष्ट करता है अपने वर्तमान निर्देशिका है। और तो यह लग रहा है अपने मौजूदा निर्देशिका में एक फ़ाइल कहा cs50.php के लिए इस उदाहरण में, और यह है कि फाइल छड़ी करने के लिए जा रहा है अपने PHP कार्यक्रम के शीर्ष पर, आप की आवश्यकता होती है डाल यह सोचते हैं कि अपने PHP फ़ाइल के शीर्ष पर लाइन एक बार। तो पीएचपी मुख्य रूप से इस्तेमाल किया जाता है लेकिन विशेष रूप से, इस्तेमाल नहीं किया वेब आधारित प्रोग्रामिंग के लिए एक भाषा के रूप में। यही कारण है कि यह हो सकता है के लिए आया था वास्तव में कैसे करना है। लेकिन यह एक पूर्ण है हमने देखा है के रूप में भाषा,। हम बहुत ज्यादा सभी चीजों को देखा है यह सी के समान हैं कि ऐसा कर सकते हैं, और यह की एक बिल्ली कर सकते हैं कि अधिक से अधिक एक बहुत। लेकिन क्योंकि यह एक पूर्ण भाषा और हम यह कमांड लाइन प्रोग्रामिंग कर सकते हैं। हम कमांड लाइन प्रोग्राम चला सकते हैं। सभी कि एक कमांड को चलाने के लिए आवश्यक है PHP में लिखा है कि लाइन कार्यक्रम आप एक PHP दुभाषिया के लिए किया है। तो यह करने के लिए एक तरह से अनुरूप है अपने सिस्टम पर एक संकलक होने आप अपनी सी कोड संकलन करना चाहते हैं निष्पादन योग्य फ़ाइलों में बदल जाते हैं। आप एक PHP दुभाषिया की आवश्यकता है कि अपने सिस्टम पर मौजूद है इसलिए यदि आप PHP फाइलों व्याख्या कर सकते हैं। आप मान लें, और आमतौर पर इस दुभाषिया, पीएचपी कहा जाता है और यह आमतौर पर सबसे बंडल के साथ है डाउनलोड या पीएचपी के प्रतिष्ठानों आप निश्चित रूप से ऑनलाइन प्राप्त कर सकते हैं और है कि PHP दुभाषिया के नाम हम, CS50 में आईडीई है। तुम सब प्रकार php फ़ाइल है। और जो अपने कार्यक्रम के क्या करने जा रहा है यह है के माध्यम से चलाने के लिए जा दुभाषिया, यह है सब कुछ है कि अनदेखी करने के लिए जा रहा नहीं सवाल mark-- के बीच में या, कोण ब्रैकेट प्रश्न चिह्न पीएचपी, पीएचपी सीमांकक, और इसे बाहर प्रिंट और यह व्याख्या और अमल करेंगे अपने PHP सीमांकक के अंदर कोड। तो चलो CS50 आईडीई पर पॉप जाने और पीएचपी फ़ाइलों की एक जोड़ी पर एक नजर है, में, पीएचपी फ़ाइलों की एक जोड़ी चल CS50 आईडीई के कमांड लाइन इंटरफेस। यहाँ तो हम CS50 आईडीई में हैं, और मैं स्वतंत्रता ले लिया है के hello1.php नामक एक फ़ाइल खोलने। इस की और जाहिर है, सामग्री फ़ाइल, वहाँ सिर्फ पीएचपी सीमांकक हैं और, गूंज के बीच में ("हैलो दुनिया")। यह एक बहुत सरल PHP कार्यक्रम है। मैं तो बस नीचे स्क्रॉल करने के लिए जा रहा हूँ यहाँ अपने टर्मिनल विंडो को, और मैं php टाइप करने के लिए जा रहा हूँ hello1.php, हिट दर्ज करें। हैलो वर्ल्ड। यही कारण है कि हम क्या कर रहे थे शायद है यह करने के लिए उम्मीद कर रहा है, है ना? के ऊपर जाना और ले चलते हैं एक और एक कार्यक्रम को देखो। hello2.php। बहुत ज्यादा एक ही बात है, एक बहुत यहाँ पर नहीं जा रहा है। इस बार, हालांकि, मैं संकेत करने के लिए जा रहा हूँ उपयोगकर्ता मुझे उनके नाम देने के लिए। मैं फिर से उस ReadLine समारोह का उपयोग कर रहा हूँ। $ नाम = ReadLine। यही कारण है कि शीघ्र है, "तुम्हारा नाम क्या है?" जाहिर है मैं मुद्रण हूँ यह अपने आप ही लाइन पर। और फिर, इसलिए रेखा से नीचे कि शीघ्र की जाएगी जहां उपयोगकर्ता अपने नाम दर्ज कर सकते हैं। और फिर मैं एक छोटा सा का उपयोग कर रहा हूँ 3 लाइन पर यहाँ चर ताछ "नमस्ते" बाहर प्रिंट और जो कुछ भी उपयोगकर्ता प्रकार के। इसलिए इस हैलो, कह के अनुरूप है, अल्पविराम% s हम सी में printf उपयोग कर रहे थे तो चलो चलते हैं और इस कार्यक्रम की व्याख्या करते हैं। तो फिर, मैं नीचे स्क्रॉल करेंगे मेरी टर्मिनल विंडो के लिए। PHP hello2.php। आपका नाम क्या है? डग। हैलो, डौग। मैं भी एक है फ़ाइल hello3.php बुलाया। मैं स्पष्ट करने के लिए जा रहा हूँ मेरी नियंत्रण एल के साथ स्क्रीन, और मुझे लगता है कि निष्पादित करने के लिए जा रहा हूँ। आपका नाम क्या है? डग। हैलो, डौग। इसलिए व्यवहार के समान है hello2.php, लेकिन क्यों यह hello3.php है? वैसे, यहाँ अंतर है। इस मामले में, नोटिस यहाँ है कि लाइन पर 1, मैं नहीं है कि कुछ है पीएचपी सीमांकक के बीच में। मैं सिर्फ out-- या मैं मुद्रण कर रहा हूँ सिर्फ "तुम्हारा नाम क्या है?", टाइप PHP दुभाषिया यह देखता है, यह पता नहीं कैसे पीएचपी के रूप में व्याख्या करने के लिए किया गया है, और इतने के बजाय, असफल यह सिर्फ उसे थूक जा रहा है। तो, अब लाइन 3 पर करने के लिए मेरे फोन का नोटिस ReadLine, अब और कोई संकेत नहीं है। मैं सिर्फ वास्तव में है-- जब जा रहा हूँ PHP दुभाषिया, यह देखता है इसे बाहर प्रिंट करने के लिए जा रहा है "आपका नाम क्या है?" तो फिर यह here's--, ठीक है, ओह, देखता है बाकी सब होने जा रहा है इसलिए, पीएचपी के रूप में व्याख्या यह काम करता है कि क्यों। मैं जरूरी संकेत करने के लिए नहीं है ReadLine के अंदर उपयोगकर्ता है--, मैं बस के बाहर यह हो सकता है पीएचपी सीमांकक की और दुभाषिया की अनुमति देते हैं सिर्फ मेरे लिए इसे बाहर प्रिंट करने के लिए। तो अगर आप वास्तव में ही नहीं है पीएचपी सीमांकक का एक सेट है अपने कार्यक्रम में। आप वास्तव में, उनमें से कई हो सकते हैं खोलने और जरूरत के रूप में उन्हें बंद। तो चलो एक नजर डालते हैं कार्यक्रमों की एक जोड़ी पर जहां CS50 आईडीई में हम होने का यह विचार को स्पष्ट सीमांकित पीएचपी के एकाधिक सेट। ठीक है, तो मैं एक फाइल खोल दिया है यहां add1.php बुलाया। और यहाँ क्या हो रहा है पर ध्यान दिया। बस के रूप में पहले, मैं एक एकल पीएचपी सीमांकक की स्थापना की। मैं बाहर मुद्रित करने के लिए जा रहा हूँ संदेश, "मुझे एक नंबर दे दीजिए।" तो मैं एक पंक्ति को पढ़ने के लिए जा रहा हूँ और चर $ संख्या 1 में यह दुकान। तो मैं फिर से बाहर मुद्रित करने के लिए जा रहा हूँ। मुझे एक दूसरी नंबर दे। उपयोगकर्ता की दुकान से एक लाइन पढ़ें वे $ num2 में में टाइप जो भी हो। उन्हें एक साथ जोड़ें और उस दुकान $ योग कहा जाता है एक चर में परिणाम है, और फिर ", प्रिंट आउट इन दो संख्याओं का योग है, "और फिर दरियाफ्त वहाँ चर $ योग। तो चलो बस इस चलाते हैं दुभाषिया के माध्यम से यह है कि हम क्या उम्मीद है कि इस बात की पुष्टि करने के लिए। PHP add1.php। मुझे एक नंबर 3 दे दीजिए। मुझे एक दूसरी नंबर, 4 दे दीजिए। इन दो संख्याओं का योग 7 है। यही कारण है कि 3 प्लस 4 है। ठीक है? वहाँ तो कुछ भी नहीं बहुत फैंसी। और अब add2.php ऊपर खोलते हैं। यहाँ, मैं पीएचपी के एक जोड़े को मिल गया है वहाँ सेट सीमांकित, है ना? लाइन 1, 3-- लाइन 1 और 3 कोई पीएचपी सीमांकक है। तो जब दुभाषिया यह बस है, उन्हें देखता है वास्तव में बाहर थूक जा रहा क्या मैं वहां से लिखा है। मैं इतना है कि जहां मेरा उत्साह सब कर रही है। लाइनों 2 और 4 पर, हम देखते हैं बहुत परिचित $? सीमांकक के PHP तरह, इसलिए उन दो लाइनें हैं PHP के रूप में निष्पादित करने के लिए जा रहा है। और फिर लाइन पर 5, मैं यह है यहीं अजीब बात है, सही? इस कोण ब्रैकेट प्रश्न चिह्न बराबर चिह्न। मैं भी एक छोटा सा आगे में ज़ूम करेंगे। आप यह है कि मैं क्या कर रहा हूँ देख सकते हैं वहीं इस बारे में $ बात कर रहे? =। ऐसा लगता है कि इतना है कि आम है कि पता चला है हम पीएचपी का एक सेट है कि खुले कारण सीमांकक एक मूल्य के बाहर मुद्रित करने के लिए है। और कहा कि हम क्या करने जा रहे है। लेकिन उसके लिए भी आशुलिपि है। $? = कह के लिए पीएचपी आशुलिपि है $ की तरह कुछ और? गूंज PHP योग संख्या 1 और num2 की। तो यह सिर्फ एक और है उस के लिए आशुलिपि। मैं इस कार्यक्रम, पीएचपी add2.php चलाते हैं तो। मैं थोड़ा नीचे ज़ूम करेंगे। मुझे एक नंबर, 4 दे दीजिए। मुझे एक दूसरे नंबर दे दीजिए। और मैं वास्तव में के बारे में परवाह नहीं है के बाद से पीएचपी में डेटा प्रकार, मैं 4.8 कह सकते हैं। इन दो संख्याओं का योग 8.8 है। यही कारण है कि समारोह बहुत ज्यादा बर्ताव करता है हम उम्मीद करेंगे के रूप में बिल्कुल वैसा ही, भी। और मैं एक और खोला है यहां तक ​​dice.php बुलाया। इस बार फिर कोशिश करें। मैं यहाँ अधिक कहा जाता है यह भी देखते हैं, जो dice1.php, उस कोण ब्रैकेट सवाल है वहाँ में बराबर चिह्न के अंकन के निशान, लेकिन इस मामले में मैं कर रहा हूँ कि नोटिस समारोह रैंड, बुला जो आप के रूप में उम्मीद कर सकते हैं एक यादृच्छिक संख्या उत्पन्न करता है। "आप एक लुढ़का," और यह करने के लिए जा रहा है + कुछ यादृच्छिक संख्या, आधुनिक 6 की गणना 1। तो यह है कि मुझे नंबर दे दूँगा 1-6 की रेंज में। आधुनिक 6 मुझे देना होगा कि याद रखें 0-5 की रेंज में एक संख्या है, लेकिन मैं पासा रोल अनुकरण कर रहा हूँ, तो जो मैं यहाँ क्या कर रहा है, मैं इन पासा 0 से जाने के लिए नहीं करना चाहते हैं 5 के लिए, मैं 1-6 जाना कि पासा चाहते हैं। और इसलिए इस पाने के लिए एक रास्ता है 1-6 की रेंज में मुझे। मैं दो बार यह कर रहा हूँ। तो जाहिरा तौर पर मैं रोलिंग हूँ इस कार्यक्रम में दो पासा। इसलिए मैं अपने स्क्रीन स्पष्ट करेंगे, और मैं php dice1.php कर देंगे। तुम एक 4 और एक 2 लुढ़का। और मैं इस कार्यक्रम चलाते हैं फिर, आप एक 5 और एक 5 लुढ़का। इसलिए मैं इस कार्यक्रम को चलाने के लिए हर समय, मैं अलग नंबरों से हो रही है क्योंकि मैं करने के लिए हर समय इसलिए, इस पर शुरू हो रहा है। यह एक नई उत्पन्न करने के लिए जा रहा है मेरे लिए यादृच्छिक संख्या की स्थापना की। हम करने के लिए इस्तेमाल कर रहे हैं तो सी से चल रहे कार्यक्रम, हम ./ टाइप करने के लिए इस्तेमाल कर रहे हैं ठीक है, एक कार्यक्रम का नाम? यही कारण है कि हम सब किया है कि कैसे है सी में हमारे कार्यक्रमों में से अब तक। हम के रूप में अच्छी तरह से PHP में यह कर सकता है कुछ जोड़कर बुलाया हमारे PHP फ़ाइल के शीर्ष करने के लिए एक मामला। मुझे लगता है यह एक मूर्खतापूर्ण शब्द की तरह है पता है। यह हैश धमाके के लिए कम है। यही कारण है कि वहाँ पहले दो अक्षरों है। हम विस्मयादिबोधक बिंदु फोन याद रखें कंप्यूटर विज्ञान के क्षेत्र में अक्सर एक धमाके। यह भी तेज धमाके के लिए हो सकता है। यह व्याख्या करने के लिए एक दो तरीके है। लेकिन यह मूल रूप से एक विशेष प्रकार का है की कमान कि PHP दुभाषिया ओह, मैं चाहता हूँ, के रूप में समझता है आप इस कार्यक्रम पर अमल करने के लिए, जो जाहिरा तौर पर / उपयोगकर्ता / बिन / पीएचपी, जो है जहां PHP दुभाषिया वास्तव में है विशेष रूप से हमारे सिस्टम पर रहता है। It's-- तो क्या है यहां होता है दुभाषिया, ओह, समझता है मैं जाहिरा तौर पर उपयोग करने वाला हूँ इस कार्यक्रम में इस फ़ाइल को चलाने के लिए। और तो यह आपको अनुमति देता है कदम पर छोड़ करने के लिए की PHP something.php कहने के लिए कर रही है। एक अन्य पकड़ है यहाँ है, जो कि यदि हम हमारे कार्यक्रमों करना चाहते हैं उम्मीद के रूप में, हम काम कहा जाता है कुछ करने की ज़रूरत है एक फ़ाइल अनुमति परिवर्तन। और हम go-- करेंगे और हम एक छोटी सी बात थोड़ा और अधिक के बारे में फ़ाइल परिवर्तन की अनुमति हमारे MVC पर वीडियो है, लेकिन में यह करने के लिए पर्याप्त यह आप क्या करने की जरूरत है का कहना है कि बनाने के क्रम में अपने .php फ़ाइलों निष्पादन योग्य। तो चलो के रूप में इस पर एक नजर डालते हैं CS50 आईडीई में हमारे अंतिम उदाहरण से अधिक है। तो यहाँ आईडीई में मैं इस में दो फाइल है होने के लिए नहीं दिखाई देते हैं कि पीएचपी निर्देशिका .php बुलाया। मैं एक समारोह में कहा जाता है add-- मैं एक फ़ाइल कहा add3 है और एक फाइल dice2 बुलाया। तो चलो एक त्वरित ले चलो देखो और add3 ऊपर खुला। और अगर आप शुरुआत में देख सकते हैं, के रूप में मेरी फाइल की मैं सही है, यह मामला है? इस हैश निशान विस्मयादिबोधक बिंदु। अब, आप शायद भी हूँ किसी कारण के लिए सूचना है कि, मैं किसी भी वाक्य रचना नहीं है अब प्रकाश डाला, और यह मैं पहले के लिए alluded क्या है जो मैं अपने फ़ाइल का नाम नहीं है, तो यह था कि .php, मैं लाभ नहीं है वाक्य रचना की अब और प्रकाश डाला। इस फ़ाइल में सिर्फ add3 कहा जाता है। मैं इस पर बाद में चला सकते हैं तो ./ add3 और नहीं ./ add3.php साथ। तो reason-- यह अभी भी है ठीक है, यह अभी भी मान्य पीएचपी है, लेकिन यह क्योंकि, प्रकाश डाला वाक्य रचना नहीं कर रहा है इस फ़ाइल something.php नहीं कहा जाता है। यही कारण है कि केवल वास्तविक अंतर है यहाँ, प्लस मामला। तो चलो क्या होता है जब देखते हैं मैं कोशिश करते हैं और इस कार्यक्रम चलाते हैं। ./ Add3, बस मैं सी बैश के साथ होता है। ./ Add3 अनुमति से इनकार किया। यह आप जा रहे हैं क्या है आप भूल जाते हैं तो देखने के लिए बदलने के लिए chmod आदेश का उपयोग करने के लिए फाइल की अनुमति। यह नियमित रूप से पीएचपी भी निकलता है फाइलें अभी नहीं डाला जा सकता। वे व्याख्या की जा सकती है, लेकिन हम कर रहे हैं यहां एक छोटे से अलग कुछ कर रही है। हम इसे क्रियान्वित कर रहे हैं। और इसलिए मैं अनुमति जोड़ने की जरूरत निष्पादन की, एक + एक्स के लिए add3 हमें। तब मैं ./ add3 कह सकते हैं। मुझे एक नंबर दे दीजिए। 5, 6। इन दो संख्याओं का योग 11 है। इसी तरह, मैं पहले से ही chmoded है dice2, तो मैं बस, dice2 ./ टाइप कर सकते हैं आप एक 1 और 1 लुढ़का, आप इतने पर एक 5 और एक 4, और लुढ़का। तो यह है कि बहुत ज्यादा है एक PHP वाक्य रचना का विचार है, है ना? के माध्यम से प्राप्त करने के लिए एक बहुत कुछ है, मुझे पता है। लेकिन उम्मीद है कि आपको लगता है कि पीएचपी अब देखा है सी से सच है कि अलग नहीं है और वास्तव में हमें की क्षमता देता है एक या दो पायदान ऊपर बातें लेने के लिए। हम वास्तव में चिंता करने की जरूरत नहीं है हम वास्तव में नहीं है about-- बहुत ज्यादा के बारे में बहुत ज्यादा चिंता करने की ज़रूरत कम स्तर के विवरण हम सही, सी के साथ के बारे में चिंता थी? हम उच्च पर ध्यान केंद्रित कर सकते हैं स्तर के सामान कि पीएचपी हमें ऐसा करने की अनुमति देता है और के लिए लेने के लिए यह हमारे लिए काम करेंगे कि दे दी। तो यह है, अब हमें की क्षमता देता है PHP के लिए सी संक्रमण से, एक बहुत अधिक हैं कि कार्यक्रम बनाने के लिए जटिल और शायद एक बहुत अधिक मजबूत। इसलिए मुझे लगता है कि तुम मज़ा काम कर रहे हैं आशा PHP के साथ, और मैं डौग लॉयड हूँ। इस CS50 है।