[Powered by Google Translate] بخش 8 - راحت تر] [راب Bowden - دانشگاه هاروارد [این CS50 است. - CS50.TV] این هفته بخش یادداشت در حال رفتن به تواند خیلی کوتاه، پس من فقط رفتن برای حرف زیاد می زنن، شما بچه ها در حال رفتن به پرسیدن سوال، و ما سعی خواهیم کرد به پر کردن زمان تا آنجا که ممکن است. بسیاری از مردم فکر می کنم که این pset است لزوما دشوار نیست، اما آن را بسیار طولانی است. تنظیمات pset خود یک ساعت طول می کشد به خواندن. ما به شما بسیاری از SQL شما احتمالا می تواند نیاز به استفاده از. ما به شما راه رفتن را از طریق مقدار زیادی از آن، پس از آن نباید بیش از حد بد است. هر کسی شروع شده و یا به پایان رسید؟ این، آخرین pset. آه، خدای من. معمولا یک جاوا اسکریپت یکی پس از این وجود دارد، اما همه چیز تغییر تقویم باعث می شود همه چیز 1 هفته کوتاه تر است، و ما دیگر لازم نیست pset جاوا اسکریپت. من نمی دانم که چگونه است که تاثیر می گذارد که آیا جاوا اسکریپت در آزمون ظاهر می شود یا کوئیز 1. من تصور آن خواهد بود که چیزی شبیه به شما نیاز به دانستن سطح بالا چیز در مورد جاوا اسکریپت، اما من شک ما فقط می خواهم شما را مستقیم کد جاوا اسکریپت از آنجا که شما در آن یک pset نمی بود. اما این مسائل برای بررسی مسابقه هفته آینده خواهد بود. بخش از سوالات. بسیاری از این مسائل تا حدودی ضعیف بیان شده است، اما ما بحث خواهیم کرد که چرا. بر خلاف C، PHP "" زبان های نوع دار دینامیک است. این به چه معنی، از شما بپرسم؟ خب، خداحافظی به تمام کسانی که کاراکتر، شناور، هوشمند، و کلمات کلیدی دیگر شما نیاز به استفاده از در هنگام تعریف متغیرها و توابع در C در PHP، نوع متغیر با ارزش است که آن را در حال حاضر برگزاری تعیین می شود. بنابراین قبل از ما این کد را در یک فایل به نام dynamic.php تایپ، PHP به صورت پویا تایپ می شود. درست است. من با این واقعیت است که این بدان معناست که ما در حال خداحافظی به کاراکتر، شناور، اعضای هیات اختلاف نظر دارند، و دیگر کلمات کلیدی است. تفاوت دقیق بین نوع دار دینامیک و جایگزین، که به صورت استاتیک تایپ شده، این است که به صورت پویا تایپ شده، همه از چک کردن نوع و مسائل خود را در زمان اجرا اتفاق می افتد، در حالی که نوع دار استاتیک آن را در زمان کامپایل اتفاق می افتد. کلمه استاتیک به طور کلی به نظر می رسد به معنای همه چیز زمان کامپایل است. من حدس می زنم که کاربردهای دیگری برای آن وجود دارد، اما در C هنگامی که شما یک متغیر استاتیک، ذخیره سازی آن در زمان کامپایل اختصاص داده است. در اینجا، به صورت پویا تایپ حالت فقط بدان معناست که - در C اگر شما سعی می کنید برای اضافه کردن یک رشته و یک عدد صحیح، هنگامی که شما آن را کامپایل، رفتن به شکایت به دلیل آن را رفتن به می گویند که شما می توانید یک int و یک اشاره گر را اضافه نمی کند. این فقط یک عملیات معتبر نیست. این چیز دیگری که می کنیم که در یک ثانیه است. اما این نوع از چک کردن، این واقعیت است که آن را در زمان کامپایل شکایت، چک نوع استاتیک است. زبان های که در آن شما لازم نیست که کاراکتر، شناور، هوشمند برای گفتن، و تمام کسانی که همه چیز وجود دارد، اما این زبان می تواند از چهار چوب از چیزی بگویید که چه نوع از آن تصور می شود، اما هنوز هم نوع دار استاتیک. بنابراین اگر شما را 51، OCaml، شما هرگز نیاز به استفاده از هر یک از این انواع، اما هنوز آن را در زمان کامپایل می گویند شما می توانید این کار را نمی کند چرا که شما در حال اختلاط بین المللی و یک رشته است. نوع دار دینامیک فقط بدان معنی است که گاهی اوقات در زمان اجرا شما قصد دریافت شکایت است. اگر شما همچنین با استفاده از جاوا قبل از آن، به طور کلی، تقریبا هر نوع زبان C- رفتن به تایپ استاتیک، C، C + +، جاوا، همه کسانی که به طور کلی نوع دار استاتیک. در جاوا وقتی چیزی را کامپایل و شما می گویید رشته برابر چیزی است که یک رشته نیست، که رفتن به شکایت به دلیل آن نوع فقط مطابقت ندارد. که رفتن به شکایت در زمان کامپایل است. اما آن را نیز تا به برخی از پویا همه چیز را دوست دارم اگر شما سعی می کنید چیزی به بازیگران به یک نوع خاص از نوع فعلی آن است، هیچ چیز می تواند در زمان کامپایل برای بررسی اینکه آیا که بازیگران برای موفقیت وجود دارد. جاوا همچنین دارای برخی از نوع پویا بررسی است که به محض این که آن را به این خط از کد می شود هنگامی که آن را در واقع اجرای آن را به انجام بازیگران، چک کنید در صورتی که بازیگران معتبر در وهله اول، و اگر آن نبود، و سپس آن را به رفتن به شکایت است که شما باید یک نوع نامعتبر است. نوع پویا استفاده می شود. این نوع را به یک فایل با نام dynamic.php. Dynamic.php. من که قالب را از حالت زیپ خارج کنید. ما باید یک متغیر باشد، ما آن را به 7 عدد صحیح، پس از آن ما در حال رفتن به آن را چاپ و S٪ - آه، ما در حال چاپ نوع از آن، بنابراین gettype برای بازگشت به نوع متغیر است. ما فقط چاپ نوع بارها و بارها. ما فقط php.dynamic.php. خواهیم دید که آن را از عدد صحیح به رشته به بولی ما را از طریق رفتن. در سی هیچ نوع داده بولی است، این است که هیچ نوع داده رشته ای وجود دارد. * کاراکتر وجود دارد و بولی فقط گرایش به دانشنامه هوشمند یا کاراکتر و یا چیزی است. در PHP این نوع وجود داشته باشد، و این یکی از مزیت های بزرگ از PHP بیش C - که عملیات رشته ها بی نهایت آسان تر در PHP از C. آنها فقط کار. بنابراین ما به اینجا برگرد. ما زد dynamic.php. این می گوید مفسر PHP به نام پی اچ پی، برای اجرای کد های PHP در dynamic.php. اگر شما هر گونه خطا در فایل، مفسر را به شما بگویم! مترجم، این یکی دیگر از تفاوت های بزرگ بین PHP و C. در C شما باید چیزی به کامپایل و سپس آن فایل کامپایل شده را اجرا می کنید. شما هر چیزی را در PHP کامپایل هرگز. بنابراین مفسر PHP است که اساسا فقط خواندن این خط به خط. بازدید این ور = 7 سپس آن را بازدید printf و سپس آن را بازدید VAR و سپس آن بازدید printf و به همین ترتیب. است که کمی از کامپایل کردن آن می کند وجود دارد، و آن را کاشه (cach) بنابراین اگر شما برای اجرای اسکریپت بعد شما می توانید برخی از. اما اساسا آن را یک خط مرتب کردن بر اساس خط از چیزی است. این بدان معنی است که بسیاری از بهینه سازی است که ما در C، مانند تدوین، آن را فقط به طور کلی کامپایلر می تواند به بسیاری از ترفندهای برای شما انجام دهد. این می تواند متغیر استفاده نشده، می تواند تمام این چیزها را انجام دهد، آن می تواند بازگشت دم را انجام دهید. در PHP شما نمی خواهید که برای دریافت استفاده به دلیل آن را فقط برای شروع اجرای خط به خط به خط، و آن را واقعا نمی رسمیت شناختن این چیزها را به راحتی از آن 1 پاس تلفیقی بزرگ بیش از چیزی و سپس اعدام نیست؛ این فقط خط به خط. به طوری که مترجم است. برگشت به تایپ پویا ما: بسیار سرد، سوگند ملایمی؟ شما قطعا می تواند در C را انجام ندهید! در حال حاضر، اگر شما می توانید از نوع هر یک از مقادیر زیر است. این کار را برای مرجع. بنابراین 3.50. چه نوع آیا شما فکر می کنم که رفتن به؟ در اینجا انواع که ما داریم. ما bools، اعداد صحیح، نقاط شناور، رشته ها، آرایه ها، اشیاء، و پس از آن منابع، که نوع مبهم است. من فکر می کنم در واقع وجود دارد به عنوان مثال در اینجا. سپس NULL وجود دارد. NULL نوع خاصی است. بر خلاف C که در آن NULL فقط یک اشاره گر با آدرس 0، در PHP، NULL نوع خاص خود را دارد که در آن تنها چیزی معتبر است که نوع NULL است. این است که بسیار مفید برای چک کردن خطا. در C جایی که ما تا به حال این موضوع که اگر شما بازگشت NULL، آیا این معنی است که شما در حال بازگشت یک اشاره گر NULL و یا با استفاده از NULL به معنی خطا یا همه از این سردرگمی ما در یک نقطه بود. در اینجا، بازگشت NULL به طور کلی به معنی خطا. بسیاری از مسائل را برای خطا نیز نادرست بازگشت. اما نکته این است که نوع NULL، تنها چیزی که از نوع NULL NULL است. سپس پاسخ به تماس است که شما می توانید از برخی از توابع بی نام را تعریف کنیم. شما لازم نیست که تابع را به یک نام، اما شما نمی خواهد که برای مقابله با آن در اینجا. نگاهی به انواع که آنها از ما انتظار می دانم، چه چیزی به شما فکر می کنم نوع از 3.50؟ >> [دانشجو] شناور. آره. بنابراین پس در اینجا، چه چیزی شما فکر می کنم نوع از این است؟ >> [دانشجو] آرایه. آره. یکی از اولین شناور بود، یک دوم، یک آرایه است. توجه داشته باشید که این آرایه مانند یک آرایه C که در آن شما باید اندیس 0 تا به برخی از ارزش، شاخص 1 تا برخی از ارزش است. شاخص های A، B، و C و ارزش ها 1، 2، و 3. در PHP است تفاوت بین یک آرایه انجمنی و فقط یک آرایه منظم وجود دارد شما می توانید از آن در C. فکر می کنم فقط این وجود دارد، و در زیر هود یک آرایه منظم است فقط یک آرایه انجمنی که در آن 0 نقشه برخی از ارزش همان راه نقشه ها به برخی از ارزش است. به همین دلیل، PHP می تواند خیلی بد کد / تعیین معیار همه چیز واقعا سریع از آنجا که در C زمانی که شما با استفاده از یک آرایه شما می دانید که دسترسی به زمان ثابت است. در PHP دسترسی به یک عضو است که می داند که چقدر زمان؟ احتمالا اگر آن را به رشته هش را به درستی ثابت. چه کسی می داند آنچه در آن واقعا در زیر هود انجام؟ شما واقعا نیاز در پیاده سازی نگاه کنید تا ببینید که چگونه آن را برای مقابله با آن. پس fopen. من فکر می کنم در اینجا اجازه دهید فقط PHP کتابچه راهنمای کاربر fopen نگاهی به نوع بازگشت. ما می بینیم که در اینجا شما می توانید نگاه کردن تقریبا هر تابع در PHP کتابچه راهنمای کاربر و این نوع از صفحه مرد از PHP است. نوع بازگشت است به منابع. به همین دلیل است که من آن را نگاه کردن، چون ما واقعا نمی تعریف منابع است. این ایده از منابع، در C شما نوع فایل یا هر چیز دیگری؛ در پی اچ پی منبع فایل شما است. این چیزی است که شما در حال رفتن به خواندن از آن چیزی است که شما در حال رفتن به نوشتن. معمولا خارجی است، پس از آن منابع شما می توانید همه چیز را از کشیدن و انداختن همه چیز را به. و در نهایت، NULL چه نوع است؟ >> [دانشجو] NULL. آره. بنابراین تنها چیزی است که NULL NULL است. NULL NULL است. یکی از ویژگی های سیستم نوع PHP (برای بهتر شدن یا بدتر شدن)، توانایی خود را به حقه بازی انواع است. هنگامی که شما در نوشتن یک خط از کد PHP است که ترکیبی از مقادیر از انواع مختلف، PHP سعی خواهد کرد که چیز معقول برای انجام. سعی کنید از هر یک از خطوط زیر را از کد PHP است. چه چاپ شده است؟ آن چیزی است که شما انتظار می رود؟ چرا یا چرا که نه؟ این واقعیت در مورد پی اچ پی همان چیزی است که آن را می سازد چیزی است که ما ضعیف تایپ. ضعیف تایپ شده و به شدت تایپ، استفاده های مختلف برای آن دسته از قوانین و مقررات وجود دارد، اما بسیاری از افراد از ضعیف تایپ شده و به شدت تایپ به معنی این نوع از چیزی که در آن ("1" + 2)، که با این نسخهها کار. در C است که نمی خواهد کار کند. شما می توانید تصور کنید که این کار نمی کند. بسیاری از مردم مخلوط کردن تایپ پویا و تایپ ضعیف و نوع دهی استاتیک و تایپ قوی است. پایتون یکی دیگر از نمونه ای از یک زبان که به صورت پویا تایپ است. شما می توانید در اطراف انواع در متغیرهای پرتاب و آن را در زمان اجرا تعیین هر 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 است. چیزهای دیگر را امتحان کنید: چاپ ("CS" + 50)؛ من به شما گفته است که هیچ امیدی از این در نتیجه CS50 وجود دارد از زمان الحاق + نمی باشد. شما چه فکر میکنید این است که برای پایان دادن به بودن؟ من صادقانه به هیچ وجه ایده است. به نظر می رسد مانند آن را فقط 50. آن را می بیند رشته، و من شرط می بندم اگر ما را 123CS - رشته اول آن را می بیند، سعی می کند برای خواندن یک عدد صحیح از آن و یا یک شماره از آن است. در این حالت آن را می بیند 123CS. "این احساس به عنوان یک عدد صحیح را ندارد، بنابراین من فقط رفتن به از 123 فکر می کنم." بنابراین 123 + 50 رفتن به 173. و در اینجا از آن شروع به خواندن این کار را به عنوان یک عدد صحیح است. این هیچ چیزی رو نمی بینم، پس از آن فقط رفتار آن را با 0. بنابراین 0 + 50 رفتن به تواند 50. من فرض است که برای انجام کاری مشابه است. من فکر میکنم 99. آره، چرا که آن را به اول - بنابراین 99. (10/7)، در صورتی که این C بودند، چه که باز گردم؟ [دانشجو] 1. >> بله، آن خواهد بود. 1. چون 10/7 تقسیم 2 عدد صحیح. یک عدد صحیح تقسیم یک عدد صحیح است به بازگشت به یک عدد صحیح است. این می تواند نقطه 1 هر آنچه که خواهد بود بر نمی گرداند، پس از آن فقط رفتن به بازگشت 1. در اینجا چاپ (10/7)، رفتن به واقع تفسیر که. و این بدان معنی است که اگر شما واقعا می خواهید برای انجام گرد کردن عدد صحیح و چیزهای شبیه به آن، شما نیاز به انجام چاپ (کف (10/7))؛ در C از آن احتمالا عجیب و غریب است که شما را به طور منظم می تواند در کوتاه سازی صحیح تکیه می کنند، اما در PHP شما می توانید نه به این دلیل که آن را به طور خودکار آن را به یک شناور تبدیل شود. و پس از آن (7 + واقعی)، آنچه می توانم به شما فکر می کنم که رفتن به؟ من حدس می زنم 8 اگر آن را به تفسیر واقعی به عنوان 1. به نظر می رسد مانند آن 8. بنابراین هر چیزی که ما رو در 10 دقیقه گذشته شما مطلقا هرگز نباید انجام دهم انجام می شود. شما می توانید کد که این را ببینید. این را ندارد به عنوان سر راست به عنوان این. شما می توانید 2 متغیر، و 1 متغیر اتفاق می افتد به عنوان یک رشته و متغیر های دیگر اتفاق می افتد بین المللی، و سپس این متغیر شما اضافه کردن با هم. از آنجا که پی اچ پی است که به صورت پویا تایپ و آن را از هر گونه کنترل نوع را برای شما انجام نمی و از آن ضعیف تایپ شده و از آن فقط به طور خودکار پرتاب این چیزها را با هم و همه چیز را فقط کار خواهد کرد، این مشکل حتی می دانیم که این متغیر باید یک رشته در حال حاضر، بنابراین من باید آن را به این متغیر اضافه کردن نیست، که یک عدد صحیح است. بهترین عمل است اگر یک متغیر رشته ای است، آن را نگه دارید به عنوان یک رشته برای همیشه لطفا برای. اگر یک متغیر از نوع int است، آن را نگه دارید به عنوان یک نوع int برای همیشه لطفا برای. اگر شما می خواهید برای مقابله با اعداد صحیح و رشته ها، شما می توانید varsint استفاده - که جاوا اسکریپت می باشد. Intval. من این کار را در همه زمان ها است. PHP و JavaScript من مخلوط کردن همه چیز. بنابراین intval رفتن به بازگشت به مقدار عدد صحیح یک متغیر است. اگر ما در "چاپ (intval ('123 ')) منتقل می کند، شما می توانید 123. Intval خود را به انجام چک برای ما است که آن را منحصرا یک عدد صحیح است. کتابچه راهنمای PHP، بسیاری از توابع وجود دارد، بنابراین در اینجا من فکر می کنم آنچه که من می خواهم با استفاده از is_numeric 1. من حدس می زنم که بازگشت غلط است. این یکی دیگر از چیزهایی است که ما باید به بیش از ===. بنابراین is_numeric ('123df)، شما نمی خواهد فکر می کنم که به عنوان is_numeric. در C شما را مجبور به تکرار بیش از همه شخصیت های و چک کنید تا ببینید که آیا هر یک از شخصیت رقمی یا هر چیز دیگری. در اینجا is_numeric رفتن برای انجام این کار برای ما، و آن را بازگشت نادرست است. بنابراین، هنگامی که من چاپ شده است که، آن را چاپ هیچ چیز، بنابراین در اینجا من مقایسه آن را به آیا شما اتفاق می افتد که کاذب باشد؟ و بنابراین در حال حاضر آن را چاپ 1. ظاهرا آن را چاپ 1 عدد را به عنوان واقعی به جای چاپ به عنوان حقیقت درست است. من تعجب می کنم اگر من print_r. نه، آن را هنوز هم می کند 1. بازگشت به =، == هنوز هم وجود دارد، و اگر شما به تامی صحبت او می گویند == کاملا خوب است. من قصد دارم بگویم که == وحشتناک است و شما باید از == استفاده نمی. تفاوت این است که == مقایسه همه چیز که در آن می توان آن را حتی اگر آنها از همان نوع، در حالی === مقایسه همه چیز و برای اولین بار آن را چک می کنند از همان نوع است؟ بله. خوب، حالا من قصد دارم تا ببینید که آیا آنها در واقع نسبت به برابر است. شما دریافت می کنید چیزهای عجیب و غریب مانند 10 برابر - اجازه دهید ببینیم که چه چیزی است که می گوید. ('10 '== '1 E1')؛ این درست برمی گرداند. آیا هر کسی هر گونه حدس بزند که چرا این مقدار true برگرداند؟ این فقط در مورد آن نیست. شاید این یک اشاره است. اما اگر من تغییر آن به F - لعنتی! من را با استفاده از کوتیشن. به این دلیل به نقل از دو فریاد به من است چون من این کار را در کوتیشن قرار داده شده است. بنابراین من می توانم نقل قول دوگانه در اینجا، فرار نقل قول تنها آن را آسان تر است. ('10 '== '1 F1')؛ درست چاپ نمی. ('10 '== '1 E1')؛ چاپ درست است. [دانشجو] آیا این سحر و جادو است؟ >> این سحر و جادو نیست، اما آن را نزدیک است که آن را مانند - 1e1، نماد گذاری علمی است. این به رسمیت می شناسد 1e1 به عنوان 1 * 10 ^ 1 و یا هر چیز دیگری. کسانی که عدد صحیح مساوی هستند. اگر ما === و سپس آن را به صورت نادرست است. در واقع من هیچ نظری ندارم که اگر ما == آنچه که در مورد (10 و '10abc ')؛ بسیار خوب. به طوری که درست است. پس فقط زمانی که شما (10 + ''10abc) مثل و آن خواهد بود 20. در اینجا (10 == ''10abc)؛ درست است. حتی بدتر از چیزهایی مانند (نادرست == NULL)؛ درست است یا (غلط == 0) درست است (کاذب == [])؛ موارد عجیب و غریب وجود دارد - که یکی از آن موارد عجیب و غریب است. توجه داشته باشید که (غلط == [])؛ واقعی است. ('0 '== کاذب) درست است. ('0 '== [])؛ غلط است. بنابراین == به هیچ وجه متعدی است. می تواند به B برابر است و می تواند برابر با C، اما نه ب ممکن است برابر با C است. این عمل شنیع به من است، و شما همیشه باید از آن استفاده =. [دانشجو] آیا می توانیم انجام دهید! == نیز؟ >> [Bowden] بله. معادل خواهد بود =! == این است که در واقع در تنظیمات pset آورده که در آن بسیاری از بازگشت از توابع - کتابچه راهنمای PHP در این مورد خوب است. آن را در یک جعبه بزرگ قرمز قرار می دهد، "باز خواهد گشت نادرست اگر یک خطا وجود دارد." اما بازگشت 0 چیزی که کاملا معقول و منطقی به بازگشت است. فکر می کنم در مورد هر تابع است که انتظار می رود برای بازگشت به یک عدد صحیح است. بیایید می گویند که این تابع قرار است برای شمارش تعداد خطوط در یک فایل و یا چیزی. تحت شرایط عادی، شما این تابع یک فایل و آن را به بازگشت به یک عدد صحیح است که نشان دهنده تعداد خطوط. بنابراین: 0 تعداد کاملا معقول است اگر این فایل فقط خالی است. اما چه می شود اگر شما تصویب آن یک فایل نامعتبر است و تابع اتفاق می افتد، به بازگشت به غلط اگر شما آن فایل نامعتبر است منتقل می کند؟ اگر شما فقط == شما مورد تفاوت بین فایل های نامعتبر و فایل خالی نیست. همیشه = استفاده کنید. که همه از آن. نوع آرایه در PHP، متفاوت است از آنچه که شما به در C. در واقع، شما ممکن است در حال حاضر متوجه این فوق هنگامی که شما را دیدم این است که از آرایه از نوع. نحو براکت جدید همانطور که از PHP 5.4، است که جدیدترین نسخه از PHP است. قبل از این که شما همیشه مجبور به نوشتن آرایه ('A' -> 1، 'B' -> 2. که سازنده برای یک آرایه بود. در حال حاضر PHP در نهایت به اطراف می آیند، به نحو خوبی از تنها براکت که خیلی خیلی بهتر از آرایه. اما با توجه به PHP 5.4 جدیدترین نسخه است. شما ممکن است در جاهایی که حتی نمی PHP 5.3 روبرو می شوند. در طول تابستان ما را به این موضوع زد که در آن PHP 5.3 چیزی بود که ما در دستگاه بود، اما این سرور که ما مستقر کتاب کلاس ما و ارائه و تمام چیزهای که به PHP 5.4 بود. نمی دانستند این کار، ما در 5.3 توسعه یافته، تحت فشار قرار دادند به 5.4، و در حال حاضر همه هیچ کدام ناگهانی از کد ما کار می کند به این دلیل اتفاق افتاده است که به تغییرات بین 5.3 و 5.4 وجود دارد که به عقب سازگار نیست، و ما باید به بروید و تعمیر همه چیز ما است که برای PHP 5.4 کار نمی کند. برای این کلاس از دستگاه PHP 5.4، آن را کاملا خوب به استفاده از براکت مربع است. اما اگر شما به دنبال چیز در اینترنت، اگر شما به دنبال برخی از نوع آرایه ای از مسائل، به احتمال زیاد شما در حال رفتن به طلسم خارج نحو سازنده آرایه از آنجا که از PHP بوده است متولد شد و نحو براکت در حدود دو ماه گذشته بوده است یا هر زمان 5.4 آمد در اطراف. این که چگونه شما شاخص است. فقط می خواهم در C چگونه می خواهید شاخص توسط براکت مثل آرایه [0]، $ آرایه [1]، $ آرایه [2]، شما اول راه همان اگر شما اتفاق می افتد به شاخص های خود را رشته است. بنابراین آرایه ی $ [''] و $ آرایه ['B']. $ آرایه [B]. چرا که این اشتباه است؟ احتمالا یک هشدار است اما تولید و هنوز هم کار می کنند. PHP تمایل به انجام این کار است. این فقط به "من قصد دارم تا شما را در این مورد هشدار می دهند تمایل دارد، اما من فقط رفتن به رفتن ادامه دهید "و انجام هر کاری که من می توانم." احتمالا این به یک رشته ترجمه، اما این امکان وجود دارد که در برخی از نقطه در کسی گذشته گفت: تعریف B به "HELLO WORLD". بنابراین در حال حاضر B می تواند یک آرایه ثابت و $ [B] واقع خواهد شد را انجام خواهد داد "HELLO WORLD". من فکر می کنم در این نقطه، یا حداقل تنظیمات PHP، اگر شما به صفحه اول را به یک آرایه را امتحان کنید و این کلید وجود ندارد، آن را با شکست مواجه خواهد شد. من فکر نمی کنم آن را فقط به شما هشدار می دهند. یا حداقل شما می توانید آن را به طوری که آن را نه تنها به شما هشدار می دهد تنظیم کنید، آن را فقط راست بالا می افتد. راه شما چک کنید در صورتی که در واقع وجود دارد از جمله شاخص isset است. بنابراین isset ($ آرایه [«HELLO WORLD ']) باز خواهد گشت نادرست است. isset ($ آرایه ['ب']) باز خواهد گشت درست است. شما می توانید از این گرامرهای مخلوط. من کاملا مطمئنم که این آرایه را تا پایان بودن است - ما می توانیم آن را تست. آه، من باید PHPWord. این مخلوط نحو که در آن مشخص می کنید مهم این است که و شما مشخص نیست چه کلیدی است. SO 3 حق در اینجا یک مقدار است. شما نه به صراحت گفت که کلید آن است برای رفتن به. شما چه فکر میکنید کلیدی آن است که برای رفتن به؟ [دانشجو] 0. >> من حدس می زنم 0 فقط به این دلیل آن را یکی از اول ما مشخص نشده است. ما در واقع می تواند یک زن و شوهر از این موارد را انجام دهید. بنابراین print_r چاپ بازگشتی. کل آرایه را چاپ کند. این امر می subarrays از آرایه اگر هر گونه نسخه قابل چاپ. بنابراین print_r (آرایه)؛ php.test.php. این کار شبیه به آن را 0. در واقع چیزی است که به خاطر داشته باشید در اینجا وجود دارد، اما ما را به عقب بر گردیم به آن را در یک ثانیه است. اما چه می شود اگر من اتفاق می افتد را به این شاخص 1؟ PHP بین شاخص های رشته ای و شاخص های صحیح افتراق نیست، در این مرحله من فقط تعریف شاخص 1 و من می توانم هر دو آرایه $ [1] و $ آرایه ['1 '] انجام و از آن خواهد بود که شاخص مشابه و همان کلید است. بنابراین در حال حاضر چه چیزی به شما فکر می کنم 3 رفتن به؟ >> [دانشجو] 2. >> [Bowden] من حدس می زنم 2. آره. IT 2. چه می شود اگر ما این است 10، این 4 است؟ شما چه فکر میکنید شاخص از 3 رفتن به؟ من فکر میکنم 11. حدس می زنم من به عنوان به آنچه که PHP می کند - و من فکر می کنم که من دیده ام قبل از این - آن است که تنها نگه می دارد ردیابی از بالاترین شاخص عددی است که آن را تا کنون استفاده شده است. این هرگز به تعیین شاخص رشته تا 3. این همیشه یک شاخص عددی باشد. بنابراین آن را نگه می دارد آهنگ از بالاترین به آن اختصاص داده شده تا کنون، که اتفاق می افتد به 10، و آن را به 11 تا 3. آنچه قبل از من گفت، توجه به راه از آن است که چاپ این آرایه است. چاپ این 10 کلید، کلید 4، کلید 11، کلید D. و یا حتی اجازه - من حدس می زنم من یک 0 قرار داده است، اما آن را چاپ 1، 2، 3، 4 است. چه می شود اگر من در اینجا تغییر دهید؟ یا اجازه دهید در واقع تغییر این 2. در حال حاضر آن را چاپ 2، 1، 3، 4. آرایه های PHP درست مانند خود را در جدول به طور منظم مخلوط نمی شوند. این کاملا معقول و منطقی به آنها فکر می کنم که به عنوان جداول مخلوط 99٪ از زمان. اما در جداول هش شما هیچ حس از نظم است که در آن همه چیز قرار گرفت وجود دارد. بنابراین به محض این که شما آن را وارد به جدول هش را، فرض هیچ لیست پیوندی وجود دارد و شما می تواند در یک لیست پیوندی قضاوت که برای اولین بار قرار داده شد. اما در اینجا ما درج شده است 2 نخست آن را می داند و هنگامی که آن را چاپ کردن این آرایه که 2 می آید برای اولین بار. آن را چاپ می کند نه فقط در هر سفارش. ساختار داده ها فنی است که آن را با استفاده از نقشه منظم است، پس از آن به نقشه کلید به ارزش ها و آن به خاطر نظم است که در آن، کسانی که کلید قرار گرفت. در واقع آن را به برخی از عوارض که در آن به واقع آزار دهنده است - بیایید می گویند شما باید یک آرایه 0، 1، 2، 3، 4، 5 و شما می خواهید را از اول 2. یکی از راه های انجام آن، اجازه دهید ببینیم که چه چیزی است که به نظر می رسد. 0، 2، 1، 3، 4. لغو تنظیم اتفاق می افتد به هر دو متغیرها و شاخص های آرایه ثابت نشده است. بنابراین ثابت نشده ($ آرایه ای [2])؛ در حال حاضر آنچه در این شبیه؟ 2 است فقط رفته، به طوری که کاملا خوب است. بیشتر آزار دهنده است اگر شما می خواهید همه چیز را به واقع مانند یک آرایه باشد. من اعداد تصادفی قرار داده است. در حال حاضر شاخص من اطلاع می دهد. من می خواهم آن را به درست مثل یک آرایه C باشد که در آن از 0 به طول می رود - 1 و من می توانم بیش از آن را به عنوان از جمله تکرار. اما به محض این که من ثابت نشده شاخص دوم، چه در شاخص 3 در حال حاضر نه به تبدیل اول 2. در عوض آن را فقط به حذف آن شاخص و در حال حاضر شما به 0، 1، 3، 4. این کاملا معقول است. این فقط آزار دهنده است و شما را مجبور به انجام کارهایی مانند اتصال آرایه. آره. [دانشجو] چه اتفاقی می افتد اگر شما یک حلقه بود و به شما می خواستم بیش از همه عناصر؟ وقتی که آن آمار 2، آن را عملکرد تا کنون؟ تکرار بیش از یک آرایه است. 2 راه وجود دارد که شما می توانید آن را انجام دهد. شما می توانید به طور منظم برای حلقه استفاده کنید. این یکی دیگر از ریزه کاری PHP است. بسیاری از زبان ها، من می گفت، برخی از مرتب کردن بر اساس طول و یا لن یا چیزی طول آرایه را نشان می دهد. در PHP آن تعداد است. بنابراین تعداد (آرایه)؛ $ من + +) اجازه دهید فقط چاپ (آرایه [من])؛ توجه: تعریفنشده جبران: 2. این فقط به شکست است. این به این دلیل است که، در اکثر موارد، شما هرگز نیاز به تکرار بیش از مجموعه ای شبیه به این است. این ممکن است اغراق آمیز است، اما شما هرگز نیاز به تکرار بیش از مجموعه ای شبیه به این چرا که PHP حلقه foreach نحو خود را که در آن حلقه foreach ($ آرایه به عنوان آیتم) را فراهم می کند. حالا اگر ما چاپ (آیتم) - we'll بحث در مورد آن در یک ثانیه - کار می کند که کاملا خوب است. که حلقه foreach در حال کار است، بحث اول این است که آرایه ای است که شما در حال تکرار بیش از. و آرگومان دوم، مورد، از طریق هر یک از عبور از حلقه for آن را بر روی چیزی که بعد از در آرایه. بنابراین آرایه منظور به یاد داشته باشید. اولین بار از طریق حلقه for، مورد رفتن به 123 سپس آن را به 12 و سپس به آن خواهد بود 13 و سپس آن خواهد بود 23 و سپس از آن خواهد شد 213. همه چیز واقعا عجیب و غریب هنگامی که شما چیزی شبیه به حلقه foreach. بیایید ببینیم که چه چیزی اتفاق می افتد چرا که شما باید این کار را انجام دهند هرگز. چه می شود اگر ما ثابت نشده ($ آرایه ای [1])؛ که احتمالا انتظار می رفت. شما در حال تکرار بیش از این آرایه، و هر زمانی که شما در حال unsetting شاخص اول است. بنابراین شاخص 0، اولین چیزی که، مورد، مقدار 0 را بر عهده می گیرد، پس از آن خواهد بود 123. اما در داخل حلقه برای ما ثابت نشده اول 1، به طوری که به معنی 12 رفته است. بنابراین نسخه قابل چاپ. PHP_EOL. PHP_EOL فقط خط جدید است، اما آن را از لحاظ فنی قابل حمل از آنجا که خطوط در ویندوز متفاوت است از خطوط در مک و یونیکس است. در ویندوز خط جدید \ r \ n و، در حالی که در همه جا دیگری تمایل دارد فقط به \ N. PHP_EOL پیکربندی شده است به طوری که از آن استفاده می کند هر آنچه را که خط جدید از سیستم شما می باشد. به طوری که چاپ. بیایید print_r (آرایه) در پایان. من تا به حال هیچ ایده که رفتار خواهد بود. عدد هنوز هم بر ارزش 12 طول می کشد حتی اگر ما ثابت نشده 12 قبل از ما تا کنون به آن از آرایه می باشد. آیا سخن من در این نیست، اما به نظر می رسد مثل حلقه foreach ایجاد یک کپی از آرایه و پس از آن مورد طول می کشد بر تمام ارزش های که کپی. بنابراین حتی اگر مجموعه ای در داخل حلقه for را تغییر دهید، مراقبت از آن را نمی خواهد. تعداد آیتم ها در ارزش های اصلی را انجام دهید. بیایید سعی کنید unsetting آن. در صورتی که این دلار است آرایه [1] = "خوش آمدید"؛ حتی اگر ما "خوش آمدید" را در آرایه قرار داده است، مورد در آن مقدار طول می کشد هرگز. نحو دیگری به حلقه foreach حلقه وجود دارد 2 متغیر از هم جدا شده توسط یک پیکان را در جایی که شما قرار داده است. این متغیر اولین بار است به کلید که ارزش، و این متغیر دوم است برای رفتن به آیتم یکسان است. این مورد علاقه در اینجا، اما اگر ما به عقب به صورت اصلی ما از 'A' -> 1، 'B' -> 1، در اینجا اگر ما برای هر یک از آرایه به عنوان آیتم تکرار، مورد خواهد بود 1 در هر زمان تنها. اما اگر ما همچنین می خواهم به دانستن کلید در ارتباط با آن مورد پس از آن ما را به عنوان کلید -> $ آیتم. : "بنابراین در حال حاضر ما می توانیم چاپ ($ کلید انجام دهید. در حال حاضر آن را تکرار و بیش از چاپ هر کلید و مقدار مرتبط با آن است. چیز دیگری که ما می توانیم در حلقه foreach حلقه انجام است که شما ممکن است به این نحو را ببینید. Ampersands قبل از نام متغیر تمایل به پی اچ پی نشانی مراجع. که در آن منابع بسیار شبیه به اشاره گر، شما اشاره گر ندارد، بنابراین شما با حافظه مقابله هرگز به طور مستقیم. اما شما اشاره دارند که در آن 1 متغیر اشاره به همان چیزی که به عنوان یکی دیگر متغیر است. در داخل از اینجا اجازه دهید $ آیتم. بازگشت به 1، 10. اجازه دهید $ آیتم + +؛ که هنوز در PHP وجود دارد. شما هنوز هم می تواند + + انجام دهد. php.test.php. من باید آن را چاپ کنید. print_r (آرایه)؛ ما چاپ 2، 11. اگر من فقط انجام داده بود، حلقه foreach ($ آرایه دلار آیتم) و سپس آیتم مقدار 1 خواهد بود اولین بار از طریق حلقه. این خواهد شد 1 تا 2 افزایش و پس از آن ما در حال انجام است. بنابراین پس از آن از طریق عبور از حلقه و که در مورد 10 است. این آیتم افزایش تا 11، و پس از آن است که فقط دور انداخته شده است. سپس ما print_r (آرایه) و اجازه دهید که این فقط 1، 10. بنابراین افزایش ما کردیم این بود از دست داده است. اما حلقه foreach ($ آرایه به عنوان و دلار آیتم) در حال حاضر این مورد همان قلم دوم از اقلام این حق در اینجا است. این همان چیزی است. بنابراین $ آیتم + + اصلاح آرایه 0. در واقع، شما نیز می توانید انجام دهید $ K -> $ آیتم و شما می توانید انجام آرایه [$ K] + +؛ بنابراین یکی دیگر از راه انجام این کار، ما به تغییر آیتم، اما این آرایه اصلی را تغییر دهید. اما اگر ما با استفاده از K، است که کلید ما، پس ما می توانیم تنها شاخص به آرایه با استفاده از این کلید و افزایش آن است. این امر به طور مستقیم تغییر آرایه اصلی ما است. شما حتی می توانید که اگر به هر دلیلی به شما می خواستم توانایی تغییر - در واقع، این کاملا معقول است. شما نمی خواست به نوشتن آرایه [$ K] + +، شما فقط می خواستم برای نوشتن آیتم + + اما شما هنوز هم می خواستم بگم اگر ($ K = 'A') سپس آیتم و افزایش و سپس چاپ آرایه. بنابراین در حال حاضر آنچه که ما انتظار داریم print_r به انجام؟ چه ارزش باید چاپ شود؟ [دانشجو] 2 و 10. >> [Bowden] فقط در صورتی که کلید "آیا ما در واقع چاپ آن است. شما احتمالا خیلی به ندرت، اگر نگوییم هرگز، خواهد شد نیاز به تعریف توابع در PHP، اما شما ممکن است چیزی مشابه آن که در آن یک تابع مانند هر چیز دیگری تابع تعریف می کنید را ببینید. معمولا شما می گویند (صنایع غذایی، دلار بار) و سپس تعریف از آن را به هر چیز دیگری. اما اگر من این کار را، پس از آن که بدان معنی است که هر چه می نامد، هر چه، هر چه می نامد، باز، پس آرگومان اول به تصویب رسید به باز را می توان تغییر داد. بیایید دلار صنایع غذایی + +؛ در داخل و در اینجا اجازه دهید باز (آیتم)؛ در حال حاضر ما در حال فراخوانی یک تابع است. استدلال این است با ارجاع صورت گرفته است، به این معنی که اگر ما آن را تغییر دهید ما در حال تغییر چیزی است که در آن به تصویب رسید و چاپ این ما انتظار داریم - مگر من messed تا نحو - ما 2، 11، پس از آن در واقع یک واحد اضافه شد. متوجه مراجع در 2 مکان ما نیاز داریم. چه می شود اگر من این؟ این به چه معنی؟ [دانشجو] آن تغییر خواهد کرد. >> آره. مورد فقط یک کپی از مقدار موجود در آرایه. بنابراین بند به 2 تغییر دهید، اما آرایه ['A'] هنوز هم می شود 1. یا چه می شود اگر من این کار را؟ در حال حاضر مورد به عنوان یک کپی برای باز فرستاده شده است. بنابراین کپی از استدلال خواهد شد تا 2 واحد اضافه شده است، اما قلم دوم از اقلام خود را به 2 افزایش مییابد. و مورد چیزی که همین کار را به عنوان براکت آرایه هر چه است، به طوری که آرایه یک واحد اضافه شد هرگز. پس هر دو آن مکان به آن نیاز دارند. PHP است که معمولا در این مورد خیلی هوشمند است. شما ممکن است فکر می کنم من می خواهم به صورت by reference - این در واقع یک سوال در مورد یکی از psets. این یک چیز questions.txt بود که در آن گفت، چرا ممکن است شما بخواهید این ساختار به مرجع منتقل می کند؟ پاسخ به این چه بود؟ [دانشجوی] بنابراین شما لازم نیست که چیزی بزرگ برای کپی. >> آره. یک ساختار را می توان فردی را خودسرانه بزرگ، و زمانی که شما تصویب ساختار را به عنوان آرگومان به آن نیاز دارد را کپی کنید که ساختار کل آن عبور کند به تابع، در حالی که اگر شما فقط ساختار مرجع تصویب سپس آن را فقط به نیاز به کپی کردن یک آدرس به عنوان آرگومان به تابع 4 بایت است. PHP یک کمی باهوش تر از آن است. اگر من به برخی از عملکرد و من به آن منتقل می شود، مجموعه ای از 1،000 چیز، می کند که به معنی آن را به زودی برای کپی کردن تمام 1،000، از آن چیزهایی است آن عبور کند به تابع؟ آن را لازم نیست برای انجام این کار بلافاصله. اگر در داخل این تابع در واقع هرگز تغییر صنایع غذایی، بنابراین اگر واقعی (دلار صنایع غذایی = 'سلام') بازگشت. توجه داشته باشید که ما در واقع هرگز اصلاح داخل آرگومان این تابع، که بدان معنی است که هر آنچه تصویب شد به عنوان نیاز صنایع غذایی هرگز نمی توان کپی به دلیل آن تغییر نیست. بنابراین PHP آثار استدلال همیشه توسط مرجع تصویب در واقع تا زمانی که شما سعی کنید آن را تغییر دهید. حالا اگر من می گویم دلار صنایع غذایی + +، آن را در حال حاضر یک کپی از صنایع غذایی اصلی و ایجاد تغییر کپی. این موجب صرفه جویی در برخی از زمان. اگر شما در حال لمس کردن هرگز این آرایه عظیم، شما در واقع هرگز آن را تغییر دهید، لازم نیست کپی به، در حالی که اگر ما فقط این علامت است که بدان معنی است که حتی آن را کپی کنید قرار داده است حتی اگر شما آن را تغییر دهید. این رفتار، به نام کپی در نوشتن است. شما آن را در مکان های دیگر را ببینید، به خصوص اگر شما را به سیستم عامل البته. کپی بر روی نوشتن یک الگوی بسیار معمول که در آن شما لازم نیست برای ایجاد یک کپی از چیزی است مگر اینکه آن را در واقع در حال تغییر است. آره. [دانشجوی] چه می شود اگر شما تا به حال افزایش در داخل آزمون، بنابراین تنها 1 عنصر خارج از 1،000 نیاز به تغییر دارند؟ مطمئن نیستم. من فکر می کنم آن را به کل چیزی را کپی کنید، اما این امکان وجود دارد آن را به اندازه کافی هوشمند است که - در واقع، آنچه من فکر تصور کنید ما تا به حال یک آرایه است که به نظر می رسد، مثل این: $ array2 = [ سپس اول 'A' است که مجموعه ای از [1 2 3 4]، و شاخص 'B' یک آرایه از هر چیز دیگری است. من نیاز به کاما بین همه کسانی. تصور کاما از هم وجود دارد. سپس 'C' 3 ارزش است. باشه. حالا می گویند که ما باز (array2 دلار) است؛ جایی که باز این کار را با مرجع را ندارد. بنابراین دلار صنایع غذایی ['ج'] + +؛ این یک مثال از آن جایی که ما در حال عبور از array2 به عنوان یک استدلال است و سپس آن را اصلاح یک شاخص خاص از آرایه با افزایش آن. من صادقانه هیچ ایده چه را که PHP به انجام. آن را به راحتی می توانید یک کپی از کل چیزی، اما اگر آن را هوشمند، یک کپی از این کلید جایی که این ارزش های متمایز خود را داشته باشند اما هنوز هم می تواند به همان آرایه 1،2،3،4 و این هنوز هم می تواند به آرایه. من اپل آن. ما در این آرایه که در آن نقاط این مرد را به 3 منتقل می شود، این مرد [1،2،3،4] امتیاز به این مرد [34] اکنون که ما در حال عبور به باز، ما در حال اصلاح این است. اگر PHP هوشمند است، آن را فقط می توانید انجام دهید - ما هنوز هم تا به حال برای کپی کردن برخی از حافظه است، اما اگر این subarrays بزرگ تو در تو وجود دارد ما لازم نیست که برای کپی کردن کسانی که. من نمی دانم اگر این چیزی است که آن را نشانی از، اما من آن را انجام می دهند که می توانید تصور کنید. این هم یک مزیت بسیار بزرگ بیش از C PHP. PHP باعث می شود زندگی بسیار آسان تر برای بسیاری از چیزها، اما شما نوع مطلقا هیچ ایده چگونه آن را به خوبی انجام خواهد شد چرا که من هیچ ایده ای در زیر هود زمانی که ساخت این نسخه از همه چیز، آه، این است که برای رفتن به یک نسخه ثابت زمانی، آن را فقط برای تغییر 1 اشاره گر است، رفتن به یک نسخه خطی مسخره دشوار است؟ چه می شود اگر آن را می تواند فضا را پیدا کند؟ آیا آن را پس از جمع آوری زباله به اجرا فضای برخی بیشتر برای به دست آوردن نیاز دارند؟ و جمع آوری زباله می تواند خودسرانه طولانی. در C شما لازم نیست که به نگرانی در مورد این چیزها. هر خط شما ارسال می تواند دلیل بسیار زیادی در مورد چگونگی آن را به انجام است. اجازه دهید نگاهی به این. چه خوب است که شما لازم نیست که برای مقابله با توابع هش، مرتبط با لیست ها، یا هر چیزی شبیه به آن است؟ از آنجا که کار با جداول هش بسیار آسان در حال حاضر، در اینجا یک پازل سرگرم کننده است به کار بر روی. باز کردن یک فایل به نام unique.php و در آن نوشتن یک برنامه پی اچ پی (همچنین به عنوان "اسکریپت" شناخته می شود). ما معمولا به آنها را اسکریپتهای اگر آنها همه چیز کوتاه است که شما را در خط فرمان اجرا کنید. در واقع، هر زبان که شما کامپایل نیست، اما شما در حال رفتن به اداره اجرایی در خط فرمان، شما می توانید که فیلمنامه اجرایی تماس بگیرید. من فقط به عنوان به خوبی می تواند نوشتن یک برنامه C که این، اما من می توانم این اسکریپت از آنجایی که من برای اولین بار آن را تدوین و پس از آن اجرا دودویی. اما این برنامه PHP ما قصد داریم یک اسکریپت تماس بگیرید. یا اگر ما آن را در پایتون یا پرل یا Node.js و یا هر یک از آن چیزهایی نوشت، ما می خواهم همه آنها را اسکریپتهای چون شما آنها را در خط فرمان اجرا کنید اما ما آنها را کامپایل کند. ما می توانیم این را خیلی سریع انجام دهید. ما می رویم به استفاده ی argv. بیایید فقط از طریق این ضربه. آن منحصر به فرد، نوشتن یک برنامه است. شما می توانید فرض کنید که ورودی یک کلمه در هر خط را داشته باشد. در واقع، argv را خیلی پیش پا افتاده به استفاده از. unique.php. اولین چیزی که برای اولین بار، ما می خواهیم اگر ما به تصویب رسیده است 1 خط فرمان استدلال. همانطور که شما انتظار argc و argv را در C، ما هنوز هم کسانی که در PHP. بنابراین اگر ($ argc! == 2) پس از آن من نمی خواهد مقابله با چاپ یک پیام و یا هر چیز. من فقط، خروج کد خطا، از مجموع 1. من نیز می تواند 1 بازگشت. به ندرت در PHP شما در این حالت که در آن ما در آن هستیم - معمولا شما در یک تابع نامیده می شود توسط یک تابع نامیده می شود توسط یک تابع نامیده می شود توسط یک تابع هستیم. و اگر چیزی را اشتباه می رود و شما فقط می خواهید به خروج همه چیز را به طور کامل، خروج فقط به پایان می رسد این برنامه است. این نیز در C. وجود دارد اگر شما در یک تابع در یک تابع در یک تابع در تابع و شما می خواهید برای کشتن برنامه، شما می توانید خروجی و تماس آن خارج خواهد شد. اما در PHP آن را حتی بیشتر نادر است که ما را در این سطح بالا هستند. معمولا ما در داخل برخی از مرتب کردن بر اساس عملکرد هستید، بنابراین ما تماس خروج به طوری که ما مجبور به بازگشت به تا 1 چیزی که پس از آن متوجه خطا وجود دارد به طوری که می گرداند تا در صورتی که به رسمیت می شناسد خطا وجود دارد. ما نمی خواهیم برای مقابله با آن، به طوری که خروج (1)؛ بازگشت (1)، در این مورد می تواند معادل آن. پس آنچه که ما می خواهیم برای باز کردن ما به fopen می خواهم. استدلال در حال رفتن به نگاه بسیار مشابه است. ما به fopen (ی argv دلار [1]، و ما می خواهیم آن را برای خواندن باز کردن. می خواهم این یک منبع است که ما قصد داریم به تماس F را بر می گرداند. این به نظر می رسد بسیار شبیه به C آن به جز ما لازم نیست که فایل برای گفتن دارد. در عوض ما فقط می گویند $ F. باشه. در واقع، من فکر می کنم این را حتی اشاره به عنوان تابع PHP به نام فایل را به ما می دهد. فایل PHP. این است که رفتن به خواندن کل یک فایل را به یک آرایه. شما حتی نمی نیاز به fopen آن. رفتن به انجام این کار برای شما. بنابراین دلار خطوط = فایل (ی argv [1])؛ در حال حاضر تمام خطوط از فایل در خط هستند. در حال حاضر ما می خواهیم برای مرتب کردن خطوط. چگونه می توانید خطوط مرتب سازی بر اساس؟ مرتب سازی بر اساس خطوط ما. و در حال حاضر ما می توانیم آنها را یا هر چیز دیگری را چاپ کنید. شاید ساده ترین راه حلقه foreach ($ خطوط به عنوان خط) اکو $ خط است؛ [دانشجو] آیا ما و نه حتی خطوط با ارجاع چیزی به مرتب کردن بر اساس عبور؟ این جایی است که مرتب سازی بر اساس عنوان مرتب سازی بر اساس تابع (دلار آرایه) تعریف شده است. هنگامی که شما با تابع شما آن را به مرجع تصویب نیست. این تابع که آن را در تعریف خود از مصرف آن را به عنوان مرجع است. این است که در واقع دقیقا همان چیزی را اشتباه رفت هنگامی که ما همه چیز را به سرورهای ما هنگامی که ما از 5.3 به 5.4 رفت. تا 5.4، این کاملا معقول است. تابع انتظار نیست که آن را به عنوان مرجع، اما شما می توانید آن را به عنوان مرجع تصویب بنابراین اگر تابع اتفاق می افتد به آن را تغییر دهید، آن را هنوز تغییر یافتهاست. 5.4، شما قرار نیست برای انجام این کار است. بنابراین در حال حاضر تنها راه عبور توسط مرجع است اگر تابع به صراحت آن را ندارد. اگر شما نمی خواهید آن را به آن را تغییر دهید، و سپس شما نیاز به انجام کپی = $ خطوط و کپی عبور. بنابراین در حال حاضر خط حفظ خواهد شد و کپی خواهد شد. php.unique.php. من ممکن است خراب چیزی. غیر منتظره 'مرتب سازی بر اساس. رفتن وجود دارد به چیزی است که این کار را برای ما است. حتی از این هم وجود ندارد. توجه داشته باشید که زمانی که شما خواندن کتابچه راهنمای کاربر است که انتظار می رود اولین آرگومان به یک آرایه و آن را با ارجاع گرفته شده است. چرا این شکایت به من؟ از آنجا که من تابع این نوع هنوز هم در اینجا است که من نمی خواهم. خوب، php.unique.php. من عبور از آن بحث نمی کند چرا که من می توانم یک فایل را ندارد. این php.unique.php در test.php. در اینجا test.php همه در یک نظم خوب طبقه بندی شده اند چاپ شده است. توجه داشته باشید که طبقه بندی شده اند سفارش شده است از نوع عجیب و غریب برای یک فایل کد چرا که همه از یک خط خالی ما در حال رفتن به اول پس از آن در حال رفتن به می آید همه از سطح دندانه ما 1 پس از آن همه از تورفتگی بدون ما آمده است. آره. >> [دانشجو] بنابراین برای کد منبع آن مرجع به تصویب رسید؟ این است که به طور کلی با مقدار منتقل می شود؟ [Bowden] هنگامی که شما به یک تابع، هرگز آن را تعیین اینکه آیا آن توسط مرجع تصویب شد. این تعریف تابع است که تعیین می کند که آیا آن توسط مرجع تصویب شد. و به دنبال در تعریف تابع مرتب کردن بر اساس و یا فقط به دنبال این، آرگومان با ارجاع آن طول می کشد. بنابراین صرف نظر از این که آیا شما می خواهید آن را به آن مرجع را، آن را نشانی از آن را با مرجع. این تغییر آرایه در محل. این فقط مجاز نمی باشد. شما مجاز به انجام این کار شده است. >> [دانشجو] اوه، درست است. [Bowden] این، مرتب در حال رفتن به خط توسط مرجع و آن را تغییر دهد. و دوباره، اگر شما می خواهید آن را به انجام این کار، شما می توانید یک کپی از مرتب کردن است. حتی در این مورد، کپی است که در واقع یک کپی از خطوط است. آن را فقط به همان چیزی که اشاره تا زمانی که برای اولین بار می شود اصلاح، که در آن برای اولین بار در تابع مرتب سازی بر اساس تغییر، که در آن، به دلیل آن را کپی در نوشتن، در حال حاضر یک کپی از کپی می شود ساخته شده است. شما همچنین می توانید این کار را انجام دهند. که جای دیگری شما می توانید از علامت "را ببینید. شما آن را در حلقه حلقه foreach، آن را به شما را به در اظهارات تابع، و شما آن را زمانی که فقط اختصاص متغیر است. در حال حاضر ما هیچ چیز با انجام این کار انجام به دلیل کپی و خطوط به معنای واقعی کلمه همان چیزی است. شما می توانید خطوط و استفاده از کپی قابل معاوضه. شما می توانید تنظیم نشده باشد (کپی) را انجام دهد؛ و این بدان خط ثابت نشده، شما فقط مرجع خود را به همان چیزی که از دست بدهند. بنابراین همانطور که از این نقطه، در حال حاضر خطوط تنها راهی است که شما می توانید خطوط دسترسی است. پرسش و پاسخ؟ آره. [دانشجو] به طور کامل خاموش موضوع، اما شما لازم نیست که برای بستن PHP - >> شما نمی. باشه. [Bowden] من می خواهم تا آنجا که می گویند این عمل بد را به آنها نزدیک است. که احتمالا اغراق آمیز، به ویژه در یک اسکریپت، اما اجازه دهید ببینیم که چه اتفاقی می افتد اگر من این کار را. که آیا هیچ چیز نیست. چه می شود اگر من می خواستم - [آه] من نیاز به پاس کردن یک آرگومان. شلیک کنید. من آن را به نام اشتباه. بنابراین php.unique.php با استدلال. در حال حاضر من حتی نمی نیاز به این. من آن را یک استدلال معتبر است منتقل می کند. این چاپ هر آنچه در آن چاپ شده است. من چاپ کپی و کپی وجود ندارد. بنابراین خطوط. همه چیز، آن را چاپ و پس از آن متوجه این همه آشغال را در اینجا، چرا که در هر چیزی PHP است که در خارج از تگ های PHP فقط رفتن است که باید چاپ شود به معنای واقعی کلمه. به همین دلیل HTML، خیلی خوب است که من می توانم DIV، اه، اه، اه، کلاس یا هر چیز دیگری را انجام دهید، ، اه، اه، اه، و پس از آن با انجام برخی از کد PHP و پس از آن انجام DIV پایان. و در حال حاضر چاپ این DIV خوب من تا بالا، همه چیز که PHP چاپی، DIV در پایین است. فاجعه زمانی که چیزی شبیه به این اتفاق می افتد، که بسیار رایج است، فقط یک ولگرد خط جدید را در انتهای فایل. شما نمی خواهد فکر می کنم از آن خواهد بود که از یک معامله بزرگ تا زمانی که شما در نظر این واقعیت است که با مرورگرهای - چگونه تغییرمسیر کار و یا اساسا هر کار هدر، هنگامی که شما ارتباط خود را به وب سایت آن را می فرستد و به این همه هدر و همه چیز مثل پاسخ 200 یا پاسخ هدایت یا هر چیز دیگری، هدر فقط معتبر هستند تا زمانی که اولین بایت از داده ها فرستاده شده است. شما می توانید هزاران بار، هدایت، اما به زودی به عنوان اولین بایت از داده ها فرستاده شده است شما قرار نیست دوباره به تغییر مسیر. اگر شما یک خط جدید ولگرد در پایین یک فایل و اجازه دهید بگویم که شما با استفاده از این تابع و پس از آن شما می خواهید برای - بیایید می گویند آن را به یک فایل دیگر که فایل index.php و شما چیزی require_once - من نمی توانم فکر می کنم از یک مثال خوبی از آن است. این مسئله زمانی اتفاق می افتد که این خط در پایین تکرار می شود. شما هیچ چیز تکرار شده اند در عین حال نمی خواهیم. حتی اگر شما بر روی چیزی تکرار قصد ندارم، چیزی تکرار بود و بنابراین در حال حاضر شما در حال قرار نیست برای ارسال هدر هر و شما در حال رفتن به شکایات. شما فقط نیاز به آن برچسب پایانی ندارد. اگر شما در انجام کاری با HTML طرح - و آن را کاملا معقول و منطقی برای انجام این کار را در اینجا دیو هر چه و سپس در این مرحله شما می توانید و یا شما می توانید آنها را شامل نمی شود. این کار واقعا مهم نیست. اما در اسکریپت های PHP به ندرت به آن نزدیک است. وقتی که همه چیز PHP، مطلقا همه چیز، شما واقعا نیاز نیست به آن نزدیک است / شما باید آن را ببندید. برخورد با رشته است که بسیار بهتر از در C. در PHP شما می توانید با نقل قول یک یا دو رشته را مشخص کنید. شما می توانید با نقل قول تکی "فرار" توالی استفاده نمی کنند. به طور مداوم، فرار، اه، اه، اه. printf است بسیار نادر در PHP. من حدس می زنم من printf استفاده کنم اگر من می خواستم برای انجام یک نوع از چیزی - در pset 5 شما با استفاده از sprintf یا هر چیز دیگری. اما شما می خواهید به انجام 001.jpg 002.jpg. بنابراین برای این نوع از چیزی که من در واقع می خواهید به فرمت متن من printf استفاده کنید. اما در غیر این صورت من فقط می الحاق رشته ها استفاده کنید. من واقعا هرگز استفاده از printf است. ما فقط افتراق جزئیات بین نقل قول و نقل قول تنها دو. بزرگترین تفاوت این است که نقل قول تکی، چاپ شود به معنای واقعی کلمه است. هیچ نوع داده کاراکتر در PHP وجود دارد، بر خلاف C، بنابراین این معادل این است. آنها هر دو رشته. چیز خوب در مورد رشته نقل قول تنها این است که من می توانم بگویم "سلام جهان!" ، اه، اه، اه، $ $ wooo. چه اتفاقی می افتد زمانی که من نسخه قابل چاپ این است که آن را به معنای واقعی کلمه چاپ می باشد. بیایید از شر همه از مسائل ما است. بنابراین $ str1 اکو؛ آن را به معنای واقعی کلمه چاپ شده است همه از آن چیزهایی است: علائم دلار، N اسلش، جایی که شما فکر می کنم خواهد بود خطوط - تمام کسانی که همه چیز آن را چاپ به معنای واقعی کلمه است. تنها چیزی که شما نیاز به فرار از نقل قول تکی زیرا در غیر این صورت آن را فکر می کنم آن را به بستن تک به نقل از. نقل قول دوگانه، کاملا متفاوت است. ما در حال حاضر به نحو برجسته با ما cluing به آن چه که در مورد رفتن سخت در اشتباه است. php.unique. تعریفنشده متغیر: wooo به دلیل این است که به عنوان یک متغیر به نام wooo تفسیر شده است. نقل قول دوتایی اجازه متغیر قرار دادن شما را به - بیایید می گویند متغیر $ name = "راب"؛ بنابراین اکو "سلام، نام من است نام و نام خانوادگی!"؛ این به رسمیت می شناسد این را به عنوان یک متغیر است. وقتی که من اجرای آن - و من یک خط جدید وارد - سلام، نام من راب است! و سلام جهان! دلیل این است که من چاپ wooo بالا حذف هرگز. 1 قدم بیشتر شما می توانید انجام دهید وجود دارد. $ آرایه = [1، 2، 3]؛ چه می شود اگر من می خواهم به چاپ شاخص برای اولین بار از آرایه؟ شما $ آرایه [0]. نحو برجسته سرنخ است. چه کاری انجام دهید؟ php.unique. سلام، اسم من 1 است! که آن چیزی نیست که من می خواستم. نحو برجسته به من دروغ گفته است. بیایید "-> 1، 'B' -> 2. این که چگونه من را مجبور به نوشتن آن است. نقل قول غیر مترقبه T_ENCAPSED، اه، اه، اه، اه، اه،. ایده این است که آن را به عنوان بخشی از آرایه شناخت. این را به عنوان آرایه نمایه شده توسط نامه به رسمیت شناختن نیست. شما می خواهید برای انجام این کار احاطه شده توسط آکولاد، و در حال حاضر آنچه در این زانوبند فرفری خواهد شد درون یابی، که در آن کلمه جادویی برای قرار دادن این متغیرها را به مکان های مناسب استفاده کنید. در حال حاضر انجام این کار، php.unique، و سلام، نام من است 1! همانطور که انتظار می رفت یا سلام، نام من راب است! یکی از چیزهایی است که نوع خوب در مورد نقل قول تکی است که - برخی از هزینه به interpolating وجود دارد. اگر شما استفاده از نقل قول ها دو مترجم برای رفتن به این رشته، مطمئن شوید که "آه، در اینجا یک متغیر است. حالا من نیاز به آن متغیر را دریافت کنید و آن را در اینجا وارد است." حتی اگر شما هیچ کدام از متغیرهای استفاده نمی کند، هیچ چیز در داخل از این نقل قول ها دو باید به درون یابی، اما آن را هنوز هم آهسته تر می شود، زیرا به آن نیاز دارد به بیش از کوتیشن به دنبال چیزهایی است که باید درون یابی. بنابراین تنها نقل قول می تواند یک کمی سریعتر اگر چیزی نیاز به درون یابی، و من تمایل به نقل قول تنها برای استفاده حتی "سلام، نام من است. آرایه ی $ [''] به هر حال. که معادل آنچه که ما تا به حال قبل از رفتن به. اما این موضوع از اولویت. اگر شما با استفاده از PHP، شما احتمالا در مورد تفاوت سرعت برام مهم نیست. کافی است به آنها استدلال برای شروع وجود ندارد. هر گونه سوالات نهایی؟ ما در واقع از طریق همه آن را حتی نمی کنید، اما این مسائل خسته کننده بود. آخرین چیزی که نوع خوب در PHP این است که زمانی که شما در حال برخورد با HTML، شما این بیت، به طوری که نحو میانبر خوب برای چاپ یک متغیر استفاده کنید. بدون قرار دادن PHP در اینجا، این است که به نام برچسب ها کوتاه است. رسما به عنوان از PHP 5.4، این است که منسوخ شده است. به شما توصیه می شود برای قرار دادن پی اچ پی. این است که هنوز پشتیبانی، برچسب ها آنقدر کوتاه با <؟ = هنوز هم کاملا خوب است. آن را به طور پیش فرض پشتیبانی می باشد، به طوری که شما می توانید این کار را به عنوان شما می خواهید استفاده کنید، و آنها بسیار راحت است. هر گونه سؤال؟ بسیار خوب. اقامت درجه یک، سن دیگو. [chuckles] خداحافظ. [می خندد] [تشویق حضار] [می خندد] [CS50.TV]