[Powered by Google Translate] [Kafli 8 - öruggari] [Rob Bowden - Harvard University] [Þetta er CS50. - CS50.TV] Þessar kafla viku Skýringar eru að fara að vera nokkuð stutt, þannig að ég ætla bara að fara að halda að tala, eruð þið að fara að halda að spyrja spurninga, og við munum reyna að fylla upp eins miklum tíma og mögulegt er. A einhver fjöldi af fólk hugsa að þessi pset er ekki endilega erfitt, en það er mjög lengi. The pset sérstakur sjálft tekur klukkustund að lesa. Við gefa þú a einhver fjöldi af the SQL þú gætir hugsanlega þurft að nota. Við göngum í gegnum mikið af því, svo það ætti ekki að vera svo slæmt. Hefur einhver byrjaði eða lokið? Það er síðasta pset. Ó, Guð minn. Venjulega er einhver JavaScript einu eftir þessu, en dagbók breyta hlutum gerir allt 1 viku styttra, og við höfum ekki lengur að hafa Javascript pset. Ég veit ekki hvernig það hefur áhrif á hvort JavaScript er að fara að birtast á prófinu eða próf 1. Ég ímynda mér að það verði að vera eitthvað eins og þú þarft að vita háttsettum hluti um Javascript, en ég efast um að við myndum bara gefa þér beint JavaScript kóða þar sem þú hefur ekki haft pset í það. En það mun vera efni í spurningakeppni endurskoðun í næstu viku. Hluti af spurningum. A einhver fjöldi af þessu efni er nokkuð illa orðuð, en við munum ræða hvers vegna. Ólíkt C, PHP er "virk-tegund" tungumál. Hvað þýðir þetta, spyrja þig? Jæja, kveðja til allra þeirra bleikju, fljóta, int, og öðrum leitarorðum sem þú þarft að nota þegar lýsa breytum og aðgerðir í C. Í PHP er tegund breytu er ákvarðast af gildi sem það er nú að halda. Svo áður en við slá þennan kóða inn í skrá sem kallast dynamic.php, PHP er mjög virk slegið. Það er satt. Ég er ósammála með því að það þýðir að við erum að segja bless við bleikju, fljóta, int, og önnur leitarorð. Nákvæm munur dynamically tegund og til vara, sem er statically tegund, er þessi dynamically tegund, allir stöðva tegund og efni gerist meðan hlaupa, en statically slegið það gerist á saman tíma. Orðið truflanir almennt virðist meina safna tíma hluti. Ég giska á að það eru önnur not fyrir það, en í C þegar þú lýsa truflanir breytu, geymsla hennar er úthlutað á saman tíma. Hér dynamically tegund bara þýðir að - Í C ef þú reynir að bæta við streng og heiltala, þegar þú þýða það, það er að fara að kvarta vegna þess að það er að fara að segja að þú getur ekki bætt við int og bendilinn. Það er bara ekki gild aðgerð. Það er annar hlutur sem við munum fá í annað. En þessi tegund af athugun, sú staðreynd að það kvartar á þýðingu tíma, er fast tegund stöðva. Það eru tungumál þar sem þú þarft ekki að segja bleikju, fljóta, int, og alla þá hluti, en tungumálið geta sagt frá tengslum málið hvaða tegund það er ætlast til að vera, en það er samt statically tegund. Svo ef þú tekur 51, OCaml, þú þarft aldrei að nota eitthvað af þessum tegundum, en það er enn mun á saman tíma segja að þú getur ekki gert þetta vegna þess að þú ert blanda á int og streng. Dynamically slegið þýðir bara að einhvern tíma á hlaupa tíma sem þú ert að fara að fá inn kvörtun. Ef þú hefur líka notað Java áður, almennt, næstum allir C-tegund tungumál er að fara að vera statically tegund, svo C, C + +, Java, allar þessar eru almennt statically slegin. Í Java þegar þú þýða eitthvað og þú ert að segja band s jafnt nýtt eitthvað sem er ekki band, sem er að fara að kvarta vegna þess að þær tegundir bara passa ekki upp. Það er að fara að kvarta á saman tíma. En það hefur einnig nokkur dynamic tíma hlutum eins og ef þú ert að reyna að varpa einhverju að tegund sem er nákvæmari en núverandi gerð þess, það er ekkert sem það getur gert á saman tíma til að athuga hvort að kastað er að fara til að ná árangri. Java hefur einnig nokkur dynamic tegund stöðva að um leið og það gerist að línu af kóða þegar það er í raun framkvæmd, það er að fara að gera kastað, athuga hvort að kastað var í gildi í fyrsta sæti, og ef það væri ekki, þá er að fara að kvarta yfir því að þú sért með ógild tegund. Dynamic tegund stöðva. Sláðu þessu inn í skrá sem kallast dynamic.php. Dynamic.php. Ég renna niður að forsníða. Við höfum breytu, við sett það til tölunnar 7, þá erum við að fara að prenta það og% s - Ó, erum við prentun gerð af því, svo gettype er að fara að skila tegund af breytu. Við erum bara að prentun gerð aftur og aftur. Við bara php.dynamic.php. Við munum sjá að það breytist frá tölunnar til band til Boolean sem við förum í gegnum. Í C er ekki Boolean gögn tegund, það er ekkert band gögn tegund. Það er char * og Boolean bara tilhneigingu til að vera int eða stafir eða eitthvað. Í PHP þessar tegundir ekki til, og það er einn af stóru kostum PHP yfir C - að band aðgerðir eru óendanlega auðveldara í PHP en C. Þeir vinna bara. Svo komum við aftur hingað. Við hljóp dynamic.php. Þetta segir PHP túlkur, sem heitir PHP, til að keyra PHP kóðann í dynamic.php. Ef þú hefur einhverjar villur í skrá, túlkurinn mun segja þér! Túlkurinn, þetta er annar stór munur á milli PHP og C. Í C þú þarft að safna saman eitthvað og þá hlaupa þessi vistþýddu skrá. Í PHP þú saman aldrei neitt. Svo PHP túlkur er í rauninni bara að lesa þessa línu. Það hits var = 7 þá slær það printf þá hits var þá smellir printf og svo framvegis. Það er hluti af samantekt það er, og það felustaður niðurstöður þannig að ef þú keyrir handrit seinna þú getur gert sumir, en í grundvallaratriðum er það lína af tegund línu af hlutur. Það þýðir að mikið af þeim hagræðingar sem við fáum í C, eins og setja saman, það er bara almennt þýðandi getur gert mikið af bragðarefur fyrir þig. Það getur tekið út ónotaður breytur, það getur gert alla þessa tegund af hlutur, það er hægt að gera hali endurkvæmni. Í PHP þú ert ekki að fara að fá að nýta því það er bara að fara að byrja að framkvæma línu fyrir línu, og það er í raun ekki viðurkenna þetta eins auðveldlega þar sem það er ekki 1 stór samantekt fara yfir málið og þá framkvæmd; það er bara lína eftir línu. Svo sem túlkur. Baka til dynamic slá okkar: laglegur kaldur, ha? Þú ákveðið gat ekki gert það í C! Nú, sjá hvort þú getur fundið út hvaða hver af eftirfarandi gildum. Sjá þetta til viðmiðunar. Svo 3.50. Hvaða tegund finnst þér það er að fara að vera? Hér eru þær tegundir sem við höfum. Við höfum bools, heiltölur, fljótandi stig, strengir, fylki, hlutir, og auðlindir, sem er eins konar óljóst. Ég held að það er í raun dæmi hér. Þá er það NULL. NULL er sérstök tegund. Ólíkt C þar NULL er bara músina með tölu 0, í PHP, NULL er eigin tegund hennar þar sem aðeins gild hlutur af þeirri tegund er NULL. Þetta er miklu meira gagnlegt að stöðva villa. Í C þar sem við höfðum þetta mál þar sem ef þú skila NULL, þýðir það að þú ert að skila NULL músina eða nota NULL til að signify villa eða allt það rugl sem við átti á einum stað. Hér, aftur NULL yfirleitt þýðir villa. A einhver fjöldi af hlutur aftur einnig rangt fyrir villa. En málið er NULL tegund, eina í NULL tegund er NULL. Þá er svarhringingu eins og þú getur skilgreint nokkrar nafnlausar aðgerðir. Þú þarft ekki að gefa aðgerðina nafn, en þú þarft ekki að takast á við það hér. Þegar litið er á þær tegundir sem þeir búast við okkur til að vita, hvað finnst þér um tegund af 3,50 er? >> [Nemandi] Fljóta. Já. Svo hér, hvað finnst þér um tegund þetta er? >> [Nemandi] Array. Já. Sú fyrsta var fljóta, annað er fylki. Takið eftir að þetta fylki er ekki eins og C array þar sem þú hefur yfirlit 0 hefur einhverja gildi, 1 er vísitala neysluverðs hefur sumir gildi. Hér vísitölur eru a, b, og c og gildin eru 1, 2, og 3. Í PHP er engin munur milli tengin array og bara venjulegur array eins og þú vildi hugsa um það í C. Það er bara þetta, og undir hetta reglulega array er bara tengin array þar sem 0 Kort í nokkur gildi á sama hátt og kort til nokkur gildi. Af þessum sökum, PHP geta vera laglegur slæmt fyrir mjög fljótur kóða / kvóti hluti síðan í C þegar þú ert að nota array þú veist að fá aðgang meðlimur er stöðug skipti. Í PHP aðgang meðlimur er sem veit hversu mikinn tíma? Það er líklega stöðugt ef það kjötkássa rétt. Hver veit hvað það er í raun að gera undir hetta? Þú þarft virkilega að líta á framkvæmd til að sjá hvernig það er að fara að takast á við það. Svo fopen. Ég held að hér skulum bara PHP handbók fopen að horfa á aftur gerð. Við sjáum hér að þú getur litið upp nánast allir virka í PHP handbók og þetta er svona að maður síðu PHP. Afrakstur tegund er að fara að vera auðlind. Það er ástæða þess að ég leit upp, vegna þess að við vissum ekki í raun skilgreina auðlind. Hugmyndin um auðlind, í C Manni fékk skrá * eða hvað; í PHP úrræði er FILE * þinn. Það er það sem þú ert að fara að vera að lesa frá, það er það sem þú ert að fara að skrifa í. Það er yfirleitt ytri, svo það er úrræði sem þú getur rífa það úr og kasta hlutum til. Og að lokum, hvað er tegund NÚLL? >> [Nemandi] NULL. Já. Svo er það eina sem er NÚLL NÚLL. NULL er NULL. Einn eiginleiki kerfisins tegund PHP (fyrir betri eða verri) er geta hennar til að juggle gerðir. Þegar þú skrifar línu af PHP kóða sem sameinar gildi af mismunandi gerðum, PHP mun reyna að gera það skynsamlegt. Prófaðu hvert eftirfarandi línum af PHP kóða. Hvað er prentað út? Er það það sem þú bjóst við? Hvers vegna eða hvers vegna ekki? Þessi staðreynd um PHP er það sem gerir það hvað sem við köllum veikt tegund. Veikt tegund og mjög tegund, Það eru mismunandi not fyrir þau hugtök en flestir nota veikt tegund og mjög tegund að meina þetta svoleiðis þar ("1" + 2), sem virkar. Í C sem myndi ekki virka. Þú getur ímyndað þér það ekki virka. A einhver fjöldi af fólk blanda upp dynamic slá og veikburða vélritun og truflanir vélritun og sterk slá. Python er annað dæmi um mál sem er mjög virk slegin. Þú getur kastað í kringum gerðum í breytur og það er að fara að ákveða á hlaupa tíma einhverjar villur checkings. Í Python það er að fara að framkvæma þetta og það mun sjá ("1" + 2); og þetta mun mistakast vegna þess að það segir að þú getur ekki bæta við streng og heiltala. Í PHP, sem er bara eins og breytilega tegund, þetta mun ekki mistakast. Veik slá hefur að gera með þá staðreynd að það er hluti við gerðum sem í raun ekki skynsamleg endilega. Svo ("1" + 2), ég get ímyndað mér að vera band 12, ég get ímyndað mér það að vera band 3, Ég get ímyndað mér að það að vera heil tala 3. Það er ekki endilega vel skilgreind, og við erum líklega að fara að sjá hér að þegar við prentað ("1" + 2), það er líklega að fara að enda að vera öðruvísi en prentun (1 + "2"). Og þetta hefur tilhneigingu til að vera, að mínu mati, til hins verra. Hér getur reynt þetta. Annar smá bragð um PHP er að þú þarft ekki að raunverulega skrifa skrána. Það þýðir að hafa keyrt þessa skipun ham. Svo PHP-R, þá getum við kasta í stjórn hér: "Prenta ('1 '+ 2)," og ég mun kasta nýja línu. Þetta prenta 3. Það lítur út eins og það prentar 3 og það er heil tala 3. Svo nú skulum við reyna á hinn veginn: "Prenta (1 + 2"); Við fáum 3, og er það að fara líka að vera heil tala 3? Ég hef heiðarlega ekki hugmynd. Það lítur út eins og það er í samræmi. Það er aldrei nein hætta á því að vera band 12 eða eitthvað svoleiðis vegna PHP, ólíkt JavaScript og Java líka, hefur sérstakt stjórnandi fyrir samtenging. Concatenation í PHP er punktur. Svo prentun (1 '2 '.), Er að fara að gefa okkur 12. Þetta hefur tilhneigingu til að leiða til óreiða þar sem fólk reynir að gera eitthvað eins og STR + = einhver annar hlutur sem þeir vilja til að bæta við á að í lok band þeirra, og það er að fara til að mistakast. Þú þarft að gera STR. = Svo má ekki gleyma samtenging í PHP er punktur. Annað atriði sem þarf að reyna: prenta ("CS" + 50); Ég hef sagt þér að það er engin von um þetta leiðir CS50 síðan samtenging er ekki +. Hvað finnst þér þetta er að fara að enda að vera? Ég hef heiðarlega alls enga hugmynd. Það lítur út eins og það er bara 50. Það sér band, og ég veðja ef við setjum 123CS - Það sér fyrsta band, reynir hann að lesa heiltölu af því eða fjölda af því. Í þessu tilviki það lítur 123CS. "Það er ekki skynsamleg sem heiltölu, þannig að ég ætla bara að fara að hugsa af 123." Svo 123 + 50 er að fara að vera 173. Og hér fer hann að lesa þetta sem heiltala. Það þýðir ekki neitt, svo það skemmtun bara sem 0. Svo 0 + 50 er að fara að vera 50. Þetta sem ég er hrokafullur er að fara að gera eitthvað svipað. Ég er að hugsa 99. Já, vegna þess að það er að fara að taka fyrsta - Svo 99. Hér (10/7), ef þetta væri C, hvað myndi það aftur? [Nemandi] 1. >> Já, það vildi vera 1 því 10/7 er að deila 2 heiltölur. Heiltala deilt með heiltölu er að fara að skila heiltölu. Það er ekki hægt að skila 1 stig hvað sem væri, svo það er bara að fara að skila 1. Hér prentun (10/7), það er að fara að í raun túlka það. Og þetta þýðir að ef þú vilt í raun að gera tölustafi lokið máli mínu og eitthvað svoleiðis, þú þarft að gera prenta (hæð (10/7)); Í C er það líklega undarlegt að þú getur treyst á heiltölu truncation reglulega, en í PHP er ekki hægt vegna þess að það vilja á sjálfvirkan hátt snúa það inn í a flot. Og svo (7 + satt), hvað finnst þér það er að fara að vera? Ég giska á 8 ef það er að fara að túlka rétt eins og 1. Það lítur út eins og það er 8. Svo eitthvað sem við höfum gert á síðustu 10 mínútum ættir þú alveg aldrei gera. Þú munt sjá kóða sem gerir þetta. Það þarf ekki að vera eins einfalt og þetta. Þú gætir hafa 2 breytur, og 1 breytu gerast til vera a band og önnur verðbréf með breytilegum gerist að vera int, og þá bæta við þessar breytur saman. Þar PHP er mjög virk tegund og það mun ekki gera allir tegund stöðva fyrir þig og þar sem það er veikt tegund og þar sem það verður bara sjálfkrafa kasta þetta saman og allt verður bara vinna, það er erfitt að jafnvel vita að breyta verður að vera band nú, þannig að ég ætti ekki að bæta því við þessa breytu, sem er heiltala. Best Practice er ef breytu er a band, halda henni eins og streng eilífu. Ef breyta er int, halda henni eins og int eilífu. Ef þú vilt að takast á við heiltölur og strengi, þú getur notað varsint - það er JavaScript. Intval. Ég gera þetta allan tímann. PHP og Javascript Ég ruglast allt. Svo intval er að fara að skila heiltala gildi breytu. Ef við fara í "Print (intval ('123 ')), þú færð 123. Intval sjálft er ekki að fara að gera að athuga fyrir okkur að það er eingöngu heiltala. The PHP handbók, það eru bara svo margar aðgerðir í boði, svo hér er ég held að það sem ég myndi nota er is_numeric fyrst. Ég giska á að skila falskur. Það er annað sem við þurfum að fara yfir er ===. Svo is_numeric (''123df), myndir þú ekki hugsa um það sem is_numeric. Í C þú þyrftir að iterate yfir alla stafina og athuga hvort hvert eðli er stafa eða hvað. Hér is_numeric er að fara að gera það fyrir okkur, og það er aftur rangt. Svo þegar ég prenta það, prenta það ekkert, svo hér er ég að bera saman það að sjá, gerðir þú skyldir vera falskur? Og svo nú er prentun 1. Virðist prentar það 1 og satt í stað þess að prenta rétt eins og sannur. Ég velti því ef ég print_r. Nei, er það enn 1. Fara aftur til ===, == er enn, og ef þú talar við Tommy hann segi == er fullkomlega í lagi. Ég ætla að segja að == er hræðileg og þú ættir aldrei að nota ==. Munurinn er sá að == saman hluti þar sem það getur verið satt, jafnvel ef þeir eru ekki sama tegund, en === saman hlutina og fyrst það eftirlit eru þeir sömu tegund? Já. Jæja, nú ætla ég að sjá hvort þeir bera í raun að vera jafnir. Þú færð undarlegt hluti eins og 10 jafngildir - við skulum sjá hvað það segir. Svo ('10 '== '1 E1'); Þetta skilar satt. Hefur einhver hefur einhverjar ágiskanir að þetta skilar satt? Það er ekki bara um það. Kannski er þetta vísbending. En ef ég breytt því að F - fjári það! Ég að halda áfram að nota gæsalappa. Ástæðan er gæsalappa eru æpa á mig er vegna þess að ég hef sett þetta í gæsalöppum. Svo ég gæti undan gæsalappa hér, en einn vitna gera það auðveldara. Svo ('10 '== '1 F1'); ekki prenta satt. ('10 '== '1 E1'); prentar satt. [Nemandi] Er það álög? >> Það ekki álög, en það er nálægt því að það er eins og - 1e1, vísindaleg tákn. Það viðurkennir 1e1 og 1 * 10 ^ 1 eða hvað sem er. Þeir eru jafnir heiltölur. Ef við gerum === þá það er að fara að vera falskur. Ég hef reyndar ekki hugmynd um hvort við gerum == hvað um (10 og ''10abc);? Allt í lagi. Svo er það satt. Svo bara eins og þegar þú gerðir (10 + ''10abc), og það væri 20, hér (10 == ''10abc), er satt. Jafnvel verra eru hlutir eins og (falskur == NULL); er satt eða (ósatt == 0); er satt, (ósatt == []); Það eru undarlegt tilfelli - það er einn af þeim undarlegt tilvikum. Takið eftir því (falskur == []); er satt. ('0 '== False), er satt. ('0 '== []); Er falskur. Svo == er á engan hátt gegnvirk. a getur verið jafn b og getur verið jafn c, en B gæti ekki verið jöfn c. Það er andstyggilegt að mér, og þú ættir alltaf að nota ===. [Nemandi] getum við gert! == Eins og heilbrigður? >> [Bowden] Já. Samsvarandi væri! = Og! ==. Þetta er reyndar alinn upp í pset sérstakur þar sem mikið af virka aftur - The PHP handbók er gott um þetta. Það setur í stórum rauðum kassa, "Þetta mun skila rangt ef það er villa." En aftur 0 er fullkomlega sanngjarn hlutur til að fara aftur. Hugsaðu um hvaða aðgerð sem er gert ráð fyrir að skila heiltölu. Við skulum segja að þetta hlutverk er ætlað að telja fjölda lína í skrá eða eitthvað. Undir venjulegum kringumstæðum, framhjá þér þessi aðgerð skrá og það er að fara að skila heiltölu sem táknar fjölda lína. Svo er 0 a fullkomlega sanngjarnt númer ef skráin er bara tóm. En hvað ef það líður yfir það ógilt skrá og virka gerist aftur falskur ef það líður yfir það ógilda skrá? Ef þú bara == þú ert ekki aðgreining málið milli ógilda skrá og tómur skrá. Alltaf nota ===. Það er allt af þeim. Í PHP er array tegund er frábrugðin því sem þú ert að nota til að í C. Reyndar getur þú hefur þegar tekið eftir þessu hér að ofan þegar þú sást að þetta er array tegund. The krappi setningafræði er nýtt og af PHP 5,4, sem er nýjasta útgáfa af PHP. Áður en þetta þú þurftir alltaf að skrifa array ('a "-> 1,' B" -> 2. Það var framkvæmdaaðila fyrir fylki. Nú PHP hefur loksins komið í kring að ágætur setningafræði aðeins hornklofum, sem er bara svo miklu betri en fylki. En miðað við PHP 5,4 er nýjasta útgáfa, þú getur fundur stöðum sem gera ekki einu sinni hafa PHP 5.3. Á sumrin við hljóp inn í þetta mál þar sem PHP 5,3 var það sem við höfðum á tækinu, en þjóninn sem við dreifa öllum okkar bekk bók og senda og allt það efni til var PHP 5.4. Ekki vita þetta, við þróað í 5.3, ýtt til 5,4, og nú virkar allt í einu enginn af kóða okkar vegna þess að það gerðist hafa verið breytingar á milli 5,3 og 5,4 sem eru ekki aftur samhæft, og við verðum að fara og festa alla hluti okkar sem virka ekki fyrir PHP 5.4. Í þessum flokki hafa þar sem tæki er PHP 5,4, það er fullkomlega í lagi að nota hornklofa. En ef þú ert að leita upp hluti um internetið, Ef þú ert að leita upp einhvers konar efni array, líklegur þú ert að fara að sjá að stafa út array framkvæmdaaðila setningafræði þar sem hefur verið í kring síðan PHP fæddist og veldi krappi setningafræði hefur verið í kring fyrir the fortíð mánuði par eða þegar 5,4 kom í kring. Þetta er hvernig þú vísitölu. Rétt eins og í C hvernig þú vildi vísitalan um hornklofum eins og $ array [0], $ array [1], $ array [2], þú vísitölu á sama hátt ef þú átt í vísitölur sem verið strengir. Svo $ array ['a'] og $ array ['B']. $ Array [b]. Hvers vegna myndi þetta vera rangt? Það mun líklega búa viðvörun en samt vinna. PHP hefur tilhneigingu til að gera það. Það hefur tilhneigingu til að bara, "ég ætla að vara þig um þetta, en ég ætla bara að fara að halda áfram "Og gera allt sem ég get." Það mun sennilega þýða þetta streng, en það er mögulegt að á einhverjum tímapunkti í fortíð einhver sagði skilgreina b vera "Hello World". Svo nú B gæti verið stöðug og $ array [b] verður í raun að vera að gera "Hello World". Ég held að á þessum tímapunkti, eða að minnsta kosti okkar PHP stillingar, Ef þú ert að reyna að skrá inn fjölda og lykill er ekki til, mun það mistakast. Ég held ekki að það verður bara að vara þig við. Eða að minnsta kosti er hægt að stilla það þannig að það er ekki bara að vara þig við, bara beint ekki upp. The vegur þú athuga hvort það raunverulega er svo vísitala er isset. Svo isset ($ array ['HELLO WORLD']) mun skila falskur. isset ($ array ["b"]) aftur satt. Þú getur blandað þessum syntaxes. Ég er nokkuð viss um hvað þetta array myndi enda upp tilvera er - Við getum prófað það út. Oh, ég þarf PHPWord. Þetta er blanda setningafræði þar sem þú tilgreinir hvað lykillinn er og þú tilgreinir ekki hvað lykillinn er. Svo er 3 hérna gildi. Þú hefur ekki beinlínis sagt hvað lykillinn er að fara til vera. Hvað finnst þér lykillinn er að fara að vera? [Nemandi] 0. >> Ég giska 0 einungis vegna þess að það er sá fyrsti sem við höfum ekki tilgreint. Við getum í raun gera a par af þessum tilvikum. Svo print_r prenta endurkvæma. Það verður að prenta alla array. Það myndi prenta subarrays af fylki ef það voru einhver. Svo print_r ($ array); php.test.php. Það hjartarskinn útlit eins og það gaf 0. Það er í raun eitthvað til að hafa í huga hér, en við munum fá til baka það í annað. En hvað ef ég gerst að gera þetta 1 er vísitala neysluverðs? PHP er ekki greinarmun á milli vísitalna band og heiltölu vísitölum svo á þessum tímapunkti sem ég hef bara skilgreint vísitölu 1 og ég get gert bæði $ array [1] og $ fylking ['1 '] og það mun vera sú sama vísitala og sama takka. Svo nú hvað finnst þér 3 er að fara að vera? >> [Nemandi] 2. >> [Bowden] Ég giska á 2. Já. Það er 2. Hvað ef við gerðum þetta er 10, þetta er 4? Hvað telur þú að vísitala 3 er að fara að vera? Ég er að hugsa 11. Minn giska á um hvað PHP er - og ég held að ég hef séð þetta áður - er það heldur bara utan um það hæsta tölugildi vísitölu það er notað svo langt er. Það er aldrei að fara að tengja strenginn vísitölu 3. Það verður alltaf að vera tölugildi vísitölu. Svo heldur hún utan um hæsta einn það er úthlutað svo langt, sem gerist að vera 10, og það er að fara að gefa 11-3. Það sem ég sagði áður, eftir því hvernig það er að prenta þetta fylki. Það prentar helstu 10, lykill 4, lykill 11, lykill d. Eða jafnvel skulum gera - Ég held ég hafi ekki sett 0, en það er prentun 1, 2, 3, 4. Hvað ef ég skipti hér? Eða við skulum í raun skipta þessir 2. Nú prentar það 2, 1, 3, 4. Fylki PHP eru ekki bara eins og venjulegur kjötkássa töflunni. Það er fullkomlega eðlilegt að hugsa um þá eins og hash töflu 99% af þeim tíma. En í hash töflur það er ekkert vit í þeirri röð sem það var sett. Svo um leið og þú setur það inn í kjötkássa töflunni, ráð fyrir að það er ekkert tengt lista og þú gætir dæma innan tengda listanum sem var sett fyrst. En hér við bætist 2 fyrst og það veit hvenær það er að prenta út þessa array sem 2 kemur fyrst. Það þýðir ekki að prenta það út í bara hvaða röð. The tæknilega gögn uppbygging sem það er með er pantað kort, svo það kort sem sýna takkana til gildi og það man í hvaða röð þessir lyklar voru sett. Í grundvallaratriðum er það að sumir fylgikvilla þar sem það er pirrandi að í raun og veru - Segjum að þú ert með array 0, 1, 2, 3, 4, 5 og þú vilt að taka út yfirlit 2. Ein leið til að gera það, við skulum sjá hvað það lítur út. 0, 2, 1, 3, 4. Afvalið gerist afvalið bæði breytur og array vísitölur. Svo afvalið ($ array [2]); Nú hvað er þetta að fara að líta út? 2 er bara farinn, þannig að það er fullkomlega í lagi. Meira pirrandi er ef þú vilt það til að raunverulega vera eins og fylki. Ég setti af handahófi númer. Nú taka vísitölur mínar. Ég vil það að vera bara eins og C array þar sem hún fer úr 0 í lengd - 1 og ég get iterate yfir það sem slíkt. En um leið og ég afvalið aðra vísitölu, hvað var í vísitölu 3 er ekki nú orðið vísitölu 2. Í staðinn fjarlægir það bara að vísitölu og nú þú fara 0, 1, 3, 4. Þetta er fullkomlega sanngjarn. Það er bara pirrandi og þú þarft að gera hlutina eins og skeyta array. Já. [Nemandi] Hvað myndi gerast ef þú hefðir a for lykkju og þú langaði að fara yfir alla þætti? Þegar hún lenti 2, myndi það gefa alltaf? Iterating yfir fylki. Það eru 2 leiðir til að gera það. Þú getur notað reglulega til hliðar. Þetta er annar intricacy PHP. Flest tungumál, myndi ég segja, hafa einhvers konar lengd eða Len eða eitthvað gefur til kynna lengd fylki. Í PHP það telja. Svo telja ($ array), $ i + +) Við skulum bara prenta ($ array [$ i]); Tilkynning: Óskilgreint móti: 2. Það er bara að fara að mistakast. Þetta er vegna þess að, að mestu leyti, að aldrei þarf að iterate yfir fylki svona. Það gæti verið ýkjur, en þú þarft aldrei að iterate yfir fylki svona vegna PHP veitir framhandleggur setningafræði þess þar framhandleggur ($ array eins og $ atriði). Nú ef við prenta ($ atriði) - we'll ræða það í annað - það virkar fullkomlega fínn. Leiðin sem framhandleggur er að vinna er fyrsta rifrildi er fylki sem þú ert iterating yfir. Annað rök, lið, í gegnum hvert skarðið af for lykkju það er að fara að taka á næsta hlutur í fylki. Svo man fylki hefur til þess. Í fyrsta skipti í gegnum for lykkju, lið er að fara að vera 123 þá mun það vera 12 þá verður 13 þá verður 23 þá mun það vera 213. Things fá raunverulega undarlegt þegar þú gerir eitthvað eins og framhandleggur. Við skulum sjá hvað gerist vegna þess að þú ættir aldrei að gera þetta. Hvað ef við afvalið ($ array [1]); Það var líklega gert ráð fyrir. Þú ert iterating yfir þessu fylki, og hvert skipti sem þú ert að unsetting fyrstu vísitölunni. Svo fyrir vísitölu 0, the fyrstur hlutur, lið tekur á gildi 0, svo það er að fara að vera 123. En fyrir innan í lykkju við afvalið vísitölu 1, svo það þýðir 12 er farinn. Svo prenta. PHP_EOL. PHP_EOL er bara newline, en það er tæknilega fleiri flytjanlegur þar newlines í Windows er frábrugðin newlines á Mac og Unix. Á Windows newline er \ r \ n, en alls staðar annars það hefur tilhneigingu til þess að vera \ n. PHP_EOL er stillt þannig að það notar hvað newline kerfisins er. Svo prenta það. Við skulum ekki print_r ($ array) í lokin. Ég hafði ekki hugmynd um að það væri hegðun. Liður tekur enn á gildi 12 þótt við afvalið 12 áður en við komum alltaf að því af fylki. Ekki taka orð mín um þetta, en það lítur út eins og framhandleggur skapar afrit af fylkinu og þá tekur lið á öllum gildum sem afrit. Svo jafnvel ef þú breyta fylki inni í lykkju, það er sama. Liður mun taka á upprunaleg gildi. Reynum unsetting það. Hvað ef þetta er $ array [1] = "Hello"; Jafnvel þó að við setjum "halló" í array, lið tekur aldrei á þessi gildi. There 'annar setningafræði til framhandleggur lykkjur þar sem þú setur 2 breytur aðgreindar með ör. Þetta fyrsta breyta er að fara til vera the lykill þess virði, og þetta annað breyta er að fara til vera the sami nákvæmur atriði. Þetta Leiðinlegt hérna, en ef við förum aftur í upprunalegt tilviki okkar 'A' -> 1, "B" -> 1, hér ef við iterate bara fyrir hvert fylki sem lið, lið er að fara að vera 1 hvert einasta skipti. En ef við viljum líka að vita lykilinn í tengslum við þessi atriði þá erum við að gera eins og $ lykill -> $ hlut. Svo nú getum við gert prenta ($ lykill. ':'. Nú það er iterating yfir og prenta hvern takka og tengd gildi sitt. Annar hlutur sem við getum gert í framhandleggur lykkjur er að þú gætir séð þetta setningafræði. Merkið fyrir breytilegum nöfn hafa tilhneigingu til að vera hvernig PHP gerir tilvísanir. Hvar tilvísanir eru mjög svipuð ábendingum, þú þarft ekki ábendingum, svo þú aldrei að takast á við minni beint. En þú þarft tilvísanir þar sem 1 breyta vísar til sama og annað breytu. Inni hér skulum gera $ hlut. Förum aftur í 1, 10. Gerum $ lið + +, sem er til enn í PHP. Þú getur enn gert + +. php.test.php. Ég verð að prenta það. print_r ($ array); Við prenta 2, 11. Ef ég hefði bara gert framhandleggur ($ array eins og $ atriði) þá lið verður gildi 1 í fyrsta skipti í gegnum lykkjuna. Það mun hækka 1 til 2 og þá erum við búin. Svo það mun fara í gegnum seinni umferð í lykkju og þessi atriði er 10. Það þrepum atriði til 11, og þá er bara hent. Þá erum við print_r ($ array) og við skulum sjá að það er bara 1, 10. Svo vöxtur við gerðum var glataður. En framhandleggur ($ array eins og $ atriði) nú er þetta lið sama lið og þetta hérna. Það er það sama. Svo $ atriði + + er að breyta array 0. Í grundvallaratriðum, þú getur líka gert $ k -> $ hlut og þú getur gert $ array [$ k] + +; Svo annan hátt að gera það, við erum frjáls til að breyta atriði, en það mun ekki breyta upprunalega array okkar. En ef við notum K, sem er lykill okkar, þá getum við bara vísitölu í fylkingu okkar með því að lykillinn og hækka það. Þetta meira beint breytir upprunalegu array okkar. Þú getur jafnvel gera að ef þú af einhverri ástæðu vildi getu til að breyta - Reyndar, þetta er fullkomlega sanngjarnt. Þú vilt ekki að þurfa að skrifa $ array [$ k] + +, þú vildi bara að skrifa $ lið + + en þú vildir samt að segja ef ($ K === 'a') þá hækka hlut og þá prenta array okkar. Svo nú hvað við búast print_r að gera? Hvaða gildi á að prenta? [Nemandi] 2 og 10. >> [Bowden] Aðeins ef lykillinn var "a 'gera við prenta í raun það. Þú sennilega mjög sjaldan, ef nokkurn tíma, verður að skilgreina aðgerðir í PHP, en þú gætir séð eitthvað svipað þar sem þú skilgreinir fall eins whatever virka. Venjulega þú vildi segja ($ foo, $ bar) og skilgreina það að vera hvað sem er. En ef ég geri það, þá þýðir það að allt sem kalla hvað, hvað kallar Baz, svo the fyrstur rök framhjá til Baz hægt að breyta. Við skulum gera $ foo + +; og innan hér skulum gera Baz ($ atriði); Nú erum við að hringja í aðgerð. The rök er tekið með tilvísun, sem þýðir að ef við breyta henni við erum að breyta hlutur sem var samþykkt inn Og prentun þetta við búast - nema ég boðberi upp setningafræði - fengum 2, 11, svo það var í raun incremented. Tilkynning þurfum tilvísanir í 2 stöðum. Hvað ef ég gerði þetta? Hvað þýðir þetta? [Nemandi] Það mun breytast. >> Já. Atriði er bara afrit af gildi í fylki. Svo lið mun breytast til 2, en array ['a'] mun enn vera 1. Eða hvað ef ég að gera þetta? Nú atriði er sendur sem afrit til Baz. Svo afrit af rifrildi verður incremented í 2, en atriðið sjálft var aldrei incremented til 2. Og atriðið er það sama og krappi array hvað, svo að fylki var aldrei incremented. Svo báðir þessir staðir þurfa það. PHP er yfirleitt nokkuð klár um þetta. Þú gætir held að ég vil fara með tilvísun - Þetta var reyndar spurning um einn af psets. Það var questions.txt hlutur þar sem hún sagði, Hvers vegna þú might vilja til að fara framhjá þessu strúktúr með tilvísun? Hvað var svarið við því? [Nemandi] Svo þú þarft ekki að afrita eitthvað stórt. >> Já. A struct má geðþótta stór, og þegar þú framhjá strúktúr í sem rök það þarf að afrita það allan strúktúr til að gefa það að virka, en ef það líður bara strúktúr með tilvísun þá þarf það bara að afrita 4-bæti tölu sem rök virka. PHP er svolítið klárari en það. Ef ég hef fengið virka og ég fara að því fjölbreytta 1.000 hlutum, þýðir það að það er að fara að hafa til að afrita alla 1.000 af þeim hlutum að gefa það í aðgerð? Það þarf ekki að gera það strax. Ef inni í þessa aðgerð það aldrei breytir foo, þannig að ef ($ foo === 'Halló') aftur satt.; Takið við aldrei breytt rifrildi inni þessa aðgerð, sem þýðir að allt sem var samþykkt í eins foo aldrei þarf að afrita því það er ekki að breyta henni. Svo leið PHP virkar rökin eru alltaf framhjá með tilvísun þar til þú reynir í raun að breyta henni. Nú ef ég segi $ foo + +, það verður nú að gera afrit af upprunalegu foo og breyta eintak. Þetta sparar tíma. Ef þú ert aldrei að snerta þessa gegnheill array, aldrei þú í raun að breyta henni, það þarf ekki að gera afrit, en ef við setjum bara þetta merkið sem þýðir að það er ekki einu sinni afrita það jafnvel ef þú ert að breyta henni. Þessi hegðun er kölluð afrita á-skrifa. Þú munt sjá það á öðrum stöðum, sérstaklega ef þú tekur stýrikerfi auðvitað. Afrita-á-skrifa er nokkuð venjulega mynstur þar sem þú þarft ekki að gera afrit af eitthvað nema það er í raun að breytast. Já. [Nemandi] Hvað ef þú hefðir vöxtur inni í prófinu, svo að aðeins 1 þáttur af hverjum 1.000 þyrfti að breyta? Ég er ekki viss. Ég held að það myndi afrita allan hlutur, en það er mögulegt að það er sviði nógur að - Reyndar, það sem ég er að hugsa er að ímynda sér við höfðum fjölda sem lítur svona út: $ fylki2 = [ Þá er 'a' Efnisyfirlit fylki í [1 2 3 4], og vísitölu 'B' er fylki á hvað sem er. Ég þarf kommur á milli allra þeirra. Ímyndaðu þér að það séu kommum. Þá 'C' er gildi 3. Allt í lagi. Nú skulum segja að við gerum $ Baz ($ fylki2); þar Baz ekki taka þetta með tilvísun. Svo $ foo ['C'] + +; Þetta er svo dæmi þar sem við erum liggur fylki2 sem rök og þá er það að breyta ákveðna vísitölu array með incrementing það. Ég hef heiðarlega ekki hugmynd um hvað PHP er að fara að gera. Það getur auðveldlega gera afrit af öllu hlutur, en ef það er klár, það mun gera afrit af þessum takka þar sem þetta mun hafa mismunandi gildi þess en þetta getur samt benda á sama array 1,2,3,4 og það getur samt benda á sama fylki. Ég ætla iPad það. Við förum í þennan fjölda sem þessi strákur stig í 3, þessi strákur stig til [1,2,3,4], Þessi strákur bendir á [34 ...] Nú þegar erum við að senda hann á Baz, við erum að breyta þessu. Ef PHP er klár, get það bara ekki - Við þurftum samt að afrita sumir minni, en ef það væri þessi gríðarlega hreiður subarrays við ekki að afrita þær. Ég veit ekki hvort það er það sem það gerir, en ég get ímyndað mér það að gera það. Þetta er líka mjög stór kostur C en PHP. PHP gerir lífið svo miklu auðveldara fyrir a einhver fjöldi af hlutur, en þú ert góður af alls enga hugmynd hversu vel það mun framkvæma vegna þess að ég hef ekki hugmynd neðan hetta þegar það er að gera þessar afrit af hlutum, ó, er að fara að vera stöðug tími afrita, er það að fara bara að breyta 1 músina, er það að fara að vera hlægilegur erfitt línuleg eintak? Hvað ef það er ekki hægt að finna pláss? Er það þarf þá að keyra sorp safn að fá sumir meira pláss? Og sorp safn getur tekið geðþótta lengi. Í C þú þarft ekki að hafa áhyggjur af þessum hlutum. Hver einasta lína sem þú skrifar þú getur nokkurn veginn ástæða um hvernig það er að fara að framkvæma. Við skulum líta til baka á þetta. Hvernig ágætur það er að þú þarft ekki að takast á við kjötkássa virka, tengd listum, eða eitthvað svoleiðis? Þar vinna með kjötkássa matskeið er svo auðvelt nú, hér er ráðgáta skemmtilegur til að vinna á. Opna skrá sem heitir unique.php og í það skrifa PHP forrit (Einnig þekkt sem "handrit"). Við hafa tilhneigingu til að kalla þá forskriftir ef þeir eru stutt atriði sem þú hlaupa á stjórn lína. Í grundvallaratriðum, hvaða tungumál sem þú safna ekki en þú ert að fara að keyra executable í stjórn lína, þú getur hringt í það executable handriti. Ég gæti alveg eins skrifað C forrit sem gerir þetta, en ég kalla það ekki handrit þar sem ég safna saman fyrst og þá hlaupa the tvöfaldur. En þetta PHP forrit sem við erum að fara að hringja í handriti. Eða ef við skrifuðum það í Python eða Perl eða Node.js eða einhverju af þessum hlutum, við myndum kalla þá öllum forskriftir vegna þú keyrir þá á the stjórn lína en við gerum saman þá. Við gætum gert þetta ansi fljótt. Við erum ekki að fara að nota argv. Við skulum bara blása í gegnum þetta. Kalla það einstakt, skrifa forrit. Þú getur gert ráð fyrir að inntak mun innihalda eitt orð í hverja línu. Reyndar, argv verður ansi léttvæg að nota. unique.php. Fyrstur hlutur fyrstur, viljum við athuga hvort við höfum verið samþykkt 1 stjórn-lína rök. Rétt eins og þú vildi búast argc og argv í C, höfum við enn þá í PHP. Svo ef ($ argc! == 2) þá mun ég ekki tekist á við prentun skilaboð eða neitt. Ég verð bara að hætta, villa merkjamál af 1. Ég gæti líka aftur 1. Sjaldan í PHP þú ert í þessu ástandi sem við erum í - Venjulega þú ert í aðgerð sem heitir eftir fall sem heitir eftir fall sem heitir eftir aðgerð. Og ef eitthvað fer úrskeiðis og þú vilt bara að loka allt alveg, Hætta endar bara forritið. Þetta er einnig í C. Ef þú ert í aðgerð í aðgerð í aðgerð í aðgerð og þú vilt bara að drepa the program, þú getur hringt hætta og það verður bara að hætta. En í PHP og það er jafnvel meira sjaldgæft að við erum á þessu efsta stigi. Venjulega erum við inni einhvers konar virkni, svo við köllum hætta þannig að við þurfum ekki að fara aftur upp 1 hlutur sem þá áttar það villa svo aftur að upp ef það viðurkennir að það var villa. Við viljum ekki að takast á við það, svo að hætta (1); aftur (1), í þessu tilfelli væri jafngilt. Þá það sem við viljum að opna við viljum fopen. Rökin eru að fara að líta nokkuð svipað. Við viljum fopen ($ argv [1], og við viljum að opna hana til að lesa. Það skilar úrræði sem við erum að fara að hringja í f. Þetta lítur mjög svipað hvernig C gerir það nema að við þurfum ekki að segja skrá *. Í stað þess að við segjum bara $ f. Allt í lagi. Reyndar held ég að þetta jafnvel gefur okkur vísbendingu um það PHP virka heitir skrá. PHP skrá. Hvað er að fara að gera er að lesa allan skrá í fylki. Þú þarft ekki einu sinni að fopen það. Það er að fara að gera það fyrir þig. Svo $ línur = skrá ($ argv [1]); Nú allar línur í skránni eru í línum. Nú viljum við að raða línum. Hvernig getum við að raða línum? Við raða línum. Og nú getum við prentað þær eða hvað. Sennilega einfaldasta leiðin er framhandleggur ($ línur og $ lína) echo $ línu; [Nemandi] Myndum við ekki yfir jafnvel línur með tilvísun eitthvað í tegund? Þetta er þar sem tegund yrði skilgreind sem tegund virka (& $ array). Þegar þú hringja í aðgerð sem þú gefa það með tilvísun. Þetta er fall sem skilgreinir það eins og að taka það til viðmiðunar. Þetta er í raun nákvæmlega það sem fór úrskeiðis þegar við settum allt til netþjóna okkar þegar við fórum 5,3-5,4. Fram 5,4, þetta var fullkomlega sanngjarn. Fall er ekki búist við að taka það sem viðmiðun, en þú geta fara framhjá það sem viðmiðun þannig að ef að virka gerist til að breyta því, það er breytt enn. Eins og um 5,4, þú ert ekki að gera þetta. Svo nú er eina leiðin sem þú fara með tilvísun ef virka sérstaklega gerir það. Ef þú vilt ekki að það að breyta henni, þá þarftu að gera $ eintak = $ línur og fara Afrita. Svo nú línur verða varðveitt og afrit verður breytt. php.unique.php. Ég gæti hafa boðberi eitthvað upp. Óvænt 'tegund'. Það er að fara að vera eitthvað sem gerir þetta fyrir okkur. Það er ekki einu sinni þarna. Taka eftir þegar þú lesið handbók sem fyrsta rifrildi er gert ráð fyrir að vera fylki og það er tekið með tilvísun. Hvers vegna er þetta að kvarta við mig? Vegna þess að ég hef þessa aðgerð tegund enn hér sem ég vil ekki. Allt í lagi, php.unique.php. Ég vissi ekki að líða það að rífast vegna þess að ég hef ekki skrá. Það er php.unique.php á test.php. Hér er test.php allt prentað út í fallegu raðað röð. Athugið að raðað röð er skrýtin tilfinning fyrir kóða skrá því öll autt línur okkar eru að fara að koma fyrst þá er að fara að koma öllu af 1 stigi örðum okkar þá koma allar engum örðum okkar. Já. >> [Nemandi] Svo að kóðinn var ekki samþykkt með vísan? Er þessi samþykkt almennt um gildi? [Bowden] Þegar þú hringja í aðgerð, það er aldrei ráða því hvort það var samþykkt með vísan. Það er virka skilgreiningu, sem ákvarðar hvort það var samþykkt með vísan. Og horfa á virka skilgreiningu tegund eða bara að horfa á þetta, það tekur þau rök með tilvísun. Svo hvort sem þú vilt það til að taka það með tilvísun, taka það gerir það með tilvísun. Það breytir fylkisins í stað. Þetta er bara ekki leyft. Þú hefur ekki leyfi til að gera þetta. >> [Nemandi] Ó, allt í lagi. [Bowden] Þetta tegund er að fara að taka línur með tilvísun og breyta henni. Og aftur, ef þú vilt ekki að það að gera það, væri hægt að gera afrit af tegund. Jafnvel í þessu tilfelli, afrit er ekki í raun afrit af línum. Það bendir bara það sama þar til það fyrsta verður breytt, þar sem það er fyrst að fara að fá breytt í einhverskonar aðgerð, þar, því það er afrita-á-að skrifa, nú afrit af afrit er að fara að gera. Þú getur líka gert þetta. Það er hinn staðurinn sem þú getur séð merkið. Þú sérð það í framhandleggur lykkjur, þú sérð það í yfirlýsingar virka, og þú sérð það þegar bara framselja breytur. Nú höfum við náð ekkert með því að gera þetta vegna afrit og línur eru bókstaflega það sama. Þú getur notað línur og afrita jöfnum höndum. Þú getur gert afvalið ($ eintak), og það er ekki tekið af línum, þú tapar bara tilvísun til sama. Svo frá og með þessum tímapunkti, nú er línur eina leiðin sem þú getur fengið aðgang að línum. Spurningar? Já. [Nemandi] alveg af efni, en þú þarft ekki að loka PHP við - >> er ekki. Allt í lagi. [Bowden] Ég myndi fara eins langt að segja að það er slæmt æfa sig til að loka þeim. Það er líklega ýkjur, sérstaklega í handriti, en við skulum sjá hvað gerist ef ég geri það. Það gerði ekkert. Hvað ef ég vildi - [Sighs] Ég þarf að standast rök. Skjóta. Ég kallaði það rangt. Svo php.unique.php með rifrildi. Nú er ég ekki einu sinni þurfa þetta. Ég framhjá það gilt rök. Þetta prenta hvað sem það er prentun. Ég er að prenta afrit og afrit er ekki fyrir hendi. Svo línur. Það prentað allt, og síðan taka allt þetta skran hérna, því í PHP neitt sem er utan af PHP tags er bara að fara að prenta bókstaflega. Þess vegna HTML, það er svo gaman að ég get gert div bla, bla, bla flokki eða hvað, bla, bla, bla og þá gera sumir PHP kóða og gera endir div. Og nú prentun þetta ég fá gott div mína ofan, allt að PHP prentuð, div neðst. Hörmulegur þegar eitthvað svona gerist, sem er nokkuð algengt, bara villast newline neðst á skrá. Þú myndir ekki hugsa það vildi vera það stór af a samningur þar til þú telur þá staðreynd að með vöfrum - Hvernig tilvísanir vinnu eða í rauninni hvaða hausa vinna, þegar þú gerir tenginguna þína til a website og sendir til baka allar þessar hausum og fleira eins svar 200 eða svörun beina eða hvað, haus eru ekki gild fyrr en fyrsta bæti af gögnum er send. Þú getur endurvísa þúsund sinnum, en um leið og fyrsta bæti af gögnum er send þú ert ekki að beina aftur. Ef þú hafa a villast newline neðst á skrá og við skulum segja að þú notir þetta virka og þá þú vilt - Við skulum segja að það er annar skrá sem er index.php og þú require_once eitthvað - Ég get ekki hugsað mér gott dæmi um það. Málið gerist þegar þessi lína neðst verður echoed. Þú vilt ekki að neitt hafi verið echoed enn. Jafnvel þó að þú hafir ekki ætla á neitt fá echoed, gerði eitthvað fá echoed og svo nú þú ert ekki að senda fleiri hausa og þú ert að fara að fá kvartanir. Þú bara þarft ekki þá loka tags. Ef þú ætlar að gera eitthvað við HTML - og það er fullkomlega eðlilegt að gera hérna div hvað og þá á þessum tímapunkti sem þú getur eða þú getur ekki fela þær. Það skiptir í raun ekki máli. En í PHP forskriftir það er sjaldgæft að loka því. Þegar allt er PHP, algerlega allt, þú í raun ekki þörf á að loka það / þú ættir ekki að loka henni. Takast á við strengi er mun betri en í C. Í PHP er hægt að tilgreina band með einum eða tveggja vitna. Með einn quotes sem þú getur ekki notað "Escape" röð. Stöðugt flýja, bla, bla, bla. Svo printf er mjög sjaldgæft í PHP. Ég held ég myndi nota printf ef ég vildi gera svoleiðis - í pset 5 þú nota sprintf eða hvað. En þú vilt gera 001.jpg og 002.jpg. Svo fyrir þessi tegund af hlutur sem ég vil í raun og veru til að sníða texta sem ég myndi nota printf. En annars myndi ég bara nota band samtenging. Ég hef aldrei raunverulega nota printf. Við erum bara að aðgreining upplýsingar stakra vitna og gæsalappa. Stærsti munurinn er að einn vitna, það verður prentað bókstaflega. Það er engin bleikju gögn gerð í PHP, ólíkt C, þannig að þetta jafngildir þetta. Þeir eru báðir strengir. Og ágætur hlutur óður í einn strengi vitna er að ég gæti sagt "Halló heimur!" bla, bla, bla, $ $ WOOO. Hvað gerist þegar ég prenta þetta er það mun prenta það bókstaflega. Skulum losna við allt dótið okkar. Svo echo $ str1; Það prentuð bókstaflega allt af þessum hlutum: dollara merki, sviga n, sem þú vildi hugsa væri newlines - alla þá hluti sem það prentar bókstaflega. Það eina sem þú þarft til að flýja eru einn tilvitnanir því annars myndi hugsa það er að loka á einn quotes. Gæsalappa, allt öðruvísi. Við sjáum nú þegar setningafræði auðkenning er cluing okkur á hvað er um að fara hræðilega rangt. php.unique. Óskilgreint breytu: WOOO því þetta er túlkað sem breytu sem heitir WOOO. Double vitna láta þig setja breytur inn - Segjum $ nafn = "Rob"; Svo echo "Hæ, ég heiti $ nafn!"; Það viðurkennir þetta sem breytu. Þegar ég keyrt það - og ég mun setja inn a newline - Hæ, ég heiti Rob! og Halló heimur! Þetta er vegna þess að ég aldrei fjarlægja prentun WOOO ofan. Það er 1 frekari skref sem þú getur gert. $ Array = [1, 2, 3]; Hvað ef ég vil prenta fyrsta vísitölu fylkisins? Þú gera $ array [0]. The setningafræði auðkenning er vísbending. Hvað er þetta að gera? php.unique. Hæ, ég heiti er 1! sem er ekki það sem ég vildi. Setningafræði auðkenning logið að mér. Við skulum reyna 'a' -> 1, 'B "-> 2. Það er hvernig ég vildi að skrifa það. Óvænt einn QUOTE (T_ENCAPSED bla, bla, bla, bla, bla). Hugmyndin er sú að það er ekki viðurkenna þetta sem hluta af fylkisins. Það er ekki að viðurkenna þetta sem array verðtryggð með bréfi í. Þú vilt gera það umkringd hrokkið axlabönd, og nú hvað er í þessum hrokkið borsveif verður innreiknað, sem er orð sem við notum til að dularfullur setja þessar breytur inn í réttum stöðum. Nú gera þetta, php.unique og Hi, nafn mitt er 1! eins og vænta eða Hi, my name is Rob! Einn hlutur sem er eins konar gott um einn quotes er að - Það er einhver kostnaður við interpolating. Ef þú notar gæsalappa, túlkurinn þarf að fara yfir þetta band, að tryggja það, "Ó, hér er hending. Nú þarf ég að fara að fá að breyta og setja það hér." Jafnvel ef þú notar engar breytur, ekkert inni þessum gæsalöppum þarf innreiknað, en það verður samt að vera hægari af því að það þarf að fara yfir gæsalappa leita að hlutum sem þarf að innreiknað. Svo einn vitna getur verið svolítið hraðar ef ekkert þarf að innreiknað, og ég tilhneigingu til að jafnvel nota einn quotes fyrir, "Hæ, ég heiti". $ Array ['a'] samt. Það er að fara að nema það sem við höfðum áður. En það er spurning um val. Ef þú ert að nota PHP, sennilega þú hefur ekki sama um hraða munur. Það er ekki nóg að ástæðu þá út til að byrja með. Allar endanlegar spurningar? Við í raun ekki einu sinni komast í gegnum allt það, en þetta efni var leiðinlegt. The síðastur hlutur sem er góður af gaman í PHP er þegar þú ert að takast á við HTML, þú munt nota það aðeins, svo ágætur flýtileið setningafræði fyrir prentun breytu. Án þess að setja PHP hér, þetta er kallað stutt merki. Opinberlega og PHP 5.4, þetta er úrelt. Þú ert mælt með því að setja PHP. Þetta er enn stutt, svo stutt merki með