ДАГ Lloyd: Так що ми зроблено багато роботи в C, і С дійсно здорово мову, тому що це дає вам здатність занурюватися насправді низький рівень у ваші програми. Ми отримуємо, щоб робити речі, як дійсно хвилин як маніпулювання окремі байти пам'яті. Нагадаємо, що покажчики насправді дозволяють нам, що гнучкість. Але ми завжди повинні мати що рівень дрібнозерниста деталей в наших програмах? Напевно, ні, не так? І якщо ми будемо мати компроміс між тим, в змозі зробити дійсно, дійсно путівки речі і дійсно, дійсно великі речі, які ми не повинні думати о, ми не повинні реалізувати ці дійсно великі ідеї, якщо вони вже побудували в нас, як правило, для будівництва великої програми або проекти, великі ми, ймовірно, будемо помилятися на стороні в тому більш мову матеріал побудований в для нас, замість того, низькорівневі речі. І ось, коли PHP насправді входить. Тепер, однією з причин що ми вчимо PHP в CS50 є те, що він значною мірою натхненні С. І справді, на мій погляд, Є дійсно двох мови попередники, що дуже поширені в наш час. С і LISP. І вони мовах попередників бо кожен другий сучасного програмування мова, яка розробив з тих пір натхненні один або інший синтаксично. PHP дуже схожий синтаксично С, у той час як мов, таких як Scheme, Наприклад, який Ви, можливо, чули про, в значній мірі натхненні мовою називається LISP, який є старий мову. Так що причина ми вчимо PHP в CS50, що, знаючи C як принципово як ви робите в даний момент, піднімаючи PHP, яка дає Вам здатність робити речі набагато більш високі рівня ніж С робить, що не що багато чого з перешкоду, тому що у вас вже є Основна ідея синтаксису. С була навколо протягом майже 45 років у цій точці. PHP був навколо протягом приблизно 20 років. І в тому, що 25 років між програмістами, Встановлено, що вони будуть набагато а мають більш високі здібності рівня, і помилки і боротьба з 20 років в між призвело до PHP та інших сучасних мов. PHP, великий вибір мова для програмного забезпечення що allow-- для Програмне забезпечення that-- де ви потрібно робити те, що в З фактично складніше. Так, наприклад, працює з рядками в C дуже складна, тому як ми знаємо, в C рядків дійсно просто масиви символів. Це не є вбудованим в тип даних. Або, можливо, більш важливо, те, що ми навіть не покривають в C, що, якщо вам потрібно зробити, деякі комп'ютерні мережі? Все в порядку? С має здатність робити це, але це так таємницею і так важко насправді. Не було б непогано, якби Мова був побудований в легкий шлях, здійснити мереж? І PHP є мовою, яка робить, що або полегшує, що зовсім трохи більше. Як я вже сказав, PHP дуже сильно надихнули по С. синтаксис дуже схожий. І так, будемо сподіватися, зробити Перехід від одного до іншого трохи м'якше, ніж деякі інші мови може бути. Щоб почати писати PHP, просто відкрийте файл з розширенням .php файлів. Технічно це не насправді потрібно, але якщо ви хочете щось на зразок синтаксису виділяючи в IDE, так що типу імена, або імена змінних, функції, Ви знаєте, ключові слова мови виділені в певний колір, ви, як правило хочу називати свої файли з конкретний файл з розширенням. Так ми назвали наш файл з .php розширення, але потім також з PHP, всі PHP код ми пишемо, що Файл повинен бути укладений у цих PHP роздільники, які ми бачимо Тут на екрані. Куточок? PHP, щоб почати. Тоді ми пишемо всі наші PHP код, який ми хочемо між ними. І потім ? дужка, щоб закрити. Якщо ми не зробимо цього, то що станеться? Це не збирається до краху. Це не збирається дійсно зруйнувати нашу програму. Але це не буде мати ефект, який ми хочемо. Що станеться, дійсно, що, коли ми намагаємося запустити цю програму, все, що не між цими роздільниками збирається бути роздруковані дослівно. Це не збирається насправді виконати код, це буде просто роздрукувати його дослівно. Тепер, чому це відбувається? Так С, що відомо як скомпільований мовою. Ви, напевно, знайомі з крок робить ваші програми, перетворюючи .c файли і файли .h в один виконуваний файл з маркам, зокрема, за допомогою Clang в якості нашого компілятора. PHP, хоча, чи не Тобто цей еквівалент. PHP є те, що називається інтерпретована мова. І що це означає? Ну, це означає, що ми не повинні перетворити наш вихідний код нулів і одиниць заздалегідь. Швидше за все, є програма, який також називають PHP, який розуміє PHP і можете сортувати зробити це на льоту. Це насправді не зовсім точні, але це досить хороша аналогія що відбувається. Це ті, інтерпретації нулів і одиниць на льоту. І тому, якщо він не знає, як обробляти щось, якщо він не знає, як Процес PHP, ви, ймовірно, хотів поставити, що текст там, вірно? Ви, напевно, хотіли поставити код в там, навіть якщо це не між PHP-- PHP-роздільники. Но-- так він не збирається щоб видалити його для вас, це просто буде в основному відкинути його. Так що це в друк це, щоб на екрані. Це здається, що це погана річ, але насправді це буде дійсно хороша річ, як ми будемо бачити, коли ми говоримо про Веб-розробки PHP, тому що це означає, що ми можемо пересипати PHP і HTML. Ми можемо використовувати їх разом, щоб створити більш динамічний веб-сторінки. Але про це в відео з веб-розробки PHP. Так що синтаксис PHP? Це те, що це відео є все о. Давайте поговоримо про це. Таким чином, щоб почати, змінні. Існують PHP змінні. Є тільки два великі відмінності від С. По-перше, є немає тип специфікатор. Ми не повинні говорити Int, символ, поплавок, і таке інше. Ми не повинні цього робити. PHP це сучасна мова. Це може з'ясувати, що ви намагаються робити кращий думаю, щоб те, що ви намагаєтеся зробити. Так що це досить приємно. Інша справа, що всі змінні Імена повинні почати зі знака долара. Це просто щось, щоб звикнути до. Це трохи дивно, бо це так, що PHP може зрозуміти що змінну, а що ні. Таким чином, кожен ім'я змінної починається з знака долара. Таким чином, в C ми могли б сказати щось як це, INT х = 54. Ми не повинні цього робити в PHP. Ми можемо тільки сказати, $ х = 54. І ми могли б сказати, наприклад, в C, якби ми фунт-включав .h CS50 Файл заголовка, можна сказати, Рядок фраза = "Це CS50." Ми не повинні робити це в PHP, хоча. Ми можемо тільки сказати, $ фразу = "Це CS50." І справді, рядок тепер вбудований тип даних у PHP, або, скоріше, PHP розуміє те, що рядок є. Це окремий з масиву символів, як це в С Всі ваші улюблені умовні заяви C раніше доступні для використання. Так що немає великої перехід є. Ми можемо say-- ми можемо мати якщо заяви, як це. якщо у $ 43, або $ г = 15. Так що це досить просто. Ми можемо мати, якщо і ще. Ми можемо мати, якщо і ще якщо. І зверніть увагу, щось дуже приємно тут, і це є свого роду один з тих Переваги PHP в порівнянні з C, повідомлення які функції ми тут не використовуєте? Ми використовуємо == для порівняння Мінлива, ім'я $, в рядок. Ми не могли зробити це в C, вірно? Ми повинні були використовувати функцію з ім'ям StrComp або StrEndComp або будь з пов'язаних з двоюрідними братами. І так, ми вже бачимо ці переваги. Ми не повинні робити щось так само безглуздо, або, можливо, неінтуітівнимі а викликати функцію під назвою StrComp якщо я просто хочу, щоб перевірити чи дорівнює значення рядка. Я міг би просто використовувати дорівнює рівних, як я міг би зробити що-небудь ще. Так що перевага. Іноді, до речі, ви можете см, якщо ще в одне слово, ElseIf. І це нормально в PHP, а також. Так що іноді ви можете побачити, що. Це не помилка. PHP насправді розуміє, ElseIf. Я не знаю, чому вони вирішив здійснити це, але, як ми бачили багато разів протягом всієї нашої відео досі, ми програмісти люблять його, якщо ми можемо зробити все швидко, так, щоб позбутися від цього простору мабуть, є великою перевагою. Так от, якщо і ElseIf. У нас також є потрійний оператор, відгук знак питання товстої кишки, для дійсно короткій формі, якщо ще або умовне розгалуження. І, мабуть, в тому, те, що ми намагаємося зробити тут це призначити змінну $ Лист або істинним, або хибним, в залежності від того вар $ алфавітний символ. Так що це дуже схоже на IsAlpha що ми знайомі з С. Це свого роду еквівалент в PHP. Функція мабуть, називається ctype_alpha, але це, як ми робимо це в PHP. Так що все це буде в тому, якщо $ Var цей лист, лист $ вірно. Якщо $ Var не листи, $ Лист є хибним. У нас також є перемикач заяви ще. Нагадаємо, тих, від С, а також. На самому верху там, це, як ми робимо щось на зразок Get INT або отримати рядок. Отже, PHP має, що побудований в. Ми не повинні бібліотеку CS50 більше. Ми можемо просто використовувати функцію Readline. Те, що це збирається зробити, це роздрукувати з повідомлення, "Ваш держава, будь ласка ", а потім блимає рядок чекає введення користувачем деяка інформація. Тепер зверніть увагу, що ще ми можемо зробити з вимикачем. Якщо ви використовували його раніше, Ви можете згадати, що перемикач обмежується досить багато цілих чисел і символи, але тепер ми можемо використовувати рядка. І справді, перехід собі в PHP зовсім трохи більш гнучким ніж його двоюрідний брат з С Петлі. Так само, як умовні, все Ваші старі фаворити все ще там. У нас є в той час як петлі, розраховувати від 1 до 100 в цьому випадку. Ми в той час як петлі робити що рахувати від 1 до 100, і у нас є для петель що рахувати від 1 до 100. Так що немає великий стрибок там. Синтаксис досить багато точно так само, тільки тепер ми використовуємо Мінлива знак долара замість декларування цілочисельних змінних або щось подібне для наших прилавках. Ось де все стає набагато краще, ніж C, хоча. Масиви. Так пам'ятаю, коли ми були говорити про С, для того, для нас, щоб рости і скорочуватися набори інформації, нам потрібно відсортувати дефолту до цієї ідеї пов'язаного списку, бо C масиви фіксованого розміру. Ми не могли зменшити їх. Ми не могли вирощувати їх. Нам довелося перерозподілити пам'ять і робити все це безумство або використовувати зв'язані списки, які взяти трохи більше простору. Але в PHP, масиви не фіксували розмір більше. Вони можуть рости, і вони можуть скорочуватися. Отже, ще раз, ці 20 років, що існує між першим випуском З і перший випуск PHP, ми вирішили, що, знаєте, це було б дійсно здорово якби ми могли зробити це. І так ми реалізували це. Так PHP масиву не фіксується в розмір, і тому, що PHP насправді не є програміст передню обліцовку- Поняття типів, ми можемо змішати типи даних в наших масивах, теж. Таким чином, ми навіть не повинні використовувати всі цілі або все плаваючі точки, ми можемо мати поєднання всіх різні види в одному масиві. Оголошення масиву досить проста. Це просто, як і будь-який інший змінної. $ НУМС = масив (1, 2, 3, 4), масив є функцією що вбудований в PHP, що створить масив для вас. Це створює масив з чотирьох значень, Цифри в цьому випадку, називають $ Nums. І є більш ніж один спосіб зробити це. І ми збираємося побачити це багато в PHP. PHP був розроблений багато різних люди і росте і росте і росте. Там, як правило, не тільки два або три способи зробити щось в PHP, там, як правило, як 10 або 20. Ось тільки ще один загальний спосіб оголосити масив. $ НУМС = квадратних дужок 1, 2, 3, 4. Так що це свого роду схожі на кут С в br-- кучеряве позначення дужки, а. $ - або це буде INT НУМС площі Кронштейни дорівнює фігурну дужку 1, 2, 3, 4. У PHP це $ НУМС = квадрат Кронштейни 1, 2, 3, 4. Але й з цих прикладів тут дають мені масив з чотирьох осіб в цьому випадку цілих чисел. Що робити, якщо я хочу щось лавірувати зараз? Ну що я можу тільки сказати, $ НУМС 4, знову ж таки, ми все ще рахуючи від 0 тут в PHP, буде п'ятий елемент масиву. Я можу тільки сказати, що. Я не збираюся страждати SEG вина, тому що мій масив тільки буде рости, щоб пристосувати це. Це досить приємно, правда? І справді, я навіть не потрібно вказати, де я хочу, щоб покласти його. Я можу тільки сказати, це і просто лавірувати це право до кінця, або я міг навіть просто скажімо, $ 20 або Nums тисячі. Це дійсно не має значення. Це ще тільки збирається лавірувати це право до кінця. Так що я можу рости, і ми 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. Масив має п елементів у в, то Допустимі індекси від 0 до N мінус 1. Таким чином, ми могли б використовувати цикл для крок через кожен одного елемента. Але це насправді не так більше, чи не так? Тепер, коли у нас є ключ значення пари відображення, де ключі слова, як ми перебрати всі слова? Ну, на щастя, є PHP спосіб впоратися з цим теж, і тому ми будемо стрибати назад щоб петлі на секунду ввести четвертий вид петлі, існує в PHP називається цикл по кожному елементу. І те, що цикл по кожному елементу робить це в основному та ж ідея. Ви можете використовувати його для будь-якого виду масиву. Але це в основному Та ж ідея, як цикл, крім замість індексні, ви просто є цей дивний синтаксис де Ви називаєте кожен елемент ім'я для цілей цього циклу. Таким чином, в цьому випадку, Еогеасп ($ масив, як $ ключ). В принципі, в тому, що коментар нот, всередині цього цикл по кожному елементу, він збирається перейти кожна елемент масиву $, який, як правило буде асоціативним масивом, але дійсно може бути будь-який вид масиву що ви хочете в PHP. І кожен раз, що в для циклу ви могли сказав $ масиву в квадратних дужках $ Я, ви могли б просто сказати $ ключ. Так що $ ключ стає псевдонім кожен Індекс вашого PHP асоціативний масив, і тому ви можете використовувати його як що. Так, наприклад, ми в Тепер отримали наш піци масив. Я начебто засунув його в кутку так що ми можемо використовувати його, щоб зробити швидкий приклад. Якщо я кажу, Foreach ($ піци як $ Піци), ну, що ж відбувається? Ну, я збираюся перебору кожен один елемент масиву $ піци, і таким чином, я збираюсь подзвонити кожен елемент, коли я всередині тіла, що для циклу, $ піцу. Так от роду стояти в, нагадаємо, що $ піци є заступником для кажучи $ Піца квадратні дужки $ I якби ми використовували для циклу, де ми може йти від $ = 0, щоб в цьому випадку, $ Я = 3. Якщо у нас не було пари ключ-значення Тут, це було б елементом 0, 1, 2, 3, і ми хотіли б використовувати для циклу, щоб піти $ Піци 0, $ 1 піца, піца $ 2, $ Піци 3. Так що тепер тільки $ піца підставляючи для цього окремого ключа. Так що це збирається друкувати? Я друкую $ піцу. Що я збираюся знайти at-- якщо я роздрукувати $ піцу, $ я? Вірно? Якщо я збираюся роздрукувати й елемент піци, що я буду друкувати? Я збираюся роздрукувати Значення в цьому місці, вірно? Подібно до цього, якщо ми робили це в контексті C, ми зазвичай не використовують наш итератор Змінна, INT = 0, я менше, ніж 3, я ++, роздрукувати 0, 1, 2, 3. Ми друкуємо з масиву 0, Масив 1, Масив 2, 3 масив. І так, що це виводить це. Це список цін. 8.99, 9.99, 10.99, 11.99. Тепер невелике зауваження тут. Цикл по кожному елементу не обов'язково роздрукувати речі в порядку. Це не гарантовано. Це зазвичай робить. Це, як правило, на підставі наказу в які елементи будуть додані в масив, так що просто майте це на увазі. Це не може бути в порядку. Але цикл по кожному елементу буде повторювати по кожній елемента масиву в питанні. У цьому випадку, знову ж таки, що масив $ піци. Я можу змінити синтаксис, хоча, якщо Хочу ключ і значення. Замість того щоб сказати $ піци а $ піци, я можу сказати, що це. І якщо ви подивитеся на те, що я виділені зеленим кольором тут, це виглядає як ключовий відображення значення пар. І тому, якщо you--, навіть якщо ви не зовсім впевнений, що це буде робити, Ви можете здогадатися, що $ доліва збирається щоб стати ключовим у даному випадку і $ Ціна буде значення. Так що я в даний час заміни кожен елемент з $ піци як ключової пари значень, і тепер я можу звернутися до ключа і значення, які могли б знадобитися, наприклад, наступним чином. "Цілий" - це багато друк відбувається here-- "в цілому" доліва "піца коштує $" ціну, а потім Я роздрукувати період і зворотної косої п. Так що тепер, повідомлення знову у мене є доступ до ключ, $ доліва, а значення, $ ціна. Так ви можете здогадатися, що це буде роздрукувати? Там дуже багато друкованих заяв, але є тільки один зворотний слеш п, так що це надрукувати що-небудь на entire-- на одному рядку коду. Якщо я можу звернутися до ключа і значення, то тепер, а не просто бути в змозі роздрукувати цін, Я можу надрукувати щось на зразок цього. "Цілий піца сир коштує $ 8,99." А тепер я використовую всі keys-- сир, пепероні, овочі, буйвол chicken-- і значення. 8.99, 9.99, 10.99, 11.99 Так це просто інший спосіб зробити цикл по кожному елементу, що замість просто дати вам доступ до значень, він просто дає you-- це дає вам Доступ до ключів і значень. Так роздруківки інформації. Я вже зробив це пару різні способи, ви, можливо, помітили. Ці дві функції, насамперед, ми в бачив у пресі і луна. А для майже всіх намірів і Мети, вони точно так само. They're-- є дуже тонка Різниця, що навіть не варто потрапити в, але в основному скрізь Ви можете використовувати печатку можна, ймовірно, використовувати відлуння, а також. І це не тільки два. PHP має багато різних способу друку речі, а також має можливості інтеграції Змінні в середині рядка. Так, пам'ятаєте з C, ти пам'ятайте, що функція ми можемо використовувати, щоб замінити змінні в те, що ми хочемо, щоб роздрукувати? Ви, напевно, використовувати це функціонувати досить багато. Printf, вірно? Так що це те, що ми мали до всередині в контексті нашої цикл по кожному елементу. Ми мали ці п'ять окремі висловлювання друку, тому що це був єдиний як я насправді знав у той час як роздрукувати повідомлення. Я не знаю, як інтегрувати Змінна $ доліва в моїй PHP коду. Ну, якщо я просто взяв диких здогадатися, Printf, насправді працював би. Printf є функцією що я можу використовувати в PHP, як я можу використовувати його в С. І так-то, як це, Printf, знову, ми знайомі з цим. Перший% s замінюється зі значенням $ чолі. Другий% s замінюється зі значенням $ ціною. І тому я interpellating, яка є просто химерний спосіб сказати, що я вставляти змінні в цьому місці. Так що я підключення $ доліва, де червоний% s є і $ ціна, де синій% s є, і тоді я хотів би отримати повідомлення, "Цілий піца сир коштує $ 8,99." Не тільки так я можу це зробити, хоча. Може бути, я хотів би використовувати цей метод. Це насправді те, що найбільш часто називається змінна запит. Я можу використовувати луна. Я міг би використовувати печатку теж, як ми побачимо. Але що тут відбувається? Перш за все, я повинен уникнути знак долара. Тому що пам'ятаю, коли ми були насправді роздрукувати ціни піци, Я насправді форматування їх грошові показники зі знаком долара. Але ми використовуємо знаки долара також представляти імена змінних в PHP, і, зокрема, коли я за допомогою цього методу у фігурних Мінлива дужка Метод запит, мені потрібно щоб уникнути моєї знак долара так що це не думаю, що я говорю про змінної. Це насправді відбувається, щоб, буквально надрукувати знак долара. Так начебто аналогію його Ви бачите в кінці там. Це насправді не друк зворотний слеш н, вірно? Це друкує символ нового рядка. Це is-- це не збирається друк знак зворотної косої долар, це буде просто роздрукувати знак долара знак. Та ж сама ідея. Втеча послідовності, те, що ці речі називаються. Але зауважте, що я не роблю будь-який вид% S замін, Я просто буквально затикати У цих змінних. І так в this-- що трапиться тут є те, що вартість $ topping-- знову, просто відповідає тому, що ми були йде про так far-- сиру б отримати підключений там. І $ ціна буде все значення на піцу, квадратні дужки, сир, який був 8,99. І так це було також роздрукувати "Цілий піца сир коштує $ 8,99." І як я вже сказав, я міг би використовувати роздрукувати тут замість відлуння, і функціональність бути в значній мірі те ж саме. Було б роздрукувати те ж саме. Там ще один спосіб зробити це, і це є ще однією перевагою РНР роботи з рядками. Ми можемо зробити конкатенацію. Ми могли б зробити це в C, теж, використовуючи функцію, звану strcat, але знову ж, ми повинні були викликати окремі функції. Це був весь цей безлад, щоб зробити. Нам довелося фунт-включають string.h. Це було виробництво, вірно? Але тепер я можу просто використовувати цей оператор точка для об'єднання рядків разом. Так що я об'єднанням "в цілому" і то все значення $ розворотних є а потім ще Рядок, "витрати піци $" а потім об'єднання незалежно значення $ ціною, а потім у самому кінці я лавіруючи на період зворотної косої п. І так це було також роздрукувати "в цілому", - ще раз, якщо ми говоримо про першу елемент цієї піци array-- "Цілий піца сир коштує $ 8,99." Період, зворотний слеш п, знову ж таки, з $ Доліва і $ ціна замінюючий за те, що ми зазначено в нашому Еогеасп цикл в якості ключової відображення значення пар. PHP може обробляти функції. Функції були свого роду невід'ємною C, як ми бачили. Як змінних, ми не повинні вказати тип повертається функцією, бо це насправді не має значення. І ми не вказати Типи даних параметрів, або тому що вони насправді не Справа, як ми бачили в PHP. Кожна функція вводиться з функцією ключове слово. Ось як ми вказати виклику, які те, що ми говоримо про функції. І ми не повинні справу з головним взагалі, бо інтерпретатор, PHP перекладач, працює зверху вниз, незалежно. Якщо бачить, що ви можете зробити виклик функції, то це піти знайти виклик функції, навіть якщо це приходить пізніше. Але це буде читати зверху знизу, таким чином, ми не повинні вказати, ось де ви починаєте. Ви починаєте на лінії 1 Ваш PHP і працювати звідти вниз. Так от, як би ми створити функція називається hard_square. Це, мабуть займає одне параметр, який я дзвоню $ х. Ця функція ускладнюється тільки щоб проілюструвати різні речі. У нас ще є повернені значення. Я використовую для циклу тут. Але це в основному просто, що це складає всього $ х разів $ х. Те, що я насправді робить, просто додавши х до 0 х разів, або $ х $ до нуля х разів. Але це ефективно саме так само, як множення $ х разів $ х. Я досі може повертати значення, в цьому випадку $ результаті і я зробив функцію в PHP. Ось як ви можете використовувати його в контексті. Так, може бути, я усередині деякого PHP-файл. Зверніть увагу, в синьому, що там Я використав мої PHP роздільники, дужка знак питання PHP. Тим часом, всі з РНР, що я хочу писати. Так що я, мабуть, збирається get-- Я збираюся запропонувати користувачеві щоб дати мені номер, магазин, Змінна, магазин в цьому змінної $ х, все, що вони мені дали. Тоді я йду до відлуння hard_square цього значення, мабуть, відбувається і лавірувати на новій лінії а також, а потім я тобі Визначимо функцію hard_square так що, коли я зробити щоб подзвонити в hard_square, це знає, що я говорю. Тепер, я міг би також зробити щось на зразок цього. Це трохи відрізняється. Це майже точно так само, як те, що ми бачили раніше, крім замість того щоб сказати всього $ х там, як параметр hard_square, Я говорю $ х = 10. Таким чином, це є прикладом захисне програмування, охоронні свої програми проти зловмисників. Це один із способів, щоб зробити деякі помилки перевірка, що ми дійсно не є в якості опції в С. Ми ніколи не міг задати значення за замовчуванням щось. Ми завжди повинні були перевірити Чи, наприклад, якщо ми зробили виклик GetString, це було Найбільш правильним, якщо відразу після перевірив, що ми перевірили Чи рядки що користувач дав нам не дорівнює нулю, тому що ми не хочемо, щоб почати роботи з порожнім рядком. Тут це спосіб щоб охороняти проти цього. Якщо користувач не забезпечує нам щось те, що ми збираємося робити? Ну, ми просто сказати все, що вони не дають нам, ми тільки збираємося підключити 10, а. Так що, якщо вони не дають нам значення, просто використовувати за замовчуванням 10. І ось, зауважити, що я роблю зателефонуйте щоб hard_square, але немає швидке для користувача, чи не так? Я просто зробити порожній виклик. Але моя функція hard_square очікує параметр. Що це буде роздрукувати? Це відбувається, щоб роздрукувати 100, вірно? Оскільки користувач не зробив дати мені що-небудь. І тому я просто хочу, щоб припустити, що 10-- 10 Значення за замовчуванням. І так це було надрукувати з 100 на окремому рядку. PHP файли не повинні бути тільки один файл. Ви можете об'єднати декілька файлів разом, просто, як ви можете в C. шлях ми зробили це в C був, як правило, щоб зробити #include, щоб отримати файли заголовків витягнув в. Ми не робимо, що в PHP. Ми робимо те, що називається require_once. А тут ще вся ця річ, що це __dir__? Ось тільки спеціальна змінної або спеціальна константа, дійсно, що вказує, що Ваш поточний каталог. І так буде виглядати в поточному каталозі для файлової називається cs50.php в цьому прикладі тут, і це буде дотримуватися цей файл у верхній частині вашої програми PHP, за умови, що ставиш вимагають коли лінії у верхній частині вашого PHP файлу. Отже, PHP в основному використовується, але не виключно, використовується, як мова для веб-програмування. Це дійсно, як він прийшов, щоб бути. Але це повний мова, як ми вже бачили. Ми бачили досить багато всі речі що він може зробити це, аналогічні C, і це може зробити чертовски набагато більше, ніж це. Але тому, що це повноцінна мова, і ми можна зробити командний рядок програмування в ньому. Ми можемо запускати програми командного рядка. Все, що потрібно, щоб запустити команду Лінія програма, яка написана в PHP є те, що у вас є РНР. Так що це свого роду аналогом маючи компілятор на вашій системі якщо ви хочете, щоб скомпілювати C код щоб перетворити його в виконуваних файлах. Ви повинні мати перекладача PHP що існує на вашій системі так що ви можете інтерпретувати PHP файлів. Припускаючи, що ви, як правило, і Цей інтерпретатор називають PHP, і це, як правило, в комплекті з найбільш завантаження або установки PHP що ви можете отримати на сайті, і, звичайно, ім'я перекладача PHP ми маємо в CS50, IDE. Все, що вам зробити, це ввести PHP файлів. І те, що ваша програма-х збираюся зробити, це це збирається запустити через перекладач, це збирається ігнорувати все, що не між питання mark-- або дужка знак питання PHP, PHP-роздільники, і роздрукувати його, і буде інтерпретувати і виконати Код усередині ваших PHP роздільників. Отже, давайте поп до CS50 IDE і подивіться на пару PHP файлів, працює пару PHP файлів, в інтерфейс командного рядка з CS50 IDE. Так ось ми в CS50 IDE, і я взяв на себе сміливість відкриття файлу під назвою hello1.php. І, мабуть, вміст цього Файл є тільки PHP роздільники там, і між ними, відлуння ("привіт, мир"). Це досить проста програма PHP. Я просто хочу, щоб прокрутити вниз на мій вікні терміналу тут, і я збираюся ввести PHP hello1.php, натисніть Enter. Привіт Світ. Це, ймовірно, те, що ми були сподіваючись, що це зробити, вірно? Давайте і прийняти Ще один погляд на програму. hello2.php. В значній мірі те ж саме, не багато тут відбувається. На цей раз, хоча, я йду, щоб спонукати користувач, щоб дати мені їхні імена. Я ще раз, використовуючи цю функцію Readline. $ Назва = Readline. Це швидке, "Як тебе звати?" Мабуть я друк це за своєю власною лінії. А потім, так що лінія нижче що буде швидке де користувач може ввести своє ім'я. І тоді я використовую трохи Мінлива запит тут на 3 лінії роздрукувати "привіт" і всі типи користувачів. Таким чином, це аналогічно кажучи, Привіт, Кома,% s, якщо ми з допомогою Printf в С. Так що давайте йти і інтерпретувати цю програму. Отже, ще раз, я перейдіть вниз на мій вікні терміналу. PHP hello2.php. Як вас звати? Дуг. Привіт, Дуг. У мене також є ще один Файл називається hello3.php. Я збираюся очистити екран з керуванням L, і я збираюся виконати це. Як вас звати? Дуг. Привіт, Дуг. Таким чином, поведінка ідентично hello2.php, але чому це hello3.php? Ну, ось в чому різниця. У цьому випадку повідомлення що в рядку 1 тут, У мене є те, що не в період між PHP роздільників. Я просто друк out-- або я тільки що ввели, "Як тебе звати?" Коли інтерпретатор PHP бачить це, його поняття не має, як інтерпретувати його як PHP, і тому замість того, невдачу, це просто буде виплюнути. Так помітити в рядку 3 зараз, мій заклик до Readline, немає швидке більше. Я просто насправді відбувається, коли, метою яких РНР бачить це, це буде роздрукувати "Як вас звати?" Потім він бачить, о, добре, here's-- все інше буде інтерпретується як PHP, так Ось чому це працює. Я не обов'язково підкажуть користувач, метою яких всередині Readline, Я можу просто його межами з PHP роздільників і дозволяють інтерпретатор просто роздрукувати його для мене. Таким чином, ви насправді не тільки мати один набір PHP роздільників у вашій програмі. Ви насправді може мати декілька з них, відкриття і закриття їх у міру необхідності. Отже, давайте поглянемо на пару програм в CS50 IDE, де ми проілюструвати цю ідею проведення кілька комплектів обмеженою PHP. ОК, так що я відкрив файл тут називається add1.php. І зауважте, що тут відбувається. Як і раніше, у мене є одна PHP набір роздільників. Я збираюся роздрукувати повідомлення, "Будь ласка, дайте мені номер." Тоді я йду читати рядок і зберігати його в змінній $ num1. Тоді я йду, щоб роздрукувати ще раз. Дайте мені другий номер. Читайте лінію від користувача, магазин що вони ввели в в $ num2. Додайте їх разом і зберігати, що привести в змінній $ сума, а потім роздрукувати, "Про сума цих двох чисел є ", а потім інтерпелліровать є змінна $ сума. Так що давайте просто запустити цю через перекладача щоб підтвердити, що це те, що ми очікуємо. PHP add1.php. Будь ласка, дайте мені номер, 3. Будь ласка, дайте мені другий номер, 4. Сума цих двох чисел 7. Ось 3 плюс 4. ДОБРЕ? Так нічого не страшно фантазії є. А тепер давайте відкриємо add2.php. Тут я отримав пару PHP роздільниками набори є, вірно? Лінії 1, 3-- лінії 1 і 3 немає PHP роздільники. Тому, коли перекладач бачить їх, це просто збирається плювати точно те, що я набрав там вже. Так от, де я робити всі мої підказки. На лінії 2 і 4, ми бачимо, що дуже знайомі $? PHP роду обмежувачів, так що ці дві лінії буде виконувати, як PHP. І тоді на лінії 5, у мене є це дивна річ прямо тут, прямо? Цей кут кронштейн Знак питання знак рівності. Я навіть збільшити трохи далі. Ви можете бачити, що це те, що я говорити про прямо, це $? =. Виявляється, що це так часто, що причиною того, що ми відкриваємо набір PHP роздільники, щоб роздрукувати значення. І це все, що ми збираємося робити. Але навіть скорочення для цього. $? = Поза PHP скорочення для кажучи щось на зразок $? PHP Ехо сума з num1 і num2. Так що це просто ще один обраховувати для цього. Так що, якщо я запускаю цю програму, PHP add2.php. Я масштабу вниз небагато. Будь ласка, дайте мені номер, 4. Будь ласка, дайте мені другий номер. А так як я насправді не хвилює типи даних в PHP, я можу сказати, 4.8. Сума цих двох чисел становить 8,8. Ця функція поводиться досить багато точно так само, як і слід було очікувати, так само. І в мене є ще один відкритий тут називається dice.php. Спробуйте це знову. У мене є ще один тут називається dice1.php, який також, бачите, має той кут кронштейн питання помітити рівні позначення знак там, але зверніть увагу, що в цьому випадку я виклику функції рандів, які, як вам б очікувати генерує випадкове число. "Ви викинув", і це буде розрахувати деякий випадковий номер, мод 6 + 1. Так що дасть мені номер в діапазоні від 1 до 6. Пам'ятайте, що мод 6 дасть мені число в діапазоні від 0 до 5, але якщо я імітації кістки рулони, що те, що я тут роблю, Я не хочу, щоб ці кістки, щоб перейти від 0 5, я хочу, кістки, які йдуть від 1 до 6. І так це спосіб отримати мені в діапазоні від 1 до 6. Я роблю це в два рази. Таким чином, очевидно я прокатки дві кістки в цій програмі. Так що я буду очистити екран, і я зроблю PHP dice1.php. Ви згорнув 4 і 2. І якщо я запускаю програму знову, ви прокату 5 і 5. Таким чином, кожен раз, коли я запустити програму, Я отримую різні номери, тому що кожного разу, коли я так, він починає знову. Це буде генерувати новий набір випадкових чисел для мене. Так що, якщо ми звикли до запускати програми з C, ми звикли набирати ./ назва програми, вірно? Ось як ми зробили все наші програми в C цих пір. Ми можемо зробити це в PHP, а також додавши те, що називається притон до початку нашого PHP-файл. Я знаю, що це свого роду дурні слова. Це скорочення хеш вибуху. Це перші два символи є. Пам'ятайте, що ми називаємо знак оклику часто чубок в інформатиці. Вона також може бути різкого вибуху. Там є пара способів інтерпретації його. Але це в основному особливий вид команди, що РНР розуміє, як, ну, я хочу Вам виконати цю програму, мабуть, / користувач / бен / PHP, який насправді, де РНР спеціально живе в нашій системі. Так it's--, що тут відбувається, інтерпретатор розуміє, про, Я, мабуть, передбачається використовувати в цій програмі, щоб запустити цей файл. І оскільки дозволяє пропустити крок того, щоб сказати, PHP something.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 а + х до add3. Тоді я можу сказати ./ add3. Будь ласка, дайте мені номер. 5, 6. Сума цих двох чисел 11. Точно так само, я вже права зміненими dice2, так що я можу просто наберіть ./ dice2, Ви згорнув 1 і 1, ви прокат 5 і 4, і так далі. Так от в значній мірі Ідея синтаксису PHP, вірно? Там дуже багато, щоб пройти, я знаю. Але, сподіваюся, ви бачили, що в даний час PHP насправді не так вже відрізняється від C і дійсно дає нам можливість приймати речі на сходинку вище або два. Ми дійсно не доведеться турбуватися занадто багато about-- ми дійсно не повинні надто турбуватися про деталі низького рівня ми довелося турбуватися про з С, вірно? Ми можемо зосередитися на більш Рівень речі, які PHP дозволяє нам робити і приймати для зрозумілим, що він буде працювати на нас. Так це дає нам можливість зараз, перехід від С до РНР щоб програми, які є набагато більш Комплекс і, можливо, набагато більш надійними. Так що я сподіваюся, що ви весело працювати з PHP, і я Дуг Ллойд. Це CS50.