[Powered by Google Translate] [Одељак 8] [мање комфорни] [Нејт Хардисон] [Универзитет Харвард] [Ово је ЦС50.] [ЦС50.ТВ] Добродошли на наш други на последњем одељку. У овој седмици ћемо говорити о ПХП, а онда следеће недеље ћемо направити малу ревизију за квиз 1. Ми ћемо почети на страни 3 проблема поставља пакет, и ми ћемо радити кроз град питања прилично брзо. На страни 3, започне разговор о тој разлици између Ц и ПХП у смислу да је ПХП динамички куцани језик, док Ц је статично откуцао, и да је неко заиста брзо уради све кодирање у нечему као што је ПХП или Питхон или Руби раније, ЈаваСцрипт? Потпуно ново? Ок. Све од ових језика које сам управо поменуо веома разликује од језика попут Ц и Ц + + и Јава у смислу да када прогласи променљиву не морате да прогласе каква је променљива, тако да у Ц смо заглавили што увек кажем ово ће бити инт променљива, или ће то бити знак * променљива, док са ПХП, са Питхон, са Руби, са много више ових модерних језика не морате то да радите уопште. Ви само прогласи своју променљиву, а у случају ПХП изјављујете да је променљива тако да је префикс са $ знаком, а затим и тип променљиве одређује вредност год је то холдинг, што је кул. Да се ​​играте са овим мало, имамо узорак ПХП код овде између почетка и краја ознакама. Користимо ову врсту као ХТМЛ у смислу да имамо ове угао заграде овде да отварају и затварају. Видећете ово са ХТМЛ. Ви ћете такође видети исту врсту синтаксе са КСМЛ. Ово указује на почетак ПХП блока. Ово пхп? Је специфична за ПХП. Ми смо затворили све са> и. Хајде да отворимо датотеку у нашем апарату користећи год желите. У овом пакету пише да позове динамиц.пхп. У ствари, можете га звати како год желите, али име датотеке ће доћи до и бити важна касније, па само се сетите шта год ви то зовете. Ја ћу да пребаците на уређај, и ја ћу да направим директоријум за одељак 9 Верујем да смо на сада. А ми ћемо ићи у секцији 9, и ја ћу користити гедит. Хајде да видимо, гедит, а ја ћу да позовем рудника динамиц.пхп. Бум. У оквиру динамиц.пхп, пошто је ово ПХП фајл и желим да покренем овај кроз ПХП интерпретер Морам да све крене офф са тим отвореним ознаке, па ћу да побегне почети оне право, дајте себи мало простора између тагова, и онда поента ове вежбе је да се поиграте ова функција се зове геттипе, тако геттипе, ову функцију овде. Приметимо да не постоји то подвучем или простор или цртицу, или било шта слично томе одвајањем од 2 речи, добити и упишите, укупно само једну реч. Али шта ће урадити је да сам прошао у променљивој на геттипе, кажу $ вар или $ к, ово ће ми рећи какав отклањање грешака у формату оно име тог типа је. Идемо да експериментишете овде. Нарочито, ако се осврнемо на псет спец ми имамо овде неколико различитих линија кода. У првој линији кода смо иницијализовати ову променљиву, $ вар, да буде једнака са 7, а онда имамо ову линију принтф која каже хеј, иф вар је празан. Принтф је један од многих начина можемо штампати ствари у ПХП-у. Често ћете видети функцију ехо који се користи уместо инт, али принтф смо сви упознати са пошто је кодирање у Ц за неко време. Оно што заиста може да уради је да видимо да ли копирање и лепљење дела. Ја ћу да дам ово пробати. Вратићемо се преко апарата. Ок, и ту смо. А размак је мало функи, али идемо. Имамо овај код овде. [Студентски] Зар није добро стил табулатор то? Извини? [Студентски] Да ли је конвенционалне у таб томе? Добро, па Сем пита да ли је Конвенција на картицу или не. Обично да. У овом случају сам изабрао да не. Искрено, видећете различите ствари међу различитим програмера. ПХП је обично користи често у комбинацији са ХТМЛ и другим језицима, па понекад и штампање ће изгледати мало функи ако алинеја оквиру ПХП старта и крајње ознаке. То стварно зависи. У овом случају цопи анд пасте нису налепили картице у за мене, али то дефинитивно не, као што си рекао, да га јасније. У реду, ако сте сачували овај код у динамиц.пхп шта онда можете да урадите је да се спусти на свој прозор терминала где сам ја у праву овде у гедит и да уради еквивалент компајлирања користећи праве и онда ради свој код у Ц Све што треба да урадите са ПХП датотеци покренули ПХП преводилац што је мали програм под називом ПХП а аргумент дајете са преводиоцем је фајл желите да протумачи. У овом случају, динамиц.пхп. Упс, где сам га ставио? О, ја сам га ставио у члану 9, а овде сам. То је разлог. Сада, ако трчим да поново видимо да је у мом првом позиву функције геттипе вар је цео број. У наредних годину вар је ниска, а затим у трећем један вар је боолеан. Оно што је интересантно о томе је ако се вратимо помицати горе, видимо да То су типови као оне које смо имали у Ц. Имали смо Интс у Ц. Ми смо некако смо конце у Ц, тако ниске нису потпуно легит типа, у смислу да наша ЦС50 стринг је стварно шта? Извини? Мисси? [Мисси] Цхар *. Да, то је тај цхар смо користили. На самом почетку семестра смо помоћу стринг тип, али је стварно био цхар испод хаубе. Само укуцајте смо је дефинисали, док у ПХП ови критеријуми су стварни тип. Нема више ту цхар * ствари типа. Видећете да можемо урадити много више ствари са стринговима много лакше него у ПХП смо могли у Ц, и онда на крају, имамо овај боолеан тип, а велика разлика је у томе што ако се помицати доле, видимо да име ових типова сада цео број, ниска, а боолеан уместо инт и боол, и као што покупити различите програмске језике, под претпоставком да је у неком тренутку у својим животима да ће доћи у контакт са разликита ћете приметити мале каприце овакве где Ц назива целих Интс. Неки га зову бројеви. Постоје и други услови које ћете покренути у. Велики инт смо видели данас у СКЛ. Ту су број и онда боол, боолеан, све врсте разлика тамо. Ово није претерано занимљиво, али сада ћу да вам дам мало времена, Ако се вратимо умањите да раде кроз ове вежбе на дну стране 3 где је пита шта врсте одговарају овим вредностима овде на дну. Имамо 3.50. Имамо ову ствар овде, што је интересантно. Нисмо видели да је пре, али ако сте пратили заједно у предавању Ви вероватно већ знате шта је то. Онда имамо ово, којој је ово врста функи. Препознајете ово. Шта је ово у Ц? Сем? Шта би ово ти дати у Ц? То ће отворити фајл под називом динамиц.пхп и чине га прочитати. Да, и шта ће бити тип променљиве да бисмо доделили ово >> Филе звезде. Тачно, ми бисмо доделили ово датотеке звезде. То је сувише легитиман ПХП. Рун то. Погледајте шта се догађа када прође ово у геттипе. А онда проверите шта нулл је, шта би то могло бити у ПХП-у. Даћу вам пар минута. Ви буквално можете да копирате и налепите ове вредности у, и онда ћемо направити мало случајан позив на вас и види шта имаш. [Студентски] Имам једно питање <<. Да. У једном од предавања Дејвид је рекао да постоји нешто што можете ставити на врху датотеке тако да не морате да куцате у ПХП сваки пут. Шта је то? Вероватно је говорио о килограма праска, хеш праска. То је директива да ако означите датотеку као извршног онда оно што ради је када изврши датотеку то ће рећи програма љуске да користе ПХП преводиоца да интерпретира садржај датотеке. Питање шта је био тај што је посебна линија да бисмо могли да укључимо у врху наших ПХП фајлова да не морају да укључе Ова ПХП линија или то ПХП команда кад год желимо да изврши датотеку? И ви у ствари можете да урадите са гомилом разних фајлова. Мислим да то зависи од тога где је ПХП бинарна се чувају, али често уср / бин / пхп је добро место за почетак. Можете да схватим ово се тачно враћајући до вашег уређаја и куцање које пхп. Која је откривена команда схвати кад си извршавању бинарну или команда где је одговарајућа датотека. То ми говори да је ПХП је заиста алиасинг овај бинарни фајл која је ускладиштена у уср / бин, што је, где много системских бинарних су инсталирани. На пример, ако помицати до врха, сада када сам ставио ово #! линија овде Могу помицати доле, и могу покушати да покрене динамиц.пхп, али ја се ту грешку о дозволи ускрацена, и шта то значи да овај фајл није тренутно даје извршне дозволе. То није означен као фајл који може да покрене неко. Када сте покренули позовете или кланг и имате неку извршну из њега преводилац је био довољно паметан да знам да хеј, ја гради извршну. Ви вероватно желите да га изврши, тако да аутоматски конфигурише би дозволе за вас. Ово није случај, међутим, када креирате нормалан фајл од нуле, Разлог се обично не желе да имају било који фајл на вашем систему буде извршна, тако да стварно морам да идем унутра и ручно урадити. Најлакши начин да то урадите је да са цхмод командом, и цхмод + к каже додајте мало извршну јер је читање мало је бит за писање и извршни бит р в и к, и говорећи цхмод + к ће укључити извршну мало Јер тада фајл који смо навели, што је у овом случају ће бити динамиц.пхп. [Студентски] Да ли је то укључено за све? Хајде да проверимо ово, па како бих проверите да дозволе? Да ли знате како да проверим да видим дозволе датотеке? [Нечујан ученик одговор] Извини >> [Студентски] КССД. КССД нам даје датотеку у хакова. Наводећи све фајлове,-Л, ће ми показати све фајлове у мом именику врста у свом дугом, вербосе листинг, па овде видимо да ово динамиц.пхп фајл је последњи пут измењена 5. новембар у 4:21 часова. Власник овог фајла јхарвард. То је корисник који је пријављен за То је корисник сам као радни, и ако и ти у апарату ви такође раде као корисник јхарвард. Ти си у групи студената, и то су ствари које ћете видети довољно често. Можемо отићи у много детаља овде али за највећи део онога што желите да погледате када сте у потрази за видети да ли је или није извршна датотека је првенствено корисник који поседује фајл, власник, тако да је ово јхарвард, а онда смо дозволе бита овде на лево, и начин да прочитате ово је да је последњи бит обично се користи за означавање да ли је или не бар у овом случају овај последњи бит ће често бити постављена на оглас за индикацију да је датотека директоријум, а не само нормалан фајл. Затим следе 3 бита Ригхт Хере одредити дозволе да власник фајла има, тако да у овом случају јхарвард, као власник датотеке, могу читати и писати овај фајл, али постоји црта каже да јхарвард не може да изврши ову датотеку. Следећих 3 бита за групу, тако да је ово група студената, па ако је било више корисника на мој апарат, и ми смо имали више корисника као део групе студената, онда сви они могу да прочитате овај фајл, али не могу да га напишем, а исто тако и било ко други, свет могу само да прочитате овај фајл као добро. Постоји добар, дуго вритеуп о томе, тако да можете прочитати на мрежи. У спец проблема постављеног идемо у ово више детаља. [Студентски] је 218 позивајући се на свету? Тхе 218 је офф врху моје главе сам заборавио, али не. Хајде да видимо. Ја сам слепа на то право сада. Назад на оно што смо хтели да урадите са овим цхмод + к где смо желели да дају дозволе динамиц.пхп извршне, и питање је да ли или не то ће дати дозволе извршне свима или да једноставно јхарвард, и можемо видети ово покретањем команде и куцајући лс-л, а сада видимо да је то означен као извршни. Видиш да је промена боје. Сада динамиц.пхп је наведен у зеленој, и изгледа као одговор на питање је шта, Шарлот? [Шарлот] Само јхарвард. >> Само јхарвард, да. Ако бисмо желели да укључите извршну мало на свима Како бисмо то урадили? Било која мисли >> +? Кс? Да, баш тако. Шарлот је рекао да можемо урадити цхмод о + Кс, динамиц.пхп, и сада, ако смо покренули лс-л видимо да су извршни бита заиста укључена за свакога. И ви у ствари можете да урадите на полеђини ове, тако да можете да га искључите за све користите минус. Сада је искључен, а сада можемо да поново укључите за јхарвард тако да ми стварно можемо га покренути сада, и сад ви видите, када смо покренули овај код посебну #! Линија на врху, #! линија, рекао је гранату, Рекао наш терминал хеј, када је овај фајл покрене, користите / уср / бин / пхп да тумачи овај фајл а затим одштампате резултат. [Нечујан ученик питање] Наравно, да се вратимо помицати горе. Баш овако. Видећете све ових директива почети са овом килограму, а затим знак узвика, понекад назива схебанг, хеш пуцањ. [Студентски] Како можемо га покренути са пхп динамиц.пхп пре него што би га извршну? Питање је како можемо покренути ово користећи ПХП бинарну док динамиц.пхп није извршна? Ово је супер важно јер је ово тачно колико то ће да ради када пишете проблем сет 7. Већина временских ПХП фајлова нису директно извршна. Начин на који функционише зато што је ПХП бинарна да је извршна. Тумач је ствар која се извршава, па шта ради буквално слурпинг у целом садржају наше динамиц.пхп датотеке и иде ред по ред и извршавање тих команди, тако да се користи наш ПХП фајл као списак упутстава. Није директно његово извршење. То је место где кажемо да су ови фајлови тумаче у време извршавања. То је време рада језик уместо нечега што је утврђен у компајлирања, Не саставио језик као Ц. Да ли постоји начин да се језик Рун Тиме се понаша као да је време компилирања језик, свиђа ако имате све трчања уради на серверу него, знаш на шта мислим? Да, тако је питање постоји начин да се покрену језике времена да се понашају више као компајлирања врста језика? И ту се, мислим, то је активна област истраживања за многе од ових компанија. Верујем Фацебоок је учинио много рада са ПХП и састављање га, што брже, оптимизација је јер је њихов сајт је изграђен на ПХП. Ако сте пратили ноде.јс уопште, која је врста ЈаваСцрипт преводиоца бити у стању да покрећу ЈаваСцрипт ван претраживача, изван вашег веб претраживача, јер традиционално ЈаваСкрипт да покрећу само у Фирефок или Цхроме, и да би се користио да би цоол анимације десити на веб страници и да ваш веб страница динамичан. То је био изграђен на много посла да је Гоогле урадио да ЈаваСцрипт и Ц + + везују заједно, тако да је доста активног истраживања до се ови језици за интеракцију и оптимизују их, пре свега зато што су многи људи могу кодирати у ПХП и ЈаваСцрипт јер је много лакше. То је много лепше. Немаш показиваче. Немаш врсте плутају около. Они су желели да стекну корист од ових компајлирања језика са свим типа контроле и брзине и доњег употреби меморије и све то док је још одржавање флексибилност и једноставност коришћења ових новијих оне. Назад на наш првобитни план напада. Имамо неке од ових питања овде у нашем спец проблема сет. Идемо кроз њих заиста брзо, а ми ћемо ићи около по соби. Шарлот, која врста је 3,50? [Шарлот] То је дупла >> То је дупло.. Џими, шта је ово следећи? >> Низа. Низ, страшан, и Јаред, шта је фопен? [Јаред] То је ресурс >> То је ресурс.. То је нека врста новог, а не фајл звезде, а не датотеке. То је ресурс је тип у ПХП, и жао ми је, Ела, последњи ништаван је шта? Нула. Нула, како је написано у ПХП? >> Исти начин. На исти начин, престоницама >> Да. Да, у реду. Идемо, имамо двокреветне, имамо низ, Имамо ресурсе, а онда имамо нулл. Да видимо сада да ли сте видели, хајде да видимо, па сад мислим шта ја желим да урадите је да повучете нагоре Ова веб страница овде, ово пхп.нет / мануелни, па ако ви копирате и да отвори веб бровсер. Идем да подигне Цхроме, ставио унутра Желим да вам покажем то не само зато можемо говорити о типовима цео дан и све то забавно ствари већ зато што је ово ПХП мануал, и има пуно ПХП програмера тамо. Постоји много сајтова ПХП тамо, и као резултат тога, постоји много документације на ПХП, а за овај пхп.нет је заиста добро место да иде кад год имате питања о томе шта је то најбољи начин да се Кс у ПХП или шта функција изгледа? Само нека врста упознавања са оним што ово личи, јер ћете овде долазе често, бит за проблем сет 7. Ако можете завршити радиш коначну пројекат који користи ПХП ово ће бити место које ћете постати врло добро упознати. Често начин на који људи раде ово што користите Гоогле за претрагу за локацију, и не користите оквир за претрагу који је овде у горњем десном, што је врста мали. Ако сте около Гооглинг да се нешто уради са ПХП и видећете један од мануелних линкова појавити обично можете ослонити на то као прилично добар ресурс. Страва, па од ових типова, само из радозналости, оне које нисмо видели? Све ми нисмо овде видели? [Студентски] ресурса. >> Видели смо ресурс са фопен позива. [Студентски] Објекти >> Објекти нисмо видели сигурно.. Повратних позива нисмо видели. Постоје неке од ових псеудо-типова. Ми смо само видели цео дефинитивно и двокреветне. Нисмо видели неке друге, тако да ако кликнемо на целих можемо да видимо да ли постоје други целих бројева који су овде имају? Да ли су све то цео, цео, цео број. Неки језици имају веће целобројне типове, као што смо видели на МиСКЛ данас било кам и онда велики инт. Кул. Дакле, ПХП мануал. Хајде да се вратимо на нашу спец проблема сет, а сада ћемо дођите до 4. страни. Једна од ствари које се дешава када се ове језике који немају статичке куцање, тако да су ови језици у којима морате да се изјасни врста параван променљиве до се ти случајеви у којима ћете можда почети да променљиве различитих типова интеракцији једни са другима, и ПХП ради ово где покушава да уради оно што сматра да је најразумнији ствар када имате 2 различита типа комуницирају једни са другима. На пример, ако се осврнемо на овим линијама кода овде видиш да смо добили оно што се дешава када пробамо и додајте стринг 1 на целобројну 2. Шта се дешава ако покушамо и додате ниску која није нумеричка вредност већ стварни ликови, ЦС на број 50? Онда ћемо видети да ли постоји нешто другачије што се дешава, где уместо додавања стринг у број смо додајући број у низу, и тако даље и тако даље до тачке где смо добијање неки чудан ствари овде где смо добили 7 + истина. Шта се сад то значи? Ако ви идите и налепите неке од овог кода у ваш уређај. Можете задржати га у динамиц.пхп. Видећемо шта ће се десити. [Студентски] Само користите отисак, не принтф? Да, па ћете наћи да је штампа је такође важи функција за штампање у ПХП. Постоји много различитих начина да то раде. Ми ћемо видети неколико примера касније када почнемо разговор о јединственом проблем који ћемо да напише а затим и концентрације проблем који ћемо писати да иако имамо фопен и фцлосе то често није најједноставнији начин да се чита у садржају фајла. ПХП има доста ових Ц попут холдоверс. [Студентски] Када сам ставио у свим 6 од тих ствари сам само добити један број као излаз. [Нејт Х.] Када сте ставили у свих 6 ових ствари. Хајде да видимо то је зато што вероватно-је једна ствар је да су ови позиви не престаје штампани на крају са новим линијама. Нема нових линија раздвајања сваки од ових штампаних позива, па можда ви добијате један велики број, и то је заиста само амалгам нових линија карактера. [Студентски] Ок, како да будем сигуран- Па, постоји гомила различитих начина. Можете ручно да стави у штампаном нове линије карактера, ехо нове линије карактера, принт нове линије. [Студентски] Дакле ехо је иста ствар као принтф? Принтф је као Ц принтф где сте штампате форматирану ниску. Ти си га снабдевања формата ниску, а затим све чувара места променљивих. Често је нешто што се не користи, хајде да видимо, као одрицање, Ја сам мање упознат са ПХП него што сам ја са другим веб језика, и када сам програмирао у ПХП Ја обично не користе принтф јер ми је брже да користите канап интерполација могућности да има, што ћемо ући у, а ја ћу вам показати само секунд, док је у Ц ми некако морати да се овај Хацки ствар да се то да одштампате правилно. Ви заправо можете ставити променљиве директно у жицама у ПХП. Принтф је врста превише дуго за оно што обично раде. Да, Елла. [Елла] Углавном, ако добијете грешку парсати то знаци- као на Ц не да вам кажем тачно где је грешка и шта је, па да ли то значи поглед кроз цео код и да провалим? То обично је више циљаних од тога. Мислим да у том случају то је мало ван, тако да мислим да би у том случају били смо недостаје зарез. Он је покушавао да направи смисао свега, па као ови тумаче језика, преводилац ће покушати и учинити све да на одговарајући начин да рад све. Видећете, на пример, у ЈаваСцрипту ћеш често линија изјаве крај са зарезом као што раде у ПХП, баш као што је то у Ц У ЈаваСцрипт неким ЈаваСцрипт преводилаца у много претраживача ће ставити у зарезом за вас ако вам се деси да се њима недостаје. Они ће покушати да прими неког аљкавости на свом делу. Ту је можда покушава и покушава и покушава да се ствари раде, и онда на крају ће доћи до тачке у којој се каже у реду, Ја не могу да се ствари раде на спашавање, и то је место где ћете добити број линије да можда изгледа мало искључен из тачном месту. Ок, идемо кроз ово веома брзо. Ми смо стали са елла, па идемо преко да Мисси, и Миси, шта штампа стринг 1 плус број 2 вам дам? [Мисси] 3 >> 3.. Да ли то смисла? На неки начин? Да ли вам дати број? Да ли вам ниску? [Мисси] број >> То је број.. Али то је штампа, тако да ће вам дати неку жицу. Једна ствар коју можемо да урадимо да проверите ово је ако радимо $ вар = 1 + 2 и онда кажемо одјек геттипе, тако да смо користећи трећу врсту штампање овде. Сада можемо да видимо шта се дешава овде. Ево шта смо добили је да смо добили цео од овога. Иако смо додајући овај стринг у број, нисмо добили ниску од њега, баш као Мисси рекао. Ми смо добијање природан број. Ок, хајде да видимо, поред горе, Кевина. ЦС + 50 >> [Кевин] 50. [Нејт Х.] 50. Да ли то смисла? [Кевин] Да. [Нејт Х.] Зашто? Зашто смисла за вас? [Кевин] Јер само има ниску, имајући број вредност нула. Да, супер. Мало двосмисленим ситуацијама, али је добро знати шта се дешава. Стела, шта се даље дешава са бројем 1 + стринг 2? [Стелла] 3 >> 3 поново.. И у овом случају, да ли смо добили ниску или број? Дајмо ово пробати. Свако брже од мене добити одговор? Цхарлотте? Ох, дидн'т-ок, хајде да видимо, ми ћемо да урадимо исто такве ствари где смо добили велики број плус ниска, а ми ћемо да поновимо тип, видимо шта смо добили. Такође смо добили природан број. Није битно који је један стринг, што је један број. Ми још увек ћемо добити цео број. Још увек ће да уради оно што би се могло очекивати. У реду, па Сем, шта 90 + 9 флаша пива на зиду? [Сам] 99 >> 99.. Нема флаша пива на зиду, мада. То нам даје мало више информација о томе шта се дешава. [Сам] Ако је написао 9 словима онда би имао 90, зар не? [Нејт Х.] Да. Питање је да ли бисмо се као писани 9 Н-И-Н-Е бисмо стекли 99 или 90? Ми бисмо добили 90. Буквално је само у потрази за цифре карактера. То није довољно паметан да препозна речи са бројевима и те ствари. Да. [Студентски] Да ли постоји таква ствар као што је типецастинг у ПХП? Ту је, и управо је начин на који ће то урадити у Ц Шта 10/7, Шарлот? [Шарлот] 1,4285. [Нејт Х.] Да, па шта би било чудно у вези овога? Шта ће се десити ако то урадио исту врсту ствари у Ц, ако си 10/7 у Ц? [Шарлот] То би само ти дати-у зависности од тога колико сте типецастед претпостављам то би ти само ограничен број цифара после децималног. Да, тако ограничен број цифара после децималног. Шта друго може да буде, ће вам дати неке цифре после децималне? Често не, тако да опет, у зависности од тога како сте га типецастинг може или не може да га претворити у плутајуће тачке број. Овде је некако лепо да јесте. Да смо вам показали ово назад када смо почели да раде ову врсту ствари у Ц Вероватно би то учинили мало више смисла да то не само да иде на-1. И коначно, Џејми, шта 7 + истина? [Џејми] 8. >> 8. Шта то значи? Мислим да само даје истина је вредност 1. Да. Шта се дешава ако променимо то лаж? [Студентски] 7. Да, тако се сетим где причамо о тим бинарних вредности, 1 као он, 0 је искључен? Сада имамо истина је 1, 0 је лажна, а можда нисте видели у Ц примерима које смо урадили прошлог семестра, али историјски воид типа у Ц није био прави тип, па људи су користили 0 и 1 у месту истинито и лажно. Ово је манифестација тога. Ок, тако да је један важан део о свему овоме је да имамо ове различите типове. Они могу да комуницирају једни са другима. Они често могу да комуницирају једни са другима на начине који су лепо, јер смо овде видели. Лепо је бити у могућности да имају ниску 1 и број 2, додајте их заједно и добити 3. То има смисла. Међутим, када пишете сајтове, а посебно када сте обраде Корисник улаз, тако да кажем да сте написали веб формулар да прикупља информације од корисника, а затим оде да обрадимо на задњем крају, на страни сервера у вашем ПХП коду ако очекујете да вредност коју корисник уписали и доставља да образац буде цео или бити флоатинг поинт број или нешто слично потребно је да га баце изричито а онда неке провере типа. Ви не желите да се само ослањати на овај систем типа жонглирања да се ствари раде се, посебно из безбедносних разлога и само за робустност вашег сајта. Само нешто треба имати на уму да кад год сте руковања обрасца податке, све што долази у пост или ГЕТ суперглобалс проверите да ли сте увек проверите и претворити га и глумцима улоге га. И баш као што смо причали малопре том типецастинг у ПХП је потпуно иста као у Ц где имате заграде и онда тип. Имајте то на уму. Једна од функција која ће добро доћи када радите ово је да смо користили и то је врста као страни- смо користили ову функцију геттипе овде да схватим тип променљиве, и док је то згодно за дебаговање и да се види шта је променљивој типа Ви не желите да користите ово, на пример, у стању коме ти провере да ли геттипе од $ вар = цео нешто урадити. То је лоше, лоше, лоше. Уместо тога су ови функције називају се цео, је ниска, је низ који желите да користите уместо тога, тако да у овом случају шта бих желео да урадим уместо овог момка овде се користе је цео вар. И они често називају је ис_ * у смислу да би могао да замени * са целим, ниска, и тако даље, и само да се уверите заиста брзо је да је ово инт пхп. Изгледа као да можете да урадите било је инт или је ту је цео као и? Да, алиас, тако инт целобројне алиас. Кул. Како радимо? Хајде да покупи темпом мало. Сада ћемо да причамо о низовима, како можете видети у следећем делу спец говоримо о томе како низови у ПХП су нешто другачији него што су у Ц. У ствари, они су нека врста амалгама Низови да сте долазе да знају и воле у ​​Ц где је све од истог типа складишти узастопно и цонтигуоусли у меморији, и ви имате ове нумеричке показатеље. Имате индекс 0, 1 индекса, индекс 2, и складиштење вредности на тим индекса. Такође, у Ц, када сте написали Спеллер, много вас урадио хеш табеле приступ, и видели сте да смо имали другачија врста складишта где смо мапирање кључ вредност, тако да када сте покушали да ускладиштите нешто у хеш табели морали сте да наведете да сте хтели да га сачувате са одређеним кључем, и да је кључ одређује локацију вредности и где ће се чувати. Ти си некако имам оба та концепта дешава у исто време у ПХП низу, и као резултат тога, ми често називамо асоцијативних низова где смо се удруживање кључ у вредности. У овом наредном делу говоримо о простом ПХП низ где имамо кључеве А, Б, и Ц, сви стрингови, мапирање целих бројева 1, 2 и 3. И ви можете имати кључеве различитих типова. Можете имати неке кључеве који су ниске, неки тастери који су бројеви. Можете имати вредности различитих типова. Можете имати вредност која је ниска, вредност која је цео, вредност која је предмет или други низ, на пример, сви у истом објекту низа, који је некако чудно. Не морате да имате низ који је управо добио једну врсту елемента у њој. Можете имати много различитих ствари дешава тамо. Друга ствар је да када урадите нешто слично овоме у вашем коду, који важи ПХП да прогласи низ баш овако, 0, 1, 2, 3, 4, 5, који ће прогласити иницијализује $ арр да буде овако низ. Али шта сте заправо све под хаубом је ова врста имплицитног генерација тастера где смо добили 0 до 0, 1 на 1, 2, 3 до 2 до 3. И испоставило се да чак и ако имате низ попут овог момка овде где имате, Б ​​и Ц, као тастера и онда почнете да користите низа пусх метод да почнете да користите овај низ као стек, тако да можете да видите да је ово низ објеката, овај низ је стварно постаје преоптерећен. Можемо га користити као низ. Можемо га користити као хеш табели. Можемо га користити као стека. Када почнете да гура ствари на овом низу прва ствар коју гура на ово ће бити индекс 0, а затим индекс 1 и 2 индекса. Можете добити ову врсту имплицитног генерације тастера ако их наведете експлицитно. Начин на који одредите кључеве експлицитно, наравно, помоћу овог носећег нотацију, који је сличан, осим низа уместо само омогућавајући целобројне индекси у овде, сада дозволити ништа. Ако желите да ваш кључ да буде ниска, требало би да га наведете овако. Ако желите да буде инт га наведете са интег желите да користите. Питања о тако далеко? Једна од лепих ствари о овом идејом је да имате само једну вредност икада ускладиштена са посебним кључем. Ако се вратимо у наше апарата-пусти ме избрисати неке од ових ствари. И рецимо да сам покрене низ да буде 0, 1, 2, урађено. Ако ја сада знам да, на пример, ако ја ецхо $ арр [0] Идем да је вредност 0 одштампан, и пошто може да постоји само једна вредност икада бити ускладиштена за одређени кључ ако сачувате нешто на $ арр [0], кажемо, онда знам када сам ецхо $ арр [0] поново Нећу да 0 одштампане се као пре. Само ћу да добијем. Дакле, ово је у суштини каже да не може да има $ арр [0] складиштење 2 различите вредности. То не може да складишти како 0 и низ а, овако буквално замењује оно што је на $ арр [0] раније. Разлог сам донети ово горе је то покрене, да видим шта се дешава. Видите овде да имам 0 одштампати и онда овде доле. Нема нових линија тамо, јер сам био лењ и нисам ставио унутра Шта је цоол у ​​вези ово можемо користити као начин да освоји ову идеју скупа где ми не можемо имати више кључева у оквиру низа. Ми не можемо имати идентичне кључеве у оквиру низа. Ја не могу да имају кључну 0 и вредност 1 и тастер 0 и вредност А или тастер 0 и вредност истина. Тастери су све постоји само 1 кључ у низу. Иако можете имати исту вредност ускладиштене више пута у низу под различитим кључевима није могуће да имају идентичне кеис више пута у вашој ПХП низу. Ако погледамо ову следећег проблема, уникуе.пхп, где желимо да отворимо један ПХП фајл садржи листу стрингова, једна жица по реду, и желимо да пронађете све јединствених низова у том фајлу све што треба да урадите је да користите један од ових ПХП низове и коришћење конце у датотеци као тастери на овај низ и ажурирати наш спектар како чувамо те нове кључеве. Као што смо прочитали сваку линију из датотеке можемо да га сачувате у низу, и на крају ћемо имати наше кључева у нашем низу сви јединствених низова у оквиру датотеке. Да ли то смисла? Хајде да видимо како то ради. Ми ћемо отворити, према спец, нови фајл под називом уникуе.пхп. Отвори. Упс, извини, нови фајл. Ми ћемо то кренете са истим почетним и крајњим ознакама. Ми ћемо га сачувати у члану 9, а ми ћемо га зову уникуе.пхп. Ок, сада увећали за Идеја је отворите датотеку, прочитајте у фајлу линију по линију. За сваку линију у фајлу ћемо имати низ где имамо  линија као наш кључ. И онда када стигнемо до краја овде $ Арр тастери су јединствене линије из списа, јер знамо да ако сам ставио линију у овом низу више пута је само ће задржати превасходног стару вредност, и ми заправо можемо ставити линију низа у што сам тек тако. То је мало чудно. Поново смо складиштење исту кључну вредност пара преко и изнова и изнова, али пошто смо гарантовали да ће постојати само 1 кључ зове линија тако да ако имамо фајл који каже-фајл животињских звукова и има вооф вооф,, мијау, мијау, мукање, мукање, и сваки пут кад смо прочитали животиња буке аут као вооф и ми га чувати у нашем низу добијамо вооф, а затим и други пут чувамо вооф ће заменити први пут да смо га ускладиштене. На крају смо само ћемо имати једну ставку у низу за сваку од животињских звукова у нашој звуке животиња датотеке. Да ли ви сигурни да можете да се позабави отварање датотеке у ПХП? Један од начина да се то уради, идемо у овом брзо-један начин да то урадите је са фопен, као што смо раније видели. Можете да фопен соме_филе.ткт. Можете га отворити у режиму прочита, баш као у Ц. То је један савршено добар начин да се то уради. Такође, затим за читање у датотеке линију по линију имају исте функције, многи од њих, да сте радили у Ц. Имате фгетс. Имате феоф, мада ми се не свиђа да користе јер, запамтите, то није био велики у Ц. Можете то учинити на исти начин, али овде је стварно супер ствар. Жао ми је, ја не желим да радим $ фајл, али постоји функција зове фајл у ПХП-у, и ова функција овде је супер зато што чита цео садржај списа које сте навели, па соме_филе.ткт, чита цео садржај овог фајла у низ и онда вам омогућава прелазили преко њега, што је прилично диван. Ако одемо, на пример, за наш веб бровсер и гледамо Гоогле за ПХП датотеке Овде можете видети да је наш приручник каже да фајл чита целу датотеку у низу, и можемо филе_гет_цонтентс да врати садржај датотеке као стринг, али обично само добија као низ је стварно лепо, јер оно што ради да ли је то разбија, тако да сваки елемент у низу је једна линија датотеке, па ако гледамо датотеци 0, то је прва линија фајла. Филе 1, друга линија, фајл 2, трећа линија, и тако даље и тако даље. Зар не би било лепо да је то био све што је имао да уради у Ц? Прилично диван. Дејвид је показао ово предавање, а идиом је показао је да поред нашег стандарда за лооп-у ПХП смо имали фор ($ и = 0; и <10; и + +), и ви можете да урадите у ПХП такође, иста ствар- Такође имамо овај кул конструкт зове фореацх. Фореацх је стварно згодан када итератинг у низовима или ових структура података јер вам омогућава да извучете сваки елемент низа без потребе да мануелно индексирањем себе, без потребе да ручно креирате променљиву индекса га увећати, извуците вредност у низу у том тренутку, јер је то веома честа ствар. Вероватно сте то урадили тона времена када сте радили Ц ствари преко семестра, тако да са овим фореацх можемо петља преко ове датотеке низу, а синтакса је да хоћемо да сада петљу над овим низом и навести да је променљива ћемо користити за складиштење елемент овог низа локално, локално на обим овог фореацх петље, се да ћемо га зову линија. Ако је фајл само речи и постоји једна реч у линији можемо га назвати реч, као, стварно само ти дати ово име, год хоћете да га зовете, и онда унутар петље можете да урадите шта год желите са овом варијабилном линији. Ако то није довољно да се вредност низа, а такође желите да добијете индекс заједно са њим можете да наведете име за индекс као и вредност, а сада имате приступ 2 променљивих. Имате $ и и линија где је $ и је индекс у низу, а линија је линија коју преузимају из датотеке. На пример, ако бисмо желели да одштампате ехо 0 линији датотеке као ово, можемо то учинити баш овако "Линија $ и списа је $ линија" и овде је нешто што такође не види још ни где сам управо тотално прескочио% целој овој% с д бизнис да смо морали да се баве у Ц, и уместо тога сам отишао на право писање променљиве у линији у мом низу. Ово се зове променљива интерполације, гудачки интерполација где сте надев променљиве у праву, и ПХП интерпретер је довољно паметан кад се чита кроз ниску која почиње са дуплим наводницима- не апострофе, са једним цитираних жицама да не можете да урадите ово- али са дуплим цитираних жицама као што пише кроз њега тражи променљивих. То их лови, а ако се види променљиве ће бити потребно вредност променљиве и да га напуните у низу, ако може да га конвертује у стринг репрезентације, што је прилично диван. За сада, хајде да коментарише ван остатак свему, сачували ово, и шта можемо да урадимо је да сада можемо да отворимо датотеку да зовемо соме_филе.ткт-хајде направите нови фајл- и можемо ставити у гомилу глупости ствари овде само да тестира све напоље, сачувајте га, зову соме_филе.ткт, као што ја радим овде горе на врху, и сад ако умањите само да проверите да ли је све у истом директоријуму- изгледа као да имам уникуе.пхп и соме_филе.ткт у истом директоријуму. Ако сам покренути пхп уникуе.пхп видим како се штампа сваки ред у мом досијеу и шта је линија? То је прилично моћна, зар не? Види, то је 3 линије кода да отвори датотеку. Па, 4 линије кода. Ја не могу да рачунам данас јасно. Али стварно само 2 интересантне линије кода, јер је друга 2 су витичасте заграде, али у овом коду толико смо били у стању да отворе датотеку, прелазили преко ње, извуците број линије и саму линију и одштампате га напоље. Цоол ствари. Цхарлотте. [Шарлот] Имам питање о синтакси. Тако фореацх бави сваком реду датотеке коју сте отворили, и онда када желите да урадите нешто са сваком линијом само то што и онда повезују вредност. [Нејт Х.] Шта можете да урадите овде, питање је било фореацх има везе са низа, тако да фореацх синтакса заиста фореацх, а обавештење да нема простора или нешто између и за сваку од њих. Они имају добро иду једни поред других, и онда се у низу, и онда имате овај други зове као кључну реч која мора да буде тамо, и онда након што можете да ставите једно име променљиве, у ком случају ћеш бити извлачење вредности низа, не и индекси, или ако то уради, као што сам написао у наставку добијате кључеве и вредности. Имате фореацх елемент низа или пар низа као кључна за вредност или као само вредност. У зависности од тога шта вам је потребно, ако не треба кључеве, онда можете ићи са вредношћу. Ако желите тастере можете ићи са њима. [Шарлот] Такође сам схватио да никада прогласила ја или линију. Како она зна шта су они? [Нејт Х.] Шта мислиш прогласи? [Шарлот] Ми им никада није рекао шта сам или линија значи. [Нејт Х.] Ми никада није рекао шта сам рачунар или линија значи у смислу- [Шарлот] То су они индексирани или да они су, [Нејт Х.] Ми то никада није рекао да је то требало да буде индекс или кључ и вредност, и то зато што је ПХП преводилац. Ово служи као декларација и каже у реду, кључ ће бити променљива зове и складишти у променљивој зове ја. Вредност ће бити ускладиштени у променљивом зове линија, тако да ово служи као проглашења ових варијабли и каже $ и је кључ, а $ линија је вредност. Да, Елла. [Елла] Ако су тастери нису урадили бројчано како то да одлучи шта да би то ће штампати све? Да ли је то баш као поредак то је ушао унутра? [Нејт Х.] Идемо му дати покушати. Хајде да креирамо променљиву зове арр, и можемо учинити иде до 7 година. Рецимо 0 одлази на другу низа са 1, 2 или јабуке. Рецимо 7 иде на 1, Б иде на 2, и 3 иде у 4. То је нека врста луде тражите пример, јер смо мешање жице и целих свуда. Нема стварно би овај низ. Мислим, можемо поручити све по абецедном редоследу по тастерима. Могли би да нареди све по абецедном реду по вредности. Ми би могли да покушају и да узму у обзир да су неки низови, неки су ИНТС, и могли бисмо да покушамо и претворити их све истог типа и види шта се дешава, или можемо да их размотри у вредности у којој смо већ их унели где смо ставили овог типа у почетку, овај момак је други, овај момак у трећем, овај момак у четвртом, и тако даље. Хајде да видимо шта се дешава када смо покренули овај код. Ако се померите надоле и учинити исту врсту ствари, а овде то није штампање нове линије. Када је прочитао ствари из датотеке је, укључујући нове линије у вредности који је због тога штампају лепо, а овде то није учинио, па зато све заједно смусхед. Хајде да додамо у тој новој линији само да се ствари лепо. Хајде да реприза, па се овде Погледајмо шта се догодило. Он штампа све у редоследу у којем смо га ставили у низу. То не чува ред у том смислу. Враћајући се овај проблем Уникуес где желимо да буде у стању да вршите итерацију кроз фајл, а ми ћемо му дати соме_филе.ткт, и ми ћемо прелазили преко тога овако. Ми смо рекли да желимо да користимо низ да се уверите да смо добили све од јединствене линије одатле, и могли смо то заиста лако за само чување у низу које смо, наравно, прогласе изван делокруга петље, и ми смо рекли да ако смо користили линије у фајлу, као тастерима у нашем низу ако смо унели дупликат линију ћемо бити најважнији претходну вредност. Није никад могуце имати 2 кључа који су идентични у истом низу. Можемо учинити управо то. Ми ћемо отарасити ове изјаве ехо овде. Овде смо складиштење линију у фајлу у нашем низу користи се као тастер. Ништа на њега, и испоставило се да ми ни не треба овај тастер. Ми не треба да ја променљива. У овом тренутку, ако смо да урадимо још једну петљу фореацх и ми смо били на петљи преко сваке арр и линија сад ако ми ехо-упс, извини. Ми не можемо користити зарез. Морамо да користимо ово као кључну реч. Сада, ако се ехо линије треба да добију све од јединствених речи у датотеци. Ако одемо до соме_филе.ткт, и рецимо радимо јабука, банана, јабука, јабуке, банане, ако смо штампање свих јединствених речи у овом фајлу само треба да јабуке и банане да штампате. Ако смо сачували ово сада овде ћемо увећали назад, пхп уникуе.пхп, и та-да. Успешно смо уникуед датотеку. Завршни део овог проблема је вас да сортирате овај низ пре него што га штампају јер у овом једноставном примеру који смо управо урадили ми смо имали среће у смислу да филе- Ми смо то урадили вештачки пример јабуке и банане. Већ је сређено. Али, помоћу једноставног сортирања функције можете сортирати низ, што је прилично диван. Коначна ствар коју сам желео да разговарам са вама о стварно брзо је да је ова врста ПХП је све лепо и добро, и то је супер згодна да знате како да то урадите ако вам је потребно да урадите програмски мале, брзе ствари. На пример, ако треба да напише програм који, рецимо, ставља све у одељцима Нећу да одем и писати га у Ц То ће бити дуг. То ће бити нека врста бола, нарочито ако постоје фајлови који су укључени, баш као што сте видели. То је тако лепо да је са само оволико код Ригхт Хере били смо у могућности да рипујете кроз датотеке, извуците све јединствене вредности и штампати их назад. Међутим, за своје задатке, за своје пројекте, Ако правите веб сајтове са ПХП моћ да трчимо наше ПХП фајлове преко овог преводиоца, и преводилац обрађује све у оквиру ПХП тагова, остављајући све остало нетакнуто и пљување из резултате. Можемо то да изгради ХТМЛ програмски. Сада, ако се вратимо на спецификације, последњи проблем у спец Разговори о овој идеји концентрацијама и стварање падајућем менију, коју може или не може да уради, у зависности од тога шта је ваш коначни пројекат ради, који омогућава кориснику да изабере са листе свих могућих концентрација њихова једна концентрација. Дакле, ово је нека врста бола да куцате ово и треба да урадите ручно све ово, поготово кад имате да се уверите да имате све угао заграде у правом мјесту и све цитате на правом месту, тако да са ПХП можете урадити програмски, а ви можете да урадите ово стварно брзо. Хајде да видимо како да то урадите. Ми ћемо отворити нову датотеку. Ми ћемо ставити у наше ПХП тагова. Идемо да га зову цонцентратионс.пхп, и сад кад радиш ово, нека врста добре ствари да мислим о томе када покушавате да се мешају и меч своју ПХП и ХТМЛ је схватите, у реду, шта је део који ја желим да програмски генерише? Који је део који ја могу генерисати програмски? Истина је да можете да урадите све ваше ХТМЛ унутар ПХП блокова. Можете ецхо све ХТМЛ као жица. На пример, ако желим да почнем да радим Избор ознаке унутар ПХП Ја могу да кажем ехо, кажу изаберите име = концентрацију, и онда доле, могао сам још ознаку ехо или друго ехо зове близу изаберите. Ово је један од начина да се то уради, јер оно то је буквално да уради се штампају овај низ кад се покрене кроз ПХП преводиоца, па ће резултат бити ХТМЛ. Ако сам сачувате ову слику као што је сада и ја покренути пхп цонцентратионс.пхп погледајте шта имам. Имам ову отворену блиску изаберите ознаку. Ако бих да се то уради и ја смо били да сачувате овај резултат у датотеку, рецимо, цонцентратионс.хтмл-чекај, то изгледа као л је отишао на другу страну, сад ако ја отворим овде цонцентратионс.хтмл видиш ја имам важећи ХТМЛ фајл. Да ли је то мало чудно? Ми користимо ПХП за креирање ХТМЛ-а, направите валидан ХТМЛ. Начин на који смо ми то радимо је да смо управо имате ПХП отисак ХТМЛ да желимо да одштампате. Ово је буквално како се ПХП сајтови раде. Када посетите сајт који вам шаље нешто налик нешто, нешто, нешто дот цом сласх индек.пхп рачунар је буквално позивање индек.пхп, покрећући га кроз ПХП преводиоца, и шта год ђубре излази то је поново пошаљу на претраживачу и кажу хеј, прегледач, тумаче ово као ХТМЛ. Лепо је ствар је да то може бити бол да стално пише одјек, ехо, ехо, ехо и ставите све у наводницима као што је ова, па ако желите да пишете ХТМЛ који ће бити статичан сами можете да урадите овако, стави ван њега, затворите га, и онда ту само стави унутар ПХП тагова што сте знали желите да програмски стварају, ау овом случају то је та опција ознаке који су бол да генеришу. На пример, можемо генерисати хиљаду ознаке опција радећи нешто овако, $ и <1000, и + + и говорећи ехо опцију вредност = $-Упс, ја не могу то да урадим. Па, хајде да га дају пробати и видети шта се дешава. $ И и онда кажу $ и