[Powered by Google Translate] [Частина 8] [менш комфортно] [Nate Хардісон] [Harvard University] [Це CS50.] [CS50.TV] Ласкаво просимо в наш другий до останнього розділу. На цьому тижні ми збираємося поговорити про PHP, а потім наступного тижня ми зробимо невеликий огляд на питання 1. Ми збираємося почати на стор 3 Проблема встановлює оновлення, і ми будемо працювати через розділ питань досить швидко. На сторінці 3, ми починаємо говорити про це різниця між C і PHP У тому сенсі, що PHP є динамічно типізований мову, в той час як C статично типізованих, і хтось дійсно швидко зробити будь кодування в щось на зразок PHP або Python або Ruby, перш, JavaScript? Повністю нове? Добре. Всі ці мови, які я щойно згадав дуже відрізняється від мов, таких як C і C + + і Java У тому сенсі, що, коли ви оголошуєте змінну ви не зобов'язані декларувати яка змінна це, так і в C ми застрягли того, щоб завжди говорити це буде ціле число змінних, або це буде символ змінної *, тоді як PHP, Python с, з Ruby, з великою кількістю цих більш сучасних мов, ви не повинні робити цього взагалі. Ви просто оголосити змінну, а в разі PHP Ви заявляєте, що це змінна, випереджаючи його знаком $, , А потім тип змінної визначається те значення, він тримає, яка круто. Щоб пограти з цим небагато, у нас є приклад коду PHP прямо тут між початковим і кінцевим тегами. Ми використовуємо такі як HTML, в тому сенсі, що Ми отримали ці кутові дужки тут, щоб відкрити і закрити. Ви побачите це з HTML. Ви побачите такий же синтаксис XML теж. Це вказує на початок блоку PHP. Це? PHP є специфічним для PHP. Ми закриваємо всі з>, а також. Давайте відкривати файли в нашому пристрій за допомогою все, що ви хочете. У цьому пакеті він говорить подзвонити dynamic.php. По правді кажучи, це можна назвати все, що ви хотіли, але ім'я файлу буде придумати і буде важливо надалі, так що просто пам'ятайте, що ви це називаєте. Я збираюся перейти на прилад, і я збираюся зробити каталог Розділ 9 Я вважаю, що ми знаходимося в даний час. І ми підемо в розділі 9, і я збираюся використовувати Gedit. Давайте подивимося, Gedit, і я буду називати моїм dynamic.php. Boom. У dynamic.php, так як це PHP файл і я хочу, щоб запустити цю через перекладача PHP Мені потрібно, щоб почати все з тими, з відкритими тегами, так що я збираюся почати тих, хто відразу ж, дати собі трохи простору між тегами , А потім Мета цієї вправи було грати з ця функція називається GetType, так GetType, ця функція прямо тут. Зверніть увагу, що немає ніякого підкреслення або пробіл або дефіс або щось в цьому роді відділення 2 слова, отримання та ввести, тільки одне слово в цілому. Але те, що це буде робити, якщо я передаю в змінну GetType, скажімо, $ VAR або $ х, це скаже мені, почасти в налагодженні форматі що ім'я цього типу. Ми збираємося експериментувати тут. Зокрема, якщо ви подивитеся на специфікації PSET у нас є кілька різних рядків коду. У першому рядку коду ми ініціалізували цю змінну $ Var, рівним 7, а то у нас ця лінія Printf , Що говорить агов, Printf VAR порожній. Printf є одним з багатьох способів, ми можемо надрукувати речі в PHP. Часто ви побачите луна-функція використовується замість Printf, Printf, але ми всі знайомі з будучи кодування в C на деякий час. Що ви можете зробити, давайте подивимося, якщо копіювання і вставка робіт. Я збираюся дати це спробувати. Ми повернемося до приладі. Добре, і ми йдемо. І відстань трохи наляканий, але тут ми йдемо. У нас є цей код тут. [Студент] Хіба це не хороший стиль на вкладці це? Пробачте? [Студент] Це звичайні вкладки в цьому? Право, таким чином, Сем просить, якщо це конвенція про закладення цього чи ні. Зазвичай так. В даному випадку я вибрав не робити цього. Чесно кажучи, ви побачите різні речі між різними програмістами. PHP зазвичай використовується часто в поєднанні з HTML та іншими мовами, і тому іноді друк буде виглядати трохи наляканою Якщо ви відступу в межах PHP початковий і кінцевий теги. Це дійсно залежить. У цьому випадку копіювання і вставки не вставити вкладки для мене, але це безумовно робить, як ви сказали, щоб було зрозуміліше. Добре, якщо ви збережете цей код в dynamic.php те, що ви можете зробити, це спуститися в вікно терміналу, де я перебуваю тут У Gedit, і зробити еквівалент компіляції використання зробити і потім запустити свій код в C Все що вам потрібно зробити з файлом PHP є запуск інтерпретатора PHP, який трохи програмі під назвою PHP, і аргументи ви даєте перекладач файлу, який ви хочете інтерпретувати. У цьому випадку, dynamic.php. Ой, де ж я це сказати? О, я поклав його в розділ 9, і ось я тут. Ось чому. Тепер, якщо я біжу, що знову Ми бачимо, що в моєму першому виклику функції GetType VAR є цілим числом. У наступному VAR є рядок, а потім і в третій VAR є логічне значення. Що цікаво про це, якщо ми прокручуємо назад ми бачимо, що Ці типи схожі на ті, які ми мали в C. У нас було цілих чисел в C. Ми начебто були рядки в C, тому рядки не були повністю законними типу в тому сенсі, що наші CS50 рядки було дійсно, що? Пробачте? Міссі? [Missy] Char *. Так, саме це символ * ми використовували. На самому початку семестру ми використовували рядок типу, але це було дійсно символ * під капотом. Ми просто тип, визначений його, в той час як в PHP цих рядків фактичного типу. Там немає більше цього символ речі типу *. Ви побачите, що ми можемо зробити ще багато речей з рядками набагато легше, ніж в PHP ми могли б в C, і, нарешті, у нас є цей логічний тип, і велика різниця в тому, що якщо прокрутити вниз ми бачимо, що назви цих типів В даний час число, рядок і логічне замість Int і логічний, і як ви піднімаєте різних мовах програмування, за умови, що в якийсь момент у вашому житті ви будете вступати в контакт з різні ті, що ви побачите маленькі примхи, як це де C називає цілих чисел цілими. Деякі називають це цілі числа. Є й інші умови, які ви будете працювати в. Великий Int ми бачили сьогодні в SQL. Є також номери, а потім логічний, логічний, всякі відмінності існують. Це не дуже цікавий, але тепер я збираюся дати вам трохи часу якщо масштаб поза працювати через цю вправу в нижній частині сторінки 3 , Де він запитує, які типи відповідають цим значенням тут, внизу. Ми маємо 3,50. У нас є ця річ прямо тут, що цікаво. Ми не бачили цього раніше, хоча, якщо ви стежили разом в лекції Ви, ймовірно, вже знаєте, що це таке. Тоді у нас є це, що це вид в стилі фанк. Ви визнаєте це. Що це в C? Сем? Що це дає Вам в C? Було б відкрити файл з ім'ям dynamic.php і зробити його читабельним. Так, і який би тип змінної, яку ми хотіли б присвоїти це? Зіркою файлу. >> Саме так, ми б привласнити цьому у файлі зірки. Це законно PHP теж. Виконати це. Подивіться, що відбувається, коли ви проходите, що в GetType. А потім також перевірити, що нульові є, що б це могло бути в PHP. Я дам вам кілька хвилин. Ви можете буквально скопіювати і вставити ці значення в, і тоді ми будемо робити трохи випадкових викликів на вас і подивіться, що ви отримали. [Студент] У мене є питання. << Да. В одній з лекцій Давид сказав, що є щось, що ви можете поставити в початок файлу так що вам не доведеться вводити в PHP кожен раз. Що це було? Він, мабуть, говорити про фунт вибуху, хеш вибуху. Це директива, що якщо ви помітити файл як виконуваний те, що він робить, коли ви запустите файл вона розповість програма-оболонка використовувати PHP інтерпретатор для інтерпретації вмісту файлу. Питання полягає в тому, що це за спеціальна лінія що ми могли б включати у верхній частині наших PHP файли не повинні включати ця лінія PHP або ця команда PHP всякий раз, коли ми хочемо запустити файл? І ви можете зробити це з купою різних файлів. Я вважаю, це залежить від того, де бінарний PHP зберігається, але часто USR / бен / PHP є хорошим місцем для початку. Ви можете з'ясувати це точно, повертаючись до вашого приладу і набравши з яких PHP. Яка команда з'ясовує, коли ви виконання двійкового або команду, де відповідний файл. Це говорить мені про те, що PHP насправді згладжування це двійковий файл , Які зберігаються в USR / BIN, який є, де багато системні файли будуть встановлені. Наприклад, якщо я прокрутки вгору до вершини, тепер, коли я поклав цю #! лінія тут Я можу прокрутити вниз, і я можу спробувати запустити dynamic.php, але я отримую цю помилку про дозвіл було відмовлено, і що це означає, що цей файл зараз не даючи виконуваний дозволу. Це не помічений як файл, що хтось може працювати. Коли ви запускали зробити або Clang, і ви отримали з нього виконуваного файлу компілятор був досить розумний, щоб знати, що агов, я будую виконуваний файл. Ви, напевно, хочете, щоб виконати його, тому він буде автоматично налаштувати Дозволи для вас. Це не так, хоча, коли ви створюєте звичайний файл з нуля, Причина в тому Взагалі ви не хочете, щоб будь-який файл у вашій системі бути виконуваним, так що вам насправді потрібно піти і зробити це вручну. Найпростіший спосіб зробити це за допомогою команди CHMOD, і CHMOD + х говориться додати виконуваний біт тому що читання біта, біт запису і виконуваний біт, R, W та X, і говорять CHMOD + х буде включати виконуваний біт за те файл, який ми вказуємо, що в цьому випадку буде dynamic.php. [Студент], що включений для всіх? Давайте перевіримо це, оскільки я б перевірити дозволи? Ви знаєте, як я хотів перевірити, прав доступу до файлу? [Нерозбірливо відповідь студента] Вибачте? >> [Студент] XSD. XSD дає нам файл в хакі. Список всіх файлів,-л, покаже мені всі файли в моєму каталозі виду в довгих, докладних каталозі, і ось ми бачимо, що це dynamic.php файл Остання зміна 5 листопада в 4:21 PM. Власник цього файлу jharvard. Це користувач, який зайшли Ось користувачем я працюю, і якщо ви теж в приладі Ви також працює як користувач jharvard. Ви знаходитесь в групі студентів, і ці речі, які ви побачите досить часто. Ми можемо піти на багато подробиць, але по більшій частині те, що ви хочете подивитися на те, коли ви шукаєте, щоб подивитися чи ні файл є виконуваним, перш за все, Користувач, що є власником файла, власником, так що це jharvard, і тоді ми маємо Дозволи біти тут зліва, і спосіб, щоб прочитати це в тому, що останній біт Зазвичай використовується для позначення того чи ні, принаймні, в цьому випадку Цей останній часто буде встановлений в оголошенні, щоб вказати, про те, що файл є каталогом, а не просто звичайний файл. Тоді наступні 3 біти прямо тут визначити права доступу, що власник файлу має, тому в даному випадку jharvard, як власник файлу, може читати і писати цей файл, але є риса кажуть, що jharvard не може виконати цей файл. Наступні 3 біти для групи, так що це студенти групи, так що якщо б не було кількох користувачів на мій прилад, і у нас було кілька користувачів в рамках групи студентів, Потім всі вони можуть читати цей файл, але вони не можуть писати, і також нікому в світі може тільки читати даний файл, а також. Там хороші, довгі рецензії про це, так що ви можете прочитати в Інтернеті. У специфікації поставленого завдання ми зупинятися на цьому більш детально. [Студент] є 218 з посиланням на світ? 218-з верхньої частини моєї голови я забув, але немає. Давайте подивимося. Я заглушки на цьому просто зараз. Повернутися до того, що ми збиралися робити з цією CHMOD + х , Де ми хотіли дати dynamic.php дозволу виконуваний і питання було чи це дасть виконуваний дозволу на всі або просто jharvard, і ми можемо переконатися в цьому, запуск команд і вводити LS-л, і тепер ми бачимо, що він позначений як виконуваний файл. Ви бачите, що була зміна кольору. Тепер dynamic.php вказані в зелений, і, схоже, відповідь на питання, що, Шарлотта? [Charlotte] Тільки jharvard. >> Тільки jharvard, так. Якщо ми хочемо, щоб включити виконуваний біт для всіх як ми могли б це зробити? Будь-які думки? >> + Х? Так, саме так. Шарлотта сказала, що ми можемо зробити з CHMOD + х dynamic.php, і тепер, якщо ми запустимо LS-L ми бачимо, що виконуваний біт дійсно включений для всіх. І ви реально можете зробити протилежне, так що ви можете відключити його для всіх використання мінус. Тепер він вимкнений, і тепер ми можемо включити його назад для jharvard так що ми дійсно можемо запустити його зараз, і тепер ви бачите, коли ми запустимо код цього спеціального #! лінія у верхній частині, #! лінії, повідомив оболонки, сказали, що наш термінал агов, коли цей файл запускається, використовувати / USR / бен / PHP для інтерпретації цей файл , А потім роздрукувати на виході. [Нерозбірливо запитання студента] Звичайно, дайте мені прокрутити назад. Так само, як це. Ви побачите всі ці директиви починаються з цієї фунт, а потім знак оклику, іноді називають притон, хеш вибуху. [Студент] Як ми можемо запустити його з dynamic.php PHP, перш ніж зробити його виконуваним? Питання в тому, як ми можемо виконати це за допомогою двійкового PHP в той час як dynamic.php не є виконуваним? Це супер важливо, тому що це точно, як він буде працювати, коли ви пишете проблема набору 7. Велику частину часу файли PHP не є безпосередньо виконуваний файл. Таким чином, що працює, тому що це бінарний PHP, що це виконуваний файл. Перекладача річ, яка виконується, і так, що він робить буквально сьорбаючи у всьому вмістом наші dynamic.php файл і збирається рядок за рядком і виконання цих команд, так що, використовуючи наші PHP-файл у вигляді списку інструкцій. Це не безпосередньо його виконання. Ось де ми говоримо, що ці файли інтерпретуються під час виконання. Це перспективі мовою часу, а не щось, що визначається під час компіляції, Чи не компільований мову, як C. Чи є спосіб, щоб отримати мови під час виконання діяти, як ніби це мова, час компіляції, Наприклад, якщо ви все зробили хід на сервері а чим ви знаєте, що я маю на увазі? Так, так що питання чи є спосіб, щоб запустити мовах Час діяти більше як компіляція типів Час мовах? І там, я маю на увазі, що активна область дослідження для багатьох з цих компаній. Я вважаю, Facebook зробив дуже багато роботи з PHP і складання його вниз, що робить його швидше, оптимізуючи його так як їх сайт буде побудований на PHP. Якщо ви стежили за node.js на всіх, яка є своєрідною перекладача JavaScript щоб бути в змозі запустити JavaScript поза браузера, за межами вашого веб-браузера, тому що традиційно JavaScript б просто запустити всередину Firefox або Chrome, і він буде використовуватися, щоб зробити анімацію трапилося на веб-сторінці і зробити ваші веб-сторінки динамічнішими. Це був побудований на багато роботи, що Google зробила щоб JavaScript і C + + зв'язуються разом, так що є багато активних досліджень отримати ці мови, щоб взаємодіяти і оптимізувати їх, в першу чергу тому, що багато людей можуть коду в PHP і JavaScript тому що це набагато простіше. Це набагато приємніше. У вас немає покажчиків. Ви не повинні типів плаваючих навколо. Вони хотіли, щоб отримати переваги цих компіляції мовах часу всі перевірки типу і швидкості і нижній пам'яті, і все, що зберігаючи при цьому гнучкість і простоту використання цих нових. Повернемося до нашого початкового плану атаки. У нас є декілька з цих питань тут, в нашій специфікації поставленого завдання. Давайте пройдемося по них дуже швидко, і ми підемо по кімнаті. Шарлотта, який тип 3,50? [Charlotte] Це в два рази. >> Це в два рази. Джиммі, що це наступний? >> Масиву. Масив, дивовижний, і Джаред, що Еореп? [Джаред] Це ресурс. >> Це ресурс. Це свого роду нове, а не файл зірка, а не файл. Це ресурс типу PHP, і мені шкода, Елла, останній нульові є що? Null. Null, як це прописано в PHP? >> Таким же чином. Точно так само, капіталів? >> Да. Так, все в порядку. Тут ми йдемо, ми отримали подвійний, у нас є масив, у нас є ресурс, а потім ми отримали нульовий. Давайте подивимося тепер ви бачили- Давайте подивимося, так що тепер я думаю, що я хочу зробити, це підтягти цієї веб-сторінки прямо тут, це php.net / ручний, так що якщо ви, хлопці, скопіювати, що і відкривати веб-браузер. Я хочу, щоб підтягти Chrome, покласти, що дюйма Я хочу показати вам, що це не тільки тому, що ми можемо говорити весь день про типи і все, що весело речі а тому, що це керівництво PHP, і є багато PHP програмістів там. Є багато сайтів PHP там, і, як результат, є багато документації по PHP, і керівництва, це php.net, є дійсно хорошим місцем, щоб піти всякий раз, коли у вас виникли запитання про те, що кращий спосіб зробити X в PHP або що функція виглядає? Просто вид знайомство з тим, що це виглядає так Ви будете приходити сюди часто, трохи для задачі встановлений 7. Якщо ви в кінцевому підсумку робить остаточний проект, який використовує PHP це буде місце, ви станете дуже добре знайомі. Часто, як люди роблять це вони використовують Google для пошуку на сайті, і вони не використовують у вікні пошуку, ось тут, у правому верхньому куті, яка є своєрідною крихітні. Якщо ви погуглити навколо щось робити з PHP, і ви побачите одна з експлуатації посилання спливають зазвичай можна розраховувати, що як досить хороший ресурс. Awesome, так з цих типів, просто з цікавості, які з них ми не бачили? Все, що ми ще не бачили тут? [Студент] ресурс. >> Ми бачили ресурс з Еореп виклику. [Студент] Objects. >> Об'єкти ми не бачили напевно. Зворотні виклики ми не бачили. Є деякі з цих псевдо-типів. Ми безумовно бачили тільки цілими і подвійними. Ми не бачили деякі інші, так що якщо ми натиснемо на цілих ми бачимо, чи є інші цілі числа, що вони тут? Чи є вони все так ціле число, число, ціле число. Деякі мови мають великі цілі типи, як ми бачили на MySQL сьогодні був Int, а потім велика Int. Cool. Так, PHP керівництва. Давайте повернемося до нашої специфікації поставленого завдання, і ми тепер Прокрутіть вниз до стр. 4. Одна з речей, що відбувається, коли ви отримаєте ці мови , Які не мають цієї статичної типізації, так що ці мови, де ви повинні оголосити Тип передньої до змінну це ви отримуєте випадку, якщо ви починаєте з змінними різних типів взаємодіють один з одним, і PHP робить це річ, де він намагається зробити те, що він вважає самим розумним, що потрібно зробити коли у вас є 2 різних типів взаємодіють один з одним. Наприклад, якщо ми подивимося на ці рядки коду прямо тут Ви бачите, що ми отримали те, що відбувається, коли ми намагаємося додати рядок 1 до цілого числа 2. Що станеться, якщо ми будемо намагатися додати рядок, яка не є числовим значенням , А фактичні символи, CS числа 50? Тоді ми побачимо, чи є що-небудь інше, що відбувається, коли замість додавання рядка в число ми додаємо число в рядок, і так далі, і так далі до точки, де ми отримуємо якісь дивні речі прямо тут, де ми отримали 7 + правда. Якого біса це означає? Якщо ви, хлопці, йти вперед і вставте частина цього коду у вашому приладі. Ви можете тримати його в dynamic.php. Ми побачимо, що станеться. [Студент] Просто використовуйте друк, не Printf? Так, і ви побачите, що печатка є також дійсним функція для друку в PHP. Є багато різних способів зробити це. Ми побачимо, з парою прикладів пізніше, як тільки ми починаємо говорити про унікальні проблема, яку ми збираємося написати , А потім концентрація проблема, яку ми збираємося написати , Що, хоча у нас є Еореп і Fclose , Що часто не найпростіший спосіб читати в вміст файлу. PHP має багато таких, як C-пережитки. [Студент] Коли я ставлю у всіх 6 з тих речей, які я тільки один номер як вихід. [Nate H.] Коли ви ставите у всіх 6 з цих речей. Давайте подивимося, це тому, що це, можливо- одне те, що ці печатки дзвінки не припиняються в кінці з нового рядка. Там немає нової лінії, що розділяє кожної з цих друку дзвінків, так що, можливо, ви отримуєте одне велике число, і це дійсно просто суміш символів нового рядка. [Студент] Ну, як я можу переконатися, що- Ну, є купа різних способів. Ви можете вручну поставити в друк символ нового рядка, луна символ нового рядка, Друк на новій рядку. [Студент] Так луна те ж саме, Printf? Printf, як C Printf де ви друкуєте отформатированную рядок. Ви постачаючи його формат рядка, а потім всі змінні заповнювача. Дуже часто те, що не використовував- Давайте подивимося, як відмова, Я менше знайомі з PHP, ніж я з інших мов веб- а коли я запрограмований в PHP я зазвичай не використовую Printf тому що я вважаю це швидше, щоб використовувати можливості рядок інтерполяції, що він має, який ми підемо в і я покажу вам всього секунду, , Тоді як в C ми якось повинні зробити це Hacky річ, щоб отримати його, щоб друк належним чином. Ви дійсно можете покласти змінних безпосередньо в рядки в PHP. Printf це свого роду занадто довгий для того, що я зазвичай роблю. Так, Елла. [Елла] Взагалі, якщо ви отримуєте помилки розбору це значить- як на C він не скаже вам точно, де помилка і що це таке, Чи означає це погляд через весь ваш код і зрозуміти це? Це зазвичай більш цілеспрямовано, ніж це. Я думаю, що в цьому випадку було небагато, так що я думаю, що в цьому випадку нам не вистачало коми. Він намагався осмислити все, так як ці скриптових мов, перекладач буде намагатися і робити все можливе, щоб змусити всі працювати належним чином. Ви побачите, наприклад, в JavaScript Ви будете часто-лайн заяви закінчуються крапкою з комою так само, як у PHP, так само, як у C. В JavaScript деякі інтерпретатори JavaScript у багатьох браузерах буде покласти в крапку з комою для вас якщо вам трапиться бути пропущені них. Вони намагаються пристосувати для деякої недбалості з вашого боку. Ось де можна було б пробувати і пробувати і намагатися, щоб все запрацювало, і, нарешті, вона буде дістатися до точки, де він говорить добре, Я не можу зробити все це працює на порятунок, а от де ви отримаєте номер рядка , Що може здатися трохи не від точного місця. Отже, давайте пройдемося по цьому дуже швидко. Ми зупинилися з Еллою, так що давайте перейдемо до Міссі, і Міссі, що робить друк рядок 1 плюс номер 2 вам дасть? [Missy] 3. >> 3. Чи має це сенс? На зразок того? Чи дає це вам номер? Чи дає це вам рядки? [Missy] число. >> Це число. Але це роздрукувавши його, так що він збирається дати вам якусь рядок. Єдине, що ми можемо зробити, щоб перевірити це , Якщо ми робимо $ змінна = 1 + 2 а то кажуть, відлуння GetType, тому ми використовуємо третій вид друку тут. Тепер ми бачимо, що тут відбувається. Ось що у нас вийшло, що ми отримали ціле число з цього. Хоча ми були додавши цей рядок в число, ми не отримаємо рядок з нього, так само, як Missy сказала. Ми отримували ціле. Отже, давайте подивимося, наступний до, Кевін. CS + 50? >> [Кевін] 50. [Nate H.] 50. Чи має це сенс? [Кевін] Так. [Nate H.] Чому? Чому це має сенс для вас? [Кевін] Тому що тільки маючи рядки, що мають нульовий числове значення. Так, відмінно. Вид неоднозначних ситуаціях, але це добре, щоб знати, що відбувається. Stella, що відбудеться далі з номером 1 + рядок 2? [Stella] 3. >> 3 разів. І в цьому випадку, ми можемо отримати рядок або число? Давайте дамо цьому спробу. Ніхто швидше, ніж мені отримати відповідь? Шарлотта? О, я didn't-ладно, давайте подивимося, що ми збираємося зробити щось подібне де у нас є число і рядок, і ми збираємося повторити типу, подивимося, що ми отримуємо. Ми також отримуємо ціле число. Це не має значення, який з них рядки, яке є числом. Ми все ще збираємося, щоб отримати ціле число. Він як і раніше має намір зробити те, що ми могли б очікувати. Гаразд, Сем, що близько 90 + 9 пляшок пива на стіні? [Сем] 99. >> 99. Ні пляшок пива на стіні, однак. Це дає нам трохи більше інформації про те, що відбувається. [Сем] Якщо ви написали 9 в літери тоді вам потрібно буде 90, чи не так? [Nate H.] Так. Питання було, якби ми записано 9, як N-I-N-E б ми отримали 99 або 90? Ми отримуємо 90. Це буквально шукає цифрових символів. Це не досить розумний, щоб визнати число слів і речей. Так. [Студент] Є така річ, як приведення в PHP? Існує, і це саме так, як ви могли б зробити це в C. Як щодо 10/7, Шарлотта? [Charlotte] 1,4285. [Nate H.] Так, так що ж може бути дивного? Що трапиться, якщо ви зробили це така ж річ у C, якщо ви зробили 10/7 в C? [Charlotte] Було б тільки дати вам, залежно від того, як я припускаю, typecasted це дасть вам лише обмежене число цифр після коми. Так, так обмежена кількість цифр після коми. Що ще може бути, що це дає вам ніяких цифр після коми? Часто немає, так що знову, в залежності від того, як ви його типажів він може або не може перетворити його в число з плаваючою крапкою. Ось це було досить приємно, що він і зробив. Якби ми показали вам це тому, коли ми почали робити такого роду речі в C він, ймовірно, зробив би трохи більше сенсу що він не просто піти до 1. І, нарешті, Джеймі, як щодо 7 + правда? [Jamie] 8. >> 8. Що це значить? Я думаю, він просто дає істинне значення 1. Так. Що станеться, якщо ми змінимо, що хибно? [Студент] 7. Так, і пам'ятайте, де ми говоримо про ці двійкових значень, 1 є на, 0 означає вимикання? Тепер у нас є справжні 1, 0 є помилковим, і ви не могли бачити це на прикладах C, що ми зробили це в минулому семестрі, але історично BOOL типу C не було реального типу, так люди використовували 0 і 1 на місце істинного і помилкового. Це і є прояв цього. Отже, одна важлива частина про все це є те, що у нас є ці різні типи. Вони можуть взаємодіяти один з одним. Вони часто можуть взаємодіяти один з одним таким чином, що хороші, як ми бачили тут. Приємно бути в змозі мати рядок 1 і № 2, складіть їх разом і отримати 3. Це має сенс. Однак, коли ви пишете веб-сайтів, і особливо, коли ви обробляєте введення користувача, так би мовити, ви написали веб-форму , Яка збирає інформацію від користувача, а потім переходить на її обробку на задньому кінці, на стороні сервера в коді PHP якщо ви очікуєте, що значення, яке користувач вводить в і представлений в форму, щоб бути ціле число або число з плаваючою крапкою або щось на зразок того Ви повинні явно привести його , А потім зробити деякі перевірки типів. Ви ж не хочете, щоб покладатися тільки на цій системі жонглювання типу, щоб все вийшло, Особливо з міркувань безпеки та просто для надійності вашого сайту. Просто щось мати на увазі, що всякий раз, коли ви обробки даних форми, все, що відбувається в пост або Get суперглобальних Переконайтеся, що ви завжди перевірити його і перетворити його і приведення його. І так само, як ми говоримо про хвилину тому, що типажів У PHP точно так само, як і в C, де у вас є дужки а потім типу. Майте це на увазі. Одна функція, яка стане в нагоді, коли ви робите це це ми використовували і це ніби як в сторону- ми використаємо цю функцію GetType прямо тут , Щоб з'ясувати тип змінної, і, хоча це зручно для налагодження і подивитися, що тип змінної є Ви не хочете використовувати це, наприклад, в умовах, коли Ви перевіряєте GetType в $ змінна = ціле щось робити. Це погано, погано, погано. Натомість є ці функції називають це ціле число, рядок, є масив, який ви хочете використовувати замість цього, тому в даному випадку те, що я хотів би зробити замість цього хлопця прямо тут це використовувати це ціле обл. І вони часто називають це is_ * в тому сенсі, що ви могли б замінити * з цілим, рядок, і так далі, і просто щоб переконатися, чи дійсно швидко Чи є це Int PHP. Схоже, що Ви можете зробити це або Int або є ціле, а? Так, псевдонім, так Int ціле псевдоніми. Cool. Як ми це робимо? Давайте підняти темпи трохи. Тепер ми збираємося говорити про масивах, так як ви можете бачити У наступній частині спектру ми говоримо про те, як масиви в PHP трохи відрізняється, ніж у C. По правді кажучи, вони начебто амальгами масивів, що ви прийшли до знаємо і любимо в C де все того ж типу зберігатися послідовно і безперервно в пам'яті, і у вас є ці числові індекси. У вас є індекс 0, індекс 1, індекс 2, і зберігати значення на цих індексів. Ви також C, коли ви писали Speller, що багато хто з вас зробив хеш-таблиці підхід, і ви бачили, що у нас було різні види зберігання, де ми були відображення Ключ до значення, тому, коли ви намагалися зберігати щось у хеш-таблиці Ви повинні були вказати, що ви хочете зберегти його з певним ключем, і що ключові визначається місцеположення значення і де він буде зберігатися. Ти ніби є обидва ці поняття відбувається в той же час в масив PHP, і, як результат, ми часто називаємо ці асоціативні масиви де ми пов'язуючи введіть значення. У наступній частині ми поговоримо про простий масив PHP де у нас є клавіші A, B, і C, Всі рядки, зіставлення з числами 1, 2 і 3. І ви можете мати ключі різних типів. Ви можете мати кілька ключів, які є рядки, деякі ключі, які є цілими числами. Ви можете мати значення різних типів. Ви можете мати значення, яке рядки, значення це число, значення, яке об'єкт або інший масив, наприклад, все в тому ж масиві об'єктів, який є трохи дивно. Ви не повинні мати масив, який тільки що отримав один тип елемента в ньому. Ви можете мати багато різних речей там відбувається. Крім того, необхідно відзначити, що, коли ви бачите щось на зразок цього в коді, який діє PHP оголосити масив як це, 0, 1, 2, 3, 4, 5, , Що оголосять ініціалізується $ обр, щоб бути в цьому масиві. Але те, що ви фактично отримуєте під капотом такої неявній генерація ключів, де ми отримали з 0 по 0, 1 до 1, 2 на 2, 3 на 3. І виходить, що навіть якщо у вас є масив, як цей хлопець тут де у вас є, б і в якості ключів а потім ви починаєте використовувати метод масиву поштовх, щоб почати використовувати цей масив, як стек, так що ви можете бачити, що цей об'єкт масиву, цей масив дійсно перевантажений. Ми можемо використовувати його як масив. Ми можемо використовувати його в хеш-таблиці. Ми можемо використовувати його в якості стека. Коли ви починаєте натиснувши речі на цьому масиві Перше, що ви натискаєте на це буде індекс 0, а потім індекс 1, а індекс 2. Ви можете отримати такий неявній генерації ключів якщо не вказати їх явно. Те, як ви явно вказати ключі, звичайно ж, за допомогою цієї дужок, який схожий на масивах, за винятком, а не тільки дозволяє цілочисельних індексів тут, зараз ми дозволимо нічого. Якщо ви хочете, щоб ваш ключ повинен бути рядком, Ви повинні визначити це так. Якщо ви хочете, щоб це було ціле число, необхідно вказати його з внутр ви хочете використовувати. Питання, на які досі? Одна з хороших речей про цю ідею що ви можете тільки коли-небудь одне значення зберігається з певним ключем. Якщо ми повернемося до наших приладом, дозвольте мені видалити деякі з цих речей. І давайте говорити, що я ініціалізувати масив 0, 1, 2, зроблено. Якщо я тепер знаю, що, наприклад, якщо я Ехо $ Arr [0] Я хочу, щоб отримати значення 0 роздруковані, і так як може бути як ніколи одне значення зберігатися протягом певного ключа якби я зберігати щось на $ обр [0], скажімо, Потім я знаю, коли я повторюю $ обр [0], Я не збираюся отримати 0 роздруковані, як раніше. Я тільки збираюся. Так що це в основному говорять, що я не можу мати $ обр [0] Зберігання 2 різних значення. Вона не може зберігатися як 0, так і рядком, як це буквально замінює що було на $ обр [0] раніше. Тому я про це до запуску його, подивитися, що відбувається. Дивіться тут, що я отримав 0 роздрукувати, а потім сюди. Там немає нових ліній, тому що я був ледачий і не покласти, що дюйма Що я люблю цього ми можемо використовувати це як спосіб , Щоб захопити цю ідею набір де ми не можемо мати кілька ключів в масиві. Ми не можемо мати однакові ключі в масиві. Я не можу мати клавішу 0 і значення 1 і ключовим значенням 0 і або ключовим 0 і значення ІСТИНА. Клавіші все є тільки 1 ключ в масиві. Навіть якщо ви можете мати те ж значення, що зберігається кілька разів на масиві під різними ключами це не можливо мати однакові ключі кілька разів у вашому PHP масиву. Якщо ми подивимося на це наступна проблема, unique.php, де ми хочемо відкрити файл PHP , Що містить список рядків, один рядок на лінію, і ми хочемо, щоб знайти всі унікальні рядки у файлі все, що нам потрібно зробити, це використовувати один з цих масивах PHP і за допомогою рядка у файлі ключів до цього масиву і постійно оновлювати наш масив як ми зберігаємо ці нові ключі. Як ми читаємо кожен рядок з файлу ми можемо зберігати їх в масив, і в кінці ми будемо мати, як наші ключі в масиві всі унікальні рядки у файлі. Чи має це сенс? Давайте подивимося, як це працює. Ми збираємося відкрити, у відповідності зі специфікацією, новий файл з ім'ям unique.php. Відкрити. Ой, вибачте, новий файл. Ми збираємося почати його з тим же початковим і кінцевим тегами. Ми збираємося зберегти його в розділі 9, і ми будемо називати його unique.php. Добре, тепер масштаб зображення Ідея тут полягає відкрити файл, читати в файл рядок за рядком. Для кожного рядка у файлі ми будемо мати масив, де у нас є  лінії, як наш ключ. А потім, коли ми дійдемо до кінця тут Клавіші $ обр є унікальними лініями з файлу, оскільки ми знаємо, що якщо я ставлю лінію в цьому масиві кілька разів він просто буде тримати перевизначення старе значення, і ми можемо насправді покласти лінійного масиву в якості самої просто так. Це трохи дивно. Ми зберігання і той же ключ пари значень знову і знову, і знову, але так як ми гарантовані, що буде тільки 1 ключ називається лінією так що якщо у нас є файл, який говорить-файл звуків тварин і має гав, гав, Няв, няв, му, му, і кожен раз ми читали тваринного шум як качка, і ми зберігаємо його в нашому масиві ми отримуємо гав, а потім вдруге ми зберігаємо гав він перепише в перший раз, що ми зберегли його. Врешті-решт ми будемо мати тільки один елемент масиву для кожного із звуків тварин у нашому файлі тварин шуми. Хлопці, ви впевнені, що ви можете вирішувати відкриття файлу в PHP? Один зі способів зробити це, давайте розглянемо це швидко один спосіб зробити це З Еореп, як ми бачили раніше. Ви можете Еореп some_file.txt. Ви можете відкрити його в режимі читання, як і в C. Це одне абсолютно хороший спосіб зробити це. Ви також те для читання в файл рядок за рядком мають ті ж функції, багато з них, що ви зробили в C. У вас є ЕдеЬз. У вас є feof, хоча нам не подобається, що використання тому що, пам'ятаєте, що не було великої в C. Ви можете зробити це таким же чином, але ось це дійсно круто. Вибачте, я не хочу, щоб зробити файл $, але є функція з ім'ям файлу в PHP, і ця функція прямо тут прохолодно, тому що він читає весь вміст файлу, який ви вкажете, так some_file.txt, читає весь вміст цього файлу в масив а потім дозволяє ітерацію над ним, який є досить витончений. Якщо ми звернемося, наприклад, до нашого веб-браузер і ми дивимося на Google для файлу PHP Ви можете бачити тут, що наше керівництво каже, що файл читається весь файл у масив, і ми можемо file_get_contents, щоб повернути вміст файлу у вигляді рядка, але зазвичай просто отримати його як масив дійсно добре, тому що те, що він робить воно порушує його так, що кожен елемент в масиві є однією рядку файлу, Таким чином, якщо ми подивимося на файл 0, це перша лінія файл. Файл 1, другий рядок, файл 2, третя лінія, і так далі, і так далі. Хіба не було б здорово, якби це було все, що потрібно було зробити в C? Досить відмінний. Девід показав це в лекції, і він показав язик був що на додаток до наших стандартним циклу в PHP у нас було, що для ($ I = 0; I <10, я + +), і ви можете зробити це в PHP теж, одне і те ж- у нас також є цей прохолодний конструкцію, звану Еогеасп. Foreach дійсно зручно, коли ітерації масивів або структур даних тому що він дозволяє витягнути кожен елемент масиву без необхідності вручну робити індексацію себе, без необхідності вручну створювати індекс змінної, збільшити, витягнути значення в масиві в той момент, тому що це дуже поширена річ. Ви, напевно, зробили це т раз, коли ви робите речі C протягом семестру, так що з цієї Еогеасп ми можемо повторити за цей файл масиву, і синтаксису, який ми хочемо тепер цикл з цього масиву і вказати, що змінна, яку ми збираємося використовувати для зберігання елемент цього масиву на місцевому рівні, локальні рамки цього цикл по кожному елементу, це ми будемо називати його лінії. Якщо це файл просто слова, а є одне слово в рядку Ми могли б назвати це слово, а, насправді просто ви даєте цим ім'ям, все, що ви хочете назвати це, , А потім всередині циклу ви можете робити все, що ви хочете з цієї змінної рядок. Якщо це не достатньо, щоб отримати значення масиву, і ви також хочете отримати Індекс разом з нею ви можете вказати ім'я індексу а також значення, і тепер у вас є доступ до 2 змінних. У вас є $ я і лінії де $ я це індекс в масиві, і лінією є лінія, що ви витягнуті з файлу. Наприклад, якщо ми хочемо, щоб роздрукувати луна лінії 0-файлу, як це, Ми могли б зробити це так само, як це, "Line $ I-файлу складає $ лінію" а от те, що ми також не бачили ще ні де я тільки що повністю пропустив% всієї цієї% S D бізнесу що ми мали справу з в С, а замість цього я пішов прямо до написання змінних в рядку в моїй рядку. Це називається змінна інтерполяції рядків інтерполяцією де ви начинку змінних прямо в, і перекладач PHP достатньо розумні, коли він читає через рядок, що починається з подвійних лапках- Чи не одинарні лапки, з одного рядка в лапках ви не можете зробити цього, але з подвійними лапками, як читає він шукає змінні. Він полював на них, і якщо він бачить змінних вона прийме значення змінної і запихати його в рядок, якщо він може перетворити його в рядок уявлення, який є досить витончений. А зараз давайте закоментуйте всі інші, зберегти, і що ми можемо зробити зараз, це ми можемо відкрити файл що ми можемо назвати some_file.txt-давайте створимо новий файл- і ми можемо покласти в купу нісенітниці речі тут просто щоб перевірити всі з, зберегти його, назвемо його some_file.txt, як я роблю тут у верхній частині, і тепер, якщо я масштаб просто щоб переконатися, що все в тій же директорії- схоже, у мене є unique.php і some_file.txt в тому ж каталозі. Якщо я запускаю PHP unique.php подивитися, як він друкує кожен рядок у файлі і якій лінії? Це досить потужна, правильно? Подивіться, він зайняв 3 рядки коду, щоб відкрити файл. Ну, 4 рядки коду. Я не можу розраховувати сьогодні, ясно. Але насправді тільки 2 цікавих рядків коду, тому що інші 2 були фігурні дужки, але в цьому багато коду, ми змогли відкрити файл, ітерацію по ній, витягніть номер рядка і саму лінію і роздрукувати його. Прикольних речей. Шарлотта. [Charlotte] У мене питання про синтаксис. Так Еогеасп угод з кожного рядка файлу, які відкривалися, , А потім, коли ви хочете зробити щось з кожної рядку ви просто зробити це як і потім зв'язати значення. [Nate H.] Що ви можете зробити прямо тут-питання Еогеасп має справу з масивом, так що кожному елементу синтаксису дійсно ForEach, і зауважив, що там немає місця або що-небудь між і для кожного. Вони повинні йти поруч один з одним, , А потім вона займає в масиві, а то у вас це інше ключове слово називається, що повинен бути там, а після, як ви можете покласти одну змінну ім'я, У цьому випадку ви будете потягнувши значення масиву, Чи не індексів, або якщо ви робите це, як ми вже писали нижче Ви отримуєте ключі і значення. У вас є Еогеасп елемент масиву або пару масив як в прив'язці до значення або просто як цінність. В залежності від того, що вам потрібно, якщо ви не потрібні ключі, то ви можете піти зі значенням. Якщо ви хочете клавіші ви можете піти з ними. [Charlotte] Я також зрозумів, що ми ніколи не заявляв я або лінії. Як вона навіть знаю, що вони є? [Nate H.] Що ви маєте на увазі оголосити? [Charlotte] Ми ніколи не сказав їм, що я або лінія засобів. [Nate H.] Ми ніколи не говорили, що я комп'ютер або лінія означає в термінах- [Charlotte] Те, що вони проіндексовані, або що they're- [Nate H.] Ми ніколи не говорили, що це повинен бути індекс або ключ і значення, і це тому, що це PHP перекладача. Це служить заяву і каже, що все в порядку, то ключ буде змінну я зберігається у змінній я. Це значення буде зберігатися у змінній лінії, таким чином, це є заява з цих змінних і каже, що $ I є одним з ключових, і $ лінія значення. Так, Елла. [Елла] Якщо ключі не зробили чисельно Як це вирішити, що метою він збирається друкувати все? Хіба це так само, як це порядка вступили в? [Nate H.] Давайте спробуємо. Давайте створимо змінну обр, і ми можемо зробити йде до 7. Скажімо, 0 переходить в інший масив з 1, 2 або яблуко. Скажімо, 7 виходить в 1, б йде в 2, і 3 переходить в 4. Це свого роду божевільних дивлячись приклад, тому що ми змішуючи рядки і цілі числа всюди. Там немає реальної метою цього масиву. Я маю на увазі, ми могли замовити все в алфавітному порядку по клавішах. Ми могли замовити все в алфавітному порядку за значенням. Ми могли б спробувати взяти до уваги, що деякі рядки, деякі з них цілі, і ми могли б спробувати перетворити їх все до одного типу і подивитися, що відбувається, або ми могли б розглянути їх у вартість, в якій ми вже увійшов в них де ми поклали цьому хлопцю в першому, цей хлопець в секунду, цей хлопець у третьому, цей хлопець в четвертий, і так далі. Давайте подивимося, що відбувається, коли ми запустимо цей код. Якщо ми прокрутіть вниз і зробити те ж саме роду речі, а ось це не виводячи нові лінії. Коли він читав речі з файлу він був у тому числі нових ліній в значеннях, який був, чому він розпечатав красиво, а тут цього не сталося, так ось чому всі smushed разом. Давайте додамо в тому, що нова лінія просто зробити все добре. Давайте повторно, і тому тут Подивіться, що відбулося. Тут друкувалися все гаразд, в якому ми ставимо його в масив. Це не зберегти порядок в цьому сенсі. Повертаючись до цієї проблеми унікумів , Де ми хочемо, щоб мати можливість перебору файлів, і ми дамо його some_file.txt, і ми збираємося для перебору це так. Ми сказали, що ми хотіли б використовувати масив, щоб переконатися, що ми отримали всі унікальні лінії звідти, і ми могли б зробити це дуже легко від просто зберігати в масиві, ми, звичайно, оголосити поза рамками циклу, і ми сказали, що якби ми використовували рядки у файлі в якості ключів в масиві якщо ми увійшли дублікат лінії ми б скасовуючи попереднє значення. Це не завжди можливо мати 2 ключів, які ідентичні в одному масиві. Ми можемо зробити це. Ми будемо позбутися цього луни заяву прямо тут. Тут ми зберіганні рядки у файлі в масиві використання себе в якості ключа. Нічого на нього, і виявляється, що ми навіть не потрібно цього ключа. Нам не потрібно, що я змінна. У цей момент, якщо б ми повинні були зробити ще один цикл по кожному елементу і ми повинні були цикл по кожному обр і лінія зараз, якщо ми луна-ой, вибачте. Ми не можемо використовувати кому. Ми повинні використовувати це в якості ключового слова. Тепер, якщо ми виводимо лінію ми повинні отримати всі унікальні слова у файлі. Якщо ми підемо до some_file.txt, і скажемо, що ми робимо яблуко, банан, яблуко, яблуко, банан, якщо ми роздруківку всіх унікальних слів в цей файл ми повинні отримати тільки Яблуко і банан роздрукувати. Якщо ми збережемо цю, тепер ми оце в масштаб, PHP unique.php, і та-да. Ми успішно uniqued файл. У заключній частині цієї проблеми прошу вас розібратися в цьому масиві, перш ніж надрукували його з тому що в цьому простому прикладі, який ми тільки що зробили нам пощастило в тому сенсі, що файл- ми зробили це надуманий приклад з яблуками і бананами. Було вже відсортовані. Але за допомогою простої функції сортування можна відсортувати масив, який є досить витончений. Останнє, що я хотів би поговорити з вами, хлопці про дуже швидко є те, що таке PHP це все добре, і це супер зручно , Щоб дізнатися, як це зробити, якщо ви коли-небудь знадобиться зробити маленький, швидкий речі програмно. Наприклад, якщо мені потрібно написати програму, яка, скажімо, ставить усіх в розділах Я не збираюся йти і писати на мові C. Це збирається бути довгим. Це збирається бути навіть біль, особливо якщо є файли участь, так само, як ви, хлопці, бачили. Це так приємно, що саме з цього багато коду прямо тут ми були в змозі копіювати через файл, витягти всі унікальні значення і друкувати їх назад. Тим не менш, для вашого завдання, для ваших проектів, якщо ви створюєте веб-сайтів з PHP влади в тому, що ми проводимо нашу PHP файлів через цю перекладача, і перекладач обробляє всі всередині тегів PHP, залишивши все інше недоторканим і впливів результати. Ми можемо зробити це, щоб побудувати HTML програмно. Тепер, якщо ми повернемося до специфікації, остання проблема в специфікації Переговори про цю ідею концентрації і створення меню, що випадає, які ви можете або не можете зробити, в залежності від того, що ваш остаточний проект робить, , Що дозволяє користувачеві вибрати зі списку всіх можливих концентрацій їх однією концентрації. Тепер, це вид болю, щоб надрукувати це з і доведеться робити все це вручну, особливо, коли ви відчуваєте, щоб переконатися, що у вас є всі кутові дужки в потрібному місці і все лапки в потрібному місці, так з PHP ви можете зробити це програмно, і ви можете зробити це дуже швидко. Давайте подивимося, як це зробити. Ми збираємося відкрити новий файл. Ми збираємося поставити в нашому PHP теги. Ми будемо називати це concentrations.php, і тепер, коли ви робите це, свого роду хороша річ, щоб думати про коли ви намагаєтеся змішати і відповідати вашим PHP і ваш HTML є з'ясування того, добре, що це частина, яку я хочу програмно генерувати? Яку роль, що я можу програмно генерувати? Це правда, що ви можете зробити всі ваші HTML Усередині PHP блоків. Ви можете повторити все з HTML у вигляді рядка. Наприклад, якщо я хочу, щоб почати робити вибір тегів всередині PHP Я можу сказати, луна, скажімо, виберіть ім'я = концентрація, а потім вниз я міг би інша луна тегів або іншого луна називають близькі вибору. Це один із способів зробити це, тому що це буквально збираєтеся робити буде роздрукувати цю рядок, коли вона проходить через інтерпретатор PHP, так що результат буде HTML. Якби я зберегти цей файл, оскільки це прямо зараз і я біжу PHP concentrations.php подивіться, що у мене є. Я отримав цю відкриту близько виберіть тег. Якби мені довелося це зробити, і я повинен був зберегти цей результат у файл, кажуть, concentrations.html-очікування, схоже, л перейшов на іншу сторону- Тепер, якщо я відкриваю тут concentrations.html ви бачите в мене є діючий HTML файл. Хіба що трохи дивно? Ми використовуємо PHP для створення HTML, створити діючий HTML. Те, як ми робимо це, ми просто мають печатку PHP HTML, що ми хочемо, щоб надрукувати. Це буквально як PHP веб-сайти працюють. Коли ви відвідуєте веб-сайт, який посилає вам щось подібне щось, щось, щось точка ком рису index.php Комп'ютер буквально виклику index.php, працює він через перекладача PHP, і все, що виходить небажаної він посилає назад в браузер і говорити агов, браузер, інтерпретувати це як HTML. Приємно те, що це може бути біль, щоб постійно писати відлуння, відлуння, відлуння, відлуння і прикласти всі в лапках, як це, тому, якщо ви хочете написати HTML який буде статичним себе, ви можете зробити це так, покласти його на вулицю, закрити його, , А потім тут ви тільки покласти всередину PHP теги, які ви знаєте Ви хочете програмно генерувати, і в даному випадку це ті опції теги , Які є болем для генерації. Наприклад, ми могли б створити тисячі теги варіант , Роблячи щось на зразок цього, $ I <1000, я + + і говорять значення луна варіант = $-Ой, я не можу цього зробити. Ну, давайте спробуємо і подивимося, що станеться. $ Я і кажу я $