[Powered by Google Translate] [धारा 8 - अधिक आरामदायक] [रोब Bowden - हार्वर्ड विश्वविद्यालय] [यह CS50 है. - CS50.TV] ये सप्ताह अनुभाग नोट्स के लिए बहुत कम होने जा रहे हैं, इसलिए मैं सिर्फ बात कर रखने के लिए जा रहा हूँ, तुम लोगों के लिए सवाल पूछते रहते हैं जा रहे हैं, और हम जितना संभव हो उतना समय को भरने की कोशिश करेंगे. लोगों का एक बहुत लगता है कि इस pset जरूरी मुश्किल नहीं है, लेकिन यह बहुत लंबा है. pset कल्पना ही एक घंटे पढ़ने के लिए लेता है. हम आपको दे एसक्यूएल की एक बहुत आप संभवतः के लिए उपयोग करने की आवश्यकता हो सकती है. हम आप इसे का एक बहुत माध्यम से चलना है, तो यह भी बुरा नहीं होना चाहिए. किसी को भी शुरू कर दिया है या समाप्त हो गया? यह पिछले pset है. ओह, मेरे भगवान. आमतौर पर इस के बाद एक एक जावास्क्रिप्ट है, लेकिन कैलेंडर परिवर्तन बातें 1 सप्ताह कम सब कुछ करता है, और हम अब एक जावास्क्रिप्ट pset है. मैं नहीं जानता कि कैसे प्रभावित करता है कि जावास्क्रिप्ट परीक्षा पर दिखाई जा रही है या 1 कीजिए. मुझे लगता है यह कुछ हो सकता है आप की तरह जावास्क्रिप्ट के बारे में उच्च स्तर बातें पता है की जरूरत है, लेकिन मुझे शक है हम तो बस आप सीधे जावास्क्रिप्ट कोड देना चाहते हैं क्योंकि आप इसे में एक pset नहीं पड़ा है. लेकिन कि प्रश्नोत्तरी समीक्षा के लिए सामान अगले सप्ताह किया जाएगा. सवालों की धारा. इस सामान की एक बहुत कुछ शब्दों में खराब है, लेकिन हम क्यों चर्चा करेंगे. सी के विपरीत, PHP एक "गतिशील टाइप" भाषा है. इसका क्या मतलब है, आप से पूछना? खैर, उन चार, नाव, int, और अन्य खोजशब्दों के सभी को अलविदा कहने के लिए आप का उपयोग करने की जरूरत है जब चर और सी में कार्यों की घोषणा PHP में एक चर प्रकार मूल्य द्वारा निर्धारित किया जाता है कि यह वर्तमान में पकड़ रखा है. तो इससे पहले कि हम एक dynamic.php नामक एक फाइल में इस कोड लिखें, PHP गतिशील रूप से लिखा गया है. यह सच है. मैं तथ्य यह है कि इसका मतलब है कि हम चार, नाव के लिए अलविदा कह रहे हैं, int के साथ असहमत हैं, और अन्य खोजशब्दों. गतिशील टाइप और वैकल्पिक के बीच सटीक अंतर, जो statically टाइप किया जाता है, वह यह है कि गतिशील टाइप, अपने प्रकार की जाँच और सामान के सभी चलाने के समय में होता है, जबकि statically टाइप यह संकलन समय पर होता है. सामान्य में स्थिर शब्द संकलन समय चीजों का मतलब लगता है. मुझे लगता है कि इसके लिए अन्य का उपयोग करता है, लेकिन सी में जब आप एक स्थैतिक चर की घोषणा, इसके भंडारण के समय संकलन में आवंटित की है. यहाँ, गतिशील टाइप बस मतलब है कि - सी में अगर आप एक स्ट्रिंग और एक पूर्णांक जोड़ने के लिए, जब आप यह संकलन की कोशिश, यह शिकायत करने के लिए जा रहा है, क्योंकि यह कहना है कि आप एक int और एक सूचक नहीं जोड़ सकते हैं जा रहा है. यह सिर्फ एक वैध आपरेशन नहीं है. यह एक और बात यह है कि हम एक दूसरे में मिल जाएगा. लेकिन जाँच के उस प्रकार, तथ्य यह है कि यह समय संकलन में शिकायत, स्थिर प्रकार की जाँच कर रहा है. भाषाओं में जहां आप चार, नाव, int कहने की जरूरत नहीं है, और उन चीजों के सभी कर रहे हैं, लेकिन भाषा बात के संदर्भ से बताने के लिए किस प्रकार यह होना चाहिए कर सकते हैं, लेकिन यह अभी भी statically टाइप है. तो अगर आप 51, OCaml ले, आप की जरूरत कभी नहीं इन प्रकार के किसी भी उपयोग के लिए, लेकिन यह अभी भी संकलन समय पर कहते हैं कि तुम यह नहीं कर कर सकते हैं क्योंकि आप एक int और एक स्ट्रिंग मिश्रण हो. गतिशील टाइप सिर्फ मतलब है कि चलाने के लिए समय के दौरान कुछ समय के लिए एक शिकायत प्राप्त करने के लिए जा रहे हैं. यदि आप भी जावा पहले सामान्य रूप में प्रयोग किया जाता है, लगभग किसी भी भाषा सी प्रकार statically, तो टाइप किया जा सी, सी + +, जावा, आम तौर पर उन सभी statically टाइप कर रहे हैं जा रहा है. जावा में जब आप कुछ संकलन और तुम कह रहे हो स्ट्रिंग कुछ नया है कि एक स्ट्रिंग नहीं है के बराबर होती है, कि शिकायत करने के लिए जा रहा है क्योंकि उन प्रकार मेल नहीं खाते. जो समय संकलन में शिकायत करने जा रहा है. लेकिन यह भी कुछ गतिशील समय चीजों की तरह है अगर आप कुछ डाली की कोशिश एक प्रकार है कि अपने मौजूदा प्रकार की तुलना में अधिक विशिष्ट है, वहाँ कुछ भी नहीं है यह संकलन समय पर करने के लिए जांच कर सकते हैं कि कलाकारों के लिए सफल होने जा रहा है कि क्या है. जावा भी कुछ गतिशील प्रकार की जाँच है कि जैसे ही यह कोड की है कि लाइन के लिए हो जाता है जब यह वास्तव में को क्रियान्वित करने है, यह करने के लिए कलाकारों को क्या हो रहा है, जाँच है कि अगर डाली पहली जगह में वैध था, और अगर यह नहीं था, तो यह शिकायत करते हैं कि आप एक अवैध प्रकार है जा रहा है. गतिशील प्रकार की जाँच. एक dynamic.php नामक एक फाइल में इस प्रकार है. Dynamic.php. मैं उस स्वरूपण खोलना होगा. हम एक चर है, हम इसे पूर्णांक 7 करने के लिए सेट, तो हम इसे और% s मुद्रित करने के लिए जा रहे हैं - ओह, हम इसे का मुद्रण कर रहे हैं, तो gettype चर के प्रकार वापस जा रहा है. हम बस प्रकार कर रहे हैं और अधिक से अधिक फिर से छपाई. हम सिर्फ php.dynamic.php. हम देखेंगे कि यह पूर्णांक से बूलियन करने के लिए स्ट्रिंग परिवर्तन के रूप में हम के माध्यम से जाना. सी में कोई बूलियन डेटा प्रकार है, वहाँ कोई स्ट्रिंग डेटा प्रकार है. चार * और बूलियन सिर्फ int या चार या कुछ और हो जाता है. PHP में इन प्रकार मौजूद हैं, और है कि सी PHP के बड़े फायदे में से एक है - कि स्ट्रिंग आपरेशन असीम सी. से PHP में वे सिर्फ काम आसान कर रहे हैं. तो हम यहाँ वापस आना. हम dynamic.php भागा. यह PHP दुभाषिया, PHP बुलाया, dynamic.php में PHP कोड चलाने बताता है. यदि आप फ़ाइल में कोई त्रुटि है, दुभाषिया आपको बता देगा! दुभाषिया, यह PHP और सी. के बीच एक और बड़ा अंतर है सी में आप कुछ संकलन और फिर आपको लगता है कि संकलित फ़ाइल चला है. आप PHP में कुछ भी कभी नहीं संकलन. तो PHP दुभाषिया मूल रूप से बस लाइन द्वारा इस लाइन पढ़. यह हिट var = 7 तो यह printf तो हिट यह var तो हिट यह printf और इतने पर हिट. संकलन करता है यह एक सा है, और यह परिणाम caches इसलिए यदि आप स्क्रिप्ट चलाने के बाद आप कुछ कर सकते हैं, लेकिन मूल रूप से यह बात की लाइन तरह से एक पंक्ति है. इसका मतलब है कि अनुकूलन है कि हम सी में मिल के एक बहुत कुछ है, संकलन की तरह, यह सिर्फ आम तौर पर संकलक चाल का एक बहुत आप के लिए क्या कर सकते हैं. यह बाहर अप्रयुक्त चर ले जा सकते हैं, यह सब चीजों के इन प्रकार के कर सकते हैं, पूंछ recursion कर सकते हैं. PHP में आप कि लाभ पाने के लिए नहीं जा रहे हैं क्योंकि यह सिर्फ लाइन से लाइन से लाइन को क्रियान्वित करने शुरू करने जा रहा है, और यह वास्तव में इन बातों को नहीं पहचान करता है के रूप में आसानी से के बाद से यह एक बात पर बड़ा संकलन पास और फिर निष्पादन नहीं है; यह सिर्फ लाइन से लाइन है. तो यह है कि दुभाषिया है. हमारे गतिशील टाइपिंग के लिए वापस: बहुत शांत है, है ना? आप निश्चित रूप से कि सी में नहीं कर सकता है! अब, देख अगर तुम बाहर निम्न मानों में से प्रत्येक के प्रकार समझ सकते हैं. संदर्भ के लिए यह देखें. 3.50 तो. प्रकार क्या आपको लगता है कि होने जा रहा है? यहाँ प्रकार है हम कर रहे हैं. हम bools, integers, अस्थायी अंक, तार, arrays, वस्तुओं, और फिर संसाधनों, जो अस्पष्ट की तरह है. मुझे लगता है कि वहाँ वास्तव में यहाँ एक उदाहरण है. तो फिर वहाँ रिक्त है. रिक्त एक विशेष प्रकार है. सी विपरीत जहां नल सिर्फ 0 पते के साथ एक सूचक है, PHP में, रिक्त अपने स्वयं के प्रकार जहां केवल उस प्रकार के वैध बात रिक्त है. यह त्रुटि की जाँच के लिए बहुत उपयोगी है. सी जहाँ हम इस मुद्दे पर जहां अगर आप लौटने के रिक्त था, मतलब है कि आप एक रिक्त सूचक लौट रहे हैं या नल का उपयोग करने के लिए त्रुटि दर्शाता या कि भ्रम के सभी हम एक बिंदु पर था. यहाँ, नल लौटने आम तौर पर त्रुटि का मतलब है. चीजों की एक बहुत भी त्रुटि के लिए झूठी वापसी. लेकिन बात नल प्रकार है, अशक्त प्रकार के केवल एक चीज रिक्त है. फिर कॉलबैक है जैसे आप कुछ गुमनाम कार्यों को परिभाषित कर सकते हैं. आप के लिए समारोह में एक नाम देना नहीं है, लेकिन आप उस के साथ सौदा नहीं होगा. प्रकार को देखते हुए कि वे हमें पता करने की उम्मीद करते हैं, तुम्हें क्या लगता है 3.50 के प्रकार है? >> [छात्र] फ्लोट. हाँ. तो फिर यहाँ, तुम क्या लगता है कि इस का प्रकार है? >> [छात्र] सरणी. हाँ. था 1 एक नाव, 2 एक एक सरणी है. सूचना है कि इस सरणी एक सी सरणी की तरह नहीं है जहाँ आप सूचकांक 0 कुछ मूल्य सूचकांक 1, कुछ मूल्य है. यहाँ इंडेक्स एक, ख, ग और कर रहे हैं और मान 1, 2, और 3. PHP में एक साहचर्य सरणी और सिर्फ एक नियमित सरणी के बीच कोई अंतर नहीं है के रूप में आप इसे सी में बारे में सोचना होगा इस बस है, और हुड के नीचे एक नियमित सरणी सिर्फ एक साहचर्य सरणी है जहां कुछ मूल्य 0 नक्शे उसी तरह कुछ मूल्य के लिए नक्शे. इस कारण से, PHP वास्तव में तेजी से कोड / बेंच मार्किंग बातों के लिए बहुत बुरा हो सकता है के बाद से सी में जब आप एक सरणी का उपयोग कर रहे हैं आप जानते हैं कि एक सदस्य तक पहुँचने के लिए लगातार समय है. PHP एक सदस्य तक पहुँचने में है जो कितना समय जानता है? यह शायद स्थिर hashes इसे सही ढंग से अगर. कौन जानता है कि क्या यह वास्तव में हुड के नीचे क्या कर रही है? तुम सच में कार्यान्वयन को देखने के लिए कि यह कैसे उस के साथ निपटने के लिए जा रहा है की जरूरत है. Fopen तो. मैं यहाँ लगता है कि सिर्फ PHP मैनुअल fopen वापसी प्रकार को देखने जाने के लिए. हम यहाँ देखने के लिए आप बहुत ज्यादा PHP मैनुअल में कर सकते हैं किसी भी समारोह में देखो और यह PHP के आदमी पेज की तरह है. वापस प्रकार के संसाधन होने जा रही है. यही कारण है कि मैं इसे ऊपर देखा है, क्योंकि हम वास्तव में संसाधन परिभाषित नहीं किया है. संसाधन के विचार, सी में आप की तरह एक फ़ाइल * या जो कुछ भी मिला है, PHP में संसाधन फ़ाइल * है. यह क्या तुम से पढ़ने जा रहे हैं, यह तुम क्या करने के लिए लेखन किया जा रहे हैं. यह आमतौर पर बाहरी है, तो यह आप चीजों से खींच कर सकते हैं और चीजों को फेंक एक संसाधन है. और अंत में, नल के प्रकार क्या है? >> [छात्र] रिक्त. हाँ. केवल बात यह है कि नल है तो रिक्त है. नल नल है. PHP प्रकार की प्रणाली (बेहतर या बदतर के लिए) की एक विशेषता यह अपने प्रकार का हथकंडा क्षमता है. जब आप PHP कोड है कि विभिन्न प्रकार के मूल्यों को जोड़ती है की एक पंक्ति लिखने PHP समझदार बात करने की कोशिश करेंगे. PHP कोड के निम्नलिखित लाइनों के प्रत्येक की कोशिश करो. क्या छपा है? यह तुम क्या उम्मीद है? क्यों या क्यों नहीं? PHP के बारे में यह तथ्य यह है कि यह क्या करता है क्या हम कमजोर टाइप कॉल. कमजोर टाइप और जोरदार टाइप, वहाँ उन शब्दों के लिए अलग प्रयोग कर रहे हैं, लेकिन अधिकांश लोगों को कमजोर टाइप और जोरदार टाइप का उपयोग करने के लिए इस तरह की बात का मतलब ("1" + 2), कि काम करता है. सी में काम नहीं करेगा. आप काम नहीं कर रहा यह कल्पना कर सकते हैं. लोगों का एक बहुत गतिशील टाइपिंग और कमजोर टाइपिंग और स्थिर टाइपिंग और मजबूत टाइपिंग मिश्रण. अजगर एक भाषा है कि गतिशील टाइप का एक और उदाहरण है. तुम चर में प्रकार के आसपास फेंक और इसे चलाते समय निर्धारित करने के लिए जा रहा है कर सकते हैं किसी भी त्रुटि checkings. अजगर में यह करने के लिए इस पर अमल करने के लिए और यह देखेंगे ("1" 2 +) के लिए जा रहा है; और इस वजह से यह कहना है कि आप एक स्ट्रिंग और एक पूर्णांक नहीं जोड़ सकते हैं असफल हो जायेगी. PHP, जो बस के रूप में टाइप गतिशील है, यह निराश नहीं करेगा. कमजोर टाइप करने के लिए तथ्य यह है कि यह प्रकार के साथ बातें करता है के साथ क्या करना है कि वास्तव में भावना जरूरी नहीं बनाते हैं. तो ("1" + 2), मैं कल्पना कर सकते हैं कि 12 स्ट्रिंग किया जा रहा है, मैं इसे 3 स्ट्रिंग होने की कल्पना कर सकते हैं, मैं यह पूर्णांक 3 होने की कल्पना कर सकते हैं. यह जरूरी भी नहीं परिभाषित किया गया है और हम शायद यहाँ देखने के लिए जा रहे हैं कि जब हम प्रिंट ("1" + 2), यह शायद अंत अलग किया जा रहा है जा रहा है मुद्रण (1 + "2"). और यह मेरी राय में बदतर के लिए, हो सकता है, जाता है. यहाँ हम इन की कोशिश कर सकते हैं. PHP के बारे में एक छोटी सी चाल है कि आप वास्तव में फ़ाइल लिखने की जरूरत नहीं है. यह इस आदेश मोड चला है. Php-r तो, तो हम यहाँ आदेश में फेंक कर सकते हैं: "('1 '+ 2) प्रिंट," और मैं एक नई लाइन फेंक देंगे. इस 3 मुद्रित. ऐसा लगता है जैसे कि यह 3 छापता है और यह पूर्णांक 3. तो अब हम दूसरी तरह के आसपास की कोशिश: "प्रिंट (1 + '2 '); हम 3 मिलता है, और यह भी 3 पूर्णांक होने जा रहा है? मैं ईमानदारी से पता नहीं है. ऐसा लगता है कि तरह अनुरूप है. यह स्ट्रिंग या 12 की तरह कुछ भी किया जा रहा है की कोई भी मौका है कि कभी नहीं क्योंकि PHP विपरीत, जावास्क्रिप्ट और भी जावा, अभिलाग के लिए एक अलग ऑपरेटर है. PHP में कड़ी डॉट है. मुद्रण तो (1 '2 '), हमें 12 दे जा रहा है. यह भ्रम की स्थिति पैदा जहां लोगों को str = तरह कुछ करने की कोशिश करता है कुछ अन्य बात यह है कि वे उनके तार के अंत पर जोड़ना चाहते हैं, और कि विफल करने के लिए जा रहा है. आप str करने की जरूरत है. तो यह नहीं भूलना PHP में अभिलाग डॉट है. अन्य बातें करने की कोशिश: प्रिंट (50 + "सीएस"); मैं तुम्हें बता दिया है कि इस बात का कोई आशा CS50 में जिसके परिणामस्वरूप के बाद से अभिलाग + नहीं है. तुम्हें क्या लगता है इस के लिए खत्म किया जा रहा जा रहा है? मैं ईमानदारी से बिल्कुल पता नहीं है. ऐसा लगता है कि यह सिर्फ 50. यह स्ट्रिंग देखता है, और मुझे यकीन है कि अगर हम 123CS डाल - यह पहली स्ट्रिंग देखता है, यह इसे से एक पूर्णांक या इसे से एक नंबर पढ़ने की कोशिश करता है. इस मामले में यह 123CS देखता है. "यह समझ में एक पूर्णांक के रूप में नहीं कर सकता है, तो मैं सिर्फ 123 के बारे में सोच रहा हूँ." 123 तो 50 + 173 होने जा रहा है. और यहाँ यह एक पूर्णांक के रूप में इस पढ़ने शुरू होता है. यह कुछ भी नहीं देख नहीं करता है तो, यह सिर्फ 0 के रूप में व्यवहार करता है. 0 तो 50 + 50 होने जा रहा है. यह मैं मान रहा हूँ के समान कुछ करने जा रहा है. मैं 99 सोच रहा हूँ. हाँ, क्योंकि यह पहली बार लग रहा है - 99 तो. यहाँ (7/10), अगर यह सी थे, कि क्या लौटेंगे? 1 [] छात्र. >> हाँ, यह 1 हो सकता है क्योंकि 10/7 2 integers विभाजित होगा. एक पूर्णांक से विभाजित पूर्णांक एक पूर्णांक वापस जा रहा है. यह 1 बिंदु है कि जो भी होगा वापस नहीं है, तो यह सिर्फ 1 वापस जा सकते हैं. यहाँ (7/10) मुद्रण, यह वास्तव में उस की व्याख्या करने के लिए जा रहा है. और इसका मतलब है कि अगर आप वास्तव में की तरह है कि पूर्णांक गोलाई और सामान करना चाहते हैं, आप प्रिंट (मंजिल (10/7)) करने की जरूरत है; सी में यह शायद अजीब है कि आप पूर्णांक truncation पर नियमित रूप से भरोसा कर सकते हैं, लेकिन PHP में आप क्योंकि यह नहीं स्वचालित रूप से एक नाव में कर सकते हैं यह मोड़. और फिर (7 सच +), तुम क्या लगता है कि होने जा रहा है? मैं 8 लग रहा है और अगर यह 1 के रूप में सच की व्याख्या के लिए जा रहा है. ऐसा लग रहा है जैसे कि यह 8 है. तो कुछ भी हम तुम बिल्कुल नहीं करना चाहिए पिछले 10 मिनट में किया है. आप कोड है कि इस करता देखेंगे. यह इस रूप में सरल होना जरूरी नहीं है. आप 2 चर सकता है, और 1 चर एक स्ट्रिंग होना होता है और अन्य चर के लिए एक int होना होता है, और फिर आप इन चर को एक साथ जोड़ने के. चूंकि PHP गतिशील टाइप किया जाता है और यह आप के लिए किसी भी प्रकार की जाँच नहीं करना होगा और क्योंकि यह कमजोर और टाइप के बाद से यह सिर्फ स्वचालित रूप से इन बातों को फेंक देंगे एक साथ और सब कुछ काम करेंगे, यह भी पता है कि इस चर एक स्ट्रिंग होना चाहिए मुश्किल है, इसलिए मैं इसे इस चर नहीं जोड़ने के लिए, जो एक पूर्णांक है. सबसे अच्छा अभ्यास है अगर एक चर एक स्ट्रिंग है, एक स्ट्रिंग के रूप में यह हमेशा के लिए रखने के लिए. यदि एक चर एक int है, एक int के रूप में यह हमेशा के लिए रखने के लिए. यदि आप integers और तार के साथ सौदा करना चाहते हैं, आप varsint का उपयोग कर सकते हैं कि जावास्क्रिप्ट है. Intval. मैं यह सब समय है. PHP और जावास्क्रिप्ट मैं सब कुछ मिश्रण. तो intval एक चर के पूर्णांक मान वापस जा रहा है. अगर हम "(intval ('123 ')) प्रिंट में पारित, आप 123 मिलता है. ही Intval हमारे लिए चेक कि यह विशेष रूप से एक पूर्णांक नहीं जा रहा है. PHP मैनुअल, वहाँ सिर्फ इतनी सारी उपलब्ध कार्य कर रहे हैं, तो यहाँ मुझे लगता है कि क्या मैं का प्रयोग करेंगे is_numeric 1 है. मुझे लग रहा है कि झूठी लौटे. यह एक और बात हम === है पर जाना है. तो is_numeric ('123df '), आप कि रूप is_numeric नहीं बारे में सोचना होगा. सी में आप सभी वर्ण पुनरावृति करना होगा और देखने के लिए अगर हर चरित्र अंकों या जो कुछ भी है की जाँच करें. यहाँ is_numeric है कि हमारे लिए क्या करने जा रहा है, और यह गलत लौट रहा है. इसलिए जब मुझे लगता है कि मुद्रित, यह कुछ भी नहीं छपी है, तो यहाँ मैं यह देखने के लिए तुलना कर रहा हूँ, था कि तुम गलत पाए जाने पर होता है? और इसलिए अब यह 1 मुद्रण है. जाहिरा तौर पर यह सच के रूप में सच मुद्रण के बजाय सच के रूप में 1 प्रिंट. मुझे आश्चर्य है कि अगर मैं print_r करते. नहीं, यह अभी 1 करता है. === करने के लिए वापस जा रहे हैं, == अभी भी मौजूद है, और अगर आप टॉमी बात वह == कहना है कि पूरी तरह से ठीक है. मैं कहना है कि == भयानक है और आप == इस्तेमाल नहीं करना चाहिए करने के लिए जा रहा हूँ. अंतर यह है कि == बातें तुलना जहां यह सच हो सकता है भले ही वे एक ही प्रकार नहीं कर रहे हैं कर सकते हैं, जबकि === चीजें की तुलना करता है और पहले यह जाँच करता है कि वे एक ही प्रकार के होते हैं? हां. ठीक है, अब मैं के लिए यदि वे वास्तव में करने के बराबर है की तुलना करने के लिए जा रहा हूँ. आप 10 की तरह अजीब बातें बराबर होती है - चलो देखते हैं कि क्या कहते हैं. ('10 '== '1 E1'); यह सच देता है. क्या किसी को कोई अनुमान क्यों यह सच रिटर्न है? यह है कि बस के बारे में नहीं है. शायद यह एक संकेत है. लेकिन अगर मैं एक च कि बदल - यह झकना! मैं दोहरे उद्धरण चिह्नों का उपयोग कर रखना. डबल उद्धरण मुझ पर चिल्ला रहे हैं कारण है क्योंकि मैं डबल उद्धरण में डाल दिया है. तो मैं यहाँ में दोहरे उद्धरण चिह्नों से बचने, लेकिन एकल उद्धरण इसे आसान बनाते हैं. ('10 '== '1 F1'); सच मुद्रित नहीं. ('10 '== '1 E1'); सच प्रिंट. [छात्र] यह हेक्स? >> यह हेक्स, नहीं है, लेकिन यह बंद है कि यह की तरह है - 1E1, वैज्ञानिक संकेतन. यह 1 के रूप में 1E1 पहचानता 1 * 10 ^ या जो कुछ भी. उन बराबर पूर्णांक हैं. अगर हम === तो यह करने के लिए गलत होने जा रहा है. मैं वास्तव में कोई विचार नहीं है अगर हम करते हैं == के बारे में क्या (10 और '10abc '); सही सभी. तो यह सच है. तो बस की तरह जब आप (10 + '10abc '), और यह 20 होगा, यहाँ (10 == '10abc '), सच है. भी बदतर की तरह बातें (झूठी == रिक्त) हैं, सच है या (झूठी == 0), सच है, (झूठी == []); अजीब मामलों कि उन अजीब मामलों में से एक है. सूचना है कि (झूठी == []), सच है. ('0 'झूठी ==); सच है. ('0 '== []), झूठी है. == तो कोई सकर्मक रास्ते में है. एक ख के बराबर हो सकता है और एक ग के बराबर हो सकता है कर सकते हैं, लेकिन ख ग के बराबर नहीं हो सकता है. यह मेरे लिए एक घृणा है, और तुम हमेशा === का उपयोग करना चाहिए. [छात्र] हम करते हैं! == के रूप में अच्छी तरह से? >> [Bowden] हाँ. बराबर हो! = और! == यह वास्तव में pset कल्पना में ऊपर लाया जहां कार्यों वापसी की एक बहुत - PHP मैनुअल इस बारे में अच्छा है. यह एक बड़ा लाल बॉक्स में कहते हैं, "यह वापसी झूठी अगर वहाँ एक त्रुटि है." लेकिन लौटने 0 पर लौटने के लिए एक बिल्कुल उचित बात है. किसी भी समारोह है जो एक पूर्णांक लौटने की उम्मीद है के बारे में सोचो. चलो का कहना है कि इस समारोह के लिए एक फ़ाइल या कुछ में लाइनों की संख्या की गिनती करने के लिए माना जाता है. सामान्य परिस्थितियों में, आप इस समारोह में एक फ़ाइल से गुजारें और यह करने के लिए एक पूर्णांक है जो लाइनों की संख्या का प्रतिनिधित्व करता है वापस जा रहा है. 0 तो एक पूरी तरह से उचित संख्या है अगर फाइल अभी खाली है. लेकिन क्या अगर तुम यह एक अवैध फाइल पास और कार्य करने के लिए वापसी झूठी होता है यदि आप इसे एक अवैध फाइल पास? यदि आप सिर्फ == आप अवैध फ़ाइल और खाली फाइल के बीच मामले फर्क नहीं रहे हैं. हमेशा === का उपयोग करें. वह उन सभी है. PHP में सरणी प्रकार क्या आप सी. में इस्तेमाल कर रहे हैं, से अलग है वास्तव में, आप पहले से ही यह ऊपर देखा है हो सकता है जब आप देखा है कि इस प्रकार सरणी का है. ब्रैकेट वाक्यविन्यास 5.4 PHP, जो PHP के नवीनतम संस्करण है के रूप में नया है. > 1, 'ख' -> 2 इससे पहले कि आप हमेशा लिखने के लिए सरणी ('एक' के लिए किया था. एक सरणी के लिए निर्माता था. अब PHP अंत में बस वर्ग कोष्ठक के अच्छा वाक्यविन्यास है चारों ओर आते हैं, जो सिर्फ इतना सरणी की तुलना में बेहतर है. लेकिन 5.4 PHP पर विचार नवीनतम संस्करण है, आप स्थानों है कि यहां तक ​​कि 5.3 PHP नहीं है का सामना कर सकते हैं. गर्मियों में हम इस मुद्दे में भाग गया, जहां PHP 5.3 था कि हम क्या उपकरण पर था, लेकिन सर्वर है कि हम हमारे सभी ग्रेड किताब तैनात और जमा और वह सब सामान के लिए 5.4 PHP था. यह जानने के नहीं, हम 5.3 में विकसित की है, 5.4 के लिए धक्का दिया, और अब हमारे कोड के अचानक से कोई भी सब काम करता है क्योंकि वहाँ के लिए 5.3 और 5.4 के बीच परिवर्तन किया गया है हुआ जो पीछे संगत नहीं हैं, और हम जाने के लिए और हमारी बातों के सभी कि 5.4 PHP के लिए काम नहीं करते ठीक है. इस वर्ग के लिए है, के बाद से उपकरण 5.4 PHP करता है, वर्ग कोष्ठक का उपयोग यह बिल्कुल ठीक है. लेकिन अगर आप इंटरनेट के आसपास चीजें देख रहे हैं, अगर आप सरणी सामान के कुछ तरह देख रहे हैं, तो आप सबसे अधिक संभावना को देखने के लिए जा रहे हैं सरणी निर्माता वाक्यविन्यास बाहर जादू पैदा हुआ था कि आसपास के बाद से PHP के बाद से किया गया है और वर्ग कोष्ठक सिंटैक्स के आसपास पिछले कुछ महीनों के लिए किया गया है या 5.4 चारों ओर जब भी आया था. यह तुम कैसे सूचकांक है. बस में सी की तरह आप $ [0], $ [1] सरणी, सरणी $ [2], सरणी की तरह वर्ग कोष्ठक द्वारा सूचकांक कैसे आप उसी तरह अगर आप अपने इंडेक्स तार किया जा रहा है हो सूचकांक. तो $ सरणी ['एक'] और $ सरणी ['ख']. सरणी $ [ख]. यह गलत हो सकता है? यह शायद एक चेतावनी उत्पन्न लेकिन अभी भी काम कर सकते हैं. PHP करने के लिए कि क्या जाता है. यह बस, "मैं आपको इस बारे में आगाह करने के लिए जा रहा हूँ करने के लिए जाता है, लेकिन मैं सिर्फ जा रहा रखने के लिए जा रहा हूँ "और मैं जो कुछ भी कर सकते हैं." यह शायद एक स्ट्रिंग के लिए यह अनुवाद करेंगे, लेकिन यह संभव है कि अतीत में किसी को कुछ बिंदु पर कहा ख को परिभाषित करने के लिए 'नमस्ते विश्व'. तो अब ख एक स्थिर और $ सरणी हो सकता है [ख] वास्तव में कर किया जाएगा 'नमस्ते विश्व'. मैं इस बिंदु पर लगता है, या कम से कम हमारे PHP सेटिंग्स, अगर आप एक सरणी में सूचकांक के लिए कोशिश करते हैं और कि कुंजी मौजूद नहीं है, यह विफल हो जाएगा. मुझे नहीं लगता कि यह सिर्फ तुम्हें चेतावनी देगा. या कम से कम आप इसे इतना तय है कि यह सिर्फ तुम्हें आगाह नहीं नहीं कर सकते हैं, यह सिर्फ सीधे ऊपर में विफल रहता है. जिस तरह से आप के लिए अगर वहाँ वास्तव में एक ऐसा सूचकांक है की जाँच करें isset है. तो isset ($ सरणी ['नमस्ते विश्व']) झूठी वापस आ जाएगी. isset (सरणी $ ['ख']) सही वापस आ जाएगी. आप इन syntaxes मिश्रण कर सकते हैं. हम इसे बाहर का परीक्षण कर सकते हैं - मुझे पूरा यकीन है कि क्या इस सरणी खत्म होता जा रहा है हूँ. ओह, मैं PHPWord की जरूरत है. इस वाक्य रचना मिश्रण है जहाँ आप निर्दिष्ट कुंजी क्या है और आप निर्दिष्ट नहीं कुंजी क्या है. तो 3 सही यहाँ एक मूल्य है. तुम नहीं स्पष्ट रूप से कहा है कि इसकी कुंजी क्या होने जा रहा है. तुम्हें क्या लगता है अपने कुंजी को होने जा रहा है? 0 [छात्र]. >> मैं 0 लग रहा है क्योंकि यह केवल 1 एक हम निर्दिष्ट नहीं किया है. हम वास्तव में इन मामलों में से एक जोड़े को कर सकते हैं. तो print_r पुनरावर्ती मुद्रित करने के लिए है. यह पूरे सरणी मुद्रित होगा. यह सरणी के subarrays मुद्रित अगर वहाँ किसी भी थे. Print_r ($ सरणी); php.test.php. ऐसा लगता है जैसे यह 0 दे दिया लगती है. वास्तव में मन में रखने के लिए कुछ है, लेकिन हम यह करने के लिए वापस एक दूसरे में मिल जाएगा. लेकिन क्या अगर मैं यह सूचकांक 1 होता है? PHP स्ट्रिंग सूचकांक और पूर्णांक इंडेक्स के बीच अंतर नहीं है, तो इस बिंदु पर मैं सिर्फ एक 1 सूचकांक परिभाषित किया गया है और मैं दोनों $ सरणी [1] और $ सरणी ['1 '] कर सकते हैं और यह एक ही सूचकांक और एक ही कुंजी होगा. तो अब तुम क्या लगता है कि 3 से होने जा रहा है? >> 2 [छात्र]. >> [Bowden] मैं 2 लग रहा है. हाँ. यह 2 है. क्या होगा अगर हम इस 10 है, यह 4 है? तुम्हें क्या लगता है 3 के सूचकांक के लिए होने जा रहा है? मैं 11 के बारे में सोच रहा हूँ. PHP क्या करता है के रूप में मेरा अनुमान है और मुझे लगता है कि मैं पहले यह देखा है - है, यह सिर्फ उच्चतम संख्यात्मक सूचकांक यह अब तक इस्तेमाल किया है क्या है का ट्रैक रखता है. यह 3 से एक स्ट्रिंग सूचकांक प्रदान नहीं जा रहा है. यह हमेशा एक संख्यात्मक सूचकांक होगा. तो यह उच्चतम एक यह इतनी दूर सौंपा है, जो 10 होना होता है का ट्रैक रखता है, और यह करने के लिए 3 से 11 देने के लिए जा रहा है. क्या मैं पहले कहा, जिस तरह से यह इस सरणी मुद्रण है नोटिस. यह 10 प्रमुख प्रिंट, 4 कुंजी, 11 कुंजी, कुंजी घ. या फिर भी करते हैं - मुझे लगता है कि मैं एक 0 नहीं डाल दिया है, लेकिन यह मुद्रण 1, 2, 3, 4. क्या होगा यदि मैं यहाँ स्विच? या वास्तव में इन 2 स्विच. अब यह 2, 1, 3, 4 प्रिंट. PHP arrays सिर्फ अपने नियमित हैश तालिका की तरह नहीं हैं. यह पूरी तरह से उचित है हैश समय के 99% तालिकाओं के रूप में उनमें से लगता है. अपने हैश तालिका में जिस क्रम में बातें डाला गया का कोई मतलब नहीं है. इसलिए जैसे ही आप इसे अपने हैश तालिका में सम्मिलित करने के लिए, लगता है वहाँ कोई लिंक सूची है और आप एक लिंक सूची के भीतर न्यायाधीश सकता जो पहले डाला गया था. लेकिन यहाँ हम 2 1 डाला और यह जानता है कि जब वह बाहर इस सरणी मुद्रण है कि 2 पहले आता है. यह यह सिर्फ किसी भी क्रम में बाहर मुद्रित नहीं करता. तकनीकी डेटा संरचना का उपयोग कर रहा है कि यह एक आदेश नक्शा है, तो यह मान के लिए चाबी नक्शे और यह क्रम में उन कुंजी डाला गया याद है. असल में यह कुछ जटिलताओं जहां यह वास्तव में परेशान है - मान लीजिए कि आप एक सरणी 0, 1, 2, 3, 4, 5 और तुम बाहर सूचकांक में 2 ले जाना चाहता हूँ. इसे करने का एक तरीका है, चलो देखते हैं कि क्या की तरह दिखता है. 0, 2, 1, 3, 4. अनसेट करने के लिये दोनों चर और सरणी सूचकांक unset होता है. तो unset ($ सरणी [2]); अब यह क्या की तरह लग रहा है? 2 बस गया है, तो वह पूरी तरह से ठीक है. अधिक कष्टप्रद है अगर आप चीजों को वास्तव में एक सरणी की तरह होना चाहता हूँ. मैं यादृच्छिक संख्या डाल देता हूँ. अब मेरे इंडेक्स नोटिस. 1 - मैं यह सिर्फ एक सी सरणी की तरह होने के लिए जहां यह 0 से लंबाई करने के लिए चला जाता है चाहता हूँ और मैं इस पर इस तरह के रूप में पुनरावृति कर सकते हैं. लेकिन जैसे ही मैं 2 सूचकांक, सूचकांक में 3 क्या था unset सूचकांक में 2 नहीं हो जाता. इसके बजाय यह सिर्फ इतना है कि सूचकांक को निकालता है और अब आप 0, 1, 3, 4 जाना. यह पूरी तरह से उचित है. यह सिर्फ कष्टप्रद है और आप सरणी ब्याह की तरह बातें करने के लिए है. हाँ. [छात्र] क्या होगा अगर तुम एक पाश के लिए क्या होगा और आप सभी तत्वों पर जाना चाहता था? जब यह 2 हिट, यह कभी उपज चाहते हैं? एक सरणी पर iterating. वहाँ 2 तरीके आप यह कर सकते हैं. आप एक पाश के लिए नियमित रूप से उपयोग कर सकते हैं. यह PHP के दूसरे कठिनता है. अधिकांश भाषाओं मैं कहना चाहूँगा, लंबाई या लेन या कुछ के कुछ प्रकार है एक सरणी की लंबाई का संकेत है. PHP में यह गिनती है. ($ सरणी) गिनती; $ मैं + +) चलो बस प्रिंट ($ सरणी [$ i]); सूचना: अनिर्धारित ऑफसेट: 2. यह सिर्फ विफल करने के लिए जा रहा है. यही कारण है कि अधिकांश भाग के लिए, आप की जरूरत कभी नहीं करने के लिए इस तरह एक सरणी पुनरावृति है. यह एक अतिशयोक्ति हो सकती है, लेकिन आप की जरूरत कभी नहीं करने के लिए इस तरह एक सरणी पुनरावृति क्योंकि PHP जहां अपने foreach foreach ($ सरणी के रूप में $ मद) वाक्यविन्यास प्रदान करता है. अब हम ($ मद) प्रिंट अगर - we'll यह एक दूसरे में चर्चा है कि पूरी तरह से ठीक काम करता है. जिस तरह से काम कर रहा है कि foreach पहले तर्क सरणी है कि आप पर iterating कर रहे हैं है. और दूसरा तर्क पाश के लिए में से प्रत्येक के पास के माध्यम से आइटम, यह सरणी में अगले बात पर ले जा रहा है. तो याद सरणी एक क्रम है. पाश के लिए के माध्यम से पहली बार, आइटम के लिए 123 होने जा रहा है तो यह 12 हो जाएगा तो यह 13 हो जाएगा तो यह 23 हो जाएगा तो यह 213 हो जाएगा. हालात वास्तव में अजीब जब आप foreach तरह कुछ करते हैं. चलो देखते हैं क्या होता है क्योंकि आप यह कभी नहीं करना चाहिए. क्या होगा अगर हम unset ($ सरणी [1]); यह शायद उम्मीद थी. आप इस सरणी पर iterating कर रहे हैं, और हर बार जब आप पहली सूचकांक unsetting रहे हैं. तो इंडेक्स 0 के लिए, पहली बात, आइटम मान 0 पर लेता है, तो यह 123 होने जा रहा है. लेकिन अंदर पाश के लिए हम लिये अनसेट सूचकांक 1, तो इसका मतलब 12 से चला गया है. तो मुद्रित करें. PHP_EOL. PHP_EOL सिर्फ newline है, लेकिन यह तकनीकी रूप से अधिक पोर्टेबल है के बाद से विंडोज में newlines मैक और यूनिक्स पर newlines से अलग है. विंडोज पर newline \ r \ n है, जबकि हर जगह और यह सिर्फ \ n के लिए जाता है. PHP_EOL इतना है कि यह का उपयोग करता है, जो कुछ भी आपके सिस्टम की newline है कॉन्फ़िगर किया गया है. तो यह है कि प्रिंट. अंत में print_r ($ सरणी). मैं कोई विचार था कि उस व्यवहार होगा. आइटम अभी भी 12 मूल्य पर लेता है, भले ही हम 12 unset पहले हम कभी सरणी से इसे करने के लिए मिला है. इस पर ले मेरे शब्द नहीं है, लेकिन ऐसा लगता है जैसे foreach सरणी की एक प्रतिलिपि बनाता है और तब आइटम है कि नकल के सभी मूल्यों पर लेता है. तो भी अगर आप अंदर पाश के लिए सरणी को संशोधित करने के लिए, यह परवाह नहीं करेंगे. आइटम मूल मूल्यों पर ले जाएगा. चलो यह unsetting करने की कोशिश. क्या हुआ अगर यह $ [1] सरणी = "नमस्ते"; हालांकि हम सरणी में "नमस्ते" डाल, आइटम है कि मूल्य पर कभी नहीं लेता है. वहाँ एक और loops foreach वाक्यविन्यास है जहाँ आप एक तीर से 2 अलग चर डाल दिया. यह पहला चर कि मूल्य का महत्वपूर्ण होने जा रहा है, और इस दूसरे चर के लिए एक ही सटीक मद होने जा रहा है. यहाँ यह शुष्क है, लेकिन अगर हम हमारे 'एक' के मूल मामले वापस लिए जाने -> 1, 'ख' -> 1, यहाँ अगर हम सिर्फ आइटम के रूप में प्रत्येक सरणी के लिए पुनरावृति आइटम के लिए 1 हर बार होने जा रहा है. लेकिन अगर हम भी है कि आइटम के साथ जुड़े कुंजी जानना चाहते हैं > $ आइटम - तो हम के रूप में $ कुंजी है. . ':' तो अब हम प्रिंट (कुंजी डॉलर कर सकते हैं. अब यह खत्म पुनरावृति और प्रत्येक कुंजी और इसके जुड़े मूल्य मुद्रित. Foreach loops में क्या कर सकते हैं एक अतिरिक्त बात यह है कि आप इस वाक्यविन्यास देख सकते हैं. चर नाम से पहले एम्परसेंड्स कैसे PHP संदर्भ करता हैं. कहाँ संदर्भ बहुत संकेत करने के लिए समान हैं, आप संकेत नहीं है, तो आप सीधे स्मृति के साथ कभी समझौता. लेकिन आप संदर्भ जहां 1 चर अन्य चर के रूप में एक ही बात करने के लिए संदर्भित करता है. यहाँ के अंदर चलो $ आइटम करना. 10 1, वापस जाओ. चलो $ आइटम + +, यह अभी भी PHP में मौजूद है. आप अभी भी + + कर सकते हैं. php.test.php. मैं इसे मुद्रित है. print_r ($ सरणी); हम 11 2, मुद्रित करें. अगर मैं सिर्फ foreach (सरणी $ $ मद) के रूप में किया था तब आइटम मान 1 हो जाएगा पाश के माध्यम से पहली बार. यह 1 2 वेतन वृद्धि और फिर हम कर रहे हैं. तो फिर यह लूप के 2 पास के माध्यम से जाने के लिए और है कि आइटम है 10 है. यह वेतन वृद्धि 11 आइटम, और वह तो बस दूर फेंक दिया है. फिर हम) print_r ($ सरणी, और देखते हैं कि यह सिर्फ 1, 10. तो वेतन वृद्धि हम किया था खो गया था. लेकिन foreach ($ सरणी के रूप में और $ आइटम) अब इस मद के इस अधिकार के रूप में यहाँ एक ही आइटम है. यह एक ही बात है. तो आइटम $ + + 0 सरणी को संशोधित कर रहा है. असल में, तुम भी $ कश्मीर कर सकते हैं - $> आइटम और आप कर सकते हैं $ सरणी [k $] + +; तो है कि कर का एक और तरीका है, हम आइटम को संशोधित करने के लिए स्वतंत्र हैं, लेकिन कहा कि हमारी मूल सरणी संशोधित नहीं होगा. लेकिन अगर हम कश्मीर, जो हमारे मुख्य है का उपयोग करें, तो हमारे सरणी में सिर्फ सूचकांक कि कुंजी का उपयोग कर हम कर सकते हैं और कहा कि वेतन वृद्धि. यह अधिक सीधे हमारे मूल सरणी संशोधित. आप यह भी है कि अगर किसी कारण से आप को संशोधित करने की क्षमता चाहता कर सकते हैं - दरअसल, यह पूरी तरह से उचित है. आप करने के लिए $ सरणी लिखने नहीं करना चाहता था [k $] + +, तुम सिर्फ आइटम $ लिखने + + लेकिन आप अभी भी कहना चाहता था अगर ($ === कश्मीर 'एक') तब आइटम वेतन वृद्धि और फिर हमारे सरणी मुद्रित. तो अब हम क्या print_r करने की उम्मीद करते हैं? क्या मूल्यों मुद्रित किया जाना चाहिए? [छात्र] 2 और 10. >> Bowden [] केवल अगर महत्वपूर्ण था 'एक' हम वास्तव में नहीं है कि मुद्रित करें. आप शायद बहुत कम है, अगर कभी, PHP में कार्यों को परिभाषित करने की आवश्यकता होगी, लेकिन आप कुछ इसी तरह देखने के लिए जहां आप समारोह जो कुछ भी तरह एक समारोह को परिभाषित कर सकता है. आम तौर पर आप ($ foo, $ बार) कहते हैं और फिर इसे परिभाषित करने के लिए जो कुछ भी हो. लेकिन अगर मैं इस करते हैं, तो इसका मतलब है कि जो कुछ भी जो कुछ भी कहता है, जो भी baz कॉल तो, पहले तर्क baz करने के लिए पारित बदला जा सकता है. चलो $ foo + +; और अंदर यहाँ baz ($ मद) करते हैं; अब हम एक समारोह बुला रहे हैं. तर्क संदर्भ द्वारा लिया जाता है, जिसका मतलब है कि अगर हम इसे संशोधित हम बात यह है कि अंदर पारित किया गया था संशोधित कर रहे हैं छपाई और हम उम्मीद करते हैं - जब तक मैं वाक्यविन्यास गड़बड़ - हम 11 2, मिल गया है, तो यह वास्तव में incremented था. नोटिस हम 2 स्थानों में संदर्भ की आवश्यकता है. क्या होगा यदि मैं यह किया है? इसका क्या मतलब है? [छात्र] यह बदल जाएगा. >> हाँ. आइटम सरणी में मूल्य की एक प्रति है. तो आइटम 2 से बदलने के लिए, लेकिन सरणी ['एक'] अभी भी 1 हो जाएगा. या फिर क्या हुआ अगर मैं यह कर? अब आइटम baz एक प्रति के रूप में भेजा जाता है. तो तर्क की प्रतिलिपि 2 incremented होगा, लेकिन खुद आइटम 2 से incremented कभी नहीं किया गया था. और आइटम सरणी ब्रैकेट जो भी रूप में एक ही बात है, इसलिए कि सरणी incremented कभी नहीं किया गया था. तो उन दोनों स्थानों की जरूरत है. PHP आम तौर पर होता है इस बारे में बहुत स्मार्ट है. आप सोच सकते हैं कि मैं संदर्भ द्वारा पारित करना चाहते हैं - यह वास्तव में एक psets पर एक सवाल था. यह एक questions.txt बात जहां यह कहा गया था, आप संदर्भ द्वारा इस struct पास क्यों चाहते हो? उस का जवाब क्या था? [छात्र] तो आप कुछ बड़ा करने की नकल नहीं है. >> हाँ. Struct मनमाने ढंग से बड़ा हो सकता है और जब आप एक तर्क के रूप में struct से गुजारें यह कि पूरे struct को कॉपी करने के लिए यह समारोह को पारित करने की जरूरत है, जबकि अगर आप सिर्फ संदर्भ द्वारा struct पारित तो यह सिर्फ तर्क के रूप में कार्य करने के लिए एक 4 - बाइट पते की नकल की जरूरत है. PHP एक छोटा सा है कि तुलना में होशियार है. अगर मैं कुछ समारोह है और मैं इसे करने के लिए 1,000 चीजों में से एक एक सरणी के पास, मतलब है कि यह करने के लिए उन चीजों में से 1,000 को कॉपी किया जा रहा है यह समारोह में पारित? यह कि तुरंत ऐसा नहीं है. यदि इस समारोह के अंदर यह foo वास्तव में कभी नहीं संशोधित करता है, तो ($ foo === 'हैलो') अगर वापसी सच; सूचना हम इस समारोह का तर्क के अंदर वास्तव में कभी नहीं संशोधित, जिसका मतलब है कि जो कुछ भी पारित किया गया था के रूप में foo की जरूरत को कॉपी किया जा कभी नहीं क्योंकि यह संशोधित नहीं है. तो जिस तरह से PHP तर्क काम करता है हमेशा संदर्भ द्वारा पारित कर रहे हैं जब तक आप वास्तव में इसे संशोधित करने की कोशिश. अब अगर मैं $ foo + + कहते हैं, अब यह मूल foo की एक प्रतिलिपि बनाने और प्रतिलिपि संशोधित. यह कुछ समय बचाता है. यदि आप इस विशाल सरणी कभी नहीं छू रहे हैं, तो आप यह कभी नहीं वास्तव में संशोधित करने के लिए, यह प्रतिलिपि बनाने की जरूरत नहीं है, जबकि अगर हम सिर्फ इस एम्परसेंड है इसका मतलब है कि यह भी नकल नहीं करता है डाल यहां तक ​​कि अगर आप इसे संशोधित नहीं है. यह व्यवहार कॉपी पर लिखने को कहा जाता है. आप इसे अन्य स्थानों में देखने के लिए, खासकर यदि आप एक ऑपरेटिंग सिस्टम कोर्स ले जाऊँगा. कॉपी पर लिखने के एक बहुत सामान्य परिपाटी है जहाँ आप कुछ की एक प्रतिलिपि बनाने की जरूरत नहीं है जब तक यह वास्तव में बदल रहा है. हाँ. [छात्र] क्या होगा अगर आप परीक्षण के अंदर वेतन वृद्धि की थी, तो 1000 से बाहर केवल 1 तत्व परिवर्तित करने की आवश्यकता होगी? मैं ठीक से नहीं कह सकता. मुझे लगता है कि यह पूरी बात की नकल होगा, लेकिन यह संभव है कि काफी चालाक है - असल में, मैं सोच रहा हूँ क्या है कल्पना हम एक सरणी है कि इस तरह दिखता था: ऐरे 2 $ = [ तो सूचकांक 'एक' [1 2 3 4], और सूचकांक 'ख' की एक सरणी है जो कुछ भी की एक सरणी है. मैं उन सभी के बीच अल्पविराम की जरूरत है. कल्पना कीजिए कि वहाँ अल्पविराम हैं. फिर 'ग' मूल्य 3. ठीक है. अब हम कहते हैं हम baz डॉलर ($ ऐरे 2); जहां baz इस संदर्भ द्वारा नहीं ले करता है. तो $ foo ['ग'] + +; यह एक ऐसा उदाहरण है जहां हम एक तर्क के रूप में ऐरे 2 गुजर रहे हैं और फिर यह incrementing सरणी के एक विशिष्ट सूचकांक संशोधित है. मैं ईमानदारी से कोई विचार PHP क्या करने जा रहा है. यह आसानी से पूरी बात की एक कॉपी कर सकते हैं, लेकिन अगर यह स्मार्ट है, यह इन चाबियों की एक प्रति जहां यह अपनी विशिष्ट मूल्य होगा कर देगा लेकिन यह अभी भी एक ही 1,2,3,4 सरणी के लिए बात कर सकते हैं और यह अभी भी एक ही सरणी के लिए बात कर सकते हैं. मैं यह iPad. हम इस सरणी में जहां इस आदमी अंक 3 के पास इस आदमी अंक [1,2,3,4], इस आदमी अंक [34 ...] अब है कि हम यह baz में गुजर रहे हैं, हम इस संशोधित कर रहे हैं. यदि PHP चालाक है, यह सिर्फ कर सकते हैं - हम अभी भी कुछ स्मृति की नकल करने के लिए किया था, लेकिन अगर कोई इन विशाल नेस्टेड subarrays थे हम उन लोगों की नकल की जरूरत थी. मैं अगर है कि यह क्या करता है पता नहीं है, लेकिन मैं यह कर रही है कि कल्पना कर सकते हैं. यह भी PHP पर एक सी का बहुत बड़ा फायदा है. PHP जीवन इतना चीजों की एक बहुत कुछ करने के लिए बहुत आसान बना देता है, लेकिन आप की तरह बिल्कुल पता नहीं है कि यह कैसे अच्छी तरह से प्रदर्शन करेंगे क्योंकि मैं हुड के नीचे कोई विचार है जब यह इन चीजों की प्रतियां बना रहा है, ओह, यह एक लगातार समय की नकल होने जा रहा है, यह सिर्फ 1 सूचक को बदलने जा रहा है, यह एक हास्यास्पद मुश्किल रैखिक प्रतिलिपि होने जा रहा है? क्या हुआ अगर यह स्थान नहीं मिल सकता है? क्या यह तो कचरा संग्रह चलाने के लिए कुछ और अधिक स्थान प्राप्त करने की आवश्यकता है? और कचरा संग्रहण लंबी मनमाने ढंग से ले जा सकते हैं. सी में आप इन चीजों के बारे में चिंता करने की ज़रूरत नहीं है. हर एक लाइन तुम तुम लिखने के लिए कर सकते हैं कि यह कैसे प्रदर्शन करने के लिए जा रहा है के बारे में बहुत ज्यादा कारण. चलो इन पर वापस देखो. कितना अच्छा है कि आप हैश कार्यों के साथ सौदा नहीं है, जुडी हुई सूचियों, या ऐसा कुछ है? हैश तालिका के साथ काम करने के बाद से अब इतना आसान है, यहां पर काम करने के लिए एक मजेदार पहेली है. एक फ़ाइल कहा जाता है और यह unique.php खोलें एक PHP प्रोग्राम लिखने (भी एक "स्क्रिप्ट" के रूप में जाना जाता है). हम उन्हें लिपियों कॉल करते हैं अगर वे छोटी चीजें हैं जो आप कमांड लाइन पर चलाने रहे हैं. असल में, किसी भी भाषा है कि आप संकलन नहीं है लेकिन आप निष्पादन योग्य चलाने जा रहे हैं कमांड लाइन पर, आपको लगता है कि निष्पादन योग्य स्क्रिप्ट कॉल कर सकते हैं. मैं बस के रूप में अच्छी तरह से एक सी प्रोग्राम है कि इस करता है लिख सकता है, लेकिन मैं इसे एक स्क्रिप्ट नहीं कॉल के बाद मैं पहली बार यह संकलन और तो द्विआधारी चलाने. लेकिन इस PHP कार्यक्रम हम एक स्क्रिप्ट कॉल करने के लिए जा रहे हैं. या, अगर हम यह पायथन या पर्ल या Node.js या उन चीजों में से किसी में लिखा है हम उन्हें सभी लिपियों फोन क्योंकि तुम उन्हें कमांड लाइन पर चलने देना चाहते हैं लेकिन हम उन्हें नहीं संकलन है. हम यह बहुत जल्दी कर सकता है. हम argv का उपयोग करने के लिए नहीं जा रहे हैं. है इस के माध्यम से झटका. यह अनूठा कॉल, एक प्रोग्राम लिखने. आप मान सकते हैं कि एक शब्द प्रति पंक्ति इनपुट शामिल होंगे. दरअसल, argv बहुत उपयोग करने के लिए तुच्छ हो जाएगा. unique.php. पहली बात सबसे पहले, हम जाँच करने के लिए अगर हम 1 कमांड लाइन तर्क पारित किया गया है चाहता हूँ. बस के रूप में आप argc और सी में argv उम्मीद होती है, हम अभी भी उन PHP में है. (Argc $ 2 ==!) तो मैं एक संदेश या कुछ भी मुद्रण के साथ सौदा नहीं होगा. मैं बस से बाहर निकलने के लिए, 1 की त्रुटि कोड. मैं भी 1 लौट सकता है. शायद ही कभी PHP में आप इस राज्य में हैं जहां हम पर हो - आम तौर पर आप एक समारोह से बुलाया एक समारोह के द्वारा कहा जाता है एक समारोह के द्वारा कहा जाता है एक समारोह में कर रहे हैं. और अगर कुछ गलत हो जाता है और आप बस सब कुछ पूरी तरह से बाहर निकलना चाहते हैं, बाहर निकलने के सिर्फ कार्यक्रम समाप्त होता है. यह भी सी में मौजूद है यदि आप एक समारोह में एक समारोह में एक समारोह में एक समारोह में कर रहे हैं और आप सिर्फ कार्यक्रम को मारना चाहते हैं, आप बाहर निकलें फोन और यह बस से बाहर निकल जाएगा. लेकिन PHP में यह और भी अधिक दुर्लभ है कि हम इस शीर्ष स्तर पर कर रहे हैं. आम तौर पर हम समारोह के कुछ प्रकार के अंदर कर रहे हैं, तो हम बाहर निकलें कॉल इतना है कि हम करने के लिए एक बात है जो तब का एहसास है वापस नहीं है वहाँ एक त्रुटि है इतना है कि देता है कि पहचानता अगर वहाँ एक त्रुटि थी. हम उस के साथ सौदा नहीं करना चाहते, तो से बाहर निकलें (1); वापसी (1), इस मामले में बराबर होगा. तो क्या हम खोलना चाहते हैं हम fopen के लिए करना चाहते हैं. बहस करने के लिए बहुत ही देखने के लिए जा रहे हैं. हम fopen ($ ARGV [1], और हम इसे पढ़ने के लिए खोलना चाहते हैं. यह एक संसाधन है जो हम करने के लिए च कॉल करने के लिए जा रहे हैं देता है. यह सुंदर कैसे सी यह करता है को छोड़कर हम फ़ाइल * कहने की ज़रूरत नहीं समान लग रहा है. इसके बजाय हम सिर्फ च $ कहते हैं. ठीक है. दरअसल, मुझे लगता है यह भी हमें PHP फ़ाइल बुलाया समारोह के रूप में एक संकेत देता है. PHP फ़ाइल. क्या ऐसा करने के लिए जा रहा है एक सरणी में एक पूरी फ़ाइल को पढ़ने के लिए है. तुम भी यह fopen जरूरत नहीं है. यह तुम्हारे लिए है कि क्या हो रहा है. तो $ लाइनों फ़ाइल = $ (argv [1]); अब फ़ाइल की लाइनों के सभी लाइनों में हैं. अब हम लाइनों सॉर्ट करना चाहते हैं. हम लाइनों को कैसे हल कर सकते हैं? हम लाइनों सॉर्ट. और अब हम उन्हें या जो कुछ भी छाप सकते हैं. शायद सबसे आसान तरीका है foreach ($ $ $ के रूप में लाइन लाइनों) लाइन गूंज; [छात्र] हम कुछ प्रकार में संदर्भित द्वारा भी नहीं लाइन पार चाहेंगे? यह वह जगह है जहां तरह समारोह तरह (और सरणी $) के रूप में परिभाषित किया जाएगा. जब आप समारोह फोन आप इसे संदर्भ से पास नहीं है. यह समारोह में कहा कि यह संदर्भ के रूप में लेने के रूप में परिभाषित करता है. यह वास्तव में ठीक है, क्या गलत हो गया था जब हम अपने सर्वरों के लिए सब कुछ डाल दिया जब हम 5.3 से 5.4 के लिए चला गया. 5.4 जब तक ऊपर, यह पूरी तरह से उचित था. एक समारोह के लिए यह संदर्भ के रूप में लेने की उम्मीद नहीं करता है, लेकिन आप इसे संदर्भ के रूप में पारित कर सकते हैं यदि ऐसा है तो समारोह में इसे संशोधित करने के लिए होता है, यह अभी भी संशोधित किया गया है. 5.4 के रूप में आप यह नहीं करना चाहिए रहे हैं. तो अब केवल जिस तरह से आप संदर्भ द्वारा पारित है अगर समारोह को स्पष्ट रूप से यह करता है. यदि आप इसे संशोधित करने के लिए नहीं करना चाहते, तो आप के लिए $ प्रति = $ लाइनों और पास की नकल करने की जरूरत है. तो अब लाइनों और संरक्षित किया जाएगा प्रतिलिपि को बदला जाएगा. php.unique.php. मैं कुछ गड़बड़ हो सकता है. अप्रत्याशित 'तरह'. वहाँ के लिए कुछ है कि हमारे लिए यह करता होने जा रहा है. यह भी वहाँ नहीं है. सूचना जब आप मैन्युअल कि पहले तर्क एक सरणी होने की उम्मीद है पढ़ा और इसे संदर्भ से ले लिया है. क्यों मेरे लिए यह शिकायत है? क्योंकि मैं इस समारोह तरह अभी भी यहाँ है कि मैं नहीं चाहती है. ठीक है, php.unique.php. मैं इसे एक तर्क पारित नहीं किया था क्योंकि मैं एक फ़ाइल नहीं है. यह test.php पर php.unique.php है. यहाँ सब एक अच्छा क्रमबद्ध क्रम में बाहर मुद्रित test.php है. सूचना है कि हल क्रम एक कोड फ़ाइल के लिए तरह अजीब है क्योंकि हमारे रिक्त लाइनों के सभी पहले आने के लिए जा रहे हैं तो हमारे 1 स्तर indentations के सभी आने के लिए जा रहे हैं तो हमारा कोई indentations के सभी आते हैं. हाँ. >> [छात्र] तो स्रोत कोड के लिए यह संदर्भ द्वारा पारित नहीं किया गया था? यह है कि आम तौर पर मान द्वारा पारित? [Bowden] जब आप एक समारोह में कहते हैं, यह निर्धारित करता है कि यह संदर्भ द्वारा पारित किया गया था कभी नहीं. यह समारोह परिभाषा है जो यह निर्धारित करता है कि यह संदर्भ द्वारा पारित किया गया था. और तरह के समारोह परिभाषा में देख रहे हैं या सिर्फ यह देख, यह संदर्भ द्वारा तर्क लेता है. तो क्या आप इसे संदर्भ से लेने के लिए करना चाहते हैं की परवाह किए बिना, यह है कि यह संदर्भ द्वारा ले. यह जगह में सरणी modifies. यह सिर्फ अनुमति नहीं है. तुम यह करने के लिए अनुमति नहीं है. >> [छात्र] ओह, ठीक है. [Bowden] इस प्रकार के लिए संदर्भ द्वारा लाइनों ले जा रहा है और इसे संशोधित. और फिर, अगर आपको लगता है कि करने के लिए नहीं करना चाहता था, आप प्रकार की एक कॉपी कर सकता है. इस मामले में भी, कॉपी वास्तव में लाइनों की एक प्रतिलिपि नहीं है. यह सिर्फ एक ही बात करने के लिए कहते हैं जब तक यह पहली बार संशोधित हो जाता है, यह पहली बार है जहां तरह कार्य में संशोधित करने के लिए जा रहा है, जहां, क्योंकि यह कॉपी पर लिखते हैं, अब प्रतिलिपि की एक प्रति के लिए बनाया जा रहा है. आप भी कर सकते हैं. यह अन्य जगह आप एम्परसेंड देख सकते हैं. आप यह foreach loops में देखते हैं, तो आप यह समारोह घोषणाओं में देखते हैं, और आप इसे देख जब बस चर बताए. अब हम ऐसा करने से कुछ भी नहीं पूरा किया है क्योंकि कॉपी और लाइनों सचमुच एक ही बात कर रहे हैं. आप लाइनों का उपयोग और interchangeably कॉपी कर सकते हैं. आप unset (डॉलर प्रति) कर सकते हैं, और कि unset लाइनों नहीं करता है, आप सिर्फ एक ही बात करने के लिए अपने संदर्भ खो देते हैं. तो इस बिंदु के रूप में, अब लाइनें ही जिस तरह से आप लाइनों का उपयोग कर सकते हैं. प्रश्न? हाँ. [छात्र] विषय पूरी तरह से बंद है, लेकिन आप के साथ PHP बंद नहीं है - >> तुम नहीं. ठीक है. [Bowden] मैं जहाँ तक जाने के रूप में कहने के लिए यह बुरा व्यवहार है उन्हें बंद होगा. यह शायद एक अतिशयोक्ति है, विशेष रूप से एक स्क्रिप्ट में, लेकिन हम देखते हैं क्या होता है अगर मैं यह कर. यह कुछ भी नहीं किया था. क्या होगा यदि मैं चाहता था - [आह] मैं एक तर्क पारित करने की आवश्यकता है. गोली मारो. मैं इसे गलत कहा जाता है. एक तर्क के साथ तो php.unique.php. अब मैं यह भी जरूरत नहीं है. मैं यह एक वैध तर्क पारित करेंगे. यह मुद्रित जो कुछ भी यह मुद्रण है. मैं कॉपी छपाई कर रहा हूँ और कॉपी मौजूद नहीं है. लाइनों तो. यह सब कुछ मुद्रित, और फिर यहाँ नीचे यह सब कबाड़ नोटिस क्योंकि PHP में कुछ भी है कि PHP टैग के बाहर है बस के लिए सचमुच मुद्रित किया जा जा रहा है. यही क्यों HTML, यह बहुत अच्छा है कि मैं div ब्ला ब्ला ब्ला वर्ग या जो कुछ भी कर सकते हैं, ब्ला, ब्ला ब्ला, और फिर कुछ PHP कोड करते हैं और फिर अंत div करते हैं. और अब मैं इस मुद्रण शीर्ष ऊपर मेरी अच्छी div मिलता है, सब कुछ है कि PHP मुद्रित, तल पर div. विनाशकारी जब कुछ इस तरह होता है, जो बहुत आम है, फाइल के नीचे में एक आवारा newline. आप सोच भी नहीं होता यह है कि एक समझौते के बड़ा होगा जब तक आप ब्राउज़रों के साथ कि इस तथ्य पर विचार - कैसे काम पुनर्निर्देश या मूल रूप से किसी भी हेडर काम, जब आप एक वेबसाइट के लिए अपने कनेक्शन बनाने और इसे वापस भेजता है इन सभी हेडर और बातें 200 प्रतिक्रिया या अनुप्रेषित या जो कुछ भी प्रतिक्रिया की तरह, शीर्षों को ही मान्य हैं जब तक डेटा की पहली बाइट के लिए भेजा है. आप कई बार के हजारों अनुप्रेषित कर सकते हैं, लेकिन के रूप में जल्द ही डेटा की पहली बाइट के रूप में भेजा है आप फिर से अनुप्रेषित नहीं चाहिए रहे हैं. यदि आप एक फ़ाइल के तल पर एक आवारा newline करते हैं और कहते हैं कि आप इस समारोह का उपयोग करें और फिर आप चाहते हैं - चलो का कहना है कि यह किसी अन्य फ़ाइल है कि index.php है और आप कुछ require_once मैं यह एक अच्छा उदाहरण के बारे में सोच सकते हैं. मुद्दा यह तब होता है जब नीचे इस लाइन प्रतिध्वनित हो जाता. आप कुछ भी करने के लिए अभी तक गूँजती है नहीं करना चाहती. हालांकि आप हो रही गूँजती कुछ पर इरादा नहीं था, कुछ गूँजती मिला और इसलिए अब आप किसी भी अधिक हेडर भेजने के लिए नहीं चाहिए रहे हैं और आप शिकायतों को प्राप्त करने के लिए जा रहे हैं. तुम सिर्फ उन समापन टैग की जरूरत नहीं है. यदि आप HTML के साथ कुछ करने की योजना और यह पूरी तरह से उचित है यहाँ नीचे div करना जो कुछ भी और फिर इस बिंदु पर आप या आप शामिल कर सकते हैं कर सकते हैं उन्हें नहीं. यह वास्तव में कोई फर्क नहीं पड़ता. लेकिन PHP स्क्रिप्ट में यह दुर्लभ है, इसे बंद करने. जब सब कुछ PHP, पूरी तरह से सब कुछ है, आप वास्तव में इसे बंद करने के लिए / आप इसे बंद नहीं करना चाहिए की जरूरत नहीं है. तार के साथ लेनदेन बहुत सी में की तुलना में अच्छा है PHP में आप एक या दो उद्धरण के साथ एक स्ट्रिंग निर्दिष्ट कर सकते हैं. एक उद्धरण के साथ आप "बचने" दृश्यों का उपयोग नहीं कर सकते हैं. लगातार से बचने के, ब्ला ब्ला ब्ला,. तो printf PHP में बहुत दुर्लभ है. मुझे लगता है कि मैं printf का उपयोग अगर मैं बात की एक तरह करना चाहता था - 5 pset में आप sprintf या जो कुछ भी किया करते थे. लेकिन आप 001.jpg और 002.jpg करना चाहते हैं. तो उस चीज़ की तरह के लिए जहाँ मैं वास्तव में प्रारूप करने के लिए पाठ मैं printf का प्रयोग करेंगे चाहते हैं. लेकिन अन्यथा मैं सिर्फ स्ट्रिंग संयोजन का प्रयोग करेंगे. मैं printf का उपयोग वास्तव में कभी नहीं. हम सिर्फ एक उद्धरण और दोहरे उद्धरण चिह्नों के बीच विवरण फर्क कर रहे हैं. सबसे बड़ा अंतर यह है कि एक उद्धरण, यह सचमुच मुद्रित किया जाएगा. PHP में कोई चार डेटा प्रकार है, सी के विपरीत तो, यह इस के बराबर है. वे दोनों तार कर रहे हैं. और एकल उद्धरण तार के बारे में अच्छी बात यह है कि मैं कह सकता है 'हैलो दुनिया! ब्ला ब्ला ब्ला,, $ $ Wooo. क्या होता है जब मैं प्रिंट यह है कि यह सचमुच मुद्रित करेगा. चलो हमारे सामान के सभी से छुटकारा पाने के. तो str1 $ गूंज; यह सचमुच उन सब बातों के मुद्रित: डॉलर के लक्षण, बैकस्लैश n, जो आपको लगता है कि newlines होगा - उन सभी बातों के यह सचमुच प्रिंट. केवल एक चीज आप भागने की जरूरत एकल उद्धरण क्योंकि अन्यथा यह लगता है कि यह एकल उद्धरण बंद है. डबल उद्धरण, पूरी तरह से अलग है. हम पहले से ही वाक्य रचना हाइलाइटिंग हमें क्या बारे में बहुत गलत जाने के लिए है पर cluing है देखते हैं. php.unique. अपरिभाषित चर: Wooo क्योंकि यह एक Wooo चर बुलाया के रूप में व्याख्या की है. डबल उद्धरण आप में चर सम्मिलित करते - चलो $ नाम = "रोब" कहते हैं, तो गूंज "हाय, मेरा नाम डॉलर है!"; यह एक चर के रूप में पहचानता है. जब मुझे लगता है कि रन - और मैं एक नई डालने जाएगा - हाय, मेरा नाम रोब है! और हैलो दुनिया! इसका कारण यह है ऊपर मैं Wooo के मुद्रण कभी नहीं हटाया. आप कर सकते हैं 1 कदम आगे है. सरणी $ = [1, 2, 3]; क्या होगा यदि मैं सरणी के पहले सूचकांक मुद्रित करना चाहते हैं? आप $ सरणी [0]. सिंटेक्स हाइलाइटिंग भी एक संकेत है. यह क्या करने जा रहा है करने के लिए? php.unique. हाय, मेरा नाम 1 है! जो नहीं है कि मैं क्या चाहता था. सिंटेक्स हाइलाइटिंग मुझसे झूठ बोला. चलो कोशिश 'एक' -> 1, 'बी' -> 2. यही कारण है कि कैसे मैं इसे लिखना होगा. अप्रत्याशित एकल बोली (T_ENCAPSED ब्ला, ब्ला, ब्ला, ब्ला ब्ला,). विचार यह है कि इस सरणी के भाग के रूप में पहचानने नहीं है. यह इस एक पत्र द्वारा अनुक्रमित सरणी के रूप में पहचानने नहीं है. आप घुंघराले ब्रेसिज़ से घिरा हुआ है कि करना चाहते हैं, और अब भी इस धनु धनुकोष्ठक में interpolated जाएगा, जो शब्द हम जादुई सही स्थानों में इन चर डालने के लिए उपयोग है. अब यह कर रही है, php.unique, और हाय, मेरा नाम 1 है! के रूप में की उम्मीद या हाय, मेरा नाम रोब है! एक बात है कि एकल उद्धरण के बारे में अच्छी तरह है कि - Interpolating कुछ लागत है. यदि आप दोहरे उद्धरण चिह्नों का उपयोग करें, दुभाषिया इस स्ट्रिंग जाना है, यकीन है कि, "ओह, यहाँ एक चर है अब मुझे जाना कि चर पाने के लिए और इसे यहाँ डालने की जरूरत है." अगर आप किसी भी चर का उपयोग नहीं करते, इन दोहरे उद्धरण चिह्नों के अंदर कुछ भी नहीं इंटरपोलेट की जरूरत है, लेकिन यह अभी भी धीमी हो क्योंकि यह डबल उद्धरण जाने की जरूरत है बातें कि इंटरपोलेट की की जरूरत के लिए देख रहे हैं. एकल उद्धरण तो थोड़ा तेज हो सकता है अगर कुछ भी नहीं इंटरपोलेट की जरूरत है सकते हैं, और मैं के लिए उपयोग करने के लिए भी एक उद्धरण, 'हाय, मेरा नाम है' के लिए करते हैं. $ सरणी ['एक'] वैसे भी. कि हम पहले क्या था के बराबर होने जा रहा है. लेकिन यह प्राथमिकता का मामला है. अगर आप PHP का उपयोग कर रहे हैं, तो आप शायद गति अंतर के बारे में परवाह नहीं करते हैं. वहाँ उन्हें कारण बाहर के साथ शुरू करने के लिए पर्याप्त नहीं है. कोई अंतिम सवाल? हम वास्तव में भी यह सभी के माध्यम से नहीं मिला, लेकिन इस सामान उबाऊ था. आखिरी बात यह है कि PHP में तरह अच्छा है जब आप HTML के साथ काम कर रहे हैं, आप इसे एक चर मुद्रण के लिए एक सा है, तो अच्छा शॉर्टकट सिंटैक्स का उपयोग करेंगे. PHP यहाँ डालने के बिना, इस छोटे टैग कहा जाता है. 5.4 PHP के रूप में आधिकारिक तौर पर, यह पदावनत किया जा रहा है. आप PHP डाल करने के लिए सिफारिश कर रहे हैं. यह अभी भी, <इतना छोटा टैग समर्थित है = अभी भी पूरी तरह से ठीक हैं. यह डिफ़ॉल्ट रूप से समर्थित है, तो आप इन का उपयोग के रूप में आप चाहते हैं कर सकते हैं, और वे बहुत सुविधाजनक हो. कोई सवाल? सही सभी. उत्तम दर्जे रहो, सैन डिएगो. [दूसरे से टकराए] अलविदा. [हंसते हुए] [वाहवाही] [हंसते हुए] [CS50.TV]