[Powered by Google Translate] [8 Секција - поудобно] [Роб Бауден - Универзитетот Харвард] [Ова е CS50. - CS50.TV] Овие недела дел белешки се случува да бидат прилично кратко, па јас сум само ќе го задржи зборува, вие момци се случува да поставувате прашања, и ќе се обидеме да се наполни салата онолку време колку што е можно повеќе. Многу луѓе мислат дека ова pset не е секогаш тешко, но тоа е многу долго. На pset спецификации се зема еден час да ја прочитате. Ние ви даде многу на SQL најверојатно ќе треба да се користи. Ние ви прошетка низ многу од него, па затоа не треба да биде премногу лошо. Дали некој почна или заврши? Тоа е последната pset. О, мојот Бог. Обично таму е да го вклучите Javascript еден по ова, но календар промени работите го прави сето 1 недела пократки, а ние веќе не имаат pset вклучите Javascript-. Не знам како тоа влијае на тоа дали го вклучите Javascript-се случува да се појави на испит или Квиз 1. Претпоставувам дека ќе биде нешто како што треба да знаете високо ниво нешта за JavaScript, но јас се сомневам ние само ќе ви даде право JavaScript код бидејќи не сте имале pset во неа. Но, тоа ќе биде работи за квиз преглед следната недела. Дел од прашањата. А многу на овој материјал е нешто лошо формулиран, но ние ќе разговараме зошто. За разлика од C, PHP е "динамично внесе" јазик. Што значи ова, ви се молам? Па, да речеме збогум на сите оние знак, плови, int, и други клучни зборови треба да користите кога прогласување променливи и функции во C. Во PHP, тип на променлива се дефинира од вредноста што тоа е во моментов држи. Па пред да напишеш овој код во датотека наречена dynamic.php, PHP е динамички отчукува. Тоа е вистина. Јас не се согласувам со фактот дека тоа значи дека ние велиме збогум на знак, плови, int, и други клучни зборови. Точната разлика меѓу динамички отчукува и алтернатива, кој е статички отчукува, е дека динамички отчукува, сите на вашиот тип проверка и нешта се случува за време на подигнувањето, а статички отчукува тоа се случува во компајлирате време. Зборот статички воопшто чини да значи компајлирате време работи. Претпоставувам дека има и други намени за тоа, но во C, кога ќе се изјасни за статичен променлива, неговото складирање е поделена во компајлирате време. Еве, динамички внесе само значи дека - Во C ако се обидете да додадете стринг и број, кога ќе го собере, тоа нема да се жалат поради тоа што се случува да се каже дека не можете да додадете int и покажувач. Тоа не е само валидна операција. Тоа е уште нешто што ние ќе дојдеме во една секунда. Но, тој вид на проверка, фактот дека тоа се жали на компајлирање време, е статички тип проверка. Постојат јазици каде што не треба да се каже знак, плови, int, и сите тие работи, но јазикот може да се каже од контекстот на она што тип што би требало да биде, но тоа е уште статички отчукува. Значи, ако се земе 51, OCaml, никогаш не треба да користите било кој од овие видови, но сепак ќе во компајлирате време велат дека не може да го направи тоа затоа што сте мешање на int и низа. Динамички внесе само значи дека некаде во текот кандидира време ви се случува да се добие тужба. Ако, исто така, се користи Јава пред, воопшто, речиси секој C-тип јазик ќе биде статички отчукува, па C, C + +, Java, сите тие се генерално статички отчукува. Во Јава, кога ќе ги собере нешто и си ти што зборуваш стринг е еднаква на нови нешто што не е стринг, што се случува да се жалат, бидејќи овие видови едноставно не се совпаѓаат. Тоа се случува да се жалат на компајлирање време. Но, тоа, исто така, има некои динамички време работи како ако се обидете да го дадат нешто на тип кој е поспецифични отколку сегашната тип, нема ништо што може да направи во компајлирате време за да се провери дали тоа фрлија се случува да се успее. Јава исто така, има некои динамички тип проверка дека веднаш штом ќе дојдете до таа линија на кодот кога тоа е всушност извршување, тоа се случува да се направи за кастингот, проверите дали тоа фрлија важеше на прво место, и ако тоа не е, тогаш тоа нема да се жалат дека имате валиден тип. Динамичен тип проверка. Внесете тоа во датотека наречена dynamic.php. Dynamic.php. Јас ќе ја отпакувате дека форматирањето. Имаме променлива, ние го постави за цел број 7, тогаш ние ќе треба да го испечатите и% s - О, ние сме печатење на типот на тоа, па gettype се случува да се врати од типот на променлива. Ние сме само печатење видот одново и одново. Ние само php.dynamic.php. Ќе видиме дека таа се менува од број да стринг за да Булова како што ние одиме преку. Во C не постои Булова тип на податоци, не постои низа тип на податок. Има char * и Булова само има тенденција да биде int или знак или нешто. Во PHP овие видови не постојат, и тоа е една од големите предности на PHP над C - дека низа операции се бескрајно полесно во PHP од В тие само работат. Значи ние се врати тука. Ние се стрча dynamic.php. Ова му кажува на PHP преведувач, наречен PHP, да се кандидира на PHP код во dynamic.php. Ако имате било какви грешки во датотека, преведувач ќе ти кажам! Преведувач, ова е уште една голема разлика меѓу PHP и C. Во C мора да ги собере нешто и потоа да го извршите тоа состави датотека. Во PHP никогаш не сте ги собере ништо. Па преведувач PHP е во основа, само читањето на оваа линија по линија. Тоа хитови var = 7 тогаш тоа хитови printf тогаш тоа хитови var тогаш тоа хитови printf и така натаму. Постои малку на составувањето го прави тоа, и тоа кешира резултати па ако се кандидира на сценариото подоцна можете да направите некои, но во основа тоа е линија по линија вид на работа. Тоа значи дека многу од оптимизации што ги добиваме во C, како составувањето, тоа е само обично компајлерот може да направи многу трикови за вас. Тоа може да потрае од неискористените променливи, што може да направи сите овие видови на нештата, што може да направи опашка рекурзија. Во PHP вие нема да добиете дека предност бидејќи тоа е само случува да започне извршување линија по линија по линија, и тоа не е навистина признае овие работи толку лесно бидејќи тоа не е 1 голема компилација преминеш на работа и потоа извршување; тоа е само линија по линија. Значи тоа е преведувач. Назад кон нашиот динамичен пишување: прилично кул, а? Ти дефинитивно не можеше да го стори тоа во C! Сега, видете ако можете да дознаам типот на секоја од следниве вредности. Видете го овој за референца. Значи 3.50. Каков вид мислите дека ќе биде? Еве видови имаме. Ние имаме bools, цели броеви, лебдечки точки, стрингови, низи, предмети, и ресурси, тогаш кој е вид на нејасни. Мислам дека е всушност еден пример тука. Потоа, тука е NULL. NULL е специјален тип. За разлика од C каде NULL е само покажувач со адреса 0, во PHP, NULL е свој тип каде што важи само нешто од тој тип е NULL. Ова е многу повеќе корисни за грешка проверка. Во C каде што имавме овој проблем каде што ако се врати NULL, дали тоа значи дека се враќа е нулти покажувачот или со користење NULL да означува грешка или сите од таа конфузија имавме во еден момент. Еве, враќајќи NULL обично значи грешка. А многу работи, исто така, се врати лажни за грешка. Но поентата е NULL тип, единственото нешто на NULL тип е NULL. Потоа повратен повик е како можете да дефинирате некои анонимни функции. Вие не треба да се даде на функцијата име, но вие не ќе мора да се справи со тоа овде. Гледајќи типови кои тие не очекуваат од нас да знае, што мислите од типот на 3,50 е? >> [Студент] Носете. Да. Па тогаш тука, што мислите од типот на ова? >> [Студент] низа. Да. Првиот беше плови, вториот е низа. Забележете дека оваа низа не е како низа C каде што треба индекс 0, има некои вредност, индексот 1 има некои вредност. Тука индекси се a, b и c и вредности се 1, 2, и 3. Во PHP постои никаква разлика помеѓу асоцијативна низа и само редовни низа како што би помислил на тоа во C. Постои само ова, и под хауба редовна низа е само асоцијативна низа каде што 0 мапи за некои вредност на ист начин мапи за некои вредност. За оваа причина, PHP може да биде прилично лошо за навистина брзо код / ​​компаративни работи бидејќи во C, кога сте со користење низа знаете дека пристапот член е константна време. Во PHP пристап до член е кој знае колку време? Тоа е веројатно постојана ако хашови правилно. Кој знае што е навистина прави под хаубата? Вие навистина треба да се погледне на имплементација да се види како тоа се случува да се справи со тоа. Па тогаш fopen. Мислам дека тука нека е само PHP прирачник fopen да се погледне на враќање тип. Гледаме тука можете да барате до доста било функција во PHP прирачник и ова е вид на човек страница на PHP. Враќање тип ќе биде ресурс. Тоа е зошто јас го погледна нагоре, бидејќи ние навистина не дефинира ресурс. Идејата за ресурс, во C сте вид на доби Датотека * или што; во PHP ресурс е вашата датотека *. Тоа е она што ви се случува да биде за читање од, тоа е она што ви се случува да се пишува за. Тоа е обично надворешен, па тоа е ресурс кој што можат да ги повлечат работи од и фрли работите да. И, конечно, она што е од типот на NULL? >> [Студент] NULL. Да. Значи единственото нешто што е NULL е NULL. NULL е NULL. Една карактеристика на тип систем PHP е (за подобро или за полошо) е во неговата способност да жонглирам типови. Кога пишувате една линија на PHP код, кои ги комбинира вредностите на различни видови, PHP ќе се обиде да го направи разумен нешто. Пробајте секоја од следните линии на PHP код. Што се испечати? Тоа е она што сте очекувале? Зошто да или зошто не? Овој факт за PHP е она што го прави она што го нарекуваме слабо внесе. Слабо внесе и силно отчукува, постојат различни користи за овие услови, но повеќето луѓе го користат слабо внесе и силно отчукува да значи овој вид на работа каде што ("1" + 2); што работи. Во C дека не би сакал да работиш. Можете да замислите оваа не работи. А многу луѓе ги измеша динамичен пишување и слаби пишување и статични пишување и силни пишување. Пајтон е уште еден пример на еден јазик кој е динамички отчукува. Можете да фрли околу видови во променливи и тоа се случува да се утврди во рок време ниедна грешка checkings. Во Python тоа се случува да се изврши ова и ќе видите ("1" + 2); и ова нема да успее, бидејќи вели дека не може да додадете стринг и цел број. Во PHP, што е само како динамички отчукува, ова не ќе пропадне. Слаба пишување има врска со фактот дека тој не работи со типови кои навистина не се направи смисла неопходно. Значи ("1" + 2); Можам да замислам дека е стринг 12, можам да замислам тоа да биде стринг 3, Можам да замислам тоа да биде цел број 3. Тоа не е нужно добро дефинирани, и ние сме веројатно нема да видите тука дека кога ќе печати ("1" + 2), тоа е веројатно нема да заврши се различни од печатењето (1 + "2"). И ова има тенденција да биде, според мое мислење, на полошо. Тука можеме да се обидеме овие. Друг малку трик за PHP е дека не треба да всушност ја запишам датотеката. Тоа го прави да ја извршите оваа команда на владата. Значи php-r, тогаш може да се фрли во командната тука: "Печати ('1 '+ 2);" а јас ќе фрли нова линија. Ова печатени 3. Тоа изгледа како тоа отпечатоци 3 и тоа е број 3. Па сега ајде да се обидеме на друг начин наоколу: "Печати (1 + '2 '); Ние се 3, и исто така ќе биде цел број 3? Јас искрено немам идеја. Изгледа дека е конзистентна. Таму никогаш не е било шанса за тоа се низата 12 или нешто слично затоа што PHP, за разлика од вклучите Javascript-и Java исто така, има посебен оператор за конкатенација. Конкатенација во PHP е точка. Значи печатење (1 '2 '.); Се случува да ни даде 12. Оваа тенденција да доведе до забуна, каде што луѓето се обидуваат да направат нешто слично ул + = некои други нешто што тие сакаат да ги додадете на крајот од нивниот стринг, и дека нема да успеат. Што треба да направите ул. = Па не заборавајте конкатенација во PHP е точка. Други работи кои треба да се обидете: печати ("CS" + 50); Сум ви кажал дека не постои надеж за овој резултира со CS50 бидејќи конкатенација не е +. Што мислите ова ќе заврши се? Јас искрено имаат апсолутно никаква идеја. Тоа изгледа како тоа е само 50. Го гледа низа, и се обложувам дека ако ги 123CS - Го гледа првата низа, се обидува да го прочитате целобројна од него или број од него. Во овој случај тоа гледа 123CS. "Тоа не дава никаква смисла како цел број, па јас сум само ќе мислам на 123." Значи 123 + 50 ќе биде 173. И тука почнува читањето на оваа, како цел број. Таа не гледа ништо, па тоа само го третира како 0. Значи 0 + 50 ќе биде 50. Ова јас сум под претпоставка се случува да се направи нешто слично. Мислам 99. Да, затоа што тоа ќе го направи првиот - Па 99. Тука (10/7), ако ова беа Ц, она што ќе се врати? [Студент] 1. >> Да, тоа ќе биде 1 затоа што 10/7 се дели 2 цели броеви. Цел број поделен со целобројна се случува да се врати цел број. Тоа не може да се врати 1 точка што и ќе биде, па тоа е само ќе се врати 1. Еве печатење (10/7), тоа се случува да всушност го протолкува тоа. А тоа значи дека ако навистина сакате да го направите број заокружување и работи како што, што треба да направите печати (кат (10/7)); Во C тоа е веројатно чудно што може да се потпре на број truncation редовно, но во PHP не можете, бидејќи тоа автоматски ќе ја претвори во плови. А потоа (7 + вистина); што мислите дека ќе биде? Јас сум Сомневајќи 8 ако тоа се случува да се протолкува точно како 1. Тоа изгледа како тоа е 8. Значи нешто што го направив во изминатите 10 минути треба никогаш апсолутно направи. Ќе видите кодот што го прави ова. Тоа не мора да биде толку јасна како оваа. Вие би можеле да имаат 2 променливи, и 1 променлива случува да биде стринг и други променливи се случува да биде цел број, а потоа ќе ги додадете овие променливи заедно. Од PHP е динамички отчукува и тоа нема да се направи секаков вид проверка за вас и бидејќи е слабо внесе и бидејќи само ќе автоматски фрлаат овие работи заедно и сешто само ќе работат, тешко е да се знае дека оваа променлива мора да биде стринг сега, па јас не треба да го додадете ова променлива, што е цел број. Најдобрата практика е ако променливата е низа, го чувам како стринг засекогаш. Ако променливата е цел број, го чувам како int засекогаш. Ако сакате да се справи со цели броеви и стрингови, можете да го користите varsint - тоа е да го вклучите Javascript. Intval. Јас го направите ова цело време. PHP и го вклучите Javascript-се измеша сè. Значи intval се случува да се врати на целобројна вредност на променливата. Ако се поминува во "печати (intval ('123 ')); ќе добиете 123. Intval сама по себе не се случува да се направи проверка за нас дека тоа е исклучиво цел број. Во упатството PHP, постојат само толку многу функции на располагање, па тука мислам дека она што јас би го користите е is_numeric во прв план. Јас сум Сомневајќи се дека се врати лажни. Тоа е друга работа што треба да се оди преку е ===. Значи is_numeric ('123df "), вие не би помислил на тоа како is_numeric. Во C вие ќе треба да iterate во текот на сите ликови и проверете дали секој карактер е цифра или whatever. Еве is_numeric се случува да го направи тоа за нас, и тоа е враќање лажни. Значи, кога јас печатени тоа, печатени ништо, па тука сум споредување да се види, се случи да се лажни? И така сега тој печатење 1. Очигледно тоа отпечатоци 1 како вистински наместо печатење точно како вистински. Се прашувам, ако го направам print_r. Не, тоа се уште не 1. Да се ​​вратам ===, == уште постои, и ако разговарате со Томи ќе рече == е совршено добро. Одам да се каже дека == е страшно и никогаш не треба да се користи. == Разликата е во тоа == споредува работи каде што може да биде вистина, дури и ако тие не се од ист тип, додека === споредува работи и прво тоа проверки се тие на истиот тип? Да. Океј, сега јас ќе одам да се види дали тие всушност се споредат да бидат еднакви. Ќе добиете чудни нешта како 10 еднакви - Ајде да видиме што тој вели. Значи ('10 '== 1 E1'); Ова се враќа точно. Дали некој има било претпоставки зошто ова се враќа вистина? Тоа не е само за тоа. Можеби ова е навестување. Но ако си ги променам дека до ѓ - ја ебам! Јас ги користите двојни наводници. Причината двојни наводници се вика на мене е затоа што јас сум се стави ова во наводници. Па можев да избега од двојни наводници во тука, но единечен наводник го прават тоа полесно. Значи ('10 '== 1 Ф1'); не печати точно. ('10 '== 1 E1'); отпечатоци вистина. [Студент] Дали е тоа хексадецимален? >> Тоа не е хексадецимален, но тоа е блиску што тоа е како - 1e1, научни нотација. Тој признава 1e1 како 1 * 10 ^ 1 или whatever. Оние кои се еднакви цели броеви. Ако го правиме === тогаш тоа ќе биде лажна. Јас всушност немаат идеја ако правиме == што е (10 и '10abc ');? Во ред. Значи тоа е вистина. Значи исто како кога си направил (10 + '10abc '); и тоа ќе биде 20, тука (10 == '10abc '); е вистина. Дури и полошо се работи како (лажни == NULL); е вистина или (лажни == 0); е точно, (лажни == []); Постојат чудни случаи на - Тоа е една од оние чудни случаи. Забележете дека (лажни == []); е вистина. ('0 '== Лажни); е вистина. ('0 '== []); Е лажна. Значи == е во никој случај преоден. на може да биде еднаква на б и може да биде еднаква в, но б не може да биде еднаква на в. Тоа е одвратно за мене, а вие секогаш треба да користат ===. [Студент] Може ли да се направи! == Како? >> [Бауден] Да. Еквивалент ќе биде! = И! ==. Ова е, всушност, израснати во pset спецификации каде што голем број на функции враќање - Прирачникот PHP е добро за ова. Таа го става во голема црвена кутија "Ова ќе се вратат лажни ако има грешка." Но, враќањето 0 е совршено разумни нешто да се вратат. Размислете за било која функција што се очекува да се врати цел број. Да речеме дека оваа функција би требало да се брои бројот на линии во датотеката или нешто. Под нормални околности, ќе помине оваа функција датотека и тоа нема да се врати цел број кој го претставува бројот на линии. Значи 0 е совршено разумни број ако датотеката е само празна. Но, што ако го помине неправилен датотека и функцијата се случува да се врати лажни ако го помине неправилен датотека? Ако само се направи == не сте разликување на случај меѓу валиден датотека и празна датотека. Секогаш користете ===. Тоа е се од нив. Во PHP, низа тип е различно од она што сте навикнати да во C. Всушност, може да имате веќе забележав ова погоре кога виде дека ова е од типот низа. Заградата синтакса е ново од 5,4 PHP, кој е најновата верзија на PHP. Пред тоа секогаш мораше да пишуваат array ('A' -> 1, 'б' -> 2. Тоа беше конструктор за низа. Сега PHP конечно се дојде до убав синтаксата на само загради, која е толку многу подобро отколку низа. Но, со оглед на PHP 5.4 е најновата верзија, може да се судрите места кои дури и не мора PHP 5.3. Во текот на летото ние трчаше во ова прашање, каде PHP 5,3 е она што го имавме на апаратот, но на серверот дека ние распоредени сите наши одделение книга и го доставува и сите нешта да е PHP 5.4. Не знаејќи дека ова, сме развиле во 5.3, наметнува 5.4, а сега одеднаш никој од нашиот код работи бидејќи таму се случи да се промени помеѓу 5,3 и 5,4 кои не се компатибилни, и треба да одиме и да ја поправите сите наши работи кои не работат за PHP 5.4. За оваа класа, бидејќи апаратот има PHP 5.4, тоа е совршено во ред да се користи квадратни загради. Но, ако сте угледување на работите околу на интернет, ако сте во потрага некој вид на низа работи, најверојатно, си оди за да ја видите магија од низа конструктор синтакса, бидејќи тоа е околу бидејќи PHP е роден и квадратни загради синтакса е околу изминатите неколку месеци или кога 5,4 дојдоа околу. Ова е начинот на кој можете индекс. Исто како и во C Како би индексот со квадратни загради како $ низа [0], $ низа [1], $ низа [2], сте индексирање на ист начин, ако се случи да имате индекси се стрингови. Значи $ низа ['A'] и $ низа ['б']. $ Низа [b]. Зошто ова би било погрешно? Тоа веројатно ќе генерираат предупредување, но се уште работат. PHP има тенденција да се направи тоа. Тоа има тенденција да се само "Одам да ве предупредам за тоа, но јас сум само ќе продолжи да оди "И го она што можам." Тоа веројатно ќе се претвори ова во стринг, но можно е дека во одреден момент во минатото некој рече дефинираат б да биде "Hello World". Па сега б би можело да биде постојана и $ низа [b], всушност, ќе се прави "Hello World". Мислам дека во овој момент, или барем нашата поставувања за PHP, ако се обидете да индекс на низата и дека клучот не постои, таа ќе пропадне. Јас не мислам дека тоа само ќе ве предупреди. Или барем можете да го поставите така што таа не само да ве предупредам, тоа само право горе не успее. Начинот на кој се провери да се види дали има всушност е таква индекс е isset. Значи isset ($ низа ['Hello World']) ќе се врати лажни. isset ($ низа ['б']) ќе се вратат вистина. Можете да се меша овие syntaxes. Јас сум прилично сигурни дека она што оваа низа ќе заврши се е - Можеме да го пробате. О, ми треба PHPWord. Ова е мешање на синтакса каде што ќе определи што клучот е и не прецизира колкав клучот е. Значи 3 токму тука е вредност. Вие не експлицитно изјави дека она што нејзините клучни е и ќе биде. Што мислите нејзините клучни ќе биде? [Студент] 0. >> Јас сум Сомневајќи 0 само затоа што тоа е првиот не сме определени. Ние всушност може да направи неколку од овие случаи. Значи print_r е печати рекурзивен. Тоа ќе печати целата низа. Тоа ќе печати subarrays на низата дали имало било. Значи print_r ($ низа); php.test.php. Тоа го прави да изгледа како да го даде 0. Таму е всушност нешто да се има предвид тука, но ние ќе се вратам на тоа во една секунда. Но, што ако се случи да се направи овој индекс 1? PHP не се разликува помеѓу стринг индекси и број индекси, па во овој момент јас сум само дефинираше индексот 1 и можам да ги работам и двете $ низа [1] и $ низа [1 "] и тоа ќе биде истиот индекс и истиот клуч. Па сега што мислите 3 ќе биде? >> [Студент] 2. >> [Бауден] Јас сум Сомневајќи 2. Да. Тоа е 2. Што ако ние го сторивме тоа е 10, тоа е 4? Што мислите индексот на 3 ќе биде? Мислам 11. Моја претпоставка за тоа што PHP не - и мислам дека сум го видел ова пред - тоа е само следи на она што највисок нумерички индекс се користи досега е. Таа никогаш не се случува да се додели стринг индекс на 3. Таа секогаш ќе биде нумеричка индекс. Па тоа следи на највисоката тоа е доделен досега, кој се случува да биде 10, и тоа ќе даде 11-3. Што реков порано, забележи начинот на кој таа е печатење оваа низа. Тоа отпечатоци клучните 10, клучните 4, клучните 11, клучните г. Или дури и ајде да направиме - Претпоставувам дека не се стави 0, но тоа е печатење 1, 2, 3, 4. Што ако јас се префрлат тука? Или да всушност го вклучите овие 2. Сега тоа отпечатоци 2, 1, 3, 4. Низи PHP не се само како вашиот редовни хаш табелата. Сосема е разумно да се размислува за нив како хеш табели 99% од времето. Но во твоите хаш маси нема смисла на редоследот по кој работи беа вметнати. Па штом ќе го вметнете во вашиот хаш табелата, претпостави нема поврзани листа и може да се суди во рамките на поврзани листа која беше вметната во прв план. Но овде inserted 2 првиот и тоа не знае кога тоа е печатење оваа низа дека 2 доаѓа во прв план. Тоа не го испечатите само секој ред. Техничките податоци структура која тоа користење е подредена на сајтот, па тоа мапи клучевите на вредности и се сеќава на редоследот по кој тие клучеви беа вметнати. Во суштина тоа е до некои компликации каде што тоа е досадно да всушност - Да речеме дека имаат низа 0, 1, 2, 3, 4, 5 и сакате да земете индекс 2. Еден начин да се направи тоа, ајде да видиме што изгледа. 0, 2, 1, 3, 4. Размести случува да размести двете променливи и низа индекси. Значи размести ($ низа [2]); Сега она што ова ќе изгледа? 2 е само нема, па тоа е совршено добро. Повеќе досадно е, ако сакате работите, всушност ќе биде како низа. Ќе стави случајни броеви. Сега забележите мојот индекси. Сакам само да биде како низа C каде оди од 0 до должина - 1 и можам да iterate над неа како таков. Но штом ќе размести вториот индекс, што беше во индекс 3 не сега стана индекс 2. Наместо тоа, таа само ја отстранува дека индексот и сега одите 0, 1, 3, 4. Ова е совршено разумни. Тоа е само досадни и треба да ги правите нештата како низа сплетка. Да. [Студент] Што ќе се случи ако сте имале за телефонска линија и сакам да го поминат сите елементи? Кога ќе се удри 2, тоа ќе доведе некогаш? Процесирањето преку низа. Постојат 2 начини можете да го стори тоа. Можете да ги користите редовна за телефонска линија. Ова е уште еден лавиринт на PHP. Повеќето јазици, би рекол, имаат некој вид на должината или Лен или нешто покажуа должината на низата. Во PHP е брои. Значи брои ($ низа); $ i + +) Ајде само печати ($ низа [$ i]); Напомена: Недефиниран поместување: 2. Тоа е само ќе пропадне. Ова е од причина што, во најголем дел, никогаш не треба да iterate преку низа допаѓа ова. Тоа би можело да биде претерување, но никогаш не треба да iterate преку низа вака затоа што PHP обезбедува на своите foreach синтакса каде foreach ($ низа како $ точка). Сега ако ние печати ($ содржина); - we'll се дискутира за тоа во вториот - кој работи совршено добро. Начинот на кој foreach работи е првиот аргумент е низа која сте процесирањето завршена. И вториот аргумент, точка, преку секоја помине на за телефонска линија тоа се случува да се земе на следното нешто во низа. Значи се сеќавам на низа има една цел. Првиот пат низ за телефонска линија, ставка ќе биде 123 тогаш тоа ќе биде 12 тогаш тоа ќе биде 13 тогаш тоа ќе биде 23 тогаш тоа ќе биде 213. Работите се навистина чудно кога ќе се направи нешто како foreach. Ајде да видиме што ќе се случи затоа што никогаш не треба да го направите тоа. Што ако ние размести ($ низа [1]); Тоа е веројатно очекуваше. Ти си процесирањето над оваа низа, и секој пат кога ќе одземање на првиот индекс. Значи за индекс 0, првото нешто точка зема вредност 0, па тоа ќе биде 123. Но во внатрешноста на за јамка ние размести индекс 1, па тоа значи дека 12 се качил. Значи печати. PHP_EOL. PHP_EOL е само линија, но тоа е технички повеќе преносни од новите редови во Windows е различен од новите редови на Mac и UNIX. На Windows линија е \ r \ n, додека секаде на друго место тоа се стреми само да бидат \ n. PHP_EOL е конфигуриран така што го користи без оглед на линија на вашиот систем е. Значи печати тоа. Да не print_r ($ низа) на крајот. Немав поим дека тоа би било однесувањето. Содржина се уште е потребно за вредноста 12 иако ние размести 12 пред некогаш морате да ја од низата. Не земајте мојот збор за тоа, но тоа изгледа како foreach креира копија на низата а потоа точка презема сите вредности на таа копија. Па дури и ако менувате низата внатре во за телефонска линија, тоа не ќе се грижи. Точка ќе преземе во врска со оригинални вредности. Да се ​​обидеме одземање неа. Што ако ова е $ низа [1] = "здраво"; Иако ние се стави "здраво" во низа, никогаш содржина зема таа вредност. Има уште една синтакса за foreach петелки каде што ќе се стави 2 променливи разделени со стрела. Овој прв променлива ќе биде клучот на таа вредност, и оваа втора променлива ќе биде иста точната содржина. Ова е неинтересен тука, но ако ние одиме назад кон нашето изворно случај на 'A' -> 1, "B" -> 1, тука ако ние само iterate за секоја низа како точка, точка ќе биде 1 секој пат. Но ако ние, исто така, сакаат да знаат клучот кој е асоциран со таа ставка тогаш го правиме како $ клучните -> $ ставка. Па сега можеме да направиме печати ($ клуч. ':'. Сега е процесирањето над и печатење на секое копче и неговите поврзани вредност. Дополнителна работа што можеме да направиме во foreach петелки е може да се види оваа синтакса. Ampersands пред променлива имиња имаат тенденција да бидат како PHP прави референци. Каде референци се многу слични на покажувачи, немате совети, така што никогаш справи со меморија директно. Но, вие немате референци каде 1 променлива однесува на истото како друга променлива. Внатрешноста на тука ајде да направиме $ ставка. Да се ​​вратиме на 1, 10. Ајде да го направите $ точка + +, а тоа се уште постои во PHP. Се уште можете да направите + +. php.test.php. Морам да го испечатите. print_r ($ низа); Ние печати 2, 11. Ако имав само направено foreach ($ низа како $ точка) тогаш точка ќе биде вредност 1 прв пат преку телефонска линија. Тоа ќе прираст 1-2, а потоа ние ќе завршиш. Па тогаш тоа ќе оди преку втор пат на телефонска линија и таа ставка е 10. Тоа постепено точка до 11, а потоа тоа е само фрлени. Тогаш ние print_r ($ низа), и ајде да видиме дека ова е само 1, 10. Па прираст ние го сторивме беше изгубена. Но foreach ($ низа како и $ точка) сега оваа точка е иста содржина како овој овде. Тоа е истото. Значи $ точка + + е промената низа 0. Во суштина, исто така можете да направите $ k -> $ точка и што можете да направите $ низа [$ k] + +; Значи друг начин тоа да го направам, ние сме слободни да ја промените точка, но тоа не ќе се измени нашата изворна низа. Но, ако ние ги користиме k, која е нашата клуч, тогаш можеме да само индекс во нашата низа користење на тој клуч и зголемување тоа. Ова подиректно модифицира нашата изворна низа. Можете дури да го направи тоа ако поради некоја причина си сакал на способноста да се промени - Всушност, ова е совршено разумни. Вие не сакате да мора да пишуваат $ низа [$ k] + +, само сакав да напишам $ точка + +, но се 'уште сака да се каже ако ($ K ===' а ') тогаш прираст точка, а потоа печати нашите низа. Па сега што очекуваме print_r да направам? Кои вредности треба да бидат отпечатени? [Студент] 2 и 10. >> [Бауден] Само ако клучот е "а" ние всушност печати тоа. Најверојатно многу ретко, ако некогаш, ќе треба да се дефинираат функции во PHP, но можеби ќе видите нешто слично, каде што се дефинира функција како функција сеедно. Обично ќе каже ($ foo, $ лента), а потоа се дефинира да биде сеедно. Но, ако го направам тоа, тогаш тоа значи дека она што го нарекува она, она што го нарекува baz, така што првиот аргумент проследен до baz може да се промени. Ајде да го направите $ foo + +; и во внатрешноста на тука ајде да направиме baz ($ содржина); Сега ние се јавувате функција. Овој аргумент е донесена од страна референца, што значи дека ако ние го менувате ние сме менување на нешто што беше донесен внатре И печатење на ова очекуваме - ако јас збркана синтаксата - добивме 2, 11, па тоа е всушност зголемува. ИЗВЕСТУВАЊЕ ние треба референци во 2 места. Што ако сум го правела тоа? Што значи ова? [Студент] Тоа ќе се промени. >> Да. Точка е само копија од вредност во низа. Значи точка ќе се промени до 2, но низа ["а"] се уште ќе биде 1. Или што ако го направам тоа? Сега содржина е пратена како копија на baz. Па копија од аргумент ќе биде зголемено до 2, но ставка себе никогаш не беше зголемува до 2. И точка е истото како низа заградата што, така што низа никогаш не беше зголемува. Па и тие места треба. PHP е обично прилично паметни за тоа. Можеби мислите Сакам да помине со повикување - Ова беше всушност прашање на еден од psets. Тоа беше questions.txt нешто каде што рече, Зошто можеби ќе сакате да го помине овој struct со повикување? Она што беше одговорот на тоа? [Студент] Значи, вие не треба да го копирате нешто големо. >> Да. А struct може да биде произволно големи, и кога ќе стигнете на struct како аргумент тоа треба да го копирате целиот тој struct да го помине на функција, а ако само го положат struct со упатување тогаш тоа само треба да го копирате 4-бајт адреса како аргумент на функцијата. PHP е малку попаметен од тоа. Ако имам некоја функција и јас помине да го низа од 1000 работи, дали тоа значи дека ќе треба да го копирате сите 1.000 од тие работи да го предадете во функција? Тоа не мора да го направите тоа веднаш. Ако внатрешноста на оваа функција никогаш всушност модифицира foo, па ако ($ foo === "hello") враќање вистина;. Забележете ние никогаш всушност изменета аргумент во внатрешноста на оваа функција, што значи дека она што беше донесен како никогаш foo треба да бидат копирани бидејќи тоа не е тоа менување. Па начинот на PHP дела е аргументи секогаш се донесени од страна на референтни додека вие всушност се обидуваат да го менувате. Сега ако кажам $ foo + +, сега тој ќе направи копија на оригиналот foo и менувате копија. Ова заштедува време. Ако никогаш не сте ја допира оваа масивна низа, никогаш не сте всушност го менувате, тоа не треба да се направи копија, а ако ние едноставно се стави ова симболот тоа значи дека тој дури и не го ископирате дури и ако не го менувате. Ова однесување е наречен копи-на-пишуваат. Ќе го видиме во други места, особено ако се земе оперативен систем се разбира. Копи-на-пишуваат е прилично вообичаениот модел каде што не треба да се направи копија на нешто освен ако тоа е всушност менува. Да. [Студент] Што ако сте имале на прираст во внатрешноста на тест, па само 1 елемент од 1000 ќе треба да се промени? Јас не сум сигурен. Мислам дека тоа ќе копирате целата работа, но тоа е можно тоа е доволно паметни за тоа - Всушност, она што мислам е да се замисли имавме низа која изгледа вака: $ array2 = [ Потоа "на" индекс е низа од [1 2 3 4], а индексот "b" е низа од сеедно. Ми треба запирки помеѓу сите нив. Замислете има запирки. Потоа "c" е вредноста 3. Во ред. Сега да речеме правиме $ baz ($ array2); каде baz не ја искористам оваа референца. Значи $ foo ['в'] + +; Ова е таков пример, каде што се поминува array2 како аргумент а потоа се модифицира одредена индекс на низата преку зголемување него. Јас искрено немам идеја што PHP е случува да се направи. Тоа може лесно да се направи копија на целата работа, но ако тоа е паметен, тоа ќе го направи копија од овие копчиња кога тоа ќе има посебна вредност но ова сè уште може да укажуваат на исти низа 1,2,3,4 и ова сè уште може да укажуваат на исти низа. Ке iPad неа. Ние помине во оваа низа каде што овој човек поени 3, овој човек точки на [1,2,3,4] овој човек поени [34 ...] Сега дека ние сме го поминува во baz, ние сме промената ова. Ако PHP е паметен, тоа само може да го направи - Имаме уште да го копирате некои меморија, но ако имало овие огромни вгнездени subarrays ние не треба да го копирате нив. Јас не знам дали тоа е она што го прави тоа, но можам да си го замислам тоа. Ова е исто така прилично голема предност на C над PHP. PHP го прави животот многу полесно за многу нешта, но вид на имаат апсолутно никаква идеја како и тоа ќе го изврши бидејќи немам идеја под хаубата кога тоа е правење овие копии на нештата, ох, е дека ќе биде постојано пат копија, тоа е само ќе се смени 1 покажувач, е тоа ќе биде смешно тешко линеарни копија? Што ако не можат да најдат простор? Дали тогаш треба да се кандидира собирање на ѓубрето да се добие малку повеќе простор? И собирање на ѓубрето може да се произволно долго. Во C вие не мора да се грижите за овие работи. Секоја линија што пишувате може доста причина за тоа како тоа се случува да ги исполни. Да ги погледнеме назад во нив. Како убаво е тоа што вие не мора да се справи со хаш функции, поврзани листи, или нешто слично? Од работа со хаш табелата е така лесно сега, тука е забавно загатка за работа. Отвори датотека наречена unique.php и во него се напише програма PHP (Исто така познат како "сценариото"). Ние тежнееме да ги нарекуваат скрипти ако тие се кратки работи што работат во командната линија. Во суштина, секој јазик што не ги собира, но ви се случува да се кандидира на извршна на командната линија, можете да се јавите дека извршна скрипта. Јас само како добро може да напише програма Ц која го прави ова, но јас не го наречеме една скрипта бидејќи јас прв пат го компајлирате и потоа извршете ја бинарни. Но оваа програма PHP ние ќе да се јавите на сценариото. Или ако ние го напишал во Python или Perl или Node.js или било која од тие работи, ние би ги нарекуваат сите скрипти затоа што ги извршувате во командната линија но ние не ги собира. Ние би можеле да го направите тоа прилично брзо. Ние не се случува да се користи argv. Ајде само удар преку ова. Наречи го тоа уникатен, напише програма. Може да се претпостави дека влезот ќе содржат еден збор на линија. Всушност, argv ќе биде прилично тривијална да го користите. unique.php. Првото нешто што прво, ние сакаме да се провери ако се донесе 1 командната линија аргумент. Исто како што би очекувале argc и argv во C, ние се уште имаат оние во PHP. Значи, ако ($ argc! == 2) тогаш не ќе се занимаваат со печатење на порака или ништо. Јас само ќе излезете, код за грешка од 1. Јас, исто така може да се врати 1. Ретко во PHP сте во оваа држава каде сме во - Обично сте во функција наречена од страна на функција наречена од страна на функција наречена од страна на функција. И ако нешто тргне наопаку и само сакате да излезете што во целост, излез само завршува програмата. Ова исто така постои во В Ако сте во функција во функција во функција во функција и сакате само да ги убијат на програмата, можете да се јавите излез и тоа само ќе излезам. Но во PHP тоа е дури и повеќе ретки дека ние сме во ова највисоко ниво. Обично ние сме во некој вид на функција, така што ние го нарекуваме излез така што ние не треба да се вратат до 1 нешто што тогаш сфаќа има грешка така што се враќа, ако тоа го признава имаше грешка. Ние не сакаме да се справи со тоа, па излезете (1); врати (1); во овој случај ќе биде еквивалентно. Потоа она што сакате да го отворите сакаме да fopen. Аргументите се случува да изгледа прилично слични. Ние сакаме да fopen ($ avg [1], и ние сакаме да го отвори за читање. Што враќа ресурс кој ние ќе се јавите ѓ. Ова изгледа прилично слични на тоа како C го прави освен што не треба да се каже СЛИКА *. Наместо тоа, ние само велат $ ѓ. Во ред. Всушност, мислам дека ова дури ни дава помош за PHP функцијата се нарекува датотека. PHP датотеката. Што е ова се случува да направите е да прочитате целата датотека во низа. Вие дури и не треба да fopen неа. Тоа ќе го направи тоа за вас. Значи $ линии = датотека ($ avg [1]); Сега сите линии на датотека се во ред. Сега ние сакаме да ги сортирате линии. Како можеме да ги сортирате линии? Ние ги сортирате линии. И сега можеме да ги испечатите или whatever. Веројатно најлесниот начин е foreach ($ линии како $ линија) echo $ линија; [Студент] Зарем не можеме дури и крстот линии од страна на референцирање нешто во вид? Ова е местото каде вид ќе се дефинира како функција вид (& $ низа). Кога ќе се јавите на функција не го помине со повикување. Тоа е функција која го дефинира како земајќи го како референца. Ова всушност е токму она што не беше во ред кога ќе се стави се на нашите сервери кога отидовме 5,3-5,4. До 5,4, ова беше совршено разумни. А функција не очекува да се земе како референца, но можете да го помине како референца па ако функцијата не се случи да го менувате, тоа е уште изменета. Од 5.4, не си требал да го направите тоа. Па сега единствен начин да помине со повикување е ако функцијата експлицитно го прави тоа. Ако не сакате да го менувате, тогаш што треба да направите $ копија = $ линии и помине копија. Па сега линии ќе бидат зачувани и копија ќе се промени. php.unique.php. Јас би можеле да имаат Слободен нешто. Неочекувано "тип". Таму ќе биде нешто што го прави ова за нас. Тоа не е дури и таму. Забележите кога ќе прочитате упатството дека првиот аргумент се очекува да биде низа и тоа е донесена од страна на референцата. Зошто е ова жалат за мене? Бидејќи имам оваа функција вид сеуште тука дека не сакам. Океј, php.unique.php. И јас не ја помине аргумент, бидејќи јас немам датотека. Тоа е php.unique.php на test.php. Тука е test.php сите отпечатени во еден убав подредени ред. Забележете дека подредени цел е вид на чудно за кодот датотека затоа што сите наши празни линии се случува да дојде прв тогаш се случува да дојде на сите наши 1 ниво засеци а потоа доаѓаат сите наши нема засеци. Да. >> [Студент] Значи за изворниот код не беше усвоен од страна референца? Е дека генерално усвоен од вредност? [Бауден] Кога ќе се јавите на функција, никогаш не одредува дали тоа беше донесен од страна на референцата. Тоа е функција дефиниција која одредува дали тоа беше донесен од страна на референцата. И да гледа во дефиницијата на функцијата на вид или само гледајќи во тоа, е потребно аргументот со повикување. Значи без оглед на тоа дали сакате да го однесе со упатување, тоа не го земам со повикување. Тоа модифицира низа во место. Ова не е само дозволено. Не ви е дозволено да го стори тоа. >> [Студент] О, во ред. [Бауден] Ова, сортирање се случува да се земе линии со повикување и менувате. И повторно, ако не сакате тоа да го направите тоа, можете да направите копија од вид. Дури и во овој случај, копија не е всушност копија на линии. Тоа само укажува на истото, додека таа прва добива модифицирани, каде што тоа е прв случува да се модифицира во вид функција, каде што, затоа што тоа е копи-на-пишуваат, сега копија на копија ќе бидат направени. Исто така можете да го направите тоа. Тоа е друго место можете да видите симболот. Можете да ги види во foreach петелки, ти го гледаш во функција декларации, и ти го гледаш кога само давање променливи. Сега имаме постигнато ништо со тоа бидејќи копија и линии се буквално истото. Можете да ги користите линии и копирајте мешаат. Можете да го направите размести ($ копија); и дека не размести линии, само ја изгуби својата врска со истото. Па како на оваа точка, сега линии е единствениот начин можете да пристапите линии. Прашања? Да. [Студент] Сосема надвор од темата, но вие не треба да се затвори PHP со - >> Ти не. Во ред. [Бауден] Јас би одиме толку далеку, да се каже дека е лоша пракса да ги затвори. Тоа е веројатно претерување, особено во сценариото, но ајде да видиме што ќе се случи ако го направам ова. Дека не направиле ништо. Што ако сакав - [воздишки] Јас треба да помине аргумент. Пука. Се јавив тоа погрешно. Значи php.unique.php со аргумент. Сега јас дури и не треба ова. Јас ќе ја донесе валиден аргумент. Ова печатени она што е печатење. Јас сум печатење копија и копија не постои. Значи линии. Тоа печатени сè, а потоа се забележи сето ова ѓубре овде долу, бидејќи во PHP нешто што е надвор на PHP тагови е само ќе бидат испечатени буквално. Тоа е зошто HTML, тоа е толку убаво тоа што можам да направам div бла, бла, бла класа или што, бла, бла, бла, а потоа направи некои PHP код и потоа направете крајот div. И сега печатење оваа можам да добијам моите убави div до врвот, сè што PHP печатени, div на дното. Катастрофални кога вакво нешто се случува, што е прилично честа појава, само скитници линија на дното на датотека. Вие не би помислил дека ќе биде толку голема за постигнување на договор додека не се разгледа на фактот дека со прелистувачи - Како пренесувања работа или во основа било заглавија работа, кога ќе се направи вашата врска до веб-сајт и се праќа назад сите овие заглавија и нешта како одговор 200 или одговор пренасочи или што, заглавија се важи само до првиот бајт од податоците се праќаат. Можете да го пренасочи илјадници пати, но штом првиот бајт од податоците се праќаат не си требал да ги пренасочи повторно. Ако имате скитници линија на дното на датотеката и ајде да речеме дека сте ја користите оваа функција, а потоа дека сакате да го - Да речеме дека тоа е уште еден фајл кој е index.php и require_once нешто - Јас не можам да смислам добар пример за тоа. Прашањето што се случува кога оваа линија на дното добива повтори. Вие не сакате ништо да се повтори уште. И покрај тоа што не планираат на ништо добивање повтори, нешто не се повтори па сега не си требал да испрати повеќе заглавија и си оди за да се добие жалби. Вие само не ти требаат тие затворање тагови. Ако планирате да правите нешто со HTML - и тоа е совршено разумно да се направи овде div што а потоа во овој момент можете или не можете да ги вклучите. Тоа навистина не е важно. Но во PHP скрипти тоа е ретко да го затворите. Кога сè е PHP, апсолутно се, Вие навистина не треба да се затвори / не треба да го затвори. Справување со жици е многу поубав отколку во В Во PHP можете да наведете еден стринг со единечен или двојни наводници. Со единечен наводник не можете да користите "избега" секвенци. Постојано избега, бла, бла, бла. Значи printf е многу ретка во PHP. Претпоставувам дека ќе го користат printf ако сакав да направам еден вид на работа - во pset 5 ќе се користи sprintf или whatever. Но сакате да го направите 001.jpg и 002.jpg. Па за тој вид на работа, каде што всушност сакате да го форматирате текстот би го користите printf. Но инаку јас само ќе го користи низа конкатенација. Јас всушност никогаш не го користите printf. Ние сме само разликување на детали помеѓу единечен наводник и двојни наводници. Најголемата разлика е во тоа што единствено цитати, тоа ќе биде отпечатена буквално. Не постои знак тип на податоци во PHP, за разлика од C, па ова е еквивалент на ова. Тие се двете жици. И убаво нешто за еден цитат стрингови е можев да кажам "Hello World!" бла, бла, бла, $ $ Wooo. Што се случува кога ќе се печати ова е тоа ќе го печати буквално. Да се ​​ослободи од сите наши работи. Значи echo $ str1; Тоа буквално печатени на сите оние нешта: доларот знаци, обратна коса црта n, што ќе помислите ќе биде новите редови - сите оние нешта што отпечатоци буквално. Единственото нешто што треба да избега се единечен наводник бидејќи во спротивно тоа ќе помислев дека тоа е затворање на единечен наводник. Двојни наводници, сосема поинаква. Ние веќе ја видите синтакса за нагласување ни cluing на она што е за да одат наопаку. php.unique. Недефиниран променлива wooo бидејќи ова се толкува како променлива наречена wooo. Двојни наводници ви вметнете променливи во - Да речеме $ име = "Роб"; Значи echo "Здраво, моето име е $ име!"; Тој признава ова како променлива. Кога ќе ја стартувате тоа - и јас ќе ја внесе нова линија - Здраво, моето име е Роб! и Hello World! Тоа е затоа што никогаш не сум отстранета печатење на wooo погоре. Постои 1 чекор можете да направите. $ Низа = [1, 2, 3]; Што ако сакам да се печати првиот индекс на низата? Правиш $ низа [0]. На синтакса за нагласување е поим. Што е ова се случува да направам? php.unique. Здраво, моето име е 1! која не е она што сакав. Синтакса за нагласување легна до мене. Да се ​​обидеме 'A' -> 1, 'б' -> 2. Тоа е како јас ќе треба да го пишувам. Неочекувано еден цитат (T_ENCAPSED бла, бла, бла, бла, бла). Идејата е дека тоа не е препознавање на оваа, како дел од низата. Тоа не е Признавајќи го ова како низа индексирани од страна на писмо. Сакате да го направите тоа опкружен со големи загради, и сега што е во оваа заграда кадрави ќе биде интерполирана, кој е словото што го користиме за магично вметнување овие променливи во вистинските места. Сега тоа, php.unique и Здраво, моето име е 1! како што се очекуваше или Здраво, моето име е Роб! Едно нешто што е вид на убаво за единечен наводник е дека - Има некои трошоци за interpolating. Ако користите двојни наводници, преведувачот мора да одат преку овој стринг, што си сигурен дека "Ах, тука е променлива. Сега треба да одам да купам таа променлива и да внесете го тука." Дури и ако не се употребуваат никакви променливи, ништо во внатрешноста на овие двојни наводници треба да биде интерполирана, но сепак ќе биде побавен, бидејќи таа треба да оди преку двојни наводници барате работи кои треба да биде интерполирана. Значи единечен наводник може да биде малку побрзо, ако ништо треба да биде интерполирана, и јас имаат тенденција да дури и се користи единечен наводник за "Здраво, моето име е". $ Низа ["а"] во секој случај. Тоа ќе биде еквивалентно на она што го имавме порано. Но, тоа е прашање на избор. Ако сте со користење на PHP, веројатно не им е грижа за брзината разлика. Не е доволно да им се причина да почне. Последни прашања? Ние всушност не се ни добиете преку сето тоа, но овој материјал беше досадно. Последно нешто што е вид на убаво во PHP е кога си имаш работа со HTML, ќе го користите малку, па убаво кратенка синтакса за печатење променлива. Без ставање PHP тука, ова се нарекува краток тагови. Официјално, како на PHP 5.4, ова е запоставена. Ви се препорачува да се стави PHP. Ова е уште поддржани, толку краток тагови со