[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, я +
і кажуць значэнне рэха варыянт = $-Ой, я не магу гэтага зрабіць.
Ну, давайце паспрабуем і паглядзім, што адбудзецца.
$ Я і кажу я $ </ варыянт.
Замест таго, каб уводзіць гэты параметр тэга тысяч розных часоў
Я выкарыстоўваю PHP код для генерацыі аўтаматычна, праграмнымі сродкамі.
Выгляд выдатны. Так.
Я памятаю гэта згадваецца ні ў лекцыі ці праходжанне гульні,
але ў чым розніца паміж двукоссямі,
нармальных і гэтыя асобныя рэчы?
Гэта на самай справе тое, што я зрабіў няправільна тут, што я збіраюся вам паказаць.
Адзінарныя двукоссі не дазваляюць адмысловыя знакі,
такім чынам, усе ўнутры аднаго радка ў двукоссях інтэрпрэтуюцца літаральна.
Калі б я быў \ п ўнутры адзінарных двукоссяў, і я захаваць гэта, напрыклад,
і цяпер я іду сюды і запусціць яго-
ой, куды я іду?
Ах, гэта таму, што я забылася $.
>> Цяпер, калі я адкрываю, на самай справе, тут, мы будзем пазбаўляцца ад набраўшы яго ў файл.
Мы проста чытаць.
Тут вы бачыце, што я атрымаў гэта літаральнае \ п ў радок, як не фактычнае новай лініі,
і аналагічна, а на самай справе інтэрпаляцыі значэнне гэтай зменнай
ён даў мне $ я сабе, якая з'яўляецца своеасаблівай болю.
Спосаб абыйсці гэта складаецца ў выкарыстанні падвойных двукоссях,
, А затым, калі вы выкарыстоўваеце падвойныя двукоссі гэта будзе на самой справе
правільна интерполировать значэнні ўсіх гэтых зменных тут
а таксама прызнаць гэта \ п, каб быць новай лініі, што
, А не \ п.
З дапамогай аднаго з іх добры, калі ў вас ёсць
сімвалы, якія могуць быць інтэрпрэтаваныя як адмысловых знакаў, таму што тады вы не павінны
пазбегнуць іх пастаянна.
Рэчы могуць заблытацца, і часта так, як я гэта зрабіць,
проста каб рэчы лёгка, што, калі я буду мець нічога
HTML, як у маім кодзе я буду ўключаць кіраваць у адзінарныя двукоссі
і затым выкарыстаць гэты аператар канкатэнацыі
Для аб'яднання зменных цалі
Гэта яшчэ адзін спосаб зрабіць гэта
дзе ў нас ёсць кропка, якая збіраецца далучыць гэта радок
з гэтым з гэтым з гэтым,
і зараз у мяне няма, каб пазбегнуць гэтых падвойных двукоссях.
Я не павінен выкарыстоўваць гэты хлопец бегчы.
Яны літаральна быць раздрукаваныя як падвойныя двукоссі, а затым гэты хлопец прама тут.
Гэта яшчэ адзін спосаб змешвання ўсе разам.
>> [Студэнт] Акрамя таго, пры паўтарыў GetType не было двукоссяў наогул.
Права, так што рэха гэта свайго роду асаблівым у тым сэнсе, што вам не патрэбныя дужкі.
Вам не трэба мець двукоссі абавязкова ўсім пераменным,
як гэта можна сцвярджаць Эхо $ я, і ён будзе інтэрпрэтаваць гэта як радок.
Ён збіраецца зрабіць кідок, так што мы маглі б зрабіць гэта, і гэта сапраўды таксама, але мы не маем патрэбы ў гэтым.
Гэта неабавязкова.
У праблемай набору на гэтым тыдні выходзяць за шмат такога роду рэчы
дзе вы змешвання і супастаўлення HTML з PHP
менавіта так, і цяпер, калі мы пракруціць назад, і мы пабеглі гэтым
мы бачым, што ў нас ёсць цэлая куча значэнняў параметраў
што толькі што раздрукаваны.
У нас усё гэта HTML, які атрымаў генеруецца вельмі хутка для нас.
Я пакідаю гэта ў якасці практыкаванні.
Гэта вельмі падобна на чытанне файла, што мы рабілі раней.
>> Існуе concentrations.txt файл, які можна знесці з CDN,
і вы можаце адкрыць яго, выкарыстоўваючы той жа трук Еогеасп, што мы рабілі раней,
Еогеасп і вы проста павінны паўтарыць варыянт і падлучыце
адпаведныя значэння, адпаведныя ключы і індэксы,
і тады вы атрымаеце выпадальнае, што літаральна стварае
праграмна для вас усіх розных канцэнтрацыях ў Гарвардзе.
Зручная рэч, каб мець.
Існуе шмат канфігурацыі рэчы для гэтага задання.
Калі вы не зрабілі гэта ўжо прымаюць наступныя паўгадзіны, гадзіну,
Некаторы час сёння вызначана дакладна,
хадзіць па спецыфікацыі пастаўленай задачы,
бачыць тое, што адбываецца з наладай віртуальных даменаў, лакальны хост, і ўсё такое.
Адзінае, што варта адзначыць, прама зараз, што
У большасці набораў праблемы мы ішлі ў тэчку Dropbox
, А затым загрузка ZIP праблема набору файлаў і распакавання яго.
Для гэтай задачы наборам вы не хочаце.
Вы хочаце пайсці ў гэты каталог віртуальных даменаў.
Вы хочаце, каб ісці ў віртуальных даменаў і перайсці ў лакальны каталог прымаюць у ім,
і гэта дзе вы хочаце, каб знесці архіва,
распакаваць яго, і атрымаць гатовыя да працы.
Вы павінны прытрымлівацца слядах.
>> Калі ў Вас ёсць якія-небудзь пытанні, адпраўляць электронную пошту, размясціць яго на Абмяркуеце, прыходзіце ў офіс гадзіны.
Дзякуй, хлопцы. На наступным тыдні мы збіраемся мець агляд сесія для віктарыны.
Атрымлівайце асалоду ад вашай апошняй пастаўленай задачы. Я спадзяюся, што ўсё ідзе вельмі добра.
[CS50.TV]