1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [धारा 8 - अधिक आरामदायक] 2 00:00:02,610 --> 00:00:04,910 [रोब Bowden - हार्वर्ड विश्वविद्यालय] 3 00:00:04,910 --> 00:00:07,070 [यह CS50 है. - CS50.TV] 4 00:00:11,520 --> 00:00:14,160 >> ये सप्ताह अनुभाग नोट्स के लिए बहुत कम होने जा रहे हैं, 5 00:00:14,160 --> 00:00:19,070 इसलिए मैं सिर्फ बात कर रखने के लिए जा रहा हूँ, तुम लोगों के लिए सवाल पूछते रहते हैं जा रहे हैं, 6 00:00:19,070 --> 00:00:22,720 और हम जितना संभव हो उतना समय को भरने की कोशिश करेंगे. 7 00:00:22,720 --> 00:00:31,950 लोगों का एक बहुत लगता है कि इस pset जरूरी मुश्किल नहीं है, लेकिन यह बहुत लंबा है. 8 00:00:31,950 --> 00:00:37,070 pset कल्पना ही एक घंटे पढ़ने के लिए लेता है. 9 00:00:40,530 --> 00:00:45,730 हम आपको दे एसक्यूएल की एक बहुत आप संभवतः के लिए उपयोग करने की आवश्यकता हो सकती है. 10 00:00:45,730 --> 00:00:50,520 हम आप इसे का एक बहुत माध्यम से चलना है, तो यह भी बुरा नहीं होना चाहिए. 11 00:00:50,520 --> 00:00:54,560 किसी को भी शुरू कर दिया है या समाप्त हो गया? 12 00:00:55,380 --> 00:00:59,710 यह पिछले pset है. ओह, मेरे भगवान. 13 00:00:59,710 --> 00:01:05,400 आमतौर पर इस के बाद एक एक जावास्क्रिप्ट है, लेकिन कैलेंडर परिवर्तन बातें 14 00:01:05,400 --> 00:01:09,560 1 सप्ताह कम सब कुछ करता है, और हम अब एक जावास्क्रिप्ट pset है. 15 00:01:09,560 --> 00:01:12,310 मैं नहीं जानता कि कैसे प्रभावित करता है कि जावास्क्रिप्ट परीक्षा पर दिखाई जा रही है 16 00:01:12,310 --> 00:01:15,510 या 1 कीजिए. 17 00:01:15,510 --> 00:01:22,260 मुझे लगता है यह कुछ हो सकता है आप की तरह जावास्क्रिप्ट के बारे में उच्च स्तर बातें पता है की जरूरत है, 18 00:01:22,260 --> 00:01:26,460 लेकिन मुझे शक है हम तो बस आप सीधे जावास्क्रिप्ट कोड देना चाहते हैं 19 00:01:26,460 --> 00:01:28,720 क्योंकि आप इसे में एक pset नहीं पड़ा है. 20 00:01:28,720 --> 00:01:33,000 लेकिन कि प्रश्नोत्तरी समीक्षा के लिए सामान अगले सप्ताह किया जाएगा. 21 00:01:33,000 --> 00:01:36,320 >> सवालों की धारा. 22 00:01:36,320 --> 00:01:43,870 इस सामान की एक बहुत कुछ शब्दों में खराब है, लेकिन हम क्यों चर्चा करेंगे. 23 00:01:43,870 --> 00:01:50,220 सी के विपरीत, PHP एक "गतिशील टाइप" भाषा है. इसका क्या मतलब है, आप से पूछना? 24 00:01:50,220 --> 00:01:53,830 खैर, उन चार, नाव, int, और अन्य खोजशब्दों के सभी को अलविदा कहने के लिए आप का उपयोग करने की जरूरत है 25 00:01:53,830 --> 00:01:56,190 जब चर और सी में कार्यों की घोषणा 26 00:01:56,190 --> 00:02:00,420 PHP में एक चर प्रकार मूल्य द्वारा निर्धारित किया जाता है कि यह वर्तमान में पकड़ रखा है. 27 00:02:00,420 --> 00:02:04,990 तो इससे पहले कि हम एक dynamic.php नामक एक फाइल में इस कोड लिखें, 28 00:02:04,990 --> 00:02:12,670 PHP गतिशील रूप से लिखा गया है. यह सच है. 29 00:02:12,670 --> 00:02:17,590 मैं तथ्य यह है कि इसका मतलब है कि हम चार, नाव के लिए अलविदा कह रहे हैं, int के साथ असहमत हैं, 30 00:02:17,590 --> 00:02:20,620 और अन्य खोजशब्दों. 31 00:02:20,620 --> 00:02:25,510 गतिशील टाइप और वैकल्पिक के बीच सटीक अंतर, 32 00:02:25,510 --> 00:02:32,010 जो statically टाइप किया जाता है, वह यह है कि गतिशील टाइप, अपने प्रकार की जाँच और सामान के सभी 33 00:02:32,010 --> 00:02:37,350 चलाने के समय में होता है, जबकि statically टाइप यह संकलन समय पर होता है. 34 00:02:37,350 --> 00:02:43,030 सामान्य में स्थिर शब्द संकलन समय चीजों का मतलब लगता है. 35 00:02:43,030 --> 00:02:48,170 मुझे लगता है कि इसके लिए अन्य का उपयोग करता है, लेकिन सी में जब आप एक स्थैतिक चर की घोषणा, 36 00:02:48,170 --> 00:02:52,650 इसके भंडारण के समय संकलन में आवंटित की है. 37 00:02:52,650 --> 00:02:59,260 यहाँ, गतिशील टाइप बस मतलब है कि - 38 00:02:59,260 --> 00:03:04,350 सी में अगर आप एक स्ट्रिंग और एक पूर्णांक जोड़ने के लिए, जब आप यह संकलन की कोशिश, 39 00:03:04,350 --> 00:03:11,000 यह शिकायत करने के लिए जा रहा है, क्योंकि यह कहना है कि आप एक int और एक सूचक नहीं जोड़ सकते हैं जा रहा है. 40 00:03:11,000 --> 00:03:14,710 यह सिर्फ एक वैध आपरेशन नहीं है. 41 00:03:14,710 --> 00:03:21,170 यह एक और बात यह है कि हम एक दूसरे में मिल जाएगा. 42 00:03:21,170 --> 00:03:24,860 लेकिन जाँच के उस प्रकार, तथ्य यह है कि यह समय संकलन में शिकायत, 43 00:03:24,860 --> 00:03:29,220 स्थिर प्रकार की जाँच कर रहा है. 44 00:03:29,220 --> 00:03:35,220 भाषाओं में जहां आप चार, नाव, int कहने की जरूरत नहीं है, और उन चीजों के सभी कर रहे हैं, 45 00:03:35,220 --> 00:03:40,940 लेकिन भाषा बात के संदर्भ से बताने के लिए किस प्रकार यह होना चाहिए कर सकते हैं, 46 00:03:40,940 --> 00:03:43,980 लेकिन यह अभी भी statically टाइप है. 47 00:03:43,980 --> 00:03:49,000 तो अगर आप 51, OCaml ले, आप की जरूरत कभी नहीं इन प्रकार के किसी भी उपयोग के लिए, 48 00:03:49,000 --> 00:03:58,700 लेकिन यह अभी भी संकलन समय पर कहते हैं कि तुम यह नहीं कर कर सकते हैं क्योंकि आप एक int और एक स्ट्रिंग मिश्रण हो. 49 00:03:58,700 --> 00:04:05,650 गतिशील टाइप सिर्फ मतलब है कि चलाने के लिए समय के दौरान कुछ समय के लिए एक शिकायत प्राप्त करने के लिए जा रहे हैं. 50 00:04:05,650 --> 00:04:13,430 यदि आप भी जावा पहले सामान्य रूप में प्रयोग किया जाता है, लगभग किसी भी भाषा सी प्रकार 51 00:04:13,430 --> 00:04:20,070 statically, तो टाइप किया जा सी, सी + +, जावा, आम तौर पर उन सभी statically टाइप कर रहे हैं जा रहा है. 52 00:04:20,070 --> 00:04:22,910 जावा में जब आप कुछ संकलन और तुम कह रहे हो 53 00:04:22,910 --> 00:04:26,670 स्ट्रिंग कुछ नया है कि एक स्ट्रिंग नहीं है के बराबर होती है, 54 00:04:26,670 --> 00:04:28,950 कि शिकायत करने के लिए जा रहा है क्योंकि उन प्रकार मेल नहीं खाते. 55 00:04:28,950 --> 00:04:31,180 जो समय संकलन में शिकायत करने जा रहा है. 56 00:04:31,180 --> 00:04:36,750 लेकिन यह भी कुछ गतिशील समय चीजों की तरह है अगर आप कुछ डाली की कोशिश 57 00:04:36,750 --> 00:04:40,500 एक प्रकार है कि अपने मौजूदा प्रकार की तुलना में अधिक विशिष्ट है, 58 00:04:40,500 --> 00:04:45,610 वहाँ कुछ भी नहीं है यह संकलन समय पर करने के लिए जांच कर सकते हैं कि कलाकारों के लिए सफल होने जा रहा है कि क्या है. 59 00:04:45,610 --> 00:04:51,130 जावा भी कुछ गतिशील प्रकार की जाँच है कि जैसे ही यह कोड की है कि लाइन के लिए हो जाता है 60 00:04:51,130 --> 00:04:54,130 जब यह वास्तव में को क्रियान्वित करने है, यह करने के लिए कलाकारों को क्या हो रहा है, 61 00:04:54,130 --> 00:04:56,260 जाँच है कि अगर डाली पहली जगह में वैध था, 62 00:04:56,260 --> 00:04:59,890 और अगर यह नहीं था, तो यह शिकायत करते हैं कि आप एक अवैध प्रकार है जा रहा है. 63 00:04:59,890 --> 00:05:03,200 गतिशील प्रकार की जाँच. 64 00:05:03,200 --> 00:05:07,010 एक dynamic.php नामक एक फाइल में इस प्रकार है. 65 00:05:10,130 --> 00:05:12,380 Dynamic.php. 66 00:05:14,580 --> 00:05:17,190 मैं उस स्वरूपण खोलना होगा. 67 00:05:18,750 --> 00:05:21,880 हम एक चर है, हम इसे पूर्णांक 7 करने के लिए सेट, 68 00:05:21,880 --> 00:05:27,930 तो हम इसे और% s मुद्रित करने के लिए जा रहे हैं - 69 00:05:27,930 --> 00:05:32,830 ओह, हम इसे का मुद्रण कर रहे हैं, तो gettype चर के प्रकार वापस जा रहा है. 70 00:05:32,830 --> 00:05:35,720 हम बस प्रकार कर रहे हैं और अधिक से अधिक फिर से छपाई. 71 00:05:35,720 --> 00:05:39,440 हम सिर्फ php.dynamic.php. 72 00:05:39,440 --> 00:05:45,920 हम देखेंगे कि यह पूर्णांक से बूलियन करने के लिए स्ट्रिंग परिवर्तन के रूप में हम के माध्यम से जाना. 73 00:05:45,920 --> 00:05:54,590 सी में कोई बूलियन डेटा प्रकार है, वहाँ कोई स्ट्रिंग डेटा प्रकार है. 74 00:05:54,590 --> 00:06:00,500 चार * और बूलियन सिर्फ int या चार या कुछ और हो जाता है. 75 00:06:00,500 --> 00:06:05,690 PHP में इन प्रकार मौजूद हैं, और है कि सी PHP के बड़े फायदे में से एक है - 76 00:06:05,690 --> 00:06:13,290 कि स्ट्रिंग आपरेशन असीम सी. से PHP में वे सिर्फ काम आसान कर रहे हैं. 77 00:06:13,290 --> 00:06:18,290 >> तो हम यहाँ वापस आना. 78 00:06:18,290 --> 00:06:21,260 हम dynamic.php भागा. 79 00:06:21,260 --> 00:06:26,710 यह PHP दुभाषिया, PHP बुलाया, dynamic.php में PHP कोड चलाने बताता है. 80 00:06:26,710 --> 00:06:30,250 यदि आप फ़ाइल में कोई त्रुटि है, दुभाषिया आपको बता देगा! 81 00:06:30,250 --> 00:06:39,110 दुभाषिया, यह PHP और सी. के बीच एक और बड़ा अंतर है 82 00:06:39,110 --> 00:06:48,200 सी में आप कुछ संकलन और फिर आपको लगता है कि संकलित फ़ाइल चला है. 83 00:06:48,200 --> 00:06:50,490 आप PHP में कुछ भी कभी नहीं संकलन. 84 00:06:50,490 --> 00:06:57,200 तो PHP दुभाषिया मूल रूप से बस लाइन द्वारा इस लाइन पढ़. 85 00:06:57,200 --> 00:07:02,900 यह हिट var = 7 तो यह printf तो हिट यह var तो हिट यह printf और इतने पर हिट. 86 00:07:02,900 --> 00:07:10,910 संकलन करता है यह एक सा है, और यह परिणाम caches 87 00:07:10,910 --> 00:07:15,510 इसलिए यदि आप स्क्रिप्ट चलाने के बाद आप कुछ कर सकते हैं, 88 00:07:15,510 --> 00:07:19,280 लेकिन मूल रूप से यह बात की लाइन तरह से एक पंक्ति है. 89 00:07:19,280 --> 00:07:25,280 इसका मतलब है कि अनुकूलन है कि हम सी में मिल के एक बहुत कुछ है, 90 00:07:25,280 --> 00:07:31,920 संकलन की तरह, यह सिर्फ आम तौर पर संकलक चाल का एक बहुत आप के लिए क्या कर सकते हैं. 91 00:07:31,920 --> 00:07:36,110 यह बाहर अप्रयुक्त चर ले जा सकते हैं, यह सब चीजों के इन प्रकार के कर सकते हैं, 92 00:07:36,110 --> 00:07:38,660 पूंछ recursion कर सकते हैं. 93 00:07:38,660 --> 00:07:42,550 PHP में आप कि लाभ पाने के लिए नहीं जा रहे हैं 94 00:07:42,550 --> 00:07:45,690 क्योंकि यह सिर्फ लाइन से लाइन से लाइन को क्रियान्वित करने शुरू करने जा रहा है, 95 00:07:45,690 --> 00:07:49,950 और यह वास्तव में इन बातों को नहीं पहचान करता है के रूप में आसानी से 96 00:07:49,950 --> 00:07:54,440 के बाद से यह एक बात पर बड़ा संकलन पास और फिर निष्पादन नहीं है; 97 00:07:54,440 --> 00:07:56,860 यह सिर्फ लाइन से लाइन है. 98 00:08:00,730 --> 00:08:02,750 तो यह है कि दुभाषिया है. 99 00:08:02,750 --> 00:08:06,840 >> हमारे गतिशील टाइपिंग के लिए वापस: बहुत शांत है, है ना? 100 00:08:06,840 --> 00:08:08,640 आप निश्चित रूप से कि सी में नहीं कर सकता है! 101 00:08:08,640 --> 00:08:11,860 अब, देख अगर तुम बाहर निम्न मानों में से प्रत्येक के प्रकार समझ सकते हैं. 102 00:08:11,860 --> 00:08:14,760 संदर्भ के लिए यह देखें. 103 00:08:14,760 --> 00:08:19,420 3.50 तो. प्रकार क्या आपको लगता है कि होने जा रहा है? 104 00:08:24,480 --> 00:08:26,370 यहाँ प्रकार है हम कर रहे हैं. 105 00:08:26,370 --> 00:08:30,430 हम bools, integers, अस्थायी अंक, तार, arrays, वस्तुओं, 106 00:08:30,430 --> 00:08:38,370 और फिर संसाधनों, जो अस्पष्ट की तरह है. 107 00:08:38,370 --> 00:08:41,010 मुझे लगता है कि वहाँ वास्तव में यहाँ एक उदाहरण है. 108 00:08:41,010 --> 00:08:43,740 तो फिर वहाँ रिक्त है. रिक्त एक विशेष प्रकार है. 109 00:08:43,740 --> 00:08:47,140 सी विपरीत जहां नल सिर्फ 0 पते के साथ एक सूचक है, 110 00:08:47,140 --> 00:08:54,930 PHP में, रिक्त अपने स्वयं के प्रकार जहां केवल उस प्रकार के वैध बात रिक्त है. 111 00:08:57,560 --> 00:09:00,670 यह त्रुटि की जाँच के लिए बहुत उपयोगी है. 112 00:09:00,670 --> 00:09:04,310 सी जहाँ हम इस मुद्दे पर जहां अगर आप लौटने के रिक्त था, 113 00:09:04,310 --> 00:09:08,660 मतलब है कि आप एक रिक्त सूचक लौट रहे हैं या नल का उपयोग करने के लिए त्रुटि दर्शाता 114 00:09:08,660 --> 00:09:12,380 या कि भ्रम के सभी हम एक बिंदु पर था. 115 00:09:12,380 --> 00:09:18,440 यहाँ, नल लौटने आम तौर पर त्रुटि का मतलब है. 116 00:09:20,860 --> 00:09:27,300 चीजों की एक बहुत भी त्रुटि के लिए झूठी वापसी. 117 00:09:27,300 --> 00:09:33,140 लेकिन बात नल प्रकार है, अशक्त प्रकार के केवल एक चीज रिक्त है. 118 00:09:33,140 --> 00:09:40,090 फिर कॉलबैक है जैसे आप कुछ गुमनाम कार्यों को परिभाषित कर सकते हैं. 119 00:09:40,090 --> 00:09:46,420 आप के लिए समारोह में एक नाम देना नहीं है, लेकिन आप उस के साथ सौदा नहीं होगा. 120 00:09:46,420 --> 00:09:53,940 प्रकार को देखते हुए कि वे हमें पता करने की उम्मीद करते हैं, 121 00:09:53,940 --> 00:09:59,000 तुम्हें क्या लगता है 3.50 के प्रकार है? >> [छात्र] फ्लोट. 122 00:09:59,000 --> 00:10:00,370 हाँ. 123 00:10:00,370 --> 00:10:06,290 तो फिर यहाँ, तुम क्या लगता है कि इस का प्रकार है? >> [छात्र] सरणी. 124 00:10:06,290 --> 00:10:09,890 हाँ. था 1 एक नाव, 2 एक एक सरणी है. 125 00:10:09,890 --> 00:10:14,500 सूचना है कि इस सरणी एक सी सरणी की तरह नहीं है 126 00:10:14,500 --> 00:10:19,610 जहाँ आप सूचकांक 0 कुछ मूल्य सूचकांक 1, कुछ मूल्य है. 127 00:10:19,610 --> 00:10:26,320 यहाँ इंडेक्स एक, ख, ग और कर रहे हैं और मान 1, 2, और 3. 128 00:10:26,320 --> 00:10:33,980 PHP में एक साहचर्य सरणी और सिर्फ एक नियमित सरणी के बीच कोई अंतर नहीं है 129 00:10:33,980 --> 00:10:36,740 के रूप में आप इसे सी में बारे में सोचना होगा 130 00:10:36,740 --> 00:10:43,040 इस बस है, और हुड के नीचे एक नियमित सरणी सिर्फ एक साहचर्य सरणी है 131 00:10:43,040 --> 00:10:50,000 जहां कुछ मूल्य 0 नक्शे उसी तरह कुछ मूल्य के लिए नक्शे. 132 00:10:50,000 --> 00:11:00,410 इस कारण से, PHP वास्तव में तेजी से कोड / बेंच मार्किंग बातों के लिए बहुत बुरा हो सकता है 133 00:11:00,410 --> 00:11:07,930 के बाद से सी में जब आप एक सरणी का उपयोग कर रहे हैं आप जानते हैं कि एक सदस्य तक पहुँचने के लिए लगातार समय है. 134 00:11:07,930 --> 00:11:11,860 PHP एक सदस्य तक पहुँचने में है जो कितना समय जानता है? 135 00:11:11,860 --> 00:11:18,970 यह शायद स्थिर hashes इसे सही ढंग से अगर. 136 00:11:18,970 --> 00:11:21,620 कौन जानता है कि क्या यह वास्तव में हुड के नीचे क्या कर रही है? 137 00:11:21,620 --> 00:11:25,600 तुम सच में कार्यान्वयन को देखने के लिए कि यह कैसे उस के साथ निपटने के लिए जा रहा है की जरूरत है. 138 00:11:25,600 --> 00:11:28,550 Fopen तो. 139 00:11:28,550 --> 00:11:36,420 मैं यहाँ लगता है कि सिर्फ PHP मैनुअल fopen वापसी प्रकार को देखने जाने के लिए. 140 00:11:36,420 --> 00:11:41,260 हम यहाँ देखने के लिए आप बहुत ज्यादा PHP मैनुअल में कर सकते हैं किसी भी समारोह में देखो 141 00:11:41,260 --> 00:11:47,540 और यह PHP के आदमी पेज की तरह है. 142 00:11:47,540 --> 00:11:51,060 वापस प्रकार के संसाधन होने जा रही है. 143 00:11:51,060 --> 00:11:56,050 यही कारण है कि मैं इसे ऊपर देखा है, क्योंकि हम वास्तव में संसाधन परिभाषित नहीं किया है. 144 00:11:56,050 --> 00:12:04,110 संसाधन के विचार, सी में आप की तरह एक फ़ाइल * या जो कुछ भी मिला है, 145 00:12:04,110 --> 00:12:07,200 PHP में संसाधन फ़ाइल * है. 146 00:12:07,200 --> 00:12:10,360 यह क्या तुम से पढ़ने जा रहे हैं, यह तुम क्या करने के लिए लेखन किया जा रहे हैं. 147 00:12:10,360 --> 00:12:20,710 यह आमतौर पर बाहरी है, तो यह आप चीजों से खींच कर सकते हैं और चीजों को फेंक एक संसाधन है. 148 00:12:20,710 --> 00:12:26,520 और अंत में, नल के प्रकार क्या है? >> [छात्र] रिक्त. 149 00:12:26,520 --> 00:12:30,650 हाँ. केवल बात यह है कि नल है तो रिक्त है. 150 00:12:30,650 --> 00:12:33,480 नल नल है. 151 00:12:35,490 --> 00:12:41,170 >> PHP प्रकार की प्रणाली (बेहतर या बदतर के लिए) की एक विशेषता यह अपने प्रकार का हथकंडा क्षमता है. 152 00:12:41,170 --> 00:12:44,390 जब आप PHP कोड है कि विभिन्न प्रकार के मूल्यों को जोड़ती है की एक पंक्ति लिखने 153 00:12:44,390 --> 00:12:46,670 PHP समझदार बात करने की कोशिश करेंगे. 154 00:12:46,670 --> 00:12:48,920 PHP कोड के निम्नलिखित लाइनों के प्रत्येक की कोशिश करो. क्या छपा है? 155 00:12:48,920 --> 00:12:51,000 यह तुम क्या उम्मीद है? क्यों या क्यों नहीं? 156 00:12:51,000 --> 00:12:58,600 PHP के बारे में यह तथ्य यह है कि यह क्या करता है क्या हम कमजोर टाइप कॉल. 157 00:12:58,600 --> 00:13:04,610 कमजोर टाइप और जोरदार टाइप, 158 00:13:04,610 --> 00:13:06,840 वहाँ उन शब्दों के लिए अलग प्रयोग कर रहे हैं, 159 00:13:06,840 --> 00:13:12,020 लेकिन अधिकांश लोगों को कमजोर टाइप और जोरदार टाइप का उपयोग करने के लिए इस तरह की बात का मतलब 160 00:13:12,020 --> 00:13:15,920 ("1" + 2), कि काम करता है. 161 00:13:15,920 --> 00:13:18,290 सी में काम नहीं करेगा. 162 00:13:18,290 --> 00:13:22,490 आप काम नहीं कर रहा यह कल्पना कर सकते हैं. 163 00:13:22,490 --> 00:13:29,200 लोगों का एक बहुत गतिशील टाइपिंग और कमजोर टाइपिंग और स्थिर टाइपिंग और मजबूत टाइपिंग मिश्रण. 164 00:13:29,200 --> 00:13:34,050 अजगर एक भाषा है कि गतिशील टाइप का एक और उदाहरण है. 165 00:13:34,050 --> 00:13:41,770 तुम चर में प्रकार के आसपास फेंक और इसे चलाते समय निर्धारित करने के लिए जा रहा है कर सकते हैं 166 00:13:41,770 --> 00:13:44,680 किसी भी त्रुटि checkings. 167 00:13:44,680 --> 00:13:50,740 अजगर में यह करने के लिए इस पर अमल करने के लिए और यह देखेंगे ("1" 2 +) के लिए जा रहा है; 168 00:13:50,740 --> 00:13:55,920 और इस वजह से यह कहना है कि आप एक स्ट्रिंग और एक पूर्णांक नहीं जोड़ सकते हैं असफल हो जायेगी. 169 00:13:55,920 --> 00:14:00,860 PHP, जो बस के रूप में टाइप गतिशील है, यह निराश नहीं करेगा. 170 00:14:00,860 --> 00:14:04,220 कमजोर टाइप करने के लिए तथ्य यह है कि यह प्रकार के साथ बातें करता है के साथ क्या करना है 171 00:14:04,220 --> 00:14:07,800 कि वास्तव में भावना जरूरी नहीं बनाते हैं. 172 00:14:07,800 --> 00:14:17,420 तो ("1" + 2), मैं कल्पना कर सकते हैं कि 12 स्ट्रिंग किया जा रहा है, मैं इसे 3 स्ट्रिंग होने की कल्पना कर सकते हैं, 173 00:14:17,420 --> 00:14:20,710 मैं यह पूर्णांक 3 होने की कल्पना कर सकते हैं. 174 00:14:20,710 --> 00:14:24,530 यह जरूरी भी नहीं परिभाषित किया गया है और हम शायद यहाँ देखने के लिए जा रहे हैं 175 00:14:24,530 --> 00:14:29,140 कि जब हम प्रिंट ("1" + 2), यह शायद अंत अलग किया जा रहा है जा रहा है 176 00:14:29,140 --> 00:14:32,320 मुद्रण (1 + "2"). 177 00:14:32,320 --> 00:14:39,700 और यह मेरी राय में बदतर के लिए, हो सकता है, जाता है. 178 00:14:39,700 --> 00:14:44,240 यहाँ हम इन की कोशिश कर सकते हैं. 179 00:14:44,240 --> 00:14:48,740 PHP के बारे में एक छोटी सी चाल है कि आप वास्तव में फ़ाइल लिखने की जरूरत नहीं है. 180 00:14:48,740 --> 00:14:52,790 यह इस आदेश मोड चला है. 181 00:14:52,790 --> 00:14:57,710 Php-r तो, तो हम यहाँ आदेश में फेंक कर सकते हैं: 182 00:14:57,710 --> 00:15:06,610 "('1 '+ 2) प्रिंट," और मैं एक नई लाइन फेंक देंगे. 183 00:15:19,550 --> 00:15:23,970 इस 3 मुद्रित. 184 00:15:31,100 --> 00:15:35,330 ऐसा लगता है जैसे कि यह 3 छापता है और यह पूर्णांक 3. 185 00:15:35,330 --> 00:15:38,420 तो अब हम दूसरी तरह के आसपास की कोशिश: 186 00:15:38,420 --> 00:15:42,970 "प्रिंट (1 + '2 '); 187 00:15:45,560 --> 00:15:50,490 हम 3 मिलता है, और यह भी 3 पूर्णांक होने जा रहा है? मैं ईमानदारी से पता नहीं है. 188 00:15:50,490 --> 00:15:54,030 ऐसा लगता है कि तरह अनुरूप है. 189 00:15:54,030 --> 00:15:59,550 यह स्ट्रिंग या 12 की तरह कुछ भी किया जा रहा है की कोई भी मौका है कि कभी नहीं 190 00:15:59,550 --> 00:16:08,080 क्योंकि PHP विपरीत, जावास्क्रिप्ट और भी जावा, 191 00:16:08,080 --> 00:16:11,670 अभिलाग के लिए एक अलग ऑपरेटर है. 192 00:16:11,670 --> 00:16:14,930 PHP में कड़ी डॉट है. 193 00:16:14,930 --> 00:16:22,950 मुद्रण तो (1 '2 '), हमें 12 दे जा रहा है. 194 00:16:25,790 --> 00:16:32,420 यह भ्रम की स्थिति पैदा जहां लोगों को str = तरह कुछ करने की कोशिश करता है 195 00:16:32,420 --> 00:16:37,840 कुछ अन्य बात यह है कि वे उनके तार के अंत पर जोड़ना चाहते हैं, और कि विफल करने के लिए जा रहा है. 196 00:16:37,840 --> 00:16:40,770 आप str करने की जरूरत है. 197 00:16:42,000 --> 00:16:46,240 तो यह नहीं भूलना PHP में अभिलाग डॉट है. 198 00:16:46,240 --> 00:16:52,100 अन्य बातें करने की कोशिश: प्रिंट (50 + "सीएस"); 199 00:16:55,750 --> 00:17:03,610 मैं तुम्हें बता दिया है कि इस बात का कोई आशा CS50 में जिसके परिणामस्वरूप 200 00:17:03,610 --> 00:17:06,119 के बाद से अभिलाग + नहीं है. 201 00:17:06,119 --> 00:17:08,440 तुम्हें क्या लगता है इस के लिए खत्म किया जा रहा जा रहा है? 202 00:17:10,359 --> 00:17:13,460 मैं ईमानदारी से बिल्कुल पता नहीं है. 203 00:17:14,250 --> 00:17:16,460 ऐसा लगता है कि यह सिर्फ 50. 204 00:17:16,460 --> 00:17:21,490 यह स्ट्रिंग देखता है, और मुझे यकीन है कि अगर हम 123CS डाल - 205 00:17:21,490 --> 00:17:29,640 यह पहली स्ट्रिंग देखता है, यह इसे से एक पूर्णांक या इसे से एक नंबर पढ़ने की कोशिश करता है. 206 00:17:29,640 --> 00:17:31,710 इस मामले में यह 123CS देखता है. 207 00:17:31,710 --> 00:17:35,190 "यह समझ में एक पूर्णांक के रूप में नहीं कर सकता है, तो मैं सिर्फ 123 के बारे में सोच रहा हूँ." 208 00:17:35,190 --> 00:17:38,580 123 तो 50 + 173 होने जा रहा है. 209 00:17:38,580 --> 00:17:40,740 और यहाँ यह एक पूर्णांक के रूप में इस पढ़ने शुरू होता है. 210 00:17:40,740 --> 00:17:45,690 यह कुछ भी नहीं देख नहीं करता है तो, यह सिर्फ 0 के रूप में व्यवहार करता है. 0 तो 50 + 50 होने जा रहा है. 211 00:17:45,690 --> 00:17:51,600 यह मैं मान रहा हूँ के समान कुछ करने जा रहा है. 212 00:17:51,600 --> 00:17:54,310 मैं 99 सोच रहा हूँ. 213 00:17:54,310 --> 00:17:57,580 हाँ, क्योंकि यह पहली बार लग रहा है - 214 00:18:12,880 --> 00:18:15,730 99 तो. 215 00:18:15,730 --> 00:18:21,970 यहाँ (7/10), अगर यह सी थे, कि क्या लौटेंगे? 216 00:18:23,700 --> 00:18:29,630 1 [] छात्र. >> हाँ, यह 1 हो सकता है क्योंकि 10/7 2 integers विभाजित होगा. 217 00:18:29,630 --> 00:18:32,910 एक पूर्णांक से विभाजित पूर्णांक एक पूर्णांक वापस जा रहा है. 218 00:18:32,910 --> 00:18:37,750 यह 1 बिंदु है कि जो भी होगा वापस नहीं है, तो यह सिर्फ 1 वापस जा सकते हैं. 219 00:18:37,750 --> 00:18:46,120 यहाँ (7/10) मुद्रण, यह वास्तव में उस की व्याख्या करने के लिए जा रहा है. 220 00:18:46,120 --> 00:18:53,760 और इसका मतलब है कि अगर आप वास्तव में की तरह है कि पूर्णांक गोलाई और सामान करना चाहते हैं, 221 00:18:53,760 --> 00:18:59,950 आप प्रिंट (मंजिल (10/7)) करने की जरूरत है; 222 00:18:59,950 --> 00:19:08,460 सी में यह शायद अजीब है कि आप पूर्णांक truncation पर नियमित रूप से भरोसा कर सकते हैं, 223 00:19:08,460 --> 00:19:12,260 लेकिन PHP में आप क्योंकि यह नहीं स्वचालित रूप से एक नाव में कर सकते हैं यह मोड़. 224 00:19:13,430 --> 00:19:17,610 और फिर (7 सच +), तुम क्या लगता है कि होने जा रहा है? 225 00:19:18,550 --> 00:19:23,640 मैं 8 लग रहा है और अगर यह 1 के रूप में सच की व्याख्या के लिए जा रहा है. 226 00:19:23,640 --> 00:19:25,740 ऐसा लग रहा है जैसे कि यह 8 है. 227 00:19:25,740 --> 00:19:31,710 >> तो कुछ भी हम तुम बिल्कुल नहीं करना चाहिए पिछले 10 मिनट में किया है. 228 00:19:31,710 --> 00:19:39,870 आप कोड है कि इस करता देखेंगे. 229 00:19:39,870 --> 00:19:42,700 यह इस रूप में सरल होना जरूरी नहीं है. 230 00:19:42,700 --> 00:19:47,240 आप 2 चर सकता है, और 1 चर एक स्ट्रिंग होना होता है 231 00:19:47,240 --> 00:19:51,310 और अन्य चर के लिए एक int होना होता है, और फिर आप इन चर को एक साथ जोड़ने के. 232 00:19:51,310 --> 00:20:00,120 चूंकि PHP गतिशील टाइप किया जाता है और यह आप के लिए किसी भी प्रकार की जाँच नहीं करना होगा 233 00:20:00,120 --> 00:20:03,640 और क्योंकि यह कमजोर और टाइप के बाद से यह सिर्फ स्वचालित रूप से इन बातों को फेंक देंगे एक साथ 234 00:20:03,640 --> 00:20:11,490 और सब कुछ काम करेंगे, यह भी पता है कि इस चर एक स्ट्रिंग होना चाहिए मुश्किल है, 235 00:20:11,490 --> 00:20:14,930 इसलिए मैं इसे इस चर नहीं जोड़ने के लिए, जो एक पूर्णांक है. 236 00:20:18,780 --> 00:20:24,560 सबसे अच्छा अभ्यास है अगर एक चर एक स्ट्रिंग है, एक स्ट्रिंग के रूप में यह हमेशा के लिए रखने के लिए. 237 00:20:24,560 --> 00:20:26,980 यदि एक चर एक int है, एक int के रूप में यह हमेशा के लिए रखने के लिए. 238 00:20:26,980 --> 00:20:30,770 यदि आप integers और तार के साथ सौदा करना चाहते हैं, 239 00:20:30,770 --> 00:20:36,970 आप varsint का उपयोग कर सकते हैं कि जावास्क्रिप्ट है. 240 00:20:36,970 --> 00:20:42,520 Intval. मैं यह सब समय है. PHP और जावास्क्रिप्ट मैं सब कुछ मिश्रण. 241 00:20:42,520 --> 00:20:47,600 तो intval एक चर के पूर्णांक मान वापस जा रहा है. 242 00:20:47,600 --> 00:20:56,550 अगर हम "(intval ('123 ')) प्रिंट में पारित, आप 123 मिलता है. 243 00:21:06,820 --> 00:21:15,850 ही Intval हमारे लिए चेक कि यह विशेष रूप से एक पूर्णांक नहीं जा रहा है. 244 00:21:15,850 --> 00:21:20,460 PHP मैनुअल, वहाँ सिर्फ इतनी सारी उपलब्ध कार्य कर रहे हैं, 245 00:21:20,460 --> 00:21:26,560 तो यहाँ मुझे लगता है कि क्या मैं का प्रयोग करेंगे is_numeric 1 है. 246 00:21:26,560 --> 00:21:32,590 मुझे लग रहा है कि झूठी लौटे. 247 00:21:32,590 --> 00:21:35,780 यह एक और बात हम === है पर जाना है. 248 00:21:37,850 --> 00:21:44,020 तो is_numeric ('123df '), आप कि रूप is_numeric नहीं बारे में सोचना होगा. 249 00:21:44,020 --> 00:21:46,720 सी में आप सभी वर्ण पुनरावृति करना होगा 250 00:21:46,720 --> 00:21:50,410 और देखने के लिए अगर हर चरित्र अंकों या जो कुछ भी है की जाँच करें. 251 00:21:50,410 --> 00:21:53,850 यहाँ is_numeric है कि हमारे लिए क्या करने जा रहा है, 252 00:21:53,850 --> 00:21:56,520 और यह गलत लौट रहा है. 253 00:21:56,520 --> 00:22:02,120 इसलिए जब मुझे लगता है कि मुद्रित, यह कुछ भी नहीं छपी है, तो यहाँ मैं यह देखने के लिए तुलना कर रहा हूँ, 254 00:22:02,120 --> 00:22:05,490 था कि तुम गलत पाए जाने पर होता है? और इसलिए अब यह 1 मुद्रण है. 255 00:22:05,490 --> 00:22:10,060 जाहिरा तौर पर यह सच के रूप में सच मुद्रण के बजाय सच के रूप में 1 प्रिंट. 256 00:22:10,060 --> 00:22:15,790 मुझे आश्चर्य है कि अगर मैं print_r करते. नहीं, यह अभी 1 करता है. 257 00:22:15,790 --> 00:22:26,760 >> === करने के लिए वापस जा रहे हैं, == अभी भी मौजूद है, 258 00:22:26,760 --> 00:22:32,260 और अगर आप टॉमी बात वह == कहना है कि पूरी तरह से ठीक है. 259 00:22:32,260 --> 00:22:37,700 मैं कहना है कि == भयानक है और आप == इस्तेमाल नहीं करना चाहिए करने के लिए जा रहा हूँ. 260 00:22:37,700 --> 00:22:44,870 अंतर यह है कि == बातें तुलना 261 00:22:44,870 --> 00:22:48,450 जहां यह सच हो सकता है भले ही वे एक ही प्रकार नहीं कर रहे हैं कर सकते हैं, 262 00:22:48,450 --> 00:22:53,810 जबकि === चीजें की तुलना करता है और पहले यह जाँच करता है कि वे एक ही प्रकार के होते हैं? 263 00:22:53,810 --> 00:22:58,010 हां. ठीक है, अब मैं के लिए यदि वे वास्तव में करने के बराबर है की तुलना करने के लिए जा रहा हूँ. 264 00:22:58,010 --> 00:23:08,890 आप 10 की तरह अजीब बातें बराबर होती है - चलो देखते हैं कि क्या कहते हैं. 265 00:23:08,890 --> 00:23:15,570 ('10 '== '1 E1'); 266 00:23:15,570 --> 00:23:17,980 यह सच देता है. 267 00:23:17,980 --> 00:23:21,420 क्या किसी को कोई अनुमान क्यों यह सच रिटर्न है? 268 00:23:25,180 --> 00:23:27,120 यह है कि बस के बारे में नहीं है. शायद यह एक संकेत है. 269 00:23:27,120 --> 00:23:33,170 लेकिन अगर मैं एक च कि बदल - यह झकना! मैं दोहरे उद्धरण चिह्नों का उपयोग कर रखना. 270 00:23:33,170 --> 00:23:38,780 डबल उद्धरण मुझ पर चिल्ला रहे हैं कारण है क्योंकि मैं डबल उद्धरण में डाल दिया है. 271 00:23:38,780 --> 00:23:43,850 तो मैं यहाँ में दोहरे उद्धरण चिह्नों से बचने, लेकिन एकल उद्धरण इसे आसान बनाते हैं. 272 00:23:43,850 --> 00:23:49,120 ('10 '== '1 F1'); सच मुद्रित नहीं. ('10 '== '1 E1'); सच प्रिंट. 273 00:23:49,120 --> 00:23:56,330 [छात्र] यह हेक्स? >> यह हेक्स, नहीं है, लेकिन यह बंद है कि यह की तरह है - 274 00:23:56,330 --> 00:24:01,060 1E1, वैज्ञानिक संकेतन. 275 00:24:01,060 --> 00:24:07,950 यह 1 के रूप में 1E1 पहचानता 1 * 10 ^ या जो कुछ भी. 276 00:24:07,950 --> 00:24:11,510 उन बराबर पूर्णांक हैं. 277 00:24:11,510 --> 00:24:15,930 अगर हम === तो यह करने के लिए गलत होने जा रहा है. 278 00:24:15,930 --> 00:24:28,490 मैं वास्तव में कोई विचार नहीं है अगर हम करते हैं == के बारे में क्या (10 और '10abc '); सही सभी. तो यह सच है. 279 00:24:28,490 --> 00:24:35,940 तो बस की तरह जब आप (10 + '10abc '), और यह 20 होगा, 280 00:24:35,940 --> 00:24:38,800 यहाँ (10 == '10abc '), सच है. 281 00:24:38,800 --> 00:24:45,350 भी बदतर की तरह बातें (झूठी == रिक्त) हैं, सच है 282 00:24:45,350 --> 00:24:52,210 या (झूठी == 0), सच है, (झूठी == []); 283 00:24:52,210 --> 00:25:00,970 अजीब मामलों कि उन अजीब मामलों में से एक है. 284 00:25:00,970 --> 00:25:08,110 सूचना है कि (झूठी == []), सच है. 285 00:25:08,110 --> 00:25:11,950 ('0 'झूठी ==); सच है. 286 00:25:11,950 --> 00:25:16,090 ('0 '== []), झूठी है. 287 00:25:16,090 --> 00:25:19,090 == तो कोई सकर्मक रास्ते में है. 288 00:25:19,090 --> 00:25:26,830 एक ख के बराबर हो सकता है और एक ग के बराबर हो सकता है कर सकते हैं, 289 00:25:26,830 --> 00:25:29,340 लेकिन ख ग के बराबर नहीं हो सकता है. 290 00:25:29,340 --> 00:25:35,580 यह मेरे लिए एक घृणा है, और तुम हमेशा === का उपयोग करना चाहिए. 291 00:25:35,580 --> 00:25:38,590 [छात्र] हम करते हैं! == के रूप में अच्छी तरह से? >> [Bowden] हाँ. 292 00:25:38,590 --> 00:25:44,600 बराबर हो! = और! == 293 00:25:44,600 --> 00:25:48,230 यह वास्तव में pset कल्पना में ऊपर लाया 294 00:25:48,230 --> 00:25:52,000 जहां कार्यों वापसी की एक बहुत - 295 00:25:52,000 --> 00:25:53,890 PHP मैनुअल इस बारे में अच्छा है. 296 00:25:53,890 --> 00:25:59,140 यह एक बड़ा लाल बॉक्स में कहते हैं, "यह वापसी झूठी अगर वहाँ एक त्रुटि है." 297 00:25:59,140 --> 00:26:03,940 लेकिन लौटने 0 पर लौटने के लिए एक बिल्कुल उचित बात है. 298 00:26:03,940 --> 00:26:08,250 किसी भी समारोह है जो एक पूर्णांक लौटने की उम्मीद है के बारे में सोचो. 299 00:26:11,250 --> 00:26:17,880 चलो का कहना है कि इस समारोह के लिए एक फ़ाइल या कुछ में लाइनों की संख्या की गिनती करने के लिए माना जाता है. 300 00:26:17,880 --> 00:26:23,490 सामान्य परिस्थितियों में, आप इस समारोह में एक फ़ाइल से गुजारें 301 00:26:23,490 --> 00:26:27,120 और यह करने के लिए एक पूर्णांक है जो लाइनों की संख्या का प्रतिनिधित्व करता है वापस जा रहा है. 302 00:26:27,120 --> 00:26:30,820 0 तो एक पूरी तरह से उचित संख्या है अगर फाइल अभी खाली है. 303 00:26:30,820 --> 00:26:36,810 लेकिन क्या अगर तुम यह एक अवैध फाइल पास और कार्य करने के लिए वापसी झूठी होता है 304 00:26:36,810 --> 00:26:38,860 यदि आप इसे एक अवैध फाइल पास? 305 00:26:38,860 --> 00:26:46,500 यदि आप सिर्फ == आप अवैध फ़ाइल और खाली फाइल के बीच मामले फर्क नहीं रहे हैं. 306 00:26:48,870 --> 00:26:51,350 हमेशा === का उपयोग करें. 307 00:26:55,690 --> 00:26:58,000 वह उन सभी है. 308 00:26:58,000 --> 00:27:01,660 >> PHP में सरणी प्रकार क्या आप सी. में इस्तेमाल कर रहे हैं, से अलग है 309 00:27:01,660 --> 00:27:06,650 वास्तव में, आप पहले से ही यह ऊपर देखा है हो सकता है जब आप देखा है कि इस प्रकार सरणी का है. 310 00:27:06,650 --> 00:27:15,640 ब्रैकेट वाक्यविन्यास 5.4 PHP, जो PHP के नवीनतम संस्करण है के रूप में नया है. 311 00:27:15,640 --> 00:27:36,960 > 1, 'ख' -> 2 इससे पहले कि आप हमेशा लिखने के लिए सरणी ('एक' के लिए किया था. 312 00:27:36,960 --> 00:27:41,160 एक सरणी के लिए निर्माता था. 313 00:27:41,160 --> 00:27:45,950 अब PHP अंत में बस वर्ग कोष्ठक के अच्छा वाक्यविन्यास है चारों ओर आते हैं, 314 00:27:45,950 --> 00:27:50,900 जो सिर्फ इतना सरणी की तुलना में बेहतर है. 315 00:27:50,900 --> 00:27:54,480 लेकिन 5.4 PHP पर विचार नवीनतम संस्करण है, 316 00:27:54,480 --> 00:27:59,090 आप स्थानों है कि यहां तक ​​कि 5.3 PHP नहीं है का सामना कर सकते हैं. 317 00:27:59,090 --> 00:28:08,220 गर्मियों में हम इस मुद्दे में भाग गया, जहां PHP 5.3 था कि हम क्या उपकरण पर था, 318 00:28:08,220 --> 00:28:14,480 लेकिन सर्वर है कि हम हमारे सभी ग्रेड किताब तैनात और जमा और वह सब सामान के लिए 319 00:28:14,480 --> 00:28:16,750 5.4 PHP था. 320 00:28:16,750 --> 00:28:23,060 यह जानने के नहीं, हम 5.3 में विकसित की है, 5.4 के लिए धक्का दिया, 321 00:28:23,060 --> 00:28:25,660 और अब हमारे कोड के अचानक से कोई भी सब काम करता है 322 00:28:25,660 --> 00:28:28,680 क्योंकि वहाँ के लिए 5.3 और 5.4 के बीच परिवर्तन किया गया है हुआ 323 00:28:28,680 --> 00:28:31,030 जो पीछे संगत नहीं हैं, 324 00:28:31,030 --> 00:28:35,770 और हम जाने के लिए और हमारी बातों के सभी कि 5.4 PHP के लिए काम नहीं करते ठीक है. 325 00:28:39,210 --> 00:28:42,320 इस वर्ग के लिए है, के बाद से उपकरण 5.4 PHP करता है, 326 00:28:42,320 --> 00:28:45,490 वर्ग कोष्ठक का उपयोग यह बिल्कुल ठीक है. 327 00:28:47,240 --> 00:28:50,440 लेकिन अगर आप इंटरनेट के आसपास चीजें देख रहे हैं, 328 00:28:50,440 --> 00:28:54,880 अगर आप सरणी सामान के कुछ तरह देख रहे हैं, तो आप सबसे अधिक संभावना को देखने के लिए जा रहे हैं 329 00:28:54,880 --> 00:29:02,020 सरणी निर्माता वाक्यविन्यास बाहर जादू पैदा हुआ था कि आसपास के बाद से PHP के बाद से किया गया है 330 00:29:02,020 --> 00:29:07,340 और वर्ग कोष्ठक सिंटैक्स के आसपास पिछले कुछ महीनों के लिए किया गया है 331 00:29:07,340 --> 00:29:10,020 या 5.4 चारों ओर जब भी आया था. 332 00:29:10,020 --> 00:29:12,710 यह तुम कैसे सूचकांक है. 333 00:29:12,710 --> 00:29:30,610 बस में सी की तरह आप $ [0], $ [1] सरणी, सरणी $ [2], सरणी की तरह वर्ग कोष्ठक द्वारा सूचकांक कैसे 334 00:29:30,610 --> 00:29:36,320 आप उसी तरह अगर आप अपने इंडेक्स तार किया जा रहा है हो सूचकांक. 335 00:29:36,320 --> 00:29:40,440 तो $ सरणी ['एक'] और $ सरणी ['ख']. 336 00:29:40,440 --> 00:29:47,410 सरणी $ [ख]. यह गलत हो सकता है? 337 00:29:52,490 --> 00:29:59,870 यह शायद एक चेतावनी उत्पन्न लेकिन अभी भी काम कर सकते हैं. PHP करने के लिए कि क्या जाता है. 338 00:29:59,870 --> 00:30:04,890 यह बस, "मैं आपको इस बारे में आगाह करने के लिए जा रहा हूँ करने के लिए जाता है, लेकिन मैं सिर्फ जा रहा रखने के लिए जा रहा हूँ 339 00:30:04,890 --> 00:30:07,550 "और मैं जो कुछ भी कर सकते हैं." 340 00:30:07,550 --> 00:30:11,500 यह शायद एक स्ट्रिंग के लिए यह अनुवाद करेंगे, 341 00:30:11,500 --> 00:30:15,000 लेकिन यह संभव है कि अतीत में किसी को कुछ बिंदु पर कहा 342 00:30:15,000 --> 00:30:20,180 ख को परिभाषित करने के लिए 'नमस्ते विश्व'. 343 00:30:20,180 --> 00:30:28,740 तो अब ख एक स्थिर और $ सरणी हो सकता है [ख] वास्तव में कर किया जाएगा 'नमस्ते विश्व'. 344 00:30:28,740 --> 00:30:32,380 मैं इस बिंदु पर लगता है, या कम से कम हमारे PHP सेटिंग्स, 345 00:30:32,380 --> 00:30:37,870 अगर आप एक सरणी में सूचकांक के लिए कोशिश करते हैं और कि कुंजी मौजूद नहीं है, यह विफल हो जाएगा. 346 00:30:37,870 --> 00:30:40,150 मुझे नहीं लगता कि यह सिर्फ तुम्हें चेतावनी देगा. 347 00:30:40,150 --> 00:30:44,560 या कम से कम आप इसे इतना तय है कि यह सिर्फ तुम्हें आगाह नहीं नहीं कर सकते हैं, यह सिर्फ सीधे ऊपर में विफल रहता है. 348 00:30:44,560 --> 00:30:49,290 >> जिस तरह से आप के लिए अगर वहाँ वास्तव में एक ऐसा सूचकांक है की जाँच करें isset है. 349 00:30:49,290 --> 00:30:54,690 तो isset ($ सरणी ['नमस्ते विश्व']) झूठी वापस आ जाएगी. 350 00:30:54,690 --> 00:30:59,160 isset (सरणी $ ['ख']) सही वापस आ जाएगी. 351 00:31:06,830 --> 00:31:09,880 आप इन syntaxes मिश्रण कर सकते हैं. 352 00:31:15,060 --> 00:31:22,440 हम इसे बाहर का परीक्षण कर सकते हैं - मुझे पूरा यकीन है कि क्या इस सरणी खत्म होता जा रहा है हूँ. 353 00:31:43,290 --> 00:31:45,700 ओह, मैं PHPWord की जरूरत है. 354 00:31:53,960 --> 00:32:00,260 इस वाक्य रचना मिश्रण है जहाँ आप निर्दिष्ट कुंजी क्या है 355 00:32:00,260 --> 00:32:03,330 और आप निर्दिष्ट नहीं कुंजी क्या है. 356 00:32:03,330 --> 00:32:05,520 तो 3 सही यहाँ एक मूल्य है. 357 00:32:05,520 --> 00:32:08,080 तुम नहीं स्पष्ट रूप से कहा है कि इसकी कुंजी क्या होने जा रहा है. 358 00:32:08,080 --> 00:32:11,670 तुम्हें क्या लगता है अपने कुंजी को होने जा रहा है? 359 00:32:11,670 --> 00:32:21,410 0 [छात्र]. >> मैं 0 लग रहा है क्योंकि यह केवल 1 एक हम निर्दिष्ट नहीं किया है. 360 00:32:21,410 --> 00:32:23,500 हम वास्तव में इन मामलों में से एक जोड़े को कर सकते हैं. 361 00:32:23,500 --> 00:32:28,030 तो print_r पुनरावर्ती मुद्रित करने के लिए है. यह पूरे सरणी मुद्रित होगा. 362 00:32:28,030 --> 00:32:32,700 यह सरणी के subarrays मुद्रित अगर वहाँ किसी भी थे. 363 00:32:32,700 --> 00:32:36,630 Print_r ($ सरणी); php.test.php. 364 00:32:36,630 --> 00:32:38,810 ऐसा लगता है जैसे यह 0 दे दिया लगती है. 365 00:32:38,810 --> 00:32:43,530 वास्तव में मन में रखने के लिए कुछ है, लेकिन हम यह करने के लिए वापस एक दूसरे में मिल जाएगा. 366 00:32:43,530 --> 00:32:45,850 लेकिन क्या अगर मैं यह सूचकांक 1 होता है? 367 00:32:45,850 --> 00:32:51,170 PHP स्ट्रिंग सूचकांक और पूर्णांक इंडेक्स के बीच अंतर नहीं है, 368 00:32:51,170 --> 00:33:00,280 तो इस बिंदु पर मैं सिर्फ एक 1 सूचकांक परिभाषित किया गया है और मैं दोनों $ सरणी [1] और $ सरणी ['1 '] कर सकते हैं 369 00:33:00,280 --> 00:33:06,250 और यह एक ही सूचकांक और एक ही कुंजी होगा. 370 00:33:06,250 --> 00:33:13,000 तो अब तुम क्या लगता है कि 3 से होने जा रहा है? >> 2 [छात्र]. >> [Bowden] मैं 2 लग रहा है. 371 00:33:16,000 --> 00:33:18,690 हाँ. यह 2 है. 372 00:33:18,690 --> 00:33:24,790 क्या होगा अगर हम इस 10 है, यह 4 है? तुम्हें क्या लगता है 3 के सूचकांक के लिए होने जा रहा है? 373 00:33:27,360 --> 00:33:29,110 मैं 11 के बारे में सोच रहा हूँ. 374 00:33:29,110 --> 00:33:33,060 PHP क्या करता है के रूप में मेरा अनुमान है और मुझे लगता है कि मैं पहले यह देखा है - 375 00:33:33,060 --> 00:33:39,760 है, यह सिर्फ उच्चतम संख्यात्मक सूचकांक यह अब तक इस्तेमाल किया है क्या है का ट्रैक रखता है. 376 00:33:39,760 --> 00:33:44,230 यह 3 से एक स्ट्रिंग सूचकांक प्रदान नहीं जा रहा है. यह हमेशा एक संख्यात्मक सूचकांक होगा. 377 00:33:44,230 --> 00:33:47,690 तो यह उच्चतम एक यह इतनी दूर सौंपा है, जो 10 होना होता है का ट्रैक रखता है, 378 00:33:47,690 --> 00:33:52,540 और यह करने के लिए 3 से 11 देने के लिए जा रहा है. 379 00:33:52,540 --> 00:34:02,110 क्या मैं पहले कहा, जिस तरह से यह इस सरणी मुद्रण है नोटिस. 380 00:34:02,110 --> 00:34:06,850 यह 10 प्रमुख प्रिंट, 4 कुंजी, 11 कुंजी, कुंजी घ. 381 00:34:06,850 --> 00:34:09,790 या फिर भी करते हैं - 382 00:34:15,760 --> 00:34:22,489 मुझे लगता है कि मैं एक 0 नहीं डाल दिया है, लेकिन यह मुद्रण 1, 2, 3, 4. 383 00:34:22,489 --> 00:34:29,330 क्या होगा यदि मैं यहाँ स्विच? या वास्तव में इन 2 स्विच. 384 00:34:29,330 --> 00:34:31,940 अब यह 2, 1, 3, 4 प्रिंट. 385 00:34:31,940 --> 00:34:41,270 PHP arrays सिर्फ अपने नियमित हैश तालिका की तरह नहीं हैं. 386 00:34:41,270 --> 00:34:45,570 यह पूरी तरह से उचित है हैश समय के 99% तालिकाओं के रूप में उनमें से लगता है. 387 00:34:45,570 --> 00:34:53,790 अपने हैश तालिका में जिस क्रम में बातें डाला गया का कोई मतलब नहीं है. 388 00:34:53,790 --> 00:34:56,639 इसलिए जैसे ही आप इसे अपने हैश तालिका में सम्मिलित करने के लिए, 389 00:34:56,639 --> 00:35:00,590 लगता है वहाँ कोई लिंक सूची है और आप एक लिंक सूची के भीतर न्यायाधीश सकता 390 00:35:00,590 --> 00:35:03,980 जो पहले डाला गया था. 391 00:35:03,980 --> 00:35:10,060 लेकिन यहाँ हम 2 1 डाला और यह जानता है कि जब वह बाहर इस सरणी मुद्रण है कि 2 पहले आता है. 392 00:35:10,060 --> 00:35:13,090 यह यह सिर्फ किसी भी क्रम में बाहर मुद्रित नहीं करता. 393 00:35:13,090 --> 00:35:17,550 तकनीकी डेटा संरचना का उपयोग कर रहा है कि यह एक आदेश नक्शा है, 394 00:35:17,550 --> 00:35:24,690 तो यह मान के लिए चाबी नक्शे और यह क्रम में उन कुंजी डाला गया याद है. 395 00:35:24,690 --> 00:35:31,600 असल में यह कुछ जटिलताओं जहां यह वास्तव में परेशान है - 396 00:35:31,600 --> 00:35:34,510 मान लीजिए कि आप एक सरणी 0, 1, 2, 3, 4, 5 397 00:35:34,510 --> 00:35:37,700 और तुम बाहर सूचकांक में 2 ले जाना चाहता हूँ. 398 00:35:37,700 --> 00:35:47,750 इसे करने का एक तरीका है, चलो देखते हैं कि क्या की तरह दिखता है. 399 00:35:47,750 --> 00:35:50,410 0, 2, 1, 3, 4. 400 00:35:50,410 --> 00:35:54,880 अनसेट करने के लिये दोनों चर और सरणी सूचकांक unset होता है. 401 00:35:54,880 --> 00:35:58,630 तो unset ($ सरणी [2]); 402 00:35:58,630 --> 00:36:03,430 अब यह क्या की तरह लग रहा है? 2 बस गया है, तो वह पूरी तरह से ठीक है. 403 00:36:03,430 --> 00:36:11,670 अधिक कष्टप्रद है अगर आप चीजों को वास्तव में एक सरणी की तरह होना चाहता हूँ. 404 00:36:11,670 --> 00:36:14,910 मैं यादृच्छिक संख्या डाल देता हूँ. 405 00:36:14,910 --> 00:36:20,400 अब मेरे इंडेक्स नोटिस. 406 00:36:20,400 --> 00:36:26,860 1 - मैं यह सिर्फ एक सी सरणी की तरह होने के लिए जहां यह 0 से लंबाई करने के लिए चला जाता है चाहता हूँ 407 00:36:26,860 --> 00:36:30,810 और मैं इस पर इस तरह के रूप में पुनरावृति कर सकते हैं. 408 00:36:30,810 --> 00:36:38,520 लेकिन जैसे ही मैं 2 सूचकांक, सूचकांक में 3 क्या था unset सूचकांक में 2 नहीं हो जाता. 409 00:36:38,520 --> 00:36:44,790 इसके बजाय यह सिर्फ इतना है कि सूचकांक को निकालता है और अब आप 0, 1, 3, 4 जाना. 410 00:36:44,790 --> 00:36:48,740 यह पूरी तरह से उचित है. 411 00:36:48,740 --> 00:36:53,950 यह सिर्फ कष्टप्रद है और आप सरणी ब्याह की तरह बातें करने के लिए है. हाँ. 412 00:36:53,950 --> 00:36:57,200 >> [छात्र] क्या होगा अगर तुम एक पाश के लिए क्या होगा 413 00:36:57,200 --> 00:36:59,630 और आप सभी तत्वों पर जाना चाहता था? 414 00:36:59,630 --> 00:37:02,290 जब यह 2 हिट, यह कभी उपज चाहते हैं? 415 00:37:02,290 --> 00:37:10,150 एक सरणी पर iterating. वहाँ 2 तरीके आप यह कर सकते हैं. 416 00:37:10,150 --> 00:37:12,770 आप एक पाश के लिए नियमित रूप से उपयोग कर सकते हैं. 417 00:37:12,770 --> 00:37:22,000 यह PHP के दूसरे कठिनता है. 418 00:37:22,000 --> 00:37:27,420 अधिकांश भाषाओं मैं कहना चाहूँगा, लंबाई या लेन या कुछ के कुछ प्रकार है 419 00:37:27,420 --> 00:37:30,470 एक सरणी की लंबाई का संकेत है. 420 00:37:30,470 --> 00:37:32,820 PHP में यह गिनती है. 421 00:37:32,820 --> 00:37:36,160 ($ सरणी) गिनती; $ मैं + +) 422 00:37:36,160 --> 00:37:42,950 चलो बस प्रिंट ($ सरणी [$ i]); 423 00:37:45,920 --> 00:37:48,820 सूचना: अनिर्धारित ऑफसेट: 2. 424 00:37:48,820 --> 00:37:51,610 यह सिर्फ विफल करने के लिए जा रहा है. 425 00:37:51,610 --> 00:38:03,020 यही कारण है कि अधिकांश भाग के लिए, आप की जरूरत कभी नहीं करने के लिए इस तरह एक सरणी पुनरावृति है. 426 00:38:03,020 --> 00:38:07,110 यह एक अतिशयोक्ति हो सकती है, लेकिन आप की जरूरत कभी नहीं करने के लिए इस तरह एक सरणी पुनरावृति 427 00:38:07,110 --> 00:38:19,410 क्योंकि PHP जहां अपने foreach foreach ($ सरणी के रूप में $ मद) वाक्यविन्यास प्रदान करता है. 428 00:38:19,410 --> 00:38:31,830 अब हम ($ मद) प्रिंट अगर - we'll यह एक दूसरे में चर्चा है कि पूरी तरह से ठीक काम करता है. 429 00:38:31,830 --> 00:38:38,960 जिस तरह से काम कर रहा है कि foreach पहले तर्क सरणी है कि आप पर iterating कर रहे हैं है. 430 00:38:38,960 --> 00:38:44,060 और दूसरा तर्क पाश के लिए में से प्रत्येक के पास के माध्यम से आइटम, 431 00:38:44,060 --> 00:38:52,690 यह सरणी में अगले बात पर ले जा रहा है. तो याद सरणी एक क्रम है. 432 00:38:52,690 --> 00:38:55,690 पाश के लिए के माध्यम से पहली बार, आइटम के लिए 123 होने जा रहा है 433 00:38:55,690 --> 00:38:59,540 तो यह 12 हो जाएगा तो यह 13 हो जाएगा तो यह 23 हो जाएगा तो यह 213 हो जाएगा. 434 00:38:59,540 --> 00:39:04,670 हालात वास्तव में अजीब जब आप foreach तरह कुछ करते हैं. 435 00:39:04,670 --> 00:39:07,480 चलो देखते हैं क्या होता है क्योंकि आप यह कभी नहीं करना चाहिए. 436 00:39:07,480 --> 00:39:13,320 क्या होगा अगर हम unset ($ सरणी [1]); 437 00:39:20,410 --> 00:39:26,030 यह शायद उम्मीद थी. 438 00:39:26,030 --> 00:39:30,950 आप इस सरणी पर iterating कर रहे हैं, और हर बार जब आप पहली सूचकांक unsetting रहे हैं. 439 00:39:30,950 --> 00:39:39,720 तो इंडेक्स 0 के लिए, पहली बात, आइटम मान 0 पर लेता है, तो यह 123 होने जा रहा है. 440 00:39:39,720 --> 00:39:44,630 लेकिन अंदर पाश के लिए हम लिये अनसेट सूचकांक 1, तो इसका मतलब 12 से चला गया है. 441 00:39:44,630 --> 00:39:57,480 तो मुद्रित करें. PHP_EOL. 442 00:39:57,480 --> 00:40:03,580 PHP_EOL सिर्फ newline है, लेकिन यह तकनीकी रूप से अधिक पोर्टेबल है 443 00:40:03,580 --> 00:40:08,890 के बाद से विंडोज में newlines मैक और यूनिक्स पर newlines से अलग है. 444 00:40:08,890 --> 00:40:18,040 विंडोज पर newline \ r \ n है, जबकि हर जगह और यह सिर्फ \ n के लिए जाता है. 445 00:40:18,040 --> 00:40:25,150 PHP_EOL इतना है कि यह का उपयोग करता है, जो कुछ भी आपके सिस्टम की newline है कॉन्फ़िगर किया गया है. 446 00:40:25,150 --> 00:40:29,310 तो यह है कि प्रिंट. अंत में print_r ($ सरणी). 447 00:40:32,830 --> 00:40:37,390 मैं कोई विचार था कि उस व्यवहार होगा. 448 00:40:41,740 --> 00:40:48,960 आइटम अभी भी 12 मूल्य पर लेता है, भले ही हम 12 unset पहले हम कभी सरणी से इसे करने के लिए मिला है. 449 00:40:52,770 --> 00:40:58,840 इस पर ले मेरे शब्द नहीं है, लेकिन ऐसा लगता है जैसे foreach सरणी की एक प्रतिलिपि बनाता है 450 00:40:58,840 --> 00:41:02,160 और तब आइटम है कि नकल के सभी मूल्यों पर लेता है. 451 00:41:02,160 --> 00:41:07,760 तो भी अगर आप अंदर पाश के लिए सरणी को संशोधित करने के लिए, 452 00:41:07,760 --> 00:41:17,240 यह परवाह नहीं करेंगे. आइटम मूल मूल्यों पर ले जाएगा. 453 00:41:17,240 --> 00:41:19,240 चलो यह unsetting करने की कोशिश. 454 00:41:19,240 --> 00:41:24,460 क्या हुआ अगर यह $ [1] सरणी = "नमस्ते"; 455 00:41:24,460 --> 00:41:31,770 हालांकि हम सरणी में "नमस्ते" डाल, आइटम है कि मूल्य पर कभी नहीं लेता है. 456 00:41:31,770 --> 00:41:37,430 वहाँ एक और loops foreach वाक्यविन्यास है 457 00:41:37,430 --> 00:41:45,900 जहाँ आप एक तीर से 2 अलग चर डाल दिया. 458 00:41:45,900 --> 00:41:49,680 यह पहला चर कि मूल्य का महत्वपूर्ण होने जा रहा है, 459 00:41:49,680 --> 00:41:53,050 और इस दूसरे चर के लिए एक ही सटीक मद होने जा रहा है. 460 00:41:53,050 --> 00:42:01,610 यहाँ यह शुष्क है, लेकिन अगर हम हमारे 'एक' के मूल मामले वापस लिए जाने -> 1, 461 00:42:01,610 --> 00:42:06,090 'ख' -> 1, 462 00:42:06,090 --> 00:42:14,470 यहाँ अगर हम सिर्फ आइटम के रूप में प्रत्येक सरणी के लिए पुनरावृति आइटम के लिए 1 हर बार होने जा रहा है. 463 00:42:14,470 --> 00:42:18,170 लेकिन अगर हम भी है कि आइटम के साथ जुड़े कुंजी जानना चाहते हैं 464 00:42:18,170 --> 00:42:25,230 > $ आइटम - तो हम के रूप में $ कुंजी है. 465 00:42:25,230 --> 00:42:31,980 . ':' तो अब हम प्रिंट (कुंजी डॉलर कर सकते हैं. 466 00:42:31,980 --> 00:42:39,380 अब यह खत्म पुनरावृति और प्रत्येक कुंजी और इसके जुड़े मूल्य मुद्रित. 467 00:42:39,380 --> 00:42:47,030 >> Foreach loops में क्या कर सकते हैं एक अतिरिक्त बात यह है कि आप इस वाक्यविन्यास देख सकते हैं. 468 00:42:47,030 --> 00:42:54,770 चर नाम से पहले एम्परसेंड्स कैसे PHP संदर्भ करता हैं. 469 00:42:54,770 --> 00:43:00,460 कहाँ संदर्भ बहुत संकेत करने के लिए समान हैं, 470 00:43:00,460 --> 00:43:04,820 आप संकेत नहीं है, तो आप सीधे स्मृति के साथ कभी समझौता. 471 00:43:04,820 --> 00:43:12,620 लेकिन आप संदर्भ जहां 1 चर अन्य चर के रूप में एक ही बात करने के लिए संदर्भित करता है. 472 00:43:12,620 --> 00:43:21,450 यहाँ के अंदर चलो $ आइटम करना. 10 1, वापस जाओ. 473 00:43:21,450 --> 00:43:28,800 चलो $ आइटम + +, यह अभी भी PHP में मौजूद है. आप अभी भी + + कर सकते हैं. 474 00:43:28,800 --> 00:43:38,260 php.test.php. मैं इसे मुद्रित है. print_r ($ सरणी); 475 00:43:38,260 --> 00:43:42,730 हम 11 2, मुद्रित करें. 476 00:43:42,730 --> 00:43:49,560 अगर मैं सिर्फ foreach (सरणी $ $ मद) के रूप में किया था तब आइटम मान 1 हो जाएगा 477 00:43:49,560 --> 00:43:54,190 पाश के माध्यम से पहली बार. यह 1 2 वेतन वृद्धि और फिर हम कर रहे हैं. 478 00:43:54,190 --> 00:43:57,260 तो फिर यह लूप के 2 पास के माध्यम से जाने के लिए और है कि आइटम है 10 है. 479 00:43:57,260 --> 00:44:01,570 यह वेतन वृद्धि 11 आइटम, और वह तो बस दूर फेंक दिया है. 480 00:44:01,570 --> 00:44:06,670 फिर हम) print_r ($ सरणी, और देखते हैं कि यह सिर्फ 1, 10. 481 00:44:06,670 --> 00:44:09,070 तो वेतन वृद्धि हम किया था खो गया था. 482 00:44:09,070 --> 00:44:13,410 लेकिन foreach ($ सरणी के रूप में और $ आइटम) 483 00:44:13,410 --> 00:44:21,910 अब इस मद के इस अधिकार के रूप में यहाँ एक ही आइटम है. यह एक ही बात है. 484 00:44:21,910 --> 00:44:26,820 तो आइटम $ + + 0 सरणी को संशोधित कर रहा है. 485 00:44:29,330 --> 00:44:41,850 असल में, तुम भी $ कश्मीर कर सकते हैं - $> आइटम और आप कर सकते हैं $ सरणी [k $] + +; 486 00:44:41,850 --> 00:44:48,650 >> तो है कि कर का एक और तरीका है, हम आइटम को संशोधित करने के लिए स्वतंत्र हैं, 487 00:44:48,650 --> 00:44:54,070 लेकिन कहा कि हमारी मूल सरणी संशोधित नहीं होगा. 488 00:44:54,070 --> 00:44:59,720 लेकिन अगर हम कश्मीर, जो हमारे मुख्य है का उपयोग करें, तो हमारे सरणी में सिर्फ सूचकांक कि कुंजी का उपयोग कर हम कर सकते हैं 489 00:44:59,720 --> 00:45:01,530 और कहा कि वेतन वृद्धि. 490 00:45:01,530 --> 00:45:05,410 यह अधिक सीधे हमारे मूल सरणी संशोधित. 491 00:45:05,410 --> 00:45:10,690 आप यह भी है कि अगर किसी कारण से आप को संशोधित करने की क्षमता चाहता कर सकते हैं - 492 00:45:10,690 --> 00:45:13,510 दरअसल, यह पूरी तरह से उचित है. 493 00:45:13,510 --> 00:45:16,020 आप करने के लिए $ सरणी लिखने नहीं करना चाहता था [k $] + +, 494 00:45:16,020 --> 00:45:27,890 तुम सिर्फ आइटम $ लिखने + + लेकिन आप अभी भी कहना चाहता था अगर ($ === कश्मीर 'एक') 495 00:45:27,890 --> 00:45:30,620 तब आइटम वेतन वृद्धि और फिर हमारे सरणी मुद्रित. 496 00:45:30,620 --> 00:45:36,290 तो अब हम क्या print_r करने की उम्मीद करते हैं? क्या मूल्यों मुद्रित किया जाना चाहिए? 497 00:45:36,290 --> 00:45:43,770 [छात्र] 2 और 10. >> Bowden [] केवल अगर महत्वपूर्ण था 'एक' हम वास्तव में नहीं है कि मुद्रित करें. 498 00:45:51,940 --> 00:45:55,670 >> आप शायद बहुत कम है, अगर कभी, PHP में कार्यों को परिभाषित करने की आवश्यकता होगी, 499 00:45:55,670 --> 00:46:03,370 लेकिन आप कुछ इसी तरह देखने के लिए जहां आप समारोह जो कुछ भी तरह एक समारोह को परिभाषित कर सकता है. 500 00:46:03,370 --> 00:46:09,900 आम तौर पर आप ($ foo, $ बार) कहते हैं और फिर इसे परिभाषित करने के लिए जो कुछ भी हो. 501 00:46:09,900 --> 00:46:17,580 लेकिन अगर मैं इस करते हैं, तो इसका मतलब है कि जो कुछ भी जो कुछ भी कहता है, 502 00:46:17,580 --> 00:46:25,110 जो भी baz कॉल तो, पहले तर्क baz करने के लिए पारित बदला जा सकता है. 503 00:46:25,110 --> 00:46:38,100 चलो $ foo + +; 504 00:46:38,100 --> 00:46:48,020 और अंदर यहाँ baz ($ मद) करते हैं; 505 00:46:48,020 --> 00:46:52,250 अब हम एक समारोह बुला रहे हैं. 506 00:46:52,250 --> 00:46:56,780 तर्क संदर्भ द्वारा लिया जाता है, जिसका मतलब है कि अगर हम इसे संशोधित 507 00:46:56,780 --> 00:47:00,390 हम बात यह है कि अंदर पारित किया गया था संशोधित कर रहे हैं 508 00:47:00,390 --> 00:47:04,420 छपाई और हम उम्मीद करते हैं - जब तक मैं वाक्यविन्यास गड़बड़ - हम 11 2, मिल गया है, 509 00:47:04,420 --> 00:47:06,300 तो यह वास्तव में incremented था. 510 00:47:06,300 --> 00:47:08,790 नोटिस हम 2 स्थानों में संदर्भ की आवश्यकता है. 511 00:47:08,790 --> 00:47:13,050 क्या होगा यदि मैं यह किया है? इसका क्या मतलब है? 512 00:47:13,050 --> 00:47:15,810 [छात्र] यह बदल जाएगा. >> हाँ. 513 00:47:15,810 --> 00:47:18,290 आइटम सरणी में मूल्य की एक प्रति है. 514 00:47:18,290 --> 00:47:26,670 तो आइटम 2 से बदलने के लिए, लेकिन सरणी ['एक'] अभी भी 1 हो जाएगा. 515 00:47:26,670 --> 00:47:32,560 या फिर क्या हुआ अगर मैं यह कर? 516 00:47:32,560 --> 00:47:39,260 अब आइटम baz एक प्रति के रूप में भेजा जाता है. 517 00:47:39,260 --> 00:47:46,330 तो तर्क की प्रतिलिपि 2 incremented होगा, 518 00:47:46,330 --> 00:47:49,240 लेकिन खुद आइटम 2 से incremented कभी नहीं किया गया था. 519 00:47:49,240 --> 00:47:52,880 और आइटम सरणी ब्रैकेट जो भी रूप में एक ही बात है, 520 00:47:52,880 --> 00:47:55,380 इसलिए कि सरणी incremented कभी नहीं किया गया था. 521 00:47:55,380 --> 00:47:57,960 तो उन दोनों स्थानों की जरूरत है. 522 00:47:57,960 --> 00:48:03,830 >> PHP आम तौर पर होता है इस बारे में बहुत स्मार्ट है. 523 00:48:03,830 --> 00:48:06,570 आप सोच सकते हैं कि मैं संदर्भ द्वारा पारित करना चाहते हैं - 524 00:48:06,570 --> 00:48:09,560 यह वास्तव में एक psets पर एक सवाल था. 525 00:48:09,560 --> 00:48:14,480 यह एक questions.txt बात जहां यह कहा गया था, 526 00:48:14,480 --> 00:48:19,280 आप संदर्भ द्वारा इस struct पास क्यों चाहते हो? 527 00:48:19,280 --> 00:48:21,250 उस का जवाब क्या था? 528 00:48:21,250 --> 00:48:25,100 [छात्र] तो आप कुछ बड़ा करने की नकल नहीं है. >> हाँ. 529 00:48:25,100 --> 00:48:32,920 Struct मनमाने ढंग से बड़ा हो सकता है और जब आप एक तर्क के रूप में struct से गुजारें 530 00:48:32,920 --> 00:48:36,800 यह कि पूरे struct को कॉपी करने के लिए यह समारोह को पारित करने की जरूरत है, 531 00:48:36,800 --> 00:48:40,410 जबकि अगर आप सिर्फ संदर्भ द्वारा struct पारित 532 00:48:40,410 --> 00:48:46,530 तो यह सिर्फ तर्क के रूप में कार्य करने के लिए एक 4 - बाइट पते की नकल की जरूरत है. 533 00:48:48,520 --> 00:48:52,320 PHP एक छोटा सा है कि तुलना में होशियार है. 534 00:48:52,320 --> 00:49:00,650 अगर मैं कुछ समारोह है और मैं इसे करने के लिए 1,000 चीजों में से एक एक सरणी के पास, 535 00:49:00,650 --> 00:49:03,990 मतलब है कि यह करने के लिए उन चीजों में से 1,000 को कॉपी किया जा रहा है 536 00:49:03,990 --> 00:49:10,450 यह समारोह में पारित? यह कि तुरंत ऐसा नहीं है. 537 00:49:10,450 --> 00:49:15,940 यदि इस समारोह के अंदर यह foo वास्तव में कभी नहीं संशोधित करता है, 538 00:49:15,940 --> 00:49:22,660 तो ($ foo === 'हैलो') अगर वापसी सच; 539 00:49:22,660 --> 00:49:26,460 सूचना हम इस समारोह का तर्क के अंदर वास्तव में कभी नहीं संशोधित, 540 00:49:26,460 --> 00:49:30,010 जिसका मतलब है कि जो कुछ भी पारित किया गया था के रूप में foo की जरूरत को कॉपी किया जा कभी नहीं 541 00:49:30,010 --> 00:49:32,100 क्योंकि यह संशोधित नहीं है. 542 00:49:32,100 --> 00:49:39,240 तो जिस तरह से PHP तर्क काम करता है हमेशा संदर्भ द्वारा पारित कर रहे हैं 543 00:49:39,240 --> 00:49:42,170 जब तक आप वास्तव में इसे संशोधित करने की कोशिश. 544 00:49:42,170 --> 00:49:51,160 अब अगर मैं $ foo + + कहते हैं, अब यह मूल foo की एक प्रतिलिपि बनाने और प्रतिलिपि संशोधित. 545 00:49:51,160 --> 00:49:53,090 यह कुछ समय बचाता है. 546 00:49:53,090 --> 00:49:58,210 यदि आप इस विशाल सरणी कभी नहीं छू रहे हैं, तो आप यह कभी नहीं वास्तव में संशोधित करने के लिए, 547 00:49:58,210 --> 00:50:02,360 यह प्रतिलिपि बनाने की जरूरत नहीं है, 548 00:50:02,360 --> 00:50:06,640 जबकि अगर हम सिर्फ इस एम्परसेंड है इसका मतलब है कि यह भी नकल नहीं करता है डाल 549 00:50:06,640 --> 00:50:08,640 यहां तक ​​कि अगर आप इसे संशोधित नहीं है. 550 00:50:08,640 --> 00:50:10,680 यह व्यवहार कॉपी पर लिखने को कहा जाता है. 551 00:50:10,680 --> 00:50:17,380 आप इसे अन्य स्थानों में देखने के लिए, खासकर यदि आप एक ऑपरेटिंग सिस्टम कोर्स ले जाऊँगा. 552 00:50:17,380 --> 00:50:23,880 कॉपी पर लिखने के एक बहुत सामान्य परिपाटी है जहाँ आप कुछ की एक प्रतिलिपि बनाने की जरूरत नहीं है 553 00:50:23,880 --> 00:50:26,650 जब तक यह वास्तव में बदल रहा है. हाँ. 554 00:50:26,650 --> 00:50:29,520 [छात्र] क्या होगा अगर आप परीक्षण के अंदर वेतन वृद्धि की थी, 555 00:50:29,520 --> 00:50:33,700 तो 1000 से बाहर केवल 1 तत्व परिवर्तित करने की आवश्यकता होगी? 556 00:50:33,700 --> 00:50:38,770 मैं ठीक से नहीं कह सकता. 557 00:50:38,770 --> 00:50:51,250 मुझे लगता है कि यह पूरी बात की नकल होगा, लेकिन यह संभव है कि काफी चालाक है - 558 00:50:51,250 --> 00:51:00,020 असल में, मैं सोच रहा हूँ क्या है कल्पना हम एक सरणी है कि इस तरह दिखता था: ऐरे 2 $ = [ 559 00:51:00,020 --> 00:51:11,000 तो सूचकांक 'एक' [1 2 3 4], और सूचकांक 'ख' की एक सरणी है जो कुछ भी की एक सरणी है. 560 00:51:11,000 --> 00:51:15,380 मैं उन सभी के बीच अल्पविराम की जरूरत है. कल्पना कीजिए कि वहाँ अल्पविराम हैं. 561 00:51:15,380 --> 00:51:21,210 फिर 'ग' मूल्य 3. 562 00:51:24,210 --> 00:51:26,290 ठीक है. 563 00:51:26,290 --> 00:51:33,440 अब हम कहते हैं हम baz डॉलर ($ ऐरे 2); 564 00:51:33,440 --> 00:51:36,540 जहां baz इस संदर्भ द्वारा नहीं ले करता है. 565 00:51:43,510 --> 00:51:47,370 तो $ foo ['ग'] + +; 566 00:51:47,370 --> 00:51:52,340 यह एक ऐसा उदाहरण है जहां हम एक तर्क के रूप में ऐरे 2 गुजर रहे हैं 567 00:51:52,340 --> 00:51:57,010 और फिर यह incrementing सरणी के एक विशिष्ट सूचकांक संशोधित है. 568 00:51:57,010 --> 00:52:01,090 मैं ईमानदारी से कोई विचार PHP क्या करने जा रहा है. 569 00:52:01,090 --> 00:52:07,200 यह आसानी से पूरी बात की एक कॉपी कर सकते हैं, लेकिन अगर यह स्मार्ट है, 570 00:52:07,200 --> 00:52:15,030 यह इन चाबियों की एक प्रति जहां यह अपनी विशिष्ट मूल्य होगा कर देगा 571 00:52:15,030 --> 00:52:20,620 लेकिन यह अभी भी एक ही 1,2,3,4 सरणी के लिए बात कर सकते हैं 572 00:52:20,620 --> 00:52:22,320 और यह अभी भी एक ही सरणी के लिए बात कर सकते हैं. 573 00:52:22,320 --> 00:52:24,170 मैं यह iPad. 574 00:52:28,900 --> 00:52:45,950 हम इस सरणी में जहां इस आदमी अंक 3 के पास इस आदमी अंक [1,2,3,4], 575 00:52:45,950 --> 00:52:51,350 इस आदमी अंक [34 ...] 576 00:52:51,350 --> 00:52:58,590 अब है कि हम यह baz में गुजर रहे हैं, हम इस संशोधित कर रहे हैं. 577 00:52:58,590 --> 00:53:03,550 यदि PHP चालाक है, यह सिर्फ कर सकते हैं - 578 00:53:11,850 --> 00:53:18,230 हम अभी भी कुछ स्मृति की नकल करने के लिए किया था, लेकिन अगर कोई इन विशाल नेस्टेड subarrays थे 579 00:53:18,230 --> 00:53:21,560 हम उन लोगों की नकल की जरूरत थी. 580 00:53:21,560 --> 00:53:27,530 मैं अगर है कि यह क्या करता है पता नहीं है, लेकिन मैं यह कर रही है कि कल्पना कर सकते हैं. 581 00:53:29,050 --> 00:53:36,690 यह भी PHP पर एक सी का बहुत बड़ा फायदा है. 582 00:53:36,690 --> 00:53:40,320 >> PHP जीवन इतना चीजों की एक बहुत कुछ करने के लिए बहुत आसान बना देता है, 583 00:53:40,320 --> 00:53:45,060 लेकिन आप की तरह बिल्कुल पता नहीं है कि यह कैसे अच्छी तरह से प्रदर्शन करेंगे 584 00:53:45,060 --> 00:53:52,530 क्योंकि मैं हुड के नीचे कोई विचार है जब यह इन चीजों की प्रतियां बना रहा है, 585 00:53:52,530 --> 00:53:55,170 ओह, यह एक लगातार समय की नकल होने जा रहा है, 586 00:53:55,170 --> 00:54:01,140 यह सिर्फ 1 सूचक को बदलने जा रहा है, यह एक हास्यास्पद मुश्किल रैखिक प्रतिलिपि होने जा रहा है? 587 00:54:01,140 --> 00:54:03,000 क्या हुआ अगर यह स्थान नहीं मिल सकता है? 588 00:54:03,000 --> 00:54:06,760 क्या यह तो कचरा संग्रह चलाने के लिए कुछ और अधिक स्थान प्राप्त करने की आवश्यकता है? 589 00:54:06,760 --> 00:54:11,210 और कचरा संग्रहण लंबी मनमाने ढंग से ले जा सकते हैं. 590 00:54:11,210 --> 00:54:13,600 सी में आप इन चीजों के बारे में चिंता करने की ज़रूरत नहीं है. 591 00:54:13,600 --> 00:54:19,780 हर एक लाइन तुम तुम लिखने के लिए कर सकते हैं कि यह कैसे प्रदर्शन करने के लिए जा रहा है के बारे में बहुत ज्यादा कारण. 592 00:54:26,800 --> 00:54:29,150 >> चलो इन पर वापस देखो. 593 00:54:35,400 --> 00:54:37,520 कितना अच्छा है कि आप हैश कार्यों के साथ सौदा नहीं है, 594 00:54:37,520 --> 00:54:39,010 जुडी हुई सूचियों, या ऐसा कुछ है? 595 00:54:39,010 --> 00:54:41,980 हैश तालिका के साथ काम करने के बाद से अब इतना आसान है, यहां पर काम करने के लिए एक मजेदार पहेली है. 596 00:54:41,980 --> 00:54:45,920 एक फ़ाइल कहा जाता है और यह unique.php खोलें एक PHP प्रोग्राम लिखने 597 00:54:45,920 --> 00:54:48,330 (भी एक "स्क्रिप्ट" के रूप में जाना जाता है). 598 00:54:48,330 --> 00:54:55,700 हम उन्हें लिपियों कॉल करते हैं अगर वे छोटी चीजें हैं जो आप कमांड लाइन पर चलाने रहे हैं. 599 00:54:55,700 --> 00:55:02,950 असल में, किसी भी भाषा है कि आप संकलन नहीं है लेकिन आप निष्पादन योग्य चलाने जा रहे हैं 600 00:55:02,950 --> 00:55:05,920 कमांड लाइन पर, आपको लगता है कि निष्पादन योग्य स्क्रिप्ट कॉल कर सकते हैं. 601 00:55:05,920 --> 00:55:08,510 मैं बस के रूप में अच्छी तरह से एक सी प्रोग्राम है कि इस करता है लिख सकता है, 602 00:55:08,510 --> 00:55:12,300 लेकिन मैं इसे एक स्क्रिप्ट नहीं कॉल के बाद मैं पहली बार यह संकलन और तो द्विआधारी चलाने. 603 00:55:12,300 --> 00:55:15,480 लेकिन इस PHP कार्यक्रम हम एक स्क्रिप्ट कॉल करने के लिए जा रहे हैं. 604 00:55:15,480 --> 00:55:23,830 या, अगर हम यह पायथन या पर्ल या Node.js या उन चीजों में से किसी में लिखा है 605 00:55:23,830 --> 00:55:26,500 हम उन्हें सभी लिपियों फोन क्योंकि तुम उन्हें कमांड लाइन पर चलने देना चाहते हैं 606 00:55:26,500 --> 00:55:30,040 लेकिन हम उन्हें नहीं संकलन है. 607 00:55:30,860 --> 00:55:33,400 हम यह बहुत जल्दी कर सकता है. 608 00:55:36,960 --> 00:55:41,480 हम argv का उपयोग करने के लिए नहीं जा रहे हैं. है इस के माध्यम से झटका. 609 00:55:41,480 --> 00:55:45,730 यह अनूठा कॉल, एक प्रोग्राम लिखने. 610 00:55:45,730 --> 00:55:49,400 आप मान सकते हैं कि एक शब्द प्रति पंक्ति इनपुट शामिल होंगे. 611 00:55:49,400 --> 00:55:52,020 दरअसल, argv बहुत उपयोग करने के लिए तुच्छ हो जाएगा. 612 00:56:03,730 --> 00:56:06,720 unique.php. 613 00:56:08,550 --> 00:56:13,750 पहली बात सबसे पहले, हम जाँच करने के लिए अगर हम 1 कमांड लाइन तर्क पारित किया गया है चाहता हूँ. 614 00:56:13,750 --> 00:56:20,900 बस के रूप में आप argc और सी में argv उम्मीद होती है, हम अभी भी उन PHP में है. 615 00:56:20,900 --> 00:56:33,900 (Argc $ 2 ==!) तो मैं एक संदेश या कुछ भी मुद्रण के साथ सौदा नहीं होगा. 616 00:56:33,900 --> 00:56:37,340 मैं बस से बाहर निकलने के लिए, 1 की त्रुटि कोड. 617 00:56:37,340 --> 00:56:41,340 मैं भी 1 लौट सकता है. 618 00:56:41,340 --> 00:56:53,180 शायद ही कभी PHP में आप इस राज्य में हैं जहां हम पर हो - 619 00:56:53,180 --> 00:56:57,820 आम तौर पर आप एक समारोह से बुलाया एक समारोह के द्वारा कहा जाता है एक समारोह के द्वारा कहा जाता है एक समारोह में कर रहे हैं. 620 00:56:57,820 --> 00:57:02,070 और अगर कुछ गलत हो जाता है और आप बस सब कुछ पूरी तरह से बाहर निकलना चाहते हैं, 621 00:57:02,070 --> 00:57:05,680 बाहर निकलने के सिर्फ कार्यक्रम समाप्त होता है. 622 00:57:05,680 --> 00:57:08,160 यह भी सी में मौजूद है 623 00:57:08,160 --> 00:57:10,700 यदि आप एक समारोह में एक समारोह में एक समारोह में एक समारोह में कर रहे हैं 624 00:57:10,700 --> 00:57:17,540 और आप सिर्फ कार्यक्रम को मारना चाहते हैं, आप बाहर निकलें फोन और यह बस से बाहर निकल जाएगा. 625 00:57:17,540 --> 00:57:23,120 लेकिन PHP में यह और भी अधिक दुर्लभ है कि हम इस शीर्ष स्तर पर कर रहे हैं. 626 00:57:23,120 --> 00:57:26,090 आम तौर पर हम समारोह के कुछ प्रकार के अंदर कर रहे हैं, तो हम बाहर निकलें कॉल 627 00:57:26,090 --> 00:57:29,650 इतना है कि हम करने के लिए एक बात है जो तब का एहसास है वापस नहीं है वहाँ एक त्रुटि है 628 00:57:29,650 --> 00:57:32,270 इतना है कि देता है कि पहचानता अगर वहाँ एक त्रुटि थी. 629 00:57:32,270 --> 00:57:35,270 हम उस के साथ सौदा नहीं करना चाहते, तो से बाहर निकलें (1); 630 00:57:35,270 --> 00:57:38,240 वापसी (1), इस मामले में बराबर होगा. 631 00:57:38,240 --> 00:57:44,000 >> तो क्या हम खोलना चाहते हैं हम fopen के लिए करना चाहते हैं. 632 00:57:44,000 --> 00:57:46,760 बहस करने के लिए बहुत ही देखने के लिए जा रहे हैं. 633 00:57:46,760 --> 00:57:51,600 हम fopen ($ ARGV [1], और हम इसे पढ़ने के लिए खोलना चाहते हैं. 634 00:57:51,600 --> 00:57:55,720 यह एक संसाधन है जो हम करने के लिए च कॉल करने के लिए जा रहे हैं देता है. 635 00:57:55,720 --> 00:58:02,180 यह सुंदर कैसे सी यह करता है को छोड़कर हम फ़ाइल * कहने की ज़रूरत नहीं समान लग रहा है. 636 00:58:02,180 --> 00:58:06,170 इसके बजाय हम सिर्फ च $ कहते हैं. ठीक है. 637 00:58:06,170 --> 00:58:17,190 दरअसल, मुझे लगता है यह भी हमें PHP फ़ाइल बुलाया समारोह के रूप में एक संकेत देता है. PHP फ़ाइल. 638 00:58:17,190 --> 00:58:23,990 क्या ऐसा करने के लिए जा रहा है एक सरणी में एक पूरी फ़ाइल को पढ़ने के लिए है. 639 00:58:23,990 --> 00:58:29,770 तुम भी यह fopen जरूरत नहीं है. यह तुम्हारे लिए है कि क्या हो रहा है. 640 00:58:37,450 --> 00:58:43,700 तो $ लाइनों फ़ाइल = $ (argv [1]); 641 00:58:43,700 --> 00:58:49,680 अब फ़ाइल की लाइनों के सभी लाइनों में हैं. अब हम लाइनों सॉर्ट करना चाहते हैं. 642 00:58:49,680 --> 00:58:52,180 हम लाइनों को कैसे हल कर सकते हैं? 643 00:58:52,180 --> 00:58:54,920 हम लाइनों सॉर्ट. 644 00:58:54,920 --> 00:58:58,080 और अब हम उन्हें या जो कुछ भी छाप सकते हैं. 645 00:58:58,080 --> 00:59:05,580 शायद सबसे आसान तरीका है foreach ($ $ $ के रूप में लाइन लाइनों) लाइन गूंज; 646 00:59:05,580 --> 00:59:10,960 [छात्र] हम कुछ प्रकार में संदर्भित द्वारा भी नहीं लाइन पार चाहेंगे? 647 00:59:10,960 --> 00:59:28,850 यह वह जगह है जहां तरह समारोह तरह (और सरणी $) के रूप में परिभाषित किया जाएगा. 648 00:59:28,850 --> 00:59:32,650 जब आप समारोह फोन आप इसे संदर्भ से पास नहीं है. 649 00:59:32,650 --> 00:59:36,900 यह समारोह में कहा कि यह संदर्भ के रूप में लेने के रूप में परिभाषित करता है. 650 00:59:36,900 --> 00:59:40,900 यह वास्तव में ठीक है, क्या गलत हो गया था 651 00:59:40,900 --> 00:59:46,220 जब हम अपने सर्वरों के लिए सब कुछ डाल दिया जब हम 5.3 से 5.4 के लिए चला गया. 652 00:59:46,220 --> 00:59:53,800 5.4 जब तक ऊपर, यह पूरी तरह से उचित था. 653 00:59:53,800 --> 00:59:58,740 एक समारोह के लिए यह संदर्भ के रूप में लेने की उम्मीद नहीं करता है, लेकिन आप इसे संदर्भ के रूप में पारित कर सकते हैं 654 00:59:58,740 --> 01:00:02,860 यदि ऐसा है तो समारोह में इसे संशोधित करने के लिए होता है, यह अभी भी संशोधित किया गया है. 655 01:00:02,860 --> 01:00:05,850 5.4 के रूप में आप यह नहीं करना चाहिए रहे हैं. 656 01:00:05,850 --> 01:00:11,740 तो अब केवल जिस तरह से आप संदर्भ द्वारा पारित है अगर समारोह को स्पष्ट रूप से यह करता है. 657 01:00:11,740 --> 01:00:19,840 यदि आप इसे संशोधित करने के लिए नहीं करना चाहते, तो आप के लिए $ प्रति = $ लाइनों और पास की नकल करने की जरूरत है. 658 01:00:19,840 --> 01:00:24,820 तो अब लाइनों और संरक्षित किया जाएगा प्रतिलिपि को बदला जाएगा. 659 01:00:27,670 --> 01:00:31,460 php.unique.php. मैं कुछ गड़बड़ हो सकता है. 660 01:00:31,460 --> 01:00:33,190 अप्रत्याशित 'तरह'. 661 01:00:38,320 --> 01:00:43,850 वहाँ के लिए कुछ है कि हमारे लिए यह करता होने जा रहा है. 662 01:00:43,850 --> 01:00:45,820 यह भी वहाँ नहीं है. 663 01:00:45,820 --> 01:00:52,140 सूचना जब आप मैन्युअल कि पहले तर्क एक सरणी होने की उम्मीद है पढ़ा 664 01:00:52,140 --> 01:00:56,490 और इसे संदर्भ से ले लिया है. 665 01:00:58,160 --> 01:01:03,540 क्यों मेरे लिए यह शिकायत है? क्योंकि मैं इस समारोह तरह अभी भी यहाँ है कि मैं नहीं चाहती है. 666 01:01:03,540 --> 01:01:09,210 ठीक है, php.unique.php. मैं इसे एक तर्क पारित नहीं किया था क्योंकि मैं एक फ़ाइल नहीं है. 667 01:01:09,210 --> 01:01:13,560 यह test.php पर php.unique.php है. 668 01:01:13,560 --> 01:01:19,080 यहाँ सब एक अच्छा क्रमबद्ध क्रम में बाहर मुद्रित test.php है. 669 01:01:19,080 --> 01:01:24,600 सूचना है कि हल क्रम एक कोड फ़ाइल के लिए तरह अजीब है 670 01:01:24,600 --> 01:01:27,460 क्योंकि हमारे रिक्त लाइनों के सभी पहले आने के लिए जा रहे हैं 671 01:01:27,460 --> 01:01:30,190 तो हमारे 1 स्तर indentations के सभी आने के लिए जा रहे हैं 672 01:01:30,190 --> 01:01:33,360 तो हमारा कोई indentations के सभी आते हैं. 673 01:01:33,360 --> 01:01:38,620 हाँ. >> [छात्र] तो स्रोत कोड के लिए यह संदर्भ द्वारा पारित नहीं किया गया था? 674 01:01:38,620 --> 01:01:42,240 यह है कि आम तौर पर मान द्वारा पारित? 675 01:01:42,240 --> 01:01:50,240 [Bowden] जब आप एक समारोह में कहते हैं, यह निर्धारित करता है कि यह संदर्भ द्वारा पारित किया गया था कभी नहीं. 676 01:01:50,240 --> 01:01:53,960 यह समारोह परिभाषा है जो यह निर्धारित करता है कि यह संदर्भ द्वारा पारित किया गया था. 677 01:01:53,960 --> 01:01:59,450 और तरह के समारोह परिभाषा में देख रहे हैं या सिर्फ यह देख, 678 01:01:59,450 --> 01:02:02,820 यह संदर्भ द्वारा तर्क लेता है. 679 01:02:02,820 --> 01:02:07,160 तो क्या आप इसे संदर्भ से लेने के लिए करना चाहते हैं की परवाह किए बिना, यह है कि यह संदर्भ द्वारा ले. 680 01:02:07,160 --> 01:02:10,200 यह जगह में सरणी modifies. 681 01:02:10,200 --> 01:02:17,400 यह सिर्फ अनुमति नहीं है. तुम यह करने के लिए अनुमति नहीं है. >> [छात्र] ओह, ठीक है. 682 01:02:17,400 --> 01:02:22,410 [Bowden] इस प्रकार के लिए संदर्भ द्वारा लाइनों ले जा रहा है और इसे संशोधित. 683 01:02:22,410 --> 01:02:26,850 और फिर, अगर आपको लगता है कि करने के लिए नहीं करना चाहता था, आप प्रकार की एक कॉपी कर सकता है. 684 01:02:26,850 --> 01:02:35,850 इस मामले में भी, कॉपी वास्तव में लाइनों की एक प्रतिलिपि नहीं है. 685 01:02:35,850 --> 01:02:40,620 यह सिर्फ एक ही बात करने के लिए कहते हैं जब तक यह पहली बार संशोधित हो जाता है, 686 01:02:40,620 --> 01:02:44,430 यह पहली बार है जहां तरह कार्य में संशोधित करने के लिए जा रहा है, 687 01:02:44,430 --> 01:02:50,940 जहां, क्योंकि यह कॉपी पर लिखते हैं, अब प्रतिलिपि की एक प्रति के लिए बनाया जा रहा है. 688 01:02:57,500 --> 01:03:04,250 आप भी कर सकते हैं. यह अन्य जगह आप एम्परसेंड देख सकते हैं. 689 01:03:04,250 --> 01:03:07,190 आप यह foreach loops में देखते हैं, तो आप यह समारोह घोषणाओं में देखते हैं, 690 01:03:07,190 --> 01:03:10,040 और आप इसे देख जब बस चर बताए. 691 01:03:10,040 --> 01:03:12,350 अब हम ऐसा करने से कुछ भी नहीं पूरा किया है 692 01:03:12,350 --> 01:03:15,600 क्योंकि कॉपी और लाइनों सचमुच एक ही बात कर रहे हैं. 693 01:03:15,600 --> 01:03:19,940 आप लाइनों का उपयोग और interchangeably कॉपी कर सकते हैं. 694 01:03:19,940 --> 01:03:25,430 आप unset (डॉलर प्रति) कर सकते हैं, और कि unset लाइनों नहीं करता है, 695 01:03:25,430 --> 01:03:29,120 आप सिर्फ एक ही बात करने के लिए अपने संदर्भ खो देते हैं. 696 01:03:29,120 --> 01:03:33,440 तो इस बिंदु के रूप में, अब लाइनें ही जिस तरह से आप लाइनों का उपयोग कर सकते हैं. 697 01:03:36,450 --> 01:03:38,770 >> प्रश्न? 698 01:03:41,000 --> 01:03:42,460 हाँ. 699 01:03:42,460 --> 01:03:45,880 [छात्र] विषय पूरी तरह से बंद है, लेकिन आप के साथ PHP बंद नहीं है - >> तुम नहीं. 700 01:03:45,880 --> 01:03:47,730 ठीक है. 701 01:03:47,730 --> 01:03:53,790 [Bowden] मैं जहाँ तक जाने के रूप में कहने के लिए यह बुरा व्यवहार है उन्हें बंद होगा. 702 01:03:53,790 --> 01:03:57,580 यह शायद एक अतिशयोक्ति है, विशेष रूप से एक स्क्रिप्ट में, 703 01:03:57,580 --> 01:04:03,740 लेकिन हम देखते हैं क्या होता है अगर मैं यह कर. 704 01:04:03,740 --> 01:04:08,890 यह कुछ भी नहीं किया था. क्या होगा यदि मैं चाहता था - [आह] 705 01:04:13,870 --> 01:04:16,960 मैं एक तर्क पारित करने की आवश्यकता है. 706 01:04:19,000 --> 01:04:22,050 गोली मारो. मैं इसे गलत कहा जाता है. 707 01:04:24,340 --> 01:04:28,310 एक तर्क के साथ तो php.unique.php. 708 01:04:28,310 --> 01:04:30,980 अब मैं यह भी जरूरत नहीं है. 709 01:04:34,520 --> 01:04:37,740 मैं यह एक वैध तर्क पारित करेंगे. 710 01:04:37,740 --> 01:04:42,050 यह मुद्रित जो कुछ भी यह मुद्रण है. 711 01:04:45,260 --> 01:04:50,080 मैं कॉपी छपाई कर रहा हूँ और कॉपी मौजूद नहीं है. लाइनों तो. 712 01:04:53,650 --> 01:04:58,270 यह सब कुछ मुद्रित, और फिर यहाँ नीचे यह सब कबाड़ नोटिस 713 01:04:58,270 --> 01:05:06,690 क्योंकि PHP में कुछ भी है कि PHP टैग के बाहर है 714 01:05:06,690 --> 01:05:09,520 बस के लिए सचमुच मुद्रित किया जा जा रहा है. 715 01:05:09,520 --> 01:05:18,050 यही क्यों HTML, यह बहुत अच्छा है कि मैं div ब्ला ब्ला ब्ला वर्ग या जो कुछ भी कर सकते हैं, 716 01:05:18,050 --> 01:05:25,140 ब्ला, ब्ला ब्ला, और फिर कुछ PHP कोड करते हैं और फिर अंत div करते हैं. 717 01:05:25,140 --> 01:05:36,460 और अब मैं इस मुद्रण शीर्ष ऊपर मेरी अच्छी div मिलता है, सब कुछ है कि PHP मुद्रित, तल पर div. 718 01:05:36,460 --> 01:05:43,510 विनाशकारी जब कुछ इस तरह होता है, जो बहुत आम है, 719 01:05:43,510 --> 01:05:47,930 फाइल के नीचे में एक आवारा newline. 720 01:05:47,930 --> 01:05:50,940 आप सोच भी नहीं होता यह है कि एक समझौते के बड़ा होगा 721 01:05:50,940 --> 01:05:58,660 जब तक आप ब्राउज़रों के साथ कि इस तथ्य पर विचार - 722 01:05:58,660 --> 01:06:03,880 >> कैसे काम पुनर्निर्देश या मूल रूप से किसी भी हेडर काम, 723 01:06:03,880 --> 01:06:07,980 जब आप एक वेबसाइट के लिए अपने कनेक्शन बनाने और इसे वापस भेजता है इन सभी हेडर और बातें 724 01:06:07,980 --> 01:06:12,020 200 प्रतिक्रिया या अनुप्रेषित या जो कुछ भी प्रतिक्रिया की तरह, 725 01:06:12,020 --> 01:06:18,230 शीर्षों को ही मान्य हैं जब तक डेटा की पहली बाइट के लिए भेजा है. 726 01:06:18,230 --> 01:06:23,140 आप कई बार के हजारों अनुप्रेषित कर सकते हैं, लेकिन के रूप में जल्द ही डेटा की पहली बाइट के रूप में भेजा है 727 01:06:23,140 --> 01:06:26,120 आप फिर से अनुप्रेषित नहीं चाहिए रहे हैं. 728 01:06:26,120 --> 01:06:31,860 >> यदि आप एक फ़ाइल के तल पर एक आवारा newline 729 01:06:31,860 --> 01:06:37,260 करते हैं और कहते हैं कि आप इस समारोह का उपयोग करें और फिर आप चाहते हैं - 730 01:06:41,580 --> 01:06:52,870 चलो का कहना है कि यह किसी अन्य फ़ाइल है कि index.php है और आप कुछ require_once 731 01:06:52,870 --> 01:06:56,920 मैं यह एक अच्छा उदाहरण के बारे में सोच सकते हैं. 732 01:06:56,920 --> 01:07:04,740 मुद्दा यह तब होता है जब नीचे इस लाइन प्रतिध्वनित हो जाता. 733 01:07:04,740 --> 01:07:08,660 आप कुछ भी करने के लिए अभी तक गूँजती है नहीं करना चाहती. 734 01:07:10,820 --> 01:07:15,700 हालांकि आप हो रही गूँजती कुछ पर इरादा नहीं था, कुछ गूँजती मिला 735 01:07:15,700 --> 01:07:17,990 और इसलिए अब आप किसी भी अधिक हेडर भेजने के लिए नहीं चाहिए रहे हैं 736 01:07:17,990 --> 01:07:20,030 और आप शिकायतों को प्राप्त करने के लिए जा रहे हैं. 737 01:07:22,170 --> 01:07:24,420 तुम सिर्फ उन समापन टैग की जरूरत नहीं है. 738 01:07:24,420 --> 01:07:27,420 यदि आप HTML के साथ कुछ करने की योजना 739 01:07:27,420 --> 01:07:30,490 और यह पूरी तरह से उचित है यहाँ नीचे div करना जो कुछ भी 740 01:07:30,490 --> 01:07:39,450 और फिर इस बिंदु पर आप या आप शामिल कर सकते हैं कर सकते हैं उन्हें नहीं. 741 01:07:39,450 --> 01:07:41,590 यह वास्तव में कोई फर्क नहीं पड़ता. 742 01:07:41,590 --> 01:07:45,450 लेकिन PHP स्क्रिप्ट में यह दुर्लभ है, इसे बंद करने. 743 01:07:45,450 --> 01:07:50,400 जब सब कुछ PHP, पूरी तरह से सब कुछ है, 744 01:07:50,400 --> 01:07:55,460 आप वास्तव में इसे बंद करने के लिए / आप इसे बंद नहीं करना चाहिए की जरूरत नहीं है. 745 01:08:02,030 --> 01:08:05,720 >> तार के साथ लेनदेन बहुत सी में की तुलना में अच्छा है 746 01:08:05,720 --> 01:08:09,470 PHP में आप एक या दो उद्धरण के साथ एक स्ट्रिंग निर्दिष्ट कर सकते हैं. 747 01:08:09,470 --> 01:08:12,820 एक उद्धरण के साथ आप "बचने" दृश्यों का उपयोग नहीं कर सकते हैं. 748 01:08:12,820 --> 01:08:17,640 लगातार से बचने के, ब्ला ब्ला ब्ला,. 749 01:08:19,920 --> 01:08:24,010 तो printf PHP में बहुत दुर्लभ है. 750 01:08:24,010 --> 01:08:32,290 मुझे लगता है कि मैं printf का उपयोग अगर मैं बात की एक तरह करना चाहता था - 5 pset में आप sprintf या जो कुछ भी किया करते थे. 751 01:08:32,290 --> 01:08:36,060 लेकिन आप 001.jpg और 002.jpg करना चाहते हैं. 752 01:08:36,060 --> 01:08:40,300 तो उस चीज़ की तरह के लिए जहाँ मैं वास्तव में प्रारूप करने के लिए पाठ मैं printf का प्रयोग करेंगे चाहते हैं. 753 01:08:40,300 --> 01:08:44,689 लेकिन अन्यथा मैं सिर्फ स्ट्रिंग संयोजन का प्रयोग करेंगे. 754 01:08:44,689 --> 01:08:47,000 मैं printf का उपयोग वास्तव में कभी नहीं. 755 01:08:49,229 --> 01:09:00,170 हम सिर्फ एक उद्धरण और दोहरे उद्धरण चिह्नों के बीच विवरण फर्क कर रहे हैं. 756 01:09:00,170 --> 01:09:07,490 सबसे बड़ा अंतर यह है कि एक उद्धरण, यह सचमुच मुद्रित किया जाएगा. 757 01:09:07,490 --> 01:09:15,390 PHP में कोई चार डेटा प्रकार है, सी के विपरीत तो, यह इस के बराबर है. 758 01:09:15,390 --> 01:09:17,970 वे दोनों तार कर रहे हैं. 759 01:09:17,970 --> 01:09:29,180 और एकल उद्धरण तार के बारे में अच्छी बात यह है कि मैं कह सकता है 'हैलो दुनिया! ब्ला ब्ला ब्ला,, 760 01:09:29,180 --> 01:09:33,340 $ $ Wooo. 761 01:09:33,340 --> 01:09:38,260 क्या होता है जब मैं प्रिंट यह है कि यह सचमुच मुद्रित करेगा. 762 01:09:38,260 --> 01:09:40,680 चलो हमारे सामान के सभी से छुटकारा पाने के. 763 01:09:40,680 --> 01:09:44,700 तो str1 $ गूंज; 764 01:09:48,569 --> 01:09:56,570 यह सचमुच उन सब बातों के मुद्रित: डॉलर के लक्षण, 765 01:09:56,570 --> 01:09:58,770 बैकस्लैश n, जो आपको लगता है कि newlines होगा - 766 01:09:58,770 --> 01:10:01,500 उन सभी बातों के यह सचमुच प्रिंट. 767 01:10:01,500 --> 01:10:05,650 केवल एक चीज आप भागने की जरूरत एकल उद्धरण 768 01:10:05,650 --> 01:10:09,470 क्योंकि अन्यथा यह लगता है कि यह एकल उद्धरण बंद है. 769 01:10:09,470 --> 01:10:15,050 डबल उद्धरण, पूरी तरह से अलग है. 770 01:10:20,300 --> 01:10:25,870 हम पहले से ही वाक्य रचना हाइलाइटिंग हमें क्या बारे में बहुत गलत जाने के लिए है पर cluing है देखते हैं. 771 01:10:25,870 --> 01:10:36,190 php.unique. अपरिभाषित चर: Wooo क्योंकि यह एक Wooo चर बुलाया के रूप में व्याख्या की है. 772 01:10:36,190 --> 01:10:42,400 डबल उद्धरण आप में चर सम्मिलित करते - 773 01:10:42,400 --> 01:10:52,730 चलो $ नाम = "रोब" कहते हैं, 774 01:10:52,730 --> 01:10:58,020 तो गूंज "हाय, मेरा नाम डॉलर है!"; 775 01:10:58,020 --> 01:11:09,260 यह एक चर के रूप में पहचानता है. 776 01:11:09,260 --> 01:11:21,210 जब मुझे लगता है कि रन - और मैं एक नई डालने जाएगा - हाय, मेरा नाम रोब है! और हैलो दुनिया! 777 01:11:21,210 --> 01:11:24,910 इसका कारण यह है ऊपर मैं Wooo के मुद्रण कभी नहीं हटाया. 778 01:11:24,910 --> 01:11:30,020 आप कर सकते हैं 1 कदम आगे है. 779 01:11:30,020 --> 01:11:39,250 सरणी $ = [1, 2, 3]; 780 01:11:39,250 --> 01:11:43,270 क्या होगा यदि मैं सरणी के पहले सूचकांक मुद्रित करना चाहते हैं? 781 01:11:43,270 --> 01:11:45,150 आप $ सरणी [0]. 782 01:11:45,150 --> 01:11:49,280 सिंटेक्स हाइलाइटिंग भी एक संकेत है. यह क्या करने जा रहा है करने के लिए? 783 01:11:52,320 --> 01:11:54,510 php.unique. 784 01:11:54,510 --> 01:11:59,860 हाय, मेरा नाम 1 है! जो नहीं है कि मैं क्या चाहता था. 785 01:11:59,860 --> 01:12:05,050 सिंटेक्स हाइलाइटिंग मुझसे झूठ बोला. 786 01:12:05,050 --> 01:12:13,020 चलो कोशिश 'एक' -> 1, 'बी' -> 2. 787 01:12:18,450 --> 01:12:21,440 यही कारण है कि कैसे मैं इसे लिखना होगा. 788 01:12:26,350 --> 01:12:32,160 अप्रत्याशित एकल बोली (T_ENCAPSED ब्ला, ब्ला, ब्ला, ब्ला ब्ला,). 789 01:12:32,160 --> 01:12:41,780 विचार यह है कि इस सरणी के भाग के रूप में पहचानने नहीं है. 790 01:12:41,780 --> 01:12:46,620 यह इस एक पत्र द्वारा अनुक्रमित सरणी के रूप में पहचानने नहीं है. 791 01:12:46,620 --> 01:12:49,870 आप घुंघराले ब्रेसिज़ से घिरा हुआ है कि करना चाहते हैं, 792 01:12:49,870 --> 01:12:54,730 और अब भी इस धनु धनुकोष्ठक में interpolated जाएगा, 793 01:12:54,730 --> 01:13:00,340 जो शब्द हम जादुई सही स्थानों में इन चर डालने के लिए उपयोग है. 794 01:13:00,340 --> 01:13:04,280 अब यह कर रही है, php.unique, और हाय, मेरा नाम 1 है! के रूप में की उम्मीद 795 01:13:04,280 --> 01:13:07,720 या हाय, मेरा नाम रोब है! 796 01:13:14,110 --> 01:13:23,130 एक बात है कि एकल उद्धरण के बारे में अच्छी तरह है कि - 797 01:13:23,130 --> 01:13:28,480 Interpolating कुछ लागत है. 798 01:13:30,520 --> 01:13:35,100 यदि आप दोहरे उद्धरण चिह्नों का उपयोग करें, दुभाषिया इस स्ट्रिंग जाना है, 799 01:13:35,100 --> 01:13:41,500 यकीन है कि, "ओह, यहाँ एक चर है अब मुझे जाना कि चर पाने के लिए और इसे यहाँ डालने की जरूरत है." 800 01:13:41,500 --> 01:13:48,930 अगर आप किसी भी चर का उपयोग नहीं करते, 801 01:13:48,930 --> 01:13:52,220 इन दोहरे उद्धरण चिह्नों के अंदर कुछ भी नहीं इंटरपोलेट की जरूरत है, 802 01:13:52,220 --> 01:13:56,800 लेकिन यह अभी भी धीमी हो क्योंकि यह डबल उद्धरण जाने की जरूरत है 803 01:13:56,800 --> 01:14:00,130 बातें कि इंटरपोलेट की की जरूरत के लिए देख रहे हैं. 804 01:14:00,130 --> 01:14:05,360 एकल उद्धरण तो थोड़ा तेज हो सकता है अगर कुछ भी नहीं इंटरपोलेट की जरूरत है सकते हैं, 805 01:14:05,360 --> 01:14:15,650 और मैं के लिए उपयोग करने के लिए भी एक उद्धरण, 'हाय, मेरा नाम है' के लिए करते हैं. $ सरणी ['एक'] वैसे भी. 806 01:14:15,650 --> 01:14:20,430 कि हम पहले क्या था के बराबर होने जा रहा है. 807 01:14:24,840 --> 01:14:28,440 लेकिन यह प्राथमिकता का मामला है. 808 01:14:28,440 --> 01:14:34,750 अगर आप PHP का उपयोग कर रहे हैं, तो आप शायद गति अंतर के बारे में परवाह नहीं करते हैं. 809 01:14:34,750 --> 01:14:39,480 वहाँ उन्हें कारण बाहर के साथ शुरू करने के लिए पर्याप्त नहीं है. 810 01:14:39,480 --> 01:14:43,030 >> कोई अंतिम सवाल? 811 01:14:47,430 --> 01:14:51,710 >> हम वास्तव में भी यह सभी के माध्यम से नहीं मिला, लेकिन इस सामान उबाऊ था. 812 01:14:51,710 --> 01:14:59,080 आखिरी बात यह है कि PHP में तरह अच्छा है जब आप HTML के साथ काम कर रहे हैं, 813 01:14:59,080 --> 01:15:06,450 आप इसे एक चर मुद्रण के लिए एक सा है, तो अच्छा शॉर्टकट सिंटैक्स का उपयोग करेंगे. 814 01:15:32,400 --> 01:15:36,730 PHP यहाँ डालने के बिना, इस छोटे टैग कहा जाता है. 815 01:15:36,730 --> 01:15:44,330 5.4 PHP के रूप में आधिकारिक तौर पर, यह पदावनत किया जा रहा है. 816 01:15:44,330 --> 01:15:48,640 आप PHP डाल करने के लिए सिफारिश कर रहे हैं. 817 01:15:48,640 --> 01:15:55,770 यह अभी भी, <इतना छोटा टैग समर्थित है = अभी भी पूरी तरह से ठीक हैं. 818 01:15:55,770 --> 01:16:02,480 यह डिफ़ॉल्ट रूप से समर्थित है, तो आप इन का उपयोग के रूप में आप चाहते हैं कर सकते हैं, और वे बहुत सुविधाजनक हो. 819 01:16:02,480 --> 01:16:05,700 >> कोई सवाल? 820 01:16:07,780 --> 01:16:09,270 सही सभी. 821 01:16:10,840 --> 01:16:13,800 >> उत्तम दर्जे रहो, सैन डिएगो. 822 01:16:13,800 --> 01:16:16,070 [दूसरे से टकराए] 823 01:16:18,620 --> 01:16:22,660 अलविदा. [हंसते हुए] 824 01:16:24,350 --> 01:16:28,470 [वाहवाही] [हंसते हुए] 825 01:22:46,460 --> 01:22:49,460 >> [CS50.TV]