דאג LLOYD: אז יש לנו עשה הרבה עבודה בC, ו- C הוא ממש מגניב שפה, כי זה נותן לך היכולת לצלול באמת רמה נמוכה בתוכניות שלך. אנחנו מקבלים לעשות את הדברים כמו ש באמת דקות כמניפולציה בתים בודדים של זיכרון. נזכיר כי מצביעים באמת מאפשר לנו גמישות ש. אבל אנחנו תמיד צריכים להיות שרמת עדינה תבואה של פרט בתוכניות שלנו? כנראה שלא, נכון? ואם אנחנו הולכים לי trade-off בין להיות מסוגל לעשות באמת, באמת דברים דקות ובאמת, באמת דברים גדולים שאנחנו לא צריכים לחשוב על, אנחנו לא צריכים ליישם רעיונות גדולים באמת אלה אם הם נבנו בכבר עבורנו, בדרך כלל לבנייה גדולה תוכניות או פרויקטים גדולים, אנחנו כנראה הולכים לטעות בצד בכך שבנו יותר דברים שפה ב עבורנו, במקום שיש הדברים ברמה הנמוכה. וזה המקום שבי PHP באמת מגיע ב. עכשיו, אחת הסיבות שאנחנו מלמדים PHP בCS50 הוא שזה בהשראה בכבדות על ידי ג ואכן, לדעתי, יש באמת שני שפות אב ש נפוצים מאוד בימינו. C וLISP. והם שפות אב כי כל תכנות מודרני אחר שפה שהתפתחה מאז הוא בהשראה על ידי אחד או מבחינה תחבירית אחרת. PHP היא דומה מאוד מבחינה תחבירית ל- C, ואילו שפות כמו תכנית, לדוגמא, ש ייתכן ששמעת עליו, השראה בכבדות על ידי שפה LISP נקרא, שהיא שפה מבוגרת. אז הסיבה שאנו מלמדים PHP בCS50 הוא ש, על ידי לדעת C כמו ביסוד כפי שאתה עושה בשלב זה, PHP להרים, אשר נותן לך יכולת לעשות דברים ברמה הרבה יותר גבוהים מ C עושה, לא שהרבה ממשוכה, כי כבר יש לך רעיון בסיסי של התחביר. C בסביבה כבר כמעט 45 שנים בשלב זה. PHP בסביבה כבר כ -20 שנים. ובכי 25 שנים בין לבין, מתכנתים קבע כי הם הרבה הייתם ולא שיש לי יכולות ברמה גבוהות יותר, והטעויות ומאבקים של 20 השנים בין הוביל לPHP ושפות מודרניות אחרות. הבחירה מצוינת של PHP של שפה לתוכנה שallow-- ל תוכנה לראות-- שבו אתה צריך לעשות דברים שב C הם מסובך בעצם. כך למשל, עובד עם מחרוזות ב C הוא מאוד מסובך, משום ש כפי שאנו יודעים, מחרוזות בC הם באמת רק מערכים של תווים. זה לא סוג נתונים מובנה. או אולי יותר ביסוד, משהו שאנחנו אפילו לא כיסינו ב- C, מה אם אתה צריך לעשות כמה רשתות מחשב? בסדר? יש C את היכולת לעשות את זה, אבל זה כל כך מסתורי וקשה כל כך לעשות דווקא. האם לא יהיה זה נחמד אם הייתה לי שפת דרך מובנה, קלה ליישם ברשת? וPHP היא שפה שעושה את זה, או מאפשר את זה, לא מעט יותר. כפי שאמרתי, PHP היא השראה מאוד בכבדות על ידי ג התחביר דומה מאוד. וכך זה צריך לעשות בתקווה מעבר מאחת לשנייה קצת יותר רך מכמה שפות אחרות יכולות להיות. כדי להתחיל לכתוב PHP, פשוט לפתוח את קובץ עם סיומת קובץ .php. מבחינה טכנית זה לא נדרש למעשה, אבל אם אתה רוצה דברים כמו תחביר הדגשה בIDE, כך סוג ש שמות, או שמות, תפקידים משתנים, אתה יודע, מילות מפתח של השפה מודגשים ב צבע מסוים, אתה בדרך כלל רוצה שם את הקבצים שלך עם סיומת קובץ מסוימת. אז יש לנו שם הקובץ שלנו עם .php הארכה, אבל אז גם עם PHP, כל קוד PHP שאנחנו כותבים שב קובץ צריך להיות סגור ב- PHP אלה מפרידים שאנו רואים כאן על המסך. הסוגר זווית? php כדי להתחיל. אז אנחנו כותבים כל PHP שלנו קוד שאנחנו רוצים שביניהם. ואז ? הסוגר זווית לסגירה. אם אנחנו לא עושים את זה, אז מה הולך לקרות? זה לא הולך לקרוס. זה לא הולך ל באמת להרוס את התכנית שלנו. אבל זה לא הולך להיות האפקט שאנחנו רוצים. מה הולך לקרות, באמת, הוא שכאשר אנו מנסים ולהפעיל תכנית זו, כל מה שלא בין המפרידים אלה הולך להיות מודפס מילה במילה. זה לא הולך ל למעשה לבצע את הקוד, זה הולך רק להדפיס את זה מילה במילה. עכשיו למה שקורה? אז C הוא מה שנקרא כשפת הידור. אתה בטח מכיר הצעד של קבלת התוכניות שלך, הפיכת קבצי .h הקבצים ו.c להפעלה אחד עם איפור, באמצעות בפרט מצלצל כמו מהדר שלנו. PHP, אם כי, לא יש לי שווה ערך זה. PHP היא מה שנקרא שפה פירשה. ומה זה אומר? ובכן, זה אומר שאנחנו לא צריכים להמיר קוד המקור שלנו לאפסים ואחדים מִרֹאשׁ. במקום זאת, יש תכנית, המכונה גם PHP, שמבין PHP ו סוג של יכול לעשות את זה במהירות ההבזק. זה לא ממש מדויק בדיוק, אבל זה אנלוגיה די טובה של מה שקורה. זה פירוש אלה אפסים ואחדים על לטוס. ולכן אם הוא לא יודע איך לעבד משהו, אם זה לא יודע איך PHP תהליך, אתה כנראה רציתי לשים את הטקסט שביש, נכון? אתה בטח רצית לשים את הקוד ב שם, גם אם זה לא בין PHP-- מפרידי PHP. But-- כך שזה לא הולך כדי למחוק את זה בשבילך, זה פשוט קורה בעצם למחוק אותו. אז זה הולך להדפיס את זה על המסך. זה נראה כמו שזה רע דבר, אבל למעשה זה הולך להיות באמת דבר טוב, שכן אנו לראות כאשר אנו מדברים על פיתוח האינטרנט PHP, כי זה אומר שאנחנו יכולים לפזר PHP ו- HTML. אנו יכולים להשתמש בם יחד ל ליצור דף אינטרנט דינמי יותר. אבל עוד על כך ב וידאו באינטרנט פיתוח PHP. אז מה הוא התחביר של PHP? זה מה שהסרטון הזה הוא על כל. בואו נדבר על זה. אז כדי להתחיל, משתנה. משתני PHP קיימים. יש רק שני גדולים הבדלים מג הראשון הוא שיש לא מציין סוג. אנחנו לא צריכים לומר int, char, לצוף, כל הדברים האלה. אנחנו לא צריכים לעשות את זה יותר. PHP היא שפה מודרנית. זה יכול להבין מה אתה מנסה לעשות או לעשות הטוב ביותר מניח על מה שאתה מנסה לעשות. אז זה די נחמד. הדבר השני הוא שכל משתנה שמות צריכים להתחיל עם סימן דולר. זה פשוט משהו להתרגל ל. זה קצת מוזר, כי זה כל כך כי PHP יכול להבין מה משתנה ומה לא. אז כל שם משתנה מתחיל עם סימן דולר. אז ב- C אפשר לומר משהו ככה, int x = 54. אנחנו לא צריכים לעשות את זה יותר ב- PHP. אנחנו רק יכולים לומר $ x = 54. ואנחנו יכולים לומר, למשל, ב- C, אם היינו-כלול לירה .h CS50 קובץ כותרת, נוכל לומר ביטוי מחרוזת = "זה CS50." אנחנו לא צריכים לעשות את זה ב- PHP, אם כי. אנחנו רק יכולים לומר משפט $ = "זה CS50." ולמעשה, מחרוזת היא עכשיו סוג נתונים מובנה ב- PHP, או לייתר דיוק PHP מבין מה היא מחרוזת. זה נפרד ממערך דמויות כמו זה בג כל האהוב עליך הצהרות מותנות מC עדיין זמינים עבורך לשימוש. אז לא מעבר גדול שם. אנחנו יכולים say-- יכול להיות לנו אם הצהרות כמו זו. אם y $ 43, או $ Z = 15. אז זה די פשוט. יכול להיות לנו אם ואחר. יכול להיות לנו אם ואחר אם. ושם לב למשהו די נחמד כאן, וזה הוא סוג של אחד מאותם יתרונות של PHP לעומת C, הודעה אנחנו מה פונקציה אינך משתמשים כאן? אנו משתמשים == כדי להשוות משתנה, שם $, למחרוזת. אנחנו לא יכולים לעשות את זה ב- C, נכון? אנחנו היינו צריכים להשתמש בפונקציה שנקראת StrComp או StrEndComp או כל של בני דודים הקשורים אליה. וכך כבר אנו רואים יתרונות אלה. אנחנו לא צריכים לעשות משהו טיפשי או אולי unintuitive כ כלקרוא לפונקציה בשם StrComp אם אני רק רוצה לבדוק אם ערך שווה מחרוזת. רק אני יכול להשתמש שווה שווה, כמו שאני יכול לעשות כל דבר אחר. אז יש יתרון. לפעמים, אגב, ייתכן לראות אם מילה כמו אחד אחר, elseif. וזה בסדר ב- PHP, כמו גם. אז לפעמים אתה עשוי לראות ש. זה לא טעות דפוס. PHP מבין elseif למעשה. אני לא יודע למה הם החליט ליישם את זה, אבל כפי שראינו פעמים רבות בכל קטעי הווידאו שלנו עד כה, אנחנו מתכנתים אוהבים את זה אם אנחנו יכולים לעשות דברים במהירות, כך להיפטר מהחלל ש כנראה יתרון גדול. אז זה אם וelseif. יש לנו גם המפעיל המשולש, מעי גס סימן השאלה כזכור, לטופס קצר מאוד אם אחר או הסתעפות מותנית. וככל הנראה, בזה, מה שאנחנו מנסים לעשות כאן הוא להקצות משתנה מכתב $ או אמת או שקר, תלוי אם var $ הוא תו האלפביתי. אז זה די דומה לisalpha שאנחנו מכירים מג זה סוג של המקבילה ב- PHP. הפונקציה היא כנראה נקרא ctype_alpha, אבל ככה אנחנו עושים את זה ב- PHP. אז כל זה הולך להיות הוא, אם var $ הוא מכתב, $ המכתב הוא אמיתי. אם var $ הוא לא מכתב, $ המכתב הוא שקר. יש לנו גם הצהרות מתג עדיין. אנו זוכרים אותם מC, כמו גם. בחלקו העליון שם, זה איך אנחנו עושים משהו כמו גט int או לקבל מחרוזת. אז PHP יש שנבנה ב. אנחנו לא צריכים את ספריית CS50 יותר. אנחנו רק יכולים להשתמש בפונקצית readline. מה שהולך לעשות הוא להדפיס את ההודעה, "המדינה שלך, בבקשה, "ולאחר מכן מהבהב הפקודה מחכה למשתמש קלט קצת מידע. עכשיו שמו לב מה עוד אנחנו יכולים לעשות עם מתג. אם השתמשת בו לפני, אולי אתה זוכר שמתג מוגבל פחות או יותר למספרים שלמים, ו דמויות, אבל עכשיו אנחנו יכולים להשתמש במחרוזות. ולמעשה, הצהרת המתג ב- PHP הוא גמיש למדי קצת יותר מבת הדודה שלה מג לולאות. בדיוק כמו תנאי, כל המועדפים הישנים שלך עדיין שם. יש לנו בזמן שלולאות לספור 1-100 במקרה זה. יש לנו לעשות בזמן לולאות כי לספור 1-100, ויש לנו ללולאות כי לספור 1-100. אז לא קפיצה גדולה שם. התחביר הוא די הרבה בדיוק אותו הדבר, אלא שעכשיו אנחנו משתמשים משתנה סימן דולר במקום של הצהרה על משתנה שלם או משהו כזה עבור המונים שלנו. הנה שבו דברים מקבלים למרות שהרבה יותר טוב מאשר C,. מערכים. אז זוכרים כשהיינו מדבר על C, כדי לנו לגדול ולכווץ סטים של מידע, אנחנו צריכים למיין של ברירת מחדל לרעיון הזה של רשימה מקושרת, כי מערכי C היו קבועים בגודל. אנחנו לא יכולים לכווץ אותם. אנחנו לא יכולים לגדל אותם. היה עלינו להקצות מחדש זיכרון ולעשות את כל הטירוף הזה או להשתמש ברשימות מקושרות, ש תופס די מקום קצת יותר. אבל בPHP, מערכים הם לא קבוע בגודל יותר. הם יכולים לגדול והם יכולים להתכווץ. אז שוב, 20 השנים האלה שהיו קיימות בין הגרסה הראשונה של C וPHP הגרסה הראשון, החליט ש, אתה יודע, זה יהיה ממש גדול אם אנחנו יכולים לעשות את זה. וכך אנו מיושמים זה. אז מערכי PHP אינם קבועים ב גודל, וכי PHP לא ממש יש לי פונה לחזית מתכנת מושגים של סוגים, אנחנו יכולים לערבב סוגי נתונים במערכים שלנו, מדי. אז אנחנו אפילו לא צריכים להשתמש בכל מספרים שלמים או כל נקודות הצפות, אנחנו יכולים להיות שילוב של כל סוגים שונים במערך יחיד. הגדרה של מערך הוא די פשוט. זה בדיוק כמו כל משתנה אחר. nums $ = מערך (1, 2, 3, 4), מערך להיות פונקציה שבנה לPHP ש ייצור מערך בשבילך. זה יוצר מערך של ארבעה ערכים, מספרים במקרה זה, הנקראים nums $. ויש יותר מדרך אחת לעשות את זה. ואנחנו הולכים ל רואה את זה הרבה בPHP. PHP פותח על ידי רב ושונה אנשים וגדל וגדל וגדל. יש בדרך כלל לא רק שתיים או שלוש דרכים לעשות משהו ב- PHP, יש בדרך כלל כמו 10 או 20. הנה עוד נפוץ דרך להכריז מערך. nums $ = כיכר תושבת 1, 2, 3, 4. אז זה סוג של דומה לזווית של C br-- סימון סד מתולתל, ולא. $ - או שזה יהיה מרובע nums int סוגריים מסולסל שווים סד 1, 2, 3, 4. ב- PHP זה nums $ = מרובע סוגריים 1, 2, 3, 4. אבל שתי דוגמאות האלה כאן לתת לי מערך של ארבעה מספרים שלמים במקרה זה. מה אם אני רוצה משהו על טקטיקה עכשיו? ובכן, אני יכול רק לומר nums $ 4, ש שוב, אנחנו עדיין לספור מכאן 0 ב- PHP, יהיה החמישי אלמנט של המערך. אני רק יכול לומר ש. אני לא הולך לסבול SEG אשמה, כי המערך שלי הוא פשוט הולך לגדול כדי להכיל את זה. זה די נחמד, נכון? ולמעשה, אני אפילו לא צריך לציין היכן אני רוצה לשים את זה. אני רק יכול להגיד את זה ופשוט טקטיקה זה נכון לסוף, או שאני יכול אפילו רק אומר nums $ 1,000 או 20. זה לא משנה באמת. זה עדיין רק הולך טקטיקה זה נכון לסוף. אז אני יכול לגדול, וas-- אנחנו לא הולך לכסות את זה כאן, אבל אני יכול אחוי או רצועה כמו גם אלמנטים מהמערך, והמערך יתכווץ כדי להתאים שהחלל עכשיו חסר או ריק. יש דרך נוספת לטקטיקה משהו על מערך, אשר היא פונקציה שנקראת array_push. אז שוב, רק הרעיון הזה של להיות מסוגל לעשות הרבה דרכים שונות דברים. אז ראינו שלוש דרכים שונות עכשיו טקטיקת אלמנט נוסף על מערך. אז זה מוסיף אלמנט נוסף בסופו של מערך nums $. ואנחנו יכולים לערבב את סוגי הנתונים שלנו. אז יש לי יכולים מערך של לא 1, 2, 3, 4, אבל 1, אמיתי, 3, 4, שבו אמיתי היא בוליאנית, ולאחר מכן אם אני רוצה טקטיקה על אלמנט אחר למערך זה, אולי מחרוזת, המחרוזת "חמש," אני יכול לעשות את זה. ועכשיו המערך שלי היית להיות 1, אמיתי, 3, 4, חמש. המילה חמש, לא שלם 5. אז הרבה גמישות שיש. הגמישות מקבלת אפילו טוב יותר, אם כי, כי PHP יש תמיכה במשהו נקרא מערך אסוציאטיבי. ואנחנו סוג של מעורפל דיברנו מערכים אסוציאטיביים על בC בהקשר של שולחנות חשיש, כי מה מערכים אסוציאטיביים הם באמת כל על עושים מפתח מיפויי זוג הערך. ובמקרה הזה, אם keys-- אנחנו מכירים את המערכים מC, מקשי מספרי מדד. 0, 1, 2, 3. והערכים הם מה שאנו מוצאים כי מערך 0, מערך 1, מערך 2, וכן הלאה. אז את המפתחות הם אינדקסים, והערכים מה שבמיקום המערך, שצוין על ידי מדד זה. אבל בPHP, אנחנו לא חייבים לעשות את זה רעיון של מערך 0, מערך 1, מערך 2 יותר. כעת אנו יכולים להשתמש במילים בפועל כדי למפות את מפתחות לערכים. ואז אני יכול להגיד משהו כזה. אני יכול ליצור מערך באמצעות תחביר הסוגר מרובע כדלקמן. $ פיצות = הסוגר מרובע "גבינה" ולאחר מכן זה סוג של סימון כפול חץ, 8.99 "פפרוני,", חץ 10.99-- 9.99, וכולי. ואז מה קורה כאן? מה אני עושה בעצם? אני יוצר מיפוי זוג ערך מפתח. אז במקום לומר, למשל, פיצות 0, חלקי 1, 2 פיצות, עכשיו אני יכול לומר פיצות גבינה, פפרוני פיצות, ומתייחס לערכים הקשורים בם. אז הנה המפתחות שלנו בירוק. גבינה, פפרוני, ירקות, עוף באפלו. הנה החץ שגורם מיפוי זה מפתח זוג הערך. ואז כאן הם הערכים במיקום זה מערך. אז זה כמו לומר מערך 0 שווה 8.99. המפתח הוא 0. הערך הוא 8.99. עכשיו אני יכול לומר גבינת מערך, או בזה גבינת פיצות מקרה, גבינה היא המפתח, ומה אני מוצא ב גבינת פיצות היא 8.99. זה הערך שאני מוצא שם. אז אני יכול להגיד דברים כמו. פיצה גבינת $ = 7.99. אומר שיש לי למכירה. אני רוצה dis-- אני רוצה לרדת המחיר של הפיצה הגבינה. או שאני יכול להשתמש בירקות פיצה כחלק ממצב, או שאני יכול להוסיף אלמנט חדש לי מערך, בדיוק כמו שאני יכול לעשות בעבר. אני יכול להוסיף אלמנט חדש לזה מערך אסוציאטיבי עם "הבייקון" המפתח ואת הערך 13.49. אבל זה סוג של מציג בעיה, אם אתה חושב על זה לרגע. איך היינו לחזר באמצעות מערך זה? יָמִינָה? ב C, תהיה לנו רק ללולאה, בדרך כלל, ש היה רץ בין 0 ל גודל של המערך מינוס 1. יש מערך אלמנטי n ב, מדדים תקפים הם 0 עד n מינוס 1. כדי שנוכל להשתמש בלולאה ל צעד דרך כל אלמנט. אבל זה לא באמת המקרה יותר, נכון? עכשיו שבו יש לנו זוג ערך מפתח מיפוי שבו המפתחות הם מילות, איך אנחנו לחזר על כל המילים? ובכן, למרבה המזל, יש PHP דרך להתמודד עם זה יותר מדי, וכך תהיה לנו לקפוץ חזרה ללולאות לשנייה כדי להציג סוג רביעי של לולאה ש קיים בPHP נקרא לולאת foreach. ומה לולאת foreach עושה הוא זה בעצם אותו הרעיון. אתה יכול להשתמש בו לכל סוג של מערך. אבל זה בעצם שלו רעיון כמו ללולאה, מלבד במקום להשתמש מספרי אינדקס, אתה רק יש לי התחביר המוזר הזה שבו אתה קורא כל אלמנט שם למטרות של לולאה זה. אז במקרה הזה, foreach ($ מערך כמפתח $). בעיקרון, כמו שמציין תגובה, בתוך לולאת foreach ש, זה הולך לעבור על כל אחת אלמנט של מערך $, שהוא בדרך כלל הולך להיות מערך אסוציאטיבי, אבל באמת יכול להיות כל סוג של מערך שאתה רוצה ב- PHP. ובכל פעם שב ללולאה שאולי אמר סוגריים מרובעים מערך $ $ אני, אתה יכול פשוט לומר מפתח $. כך שמפתח $ הופך כינוי לכל מדד של מערך PHP האסוציאטיבי שלך, ואז אתה יכול להשתמש בו כמו ש. כך למשל, יש לנו עכשיו יש לנו מערך פיצות. סוג של שתחבתי אותה לפינה שם כדי שנוכל להשתמש בו כדי לעשות דוגמא מהירה. אם אני אומר foreach ($ פיצות כ פיצה $), גם, מה קורה? ובכן, אני הולך לחזר דרך כל אלמנט יחיד של פיצות מערך $, ובכך, אני הולך לקרוא כל אלמנט, כשאני בתוך של הגוף של שללולאה, $ פיצה. אז זה סוג של סטנד-ב, כזכור, שפיצת $ הוא תחליף לאומר סוגריים מרובעים פיצות $ $ אני אם היינו משתמשים ללולאה, שבו אנחנו יכול ללכת מi $ = 0 ל, במקרה זה, $ I = 3. אם לא היה לנו זוגות ערך מפתח כאן, זה יהיה אלמנט 0, 1, 2, 3, והיינו להשתמש ללולאה ללכת פיצות $ 0, פיצות $ 1 פיצות, $ 2, פיצות $ 3. אז עכשיו רק $ פיצה החלפה שלמפתח בודד. אז מה זה הולך להדפיס? אני מדפיס את פיצה $. מה אני הולך למצוא at-- אם אני להדפיס את פיצות $, $ אני? יָמִינָה? אם אני הולך להדפיס את אלמנט ה- i של פיצות, מה אני הולך להדפיס? אני הולך להדפיס את ערכים במיקום זה, נכון? כמו אם אנחנו עושים זה בהקשר של C, אנחנו בדרך כלל לא משתמשים באיטרטור משתנה, int i = 0, היא שפחות מ 3, אני ++, להדפיס 0, 1, 2, 3. אנחנו מדפיסים את מערך 0, מערך 1, מערך 2, 3 מערך. ואז מה זה מדפיס זה. זה הרשימה של מחירים. 8.99, 9.99, 10.99, 11.99. עכשיו הערה מהירה כאן. לולאת foreach לא בהכרח להדפיס את הדברים לפי סדר. זה לא מובטח. זה בדרך כלל עושה. זה בדרך כלל מבוסס על הסדר ב בו אלמנטים נוספים למערך, כל כך פשוט לשאת את זה בחשבון. זה לא יכול להיות במטרה. אבל לולאת foreach תהיה לחזר על פני כל אלמנט של המערך בשאלה. במקרה זה, שוב, מערך שהוא פיצות $. אני יכול לשנות את התחביר, אם כי, אם אני רוצה גם את המפתח והערך. במקום לומר פיצות $ כפיצת $, אני יכול להגיד את זה. ואם אתה מסתכל על מה שיש לי מודגש בירוק כאן, זה נראה כמו מיפוי זוג ערך מפתח. ולכן אם אתם-- אפילו אם אתה לא לגמרי בטוח מה זה הולך לעשות, אתם יכולים לנחש כי תוספת $ הולכת להיות המפתח במקרה זה ו מחיר $ הולך להיות הערך. אז אני מחליף עכשיו כל אלמנט של $ פיצות כזוג ערך מפתח, ועכשיו אני יכול להתייחס למפתח ו הערך, אשר עשוי להיות שימושי, לדוגמא, כדלקמן. "כולה" - זה הרבה הדפסה קורה "שלם" כאן-- ציפוי "פיצה עולה $" מחיר, ולאחר מכן אני להדפיס את התקופה וn קו נטוי. אז עכשיו, הודעה שוב יש לי גישה ל מפתח, תוספת $, וערך, מחיר $. אז אתה יכול לנחש מה זה הולך להדפיס? יש הרבה דוחות הדפסה, אבל יש רק n קו נטוי אחד, כך זה הולך להדפיס משהו ב entire-- בשורה אחת של קוד. אם אני יכול להתייחס למפתח והערך, אז עכשיו, במקום רק להיות מסוגלים להדפיס את המחירים, אני יכול להדפיס את משהו כזה. "פיצה גבינה שלמה עולה 8.99 $." ועכשיו אני משתמש בכל keys-- גבינה, פפרוני, ירקות, תאו chicken-- והערכים. 8.99, 9.99, 10.99, 11.99 אז זה רק בדרך שונה לעשות לולאת foreach שבמקום רק נותן לך גישה לערכים, זה רק נותן לי אתם-- זה נותן לך גישה למפתחות ואת הערכים. אז להדפיס את מידע. אני כבר עשיתי את זה כמה דרכים שונות, שאולי שמתו לב. שתי פונקציות שיש לנו בראש ובראשונה ראה הם הדפסה והד. ועבור פחות או יותר כל דבר ו מטרות, הם בדיוק אותו הדבר. They're-- יש עדין מאוד הבדל זה אפילו לא שווה נכנסתי, אבל בעצם בכל מקום אתה יכול להשתמש בהדפסה אתה כנראה יכול להשתמש הד גם כן. וזה לא רק שני. PHP יש הרבה שונה דרכים להדפיס את הדברים, ויש לה גם דרכים לשלב משתנים לאמצע המחרוזת. אז זוכר מC, לעשות לך זוכר מה פונקציה אנחנו יכולים להשתמש בו כדי להחליף משתנים לדברים שאנחנו רוצים להדפיס את? אתה כנראה להשתמש בזה לתפקד די הרבה. printf, נכון? אז זה מה שהיה לנו לפני בתוך בהקשר של foreach הלולאה שלנו. היו לנו חמישה אלה הצהרות הדפסה נפרדות, כי זה היה רק דרך אני באמת ידעתי באותה העת איך להדפיס את ההודעות. אני לא יודע איך לשלב את משתנה $ תוספת לקוד PHP שלי. ובכן, אם אני פשוט לקחתי ניחוש פרוע, printf, זה באמת היה עובד. printf הוא פונקציה שאני יכול להשתמש ב- PHP, בדיוק כמו שאני יכול להשתמש בו בג וכך משהו כזה, printf, שוב, אנחנו מכירים את זה. % S הראשונה מוחלפת עם הערך של תוספת $. % S השנייה מוחלפת עם הערך של מחיר $. ואז אני שיבוץ, וזה רק דרך מפוארת לומר אני דבק משתנה למיקום זה. אז אני חיבור $ תוספת שבי % s האדומה היא ו% הכחולים של מחיר $ בי הוא, ואז הייתי מקבל את ההודעה, "פיצה גבינה שלמה עולה 8.99 $." לא הדרך היחידה שאני יכול לעשות את זה, אם כי. אולי הייתי רוצה להשתמש בשיטה זו. זהו למעשה מה הנפוץ ביותר נקרא שאילתא משתנה. אני יכול להשתמש בהד. אני יכול להשתמש בהדפסה מדי, כפי שנראה. אבל מה שקורה כאן? קודם כל, יש לי ל לברוח סימן הדולר. כי יזכור, כשהיינו למעשה להדפיס את המחירים של הפיצות, אני למעשה עיצובם כ הנתונים כספיים עם סימן דולר. אבל אנחנו משתמשים בסימני דולר גם לייצג שמות משתנים ב- PHP, ובפרט כשאני שימוש בשיטה זו של מתולתל משתנה סד שיטת שאילתא, אני צריך לברוח סימן הדולר אז זה לא לחשוב על משתנה אני מדבר. זה הולך בעצם, פשוטו כמשמעו להדפיס סימן דולר. אז סוג של להקיש אותו ל מה שאתה רואה בסופו של הדבר. זה לא באמת n לוכסן הדפסה, נכון? היא מדפיסה את אופי קו חדש. זה הוא-- זה לא הולך ל סימן דולר לוכסן הדפסה, זה הולך להדפיס רק אופי סימן דולר. אותו רעיון. בריחה רצפים, מה דברים אלה נקראים. אבל שם לב שאני לא עושה כל סוג של החלפות% s, אני רק ממש חיבור במשתנים אלה. וכך בזה-- מה יקרה כאן הוא שהערך של topping-- $ שוב, רק שמירה עם מה שהיינו מדבר על גבינה כך far-- יקבל מחובר לחשמל לשם. ומחיר $ יהיה מה הערך הוא בפיצות, סוגריים מרובעים, גבינה, שהיה 8.99. וכך זה היה גם להדפיס את "פיצה גבינה שלמה עולה 8.99 $." וכמו שאמרתי, אני יכול להשתמש להדפיס כאן במקום הד, ואת הפונקציונליות להיות פחות או יותר בדיוק אותו הדבר. זה יהיה להדפיס את אותו הדבר. יש דרך נוספת לעשות את זה, וזה יתרון נוסף של PHP עבודה עם מחרוזות. אנחנו יכולים לעשות את שרשור מחרוזת. אנחנו יכולים לעשות את זה ב- C, מדי, באמצעות פונקציה שנקראת strcat, אבל שוב, לא הייתי לנו ל לקרוא לפונקציות נפרדות. זה היה כל הבלגן הזה לעשות. היה עלינו פאונד כוללים string.h. זה היה ייצור, נכון? אבל עכשיו אני יכול פשוט להשתמש במפעיל נקודה זו ללשרשר מחרוזות יחד. אז אני שרשור "שלם" ו אז מה הערך של תוספת $ הוא, ואז עוד מחרוזת, "$ פיצה עלויות" ולאחר מכן שרשור מה הערך של מחיר $ הוא, ואז ממש בסוף אני tacking על n לוכסן תקופה. וכך זה גם היית להדפיס את "כל" - שוב, על הראשון אם אנחנו מדברים אלמנט של שarray-- הפיצות "פיצה גבינה שלמה עולה 8.99 $." התקופה, n הקו הנטוי, שוב, עם תוספת $ והחלפת מחיר $ למה שצוינו בforeach שלנו לולאה כמו מיפוי זוג ערך המפתח. PHP יכול להתמודד עם פונקציות. פונקציות היו סוג של נפרד ל- C, כפי שראינו. כמו משתנים, אנחנו לא צריכים לציין את סוג ההחזרה של הפונקציה, כי זה לא ממש משנה. ואנחנו לא תציינו סוגי נתונים של כל פרמטרים, כי הם לא באמת עניין, כמו שראינו ב- PHP. כל פונקציה הוא הציג עם מילת המפתח הפונקציה. ככה אנחנו מצביעים ל- PHP ש מה שאנחנו מדברים עליו לתפקד. ואנחנו לא צריכים להתמודד עם עיקרי בכל, כי המתורגמן, PHP מתורגמן, עובד מלמעלה למטה, ללא קשר. אם הוא רואה שאתה יכול לעשות קריאה לפונקציה, זה ימצא ללכת למצוא את הקריאה לפונקציה, גם אם זה מגיע מאוחר יותר. אבל זה הולך לקרוא מלמעלה תחתון, ולכן אנחנו לא צריכים לציין, כאן המקום שבו אתה מתחיל. אתה מתחיל בקו 1 שלך PHP ולעבוד אותו משם. אז הנה הוא איך היינו ליצור פונקציה שנקראת hard_square. זה כנראה לוקח אחד פרמטר, שאני מתקשר x $. פונקציה זו היא מסובכת רק כדי להמחיש את הדברים שונים. עדיין יש לנו ערכי החזרה. אני משתמש ללולאה כאן. אבל זה בעצם רק, מה זה מסתכם רק פעמים $ x $ x. מה אני בעצם עושה הוא רק הוספה x 0 x פעמים או x $ לאפס פעמים x $. אבל זה בדיוק בצורה יעילה כמו הכפלת x $ פעמים x $. אני עדיין יכול להחזיר ערך, בתוצאת $ מקרה זה, ועשיתי פונקציה ב- PHP. הנה איך אתה יכול להשתמש בו בהקשר. אז אולי אני פנימי של כמה קבצי PHP. שים לב בכחול יש ש אני השתמשתי מפרידי PHP שלי, הסוגר זווית PHP סימן שאלה. בין אלה הם כל PHP שאני רוצה לכתוב. אז כנראה אני הולך get-- אני הולך להציג למשתמש לתת לי מספר, חנות ש משתנה, חנות שבx משתנה $, כל מה שהם נתנו לי. אז אני הולך להד hard_square של ערך זה, והולך, ככל הנראה, טקטיקה על קו חדש כמו גם, ולאחר מכן בהמשך אני יהיה להגדיר את הפונקציה hard_square כך כי כשאני עושה קורא לhard_square, הוא יודע על מה אני מדבר. עכשיו, אני יכול גם לעשות משהו כזה. זה שונה במקצת. זה כמעט בדיוק אותו דבר כמו מה שראינו בעבר, מלבד במקום לומר רק $ x יש כפרמטר לhard_square, אני אומר $ x = 10. אז זה הוא דוגמה ל תכנות הגנתי, שומר את התוכניות שלך נגד משתמשים זדוניים. זוהי דרך אחת לעשות איזו שגיאה בדיקה שאנחנו לא באמת יש לי כאופציה ב.ג לא יכול ציין את ערך ברירת המחדל של משהו. תמיד היו לנו לבדוק אם, למשל, אם עשיתי שיחה לGetString, זה היה רוב ראוי אם מייד אחרי ש בדק ש, בדקנו אם המחרוזת שהמשתמש נתן לנו אינו שווה ל null, כי אנחנו לא רוצים להתחיל עבודה עם מחרוזת ריקה. כאן, זו דרך כדי להתגונן מפני זה. אם המשתמש אינו מספק לנו משהו איכשהו, מה אנחנו הולכים לעשות? ובכן, אנחנו פשוט להגיד מה ש הם לא מספקים אותנו, אנחנו פשוט הולכים לחבר 10 במקום. אז אם הם לא נתנו לנו ערך, פשוט להשתמש 10 כברירת מחדל. ואז הנה, שם לב שאני עושה קורא לhard_square, אבל אין הנחיה למשתמש, נכון? אני רק עושה שיחה ריקה. אבל hard_square הפונקציה שלי מצפה פרמטר. מה זה הולך להדפיס? זה הולך להדפיס 100, נכון? משום שהמשתמש לא לתת לי שום דבר. ואז אני פשוט הולך להניח ש10-- 10 הוא ערך ברירת המחדל. וכך זה היה להדפיס 100 על קו משלו. אין לי קבצי PHP ל להיות רק קובץ יחיד. ניתן לשלב מספר קבצים יחד, בדיוק כמו שאתה יכול בג הדרך עשינו את זה ב- C היה בדרך כלל לעשות #include לקבל קבצי כותרת משכו ב. אנחנו לא עושים את זה ב- PHP. אנחנו עושים משהו שנקרא require_once. ואז יש את כל זה דבר, מה __dir__ זה? זה פשוט מיוחד משתנה, או קבוע מיוחד, באמת, שמציין את מה ש הספרייה הנוכחית שלך היא. וכך זה הולך להיראות בספרייה הנוכחית שלך לcs50.php קובץ שנקרא בדוגמא זו כאן, וזה הולך להישאר קובץ ש בחלק העליון של תכנית PHP שלך, בהנחה שאתה שם את דורש פעם הקו בחלק העליון של קובץ PHP שלך. אז PHP משמש בעיקר, אבל לא משמש באופן בלעדי, כשפה לתכנות מבוסס אינטרנט. זה באמת איך זה הגיע להיות. אבל זה מלא שפה, כפי שראינו. ראינו די הרבה כל דברים שהוא יכול לעשות את זה דומה ל- C, והוא יכול לעשות לעזאזל של הרבה יותר מזה. אבל בגלל שזה שפה מלאה ו יכול לעשות תכנות שורת הפקודה בזה. אנחנו יכולים להפעיל תוכניות שורת הפקודה. כל מה שנדרש כדי להפעיל פקודה תכנית השורה שכתובה ב- PHP הוא שיש לך מתורגמן PHP. אז זה סוג של אנלוגי ל יש מהדר במערכת שלך אם אתה רוצה לקמפל קוד C שלך להפוך אותו לקבצי הפעלה. אתה צריך מתורגמן PHP שקיים במערכת שלך כך שאתה יכול לפרש את קבצי PHP. בהנחה שאתה עושה, ובדרך כלל פרשן זה נקרא PHP, וזה בדרך כלל יחד עם רוב הורדה או התקנה של PHP שאתה יכול לקבל באינטרנט, ובוודאי שמו של מתורגמן PHP יש לנו בCS50, IDE. כל שעליך לעשות הוא קובץ PHP סוג. ומה התכנית שלך של הולך לעשות הוא זה הולך לרוץ דרך המתורגמן, זה הולך להתעלם מכל מה שזה לא בשאלה בין mark-- או, PHP סימן שאלת הסוגר זווית, מפרידי PHP, ולהדפיס אותו, וזה יהיה לפרש ולבצע את קוד הפנימי של מפרידי PHP שלך. אז בואו נקפוץ לIDE CS50 ו יש להסתכל על כמה קבצי PHP, פועל כמה קבצי PHP, ב ממשק שורת הפקודה של IDE CS50. אז הנה אנחנו בIDE CS50, ואני לקחתי את חירותו פתיחת קובץ בשם hello1.php. וככל הנראה, את התוכן של זה קובץ הוא רק מפרידי PHP יש, ובין לבין, הד ("שלום, עולם"). זוהי תכנית PHP די פשוט. אני רק הולך ללגלול למטה לחלון המסוף שלי כאן, ואני הולך PHP סוג hello1.php, הקש על Enter. שלום עולם. זה כנראה מה שהיינו מצפה לעשות את זה, נכון? בואו נלך ולקחת אחר מסתכל על תכנית. hello2.php. פחות או יותר את אותו הדבר, לא הרבה קורה כאן. הפעם, אם כי, אני הולך לבקש המשתמש לתת לי את השמות שלהם. אני משתמש בפונקצית שreadline שוב. שם $ = readline. זה מהיר, "מה שמך?" כנראה אני הדפסה זה בשורה הנפרדת. ולאחר מכן, כך הקו מתחת שיהיה מהיר שבו המשתמש יכול להזין את שמם. ואז אני משתמש קצת שאילתא משתנה כאן על קו 3 להדפיס "שלום" ו כל מה שהמשתמש המקליד. אז זה דומה לאומר, שלום, פסיק,% s אם היינו משתמשים בprintf בג אז בואו נלך ולפרש תכנית זו. אז שוב, אני לגלול למטה לחלון המסוף שלי. hello2.php PHP. מה שמך? דאג. שלום, דאג. יש לי גם אחר קובץ בשם hello3.php. אני הולך לנקות אותי מסך עם בקרת L, ואני הולך לבצע את זה. מה שמך? דאג. שלום, דאג. אז ההתנהגות זהה ל hello2.php, אבל למה זה hello3.php? ובכן, כאן ההבדל. במקרה זה, הודעה כי בשורה 1 כאן, יש לי משהו שלא בין מפרידי PHP. אני רק הדפסת out-- או אני רק הקלדה, "מה שמך?" כאשר מתורגמן PHP רואה את זה, זה אין לו מושג איך לפרש את זה כמו PHP, וכך, במקום שנכשל, זה רק הולך לירוק אותו. אז שם לב על קו 3 עכשיו, השיחה שלי ל readline, אין הנחיה יותר. אני רק באמת הולך צריכה-- כאשר מתורגמן PHP רואה את זה, זה הולך להדפיס "מה שמך?" אז הוא רואה, אה, בסדר, here's-- כל דבר אחר הולך להיות להתפרש כPHP, כך זו הסיבה שזה עובד. אני לא צריך לבקש בהכרח צריכה-- המשתמשים פנימיים של readline, אני יכול רק צריך את זה בחוץ של מפרידי PHP ולאפשר למתורגמן רק כדי להדפיס את זה בשבילי. אז לא באמת יש לך רק יש קבוצה אחת של מפרידי PHP בתכנית שלך. למעשה אתה יכול לקבל כמה מהם, פתיחה וסגירתם במידת צורך. אז בואו נסתכל בכמה תוכניות בIDE CS50 בנו להמחיש את הרעיון הזה שיש קבוצות מרובות של PHP המופרד. אוקיי, אז אני כבר פתחתי קובץ כאן נקרא add1.php. ושים לב מה קורה כאן. בדיוק כמו קודם, יש לי PHP אחת להגדיר של מפרידים. אני הולך להדפיס את הודעה, "תני לי בבקשה את מספר." אז אני הולך לקרוא שורה ו לאחסן אותו בNUM1 $ משתנה. אז אני הולך להדפיס אותו שוב. תן לי מספר שני. קראו קו מהמשתמש, החנות כל מה שהם הקלידו בNUM2 $. הוסף אותם ביחד ולאחסן ש לגרום למשתנה שנקראת סכום $, ואז להדפיס את, " סכום של שני מספרים אלה הוא, "ולאחר מכן לְהַגִישׁ שְׁאֵלָתָה יש סכום $ משתנה. אז בואו פשוט להפעיל את זה באמצעות המתורגמן כדי לוודא שזה מה שאנחנו מצפים. add1.php PHP. תן לי בבקשה את מספר, 3. תן לי בבקשה את מספר שני, 4. הסכום של שני המספרים הללו הוא 7. זה 3 ועוד 4. אוקיי? אז שום דבר מפואר יש נורא. ועכשיו בואו לפתוח את add2.php. הנה, יש לי זוג של PHP מופרד סטים שם, נכון? קווי 1, 3-- קווים 1 ו 3 אין מפרידי PHP. לכן, כאשר המתורגמן רואה אותם, זה רק הולך לירוק בדיוק מה שהקלדתי שם. אז זה שבו אני עושה את כולי להציג הודעה. על קווים 2 ו -4, אנו רואים מאוד $ מוכרים? סוג של PHP מפרידים, כך שתי שורות אלה הולך לבצע כמו PHP. ואז על קו 5, יש לי את זה דבר מוזר כאן, נכון? הסוגר זווית זו סימן שאלת סימן שוויון. אני אפילו להתקרב קצת יותר. אתה יכול לראות שזה מה שאני מדבר על ממש שם, $ זה? =. מתברר שזה כל כך נפוץ ש הסיבה שאנחנו פותחים את סט של PHP מפרידים הוא להדפיס את ערך. וזה כל מה שאנחנו הולכים לעשות. אבל יש גם קיצור ש. $? = הוא קצרנות PHP לאומרים משהו כמו $? php echo הסכום של NUM1 וNUM2. אז זה סתם עוד קיצור ש. אז אם אני מפעיל תכנית, add2.php PHP זה. אני להתקרב למטה קצת. תן לי בבקשה את מספר, 4. תן לי בבקשה את מספר שני. ומכיוון שלא ממש אכפת לי סוגי נתונים ב- PHP, אני יכול לומר 4.8. הסכום של שני המספרים הללו הוא 8.8. הפונקציה שמתנהגת פחות או יותר בדיוק אותו הדבר כפי שהיינו מצפה, גם כן. ויש לי עוד אחד פתח עד כאן נקרא dice.php. נסה את זה שוב. יש לי כאן עוד אחד בשם dice1.php, שגם ראה, יש ששאלת הסוגר זווית לסמן בסימון סימן שוויון שם, אבל שמתי לב כי במקרה זה אני קורא ראנד הפונקציה, אשר כפי שאתה אפשר לצפות יוצר מספר אקראי. "אתה התגלגל," וזה הולך לחשב כמה מספרים אקראיים, mod 6 + 1. אז שייתן לי את מספר בטווח של 1 עד 6. זכור כי mod 6 היה נותן לי מספר בטווח של 0 עד 5, אבל אם אני מדמה לחמניות קוביות, וזה מה שאני עושה כאן, אני לא רוצה קוביות אלה ללכת מ0 עד 5, אני רוצה קוביות שהולכות 1-6. ואז זה דרך להשיג שלי בטווח של 1 עד 6. אני עושה את זה פעמיים. אז כנראה שאני מתגלגל שתי קוביות בתכנית זו. אז אני לנקות את המסך שלי, ואני אעשה dice1.php PHP. אתה התגלגל 4 ו2. ואם אני מפעיל את התכנית שוב, אתה התגלגל 5 ו5. אז בכל פעם שאני מפעיל את התכנית, אני מקבל מספרים שונים, כי בכל פעם שאני עושה כך, זה מתחיל שוב. זה הולך ליצור חדש קבוצה של מספרים אקראיים עבורי. אז אם אנחנו רגילים ל הפעלת תוכניות מC, אנחנו רגילים להקלדת ./ שם של תכנית, נכון? ככה שעשינו את כל התוכניות שלנו ב- C עד כה. אנחנו יכולים לעשות את זה ב- PHP ו על ידי הוספת משהו שנקרא עֵסֶק לחלק העליון של קובץ PHP שלנו. אני יודע שזה סוג של מילה טיפשית. זה קצר למפץ חשיש. זה שני התווים הראשונים שם. זכור שאנו מכנים סימן קריאה לעתים קרובות מפץ במדעי מחשב. זה גם יכול להיות למפץ חד. יש כמה דרכים לפרש אותו. אבל זה בעצם סוג מיוחד הפיקוד שהמתורגמן PHP מבין כ, הו, אני רוצה לך לבצע תכנית זו, שהוא כנראה / משתמש / bin / php, ש הוא למעשה שם מתורגמן PHP במיוחד גר במערכת שלנו. אז מה קורה כאן הוא-- הוא המתורגמן מבין, הו, אני כנראה אני אמור להשתמש בתכנית זו כדי להפעיל קובץ זה. ואז זה מאפשר לך לדלג על השלב יש לומר של something.php PHP. יש לתפוס אחד אחר כאן, שהוא שאם רוצה התוכניות שלנו ל לעבוד כצפוי, אנחנו צריך לעשות משהו שנקרא שינוי רשות קובץ. ואנחנו go-- ואנחנו מדברים קצת קצת יותר שינויי רשות על קובץ בווידאו שלנו על MVC, אבל די אם אומר שזה מה שאתה צריך לעשות על מנת להפוך אותך הפעלה קבצי .php. אז בואו נסתכל על זה כ בדוגמא שלנו הסופית על בCS50 IDE. אז הנה בIDE יש לי שני קבצים בזה ספריית PHP המופיעים לא להיות נקרא .php. יש לי פונקציה שנקראת add-- יש לי קובץ בשם add3 ונקרא קובץ dice2. אז בואו ניקח מהיר לחפש ולפתוח add3. וכפי שניתן לראות, בתחילת של הקובץ שלי יש לי עֵסֶק זה, נכון? סימן קריאת סימן חשיש זה. עכשיו, אתם גם אולי שמתי לב כי מסיבה כלשהי, אין לי שום תחביר הדגשה יותר, וזה מה שאני שהוזכרתי קודם לכן, שהיה שאם אני לא שם הקובץ שלי .php, אין לי התועלת של הדגשת תחביר יותר. קובץ זה פשוט נקרא add3. כך שאני יכול להפעיל אותו בשלב מאוחר יותר עם ./ add3 ולא ./ add3.php. אז reason-- זה עדיין בסדר, זה עדיין תקף PHP, אבל זה לא תחביר הדגיש, כי קובץ זה אינו נקרא something.php. זה ההבדל האמיתי היחיד כאן, בתוספת החבילה. אז בואו נראה מה קורה כאשר אני מנסה ולהפעיל את התכנית. ./ Add3, בדיוק כמו שהיית עם ג Bash. ./ רשות add3 הכחישה. זה מה שאתה הולך כדי לראות אם אתה שוכח להשתמש בפקודת chmod לשינוי ההרשאות של הקובץ. כפי שמתברר, PHP הרגיל לא יכולים פשוט להיות מוצאים להורג קבצים. הם יכולים להתפרש, אבל אנחנו עושה משהו קצת שונה כאן. אנחנו הרצתו. ואז אני צריך להוסיף את הרשות ביצוע, chmod + x לadd3. אז אני יכול לומר ./ add3. תן לי בבקשה את מספר. 5, 6. הסכום של שני מספרים אלה הוא 11. כמו כן, יש לי כבר chmoded dice2, אז אני יכול פשוט להקליד ./ dice2, אתה התגלגל 1 ו1, התגלגל 5 ו4, וכן הלאה. אז זה פחות או יותר רעיון של תחביר PHP, נכון? יש הרבה לעבור, אני יודע. אבל אני מקווה שראית עכשיו PHP ש הוא לא באמת שונה מC ובאמת נותן לנו את היכולת לקחת את הדברים צעד אחד קדימה או שתיים. אנחנו לא באמת צריכים לדאוג יותר מדי על-- אנחנו לא באמת צריך לדאוג יותר מדי על הפרטים ברמה הנמוכה ש היה לדאוג עם C, נכון? אנו יכולים להתמקד בגבוהים יותר דברים שרמה PHP מאפשר לנו לעשות ולקחת ל מובן מאליו שזה יעבוד בשבילנו. אז זה נותן לנו את היכולת עכשיו, מעבר מ C ל- PHP, כדי להפוך את התוכניות, כי הם הרבה יותר מורכב ואולי הרבה יותר חזק. אז אני מקווה שיש לך עבודה מהנה עם PHP, ואני דאג לויד. זה CS50.