[Powered by Google Translate] [8 skirsnis - patogiau]
[Rob Bowden - Harvardo universiteto]
[Tai CS50. - CS50.TV]
>> Šie savaitę skirsnio pastabų bus gana trumpas,
todėl aš tik ketina toliau kalbėti, jus vaikinai ketinate laikyti užduoti klausimus,
ir mes pasistengsime užpildyti tiek laiko, kiek įmanoma.
Daugybė žmonių mano, kad šis pset nebūtinai yra sudėtinga, bet tai labai ilgai.
Pats pset spec trunka valandą skaityti.
Mes suteikiame jums daug SQL jūs galbūt reikia naudoti.
Mes jums per daug jo, todėl jis neturėtų būti labai blogai.
Ar kas nors pradėjo ar baigtas?
Tai paskutinį pset. O, Dieve.
Paprastai ten JavaScript po to, tačiau kalendorinių ką nors keičia
daro viską, 1 savaitė trumpesnis, ir mes jau nebeturi JavaScript pset.
Aš nežinau, kaip, kuri paveikia, ar "JavaScript" ketina įtraukti į egzaminą
arba Viktorina 1.
Įsivaizduoju tai bus kažkas panašaus aukšto lygio dalykų jums reikia žinoti apie JavaScript,
bet aš abejoju, mes norime tiesiog suteikti jums tiesiai JavaScript kodas
nes jūs neturėjo pset į jį.
Bet tai bus viktorina peržiūros stuff kitą savaitę.
>> Skyrius klausimų.
Daug šios medžiagos yra šiek tiek blogai suformuluotas, tačiau mes aptarsime, kodėl.
Skirtingai nuo C, PHP yra "dinamiškai įvedėte kalba". Ką tai reiškia, Jūs klausiate?
Na, atsisveikinti su visų tų char, plūdės, INT, ir kitus raktinius žodžius jums reikia naudoti
skelbiantis kintamieji ir funkcijos pagal C.
PHP, kintamojo tipas yra nustatoma, kad jis šiuo metu holdingo vertės.
Taigi, kol mes įveskite šį kodą į failą pavadinimu dynamic.php,
PHP dinamiškai įvedėte. Kad tai tiesa.
Aš nesutinku su tuo, kad tai reiškia, kad mes atsisveikinimas su char, plūdės, int,
kitus raktinius žodžius.
Tiksli skirtumas tarp dinamiškai įvedėte ir nepatenkinus šio reikalavimo,
statiškai įvedėte, yra tai, kad dinamiškai įvedėte, visi savo tipo tikrinimo ir kita
vyksta vykdymo metu, o statiškai įvedėte tai atsitinka kompiliavimo metu.
Žodis static apskritai atrodo, kad tai kompiliavimo metu dalykų.
Manau, yra ir kitų naudoja jį, bet C, Kai paskelbti statinis kintamasis,
jo sandėliavimą skiriama kompiliavimo metu.
Čia, dinamiškai įvedėte tiesiog reiškia, kad -
In C, jei bandysite pridėti eilutę ir sveikasis skaičius, kai renka,
ji ketina skųstis, nes jis ketina pasakyti, kad jūs negalite pridėti int ir rodyklę.
Tai tiesiog neteisingas veikimas.
Kad yra dar vienas dalykas, kad mes gauti per sekundės dalį.
Bet, kad tikrinimo rūšiuoti, tai, kad ji skundžiasi, kompiliavimo metu,
yra statinis tipas tikrinamas.
Yra kalbos, kur jums nereikia pasakyti char, plūdės, int, ir visi iš tų dalykų,
tačiau kalbos dalykas galiu pasakyti iš kokios rūšies ji turėtų būti,
bet jis vis dar statiškai įvedėte.
Taigi, jei jūs vartojate 51, OCaml, jums niekada nereikės naudoti bet kurią iš šių rūšių,
tačiau ji vis dar kompiliavimo metu sako, kad jūs negalite padaryti, nes jūs maišymo int ir styginių.
Dinamiškai įvedėte tiesiog reiškia, kad kažkada per vykdymo metu jūs ketinate gauti skundą.
Jei jūs taip pat naudojamas Java anksčiau, apskritai, beveik bet C tipo kalba
bus statiškai įvedėte, kad su C, C + +, Java, visi iš jų yra statiškai įvedėte.
"Java", kai renka kažką, o jūs sakote,
eilutė lygi kažką, kad yra ne eilutę,
kad manimi vyksta skųstis, nes šios rūšys tiesiog nesutampa.
Kad manimi vyksta skųstis kompiliavimo metu.
Tačiau ji taip pat turi tam tikrą dinaminį laiko, dalykų, pavyzdžiui, jei jūs bandote mesti kažką
tipo, kad konkretesnė nei dabartinio tipo,
nieko, jis gali padaryti kompiliavimo metu patikrinti, ar turėtų sulaukti pasisekimo, kad dauguma yra.
"Java" taip pat turi tam tikrą dinaminį tipą, kontroliuoja, kaip kuo greičiau ji pasireiškia eilutės kodo
, kai jis faktiškai vykdyti, jis ketina padaryti dauguma,
patikrinti, ar galioja į pirmąją vietą, kad dauguma buvo,
ir jei jis nebuvo, tada jis skundžiasi, kad turite netinkamo tipo.
Dinaminio tipo tikrinimas.
Tipo tai į failą pavadinimu dynamic.php.
Dynamic.php.
Aš išpakuokite, kad formatavimą.
Mes turime kintamąjį, nustatykite jį į sveikasis skaičius 7,
tada mes ketiname jį spausdinti ir% s -
O, mes spausdinti jo tipą, todėl gettype ketina grįžti kintamojo tipą.
Mes tiesiog spausdinate, tipą, vėl ir vėl.
Mes tiesiog php.dynamic.php.
Mes pamatysime, kad jis kinta nuo sveikojo skaičiaus į eilutę su Būlio, kaip mes einame per
C nėra Būlio duomenų tipas, nėra eilutė duomenų tipas.
Char * ir Būlio tiesiog linkęs būti int ar apdegti ar kažką.
PHP, šie tipai egzistuoja, ir tai yra vienas iš didžiausių privalumų PHP virš C -
kad styginių operacijos PHP yra be galo lengviau nei C. Jie tiesiog veikia.
>> Taigi, mes grįžti čia.
Nubėgome dynamic.php.
Tai sako, kad PHP vertėją, vadinamą PHP, paleisti PHP kodą dynamic.php.
Jei turite kokių nors klaidų faile, vertėjas pasakyti!
Vertėjas, tai yra dar vienas didelis skirtumas tarp PHP ir C.
In C, turite sudaryti kažką ir tada jums paleisti, kad surinktą failą.
PHP jūs niekada sudaryti nieko.
Taigi PHP interpretatorius iš esmės tik skaitote šią eilutę po eilutės.
Jis hitai var = 7 tada jis hitai printf tada jis hitai var tada jis hitai printf ir pan.
Sudarymo, ji yra šiek tiek, ir jis išsaugo rezultatus
todėl, jei jums paleisti scenarijų vėliau jūs galite padaryti, kai,
bet iš esmės tai dalykas rūšiuoti eilutėje linija.
Tai reiškia, kad daug optimizavimu, kad mes gauname C,
kaip renkant, tai tiesiog paprastai kompiliatorius gali padaryti daug triukų jums.
Nenaudojamus kintamuosius gali imti, ji gali padaryti visų šių dalykų rūšių,
jis gali padaryti hidraulinis rekursija.
PHP nesate ketinate gauti šią naudą
, nes jis tik ketina pradėti vykdyti eilutę, eilutė po eilutės,
ir ji tikrai ne pripažinti šiuos dalykus, taip pat lengvai,
nes tai ne 1 didelis rinkinys praeiti per dalykas ir tada vykdymas;
tai tiesiog eilutė po eilutės.
Taip, kad vertėjas.
>> Atgal, kad mūsų dinamiško rašyti: gana kietas, eh?
Jūs tikrai negalėjo padaryti, kad C!
Dabar, pamatyti, jei galite išsiaiškinti kiekvieno iš šių verčių.
Žiūrėti šį prašymą priimti prejudicinį sprendimą.
Taigi 3,50. Kokio tipo jūs manote, kad bus?
Čia yra rūšių, mes turime.
Mes turime bools, sveikieji skaičiai, plūdrieji taško, stygos, masyvai, objektai,
ir tada ištekliai, kurie yra rūšies neaiški.
Manau, kad ten iš tikrųjų pavyzdys čia.
Tada yra NULL. NULL yra specialaus tipo.
Skirtingai nuo C kur NULL yra tik rodyklė su adresu 0,
PHP, NULL yra savo tipo, kur galioja tik tos rūšies dalykas yra NULL.
Tai daug daugiau naudingos klaidų tikrinimas.
C, kai mes turėjome šį klausimą, kur, jei grąžina NULL,
ar tai reiškia, jūs grąžinti NULL žymiklį arba naudojant NULL reiškia klaidą
ar visi šios situacijos, mes turėjo vieno taško.
Čia, grįžti NULL paprastai reiškia klaidą.
Daug dalykų, taip pat grįžti false klaidų.
Bet esmė yra NULL tipas, vienintelis dalykas, NULL tipo yra NULL.
Tada atgalinio ryšio, kaip jūs galite apibrėžti kai kuriuos anoniminius funkcijas.
Jūs neturite suteikti funkciją vardą, bet jūs neturite spręsti, kad čia.
Žiūri tipų, kad jie tikisi, kad mes žinome,
ką jūs manote 3,50 tipas? >> [Studentas] Plūdės.
Taip.
Taip, tada čia, ką jūs manote, kad šio tipo? >> [Studentas] masyvas.
Taip. Pirmasis buvo plūdės, o antrasis yra masyvas.
Atkreipkite dėmesį, kad šis masyvas yra ne kaip C masyvo
kur jūs turite indeksą 0 turi tam tikrą vertę, indeksas 1 turi tam tikrą vertę.
Čia indeksai yra a, b, ir c reikšmės: 1, 2, 3.
PHP yra ne skirtumas tarp Association masyvas ir tik reguliariai masyvo
kaip jūs manote, kad C.
Yra tik tai, ir po kapotu reguliariai masyvas yra tik asociatyvus masyvas
kur 0 žemėlapiai kokią vertę Lygiai taip pat žemėlapių kokią vertę.
Dėl šios priežasties, PHP gali būti labai blogai, tikrai greitai dalykų kodas / lyginamoji analizė
nes C, kai jūs naudojate masyvą žinote, kad gauti narį, yra pastovus laiko.
PHP prie narį yra kas žino, kiek laiko?
Tai tikriausiai pastovi, jei jis maišos teisingai.
Kas žino, ką jis iš tikrųjų daro po kapotu?
Jums tikrai reikia pažvelgti įgyvendinimo, norėdami pamatyti, kaip ji ketina spręsti, kad.
Taip, tada fopen.
Manau, kad čia galime tik PHP vadovėlyje fopen pažvelgti grąžinimo tipo.
Mes matome čia jūs galite ieškoti beveik bet kokią funkciją PHP vadove
ir tai yra tarsi PHP žinyno puslapyje.
Grįžimo tipo bus išteklių.
Štai kodėl aš pamačiau jį, nes mes tikrai ne nustatyti išteklių.
Išteklių idėja, C rūšies gavo file * ar kas
PHP ištekliai yra Jūsų failas *.
Tai, ką jūs ketinate skaityti iš, tai, ką jūs ketinate rašyti.
Tai paprastai išorės, todėl išteklių jūs galite traukti dalykų iš ir mesti dalykų.
Ir pagaliau, kas yra NULL tipas? >> [Studentas] NULL.
Taip. Taigi vienintelis dalykas, kuris yra NULL yra NULL.
NULL yra NULL.
>> Vienas bruožas PHP tipo sistema (geriau ar blogiau) yra jos gebėjimas žongliruoti tipų.
Rašydami PHP kodą, kuris sujungia skirtingų tipų reikšmes linija,
PHP bandys padaryti protingiausia.
Išbandyti kiekvieną iš šių eilučių PHP kodo. Kas atspausdinti?
Ar tai, ką jūs tikėjotės? Kodėl arba kodėl ne?
Šis straipsnis apie PHP faktas yra tai, ką daro tai, ką mes vadiname silpnai įvedėte.
Silpnai atspausdinti ir stipriai įvedėte,
yra įvairių šių terminų naudojimas,
bet dauguma žmonių naudoja silpnai atspausdinti ir stipriai įvedėte reiškia šis dalykas rūšiuoti
kur ("1" + 2), kuris veikia.
In C, kad neveiks.
Galite įsivaizduoti, tai neveikia.
Daug žmonių dinamišką rašyti ir silpnas įrašę ir statinio įrašę ir stiprus įrašę išmaišyti.
Python yra dar vienas pavyzdys, vieną ar kitą kalbą, kad dinamiškai įrašėte.
Galite išmėtyti tipų kintamųjų ir tai vyksta nustatyti vykdymo metu
bet koks klaidos checkings.
Python ji ketina vykdyti šį ir jis matys ("1" + 2);
ir tai nepavyksta, nes jis sako, tu negali pridėti eilutę ir sveikasis skaičius.
PHP, kuri yra tik kaip dinamiškai įvedėte, tai nebus nepavyks.
Silpnas rašyti turi daryti su tuo, kad jis ką nors daro tipų
, kurios neturi prasmės nebūtinai.
Taigi ("1" + 2), galiu įsivaizduoti, kad yra eilutė 12, aš galiu įsivaizduoti, kad yra 3 eilutė,
Galiu įsivaizduoti, kad yra sveikasis skaičius 3.
Tai nebūtinai gali būti gerai apibrėžtas, ir mes tikriausiai bus pamatyti čia
kad kai mes spausdinti ("1" + 2); tai tikriausiai bus baigti yra kitoks
nei spausdinant (1 + "2").
Ir tai paprastai yra, mano nuomone, dar blogiau.
Čia mes galime pabandyti.
Kitas šiek tiek apgauti apie PHP jums nereikia rašyti į bylą.
Ji paleisti šią komandą režimą.
Taigi php-R, tada mes galime mesti į komandų čia:
"Print (" 1 "+ 2);" ir aš mesti naują eilutę.
Tai spausdinami 3.
Atrodo, kad jis spausdina 3 ir tai sveikasis skaičius 3.
Taigi, dabar pabandykime atvirkščiai:
"Spausdinti (1 + 2");
Mes gauname 3, ir ji taip pat bus sveikasis skaičius 3? Aš tikrai neįsivaizduoju.
Atrodo, kad atitinka.
Joje niekada tikimybė, kad jis yra eilutė 12 ar ko nors panašaus
, nes PHP, skirtingai JavaScript ir Java taip pat
turi atskirą operatoriaus sąryšis.
PHP eilučių sujungimas yra taškas.
Todėl spausdinama (1 "2".); Ketina duoti mums 12.
Ši tendencija galėtų sukelti painiavą, kai žmonės bando daryti kažką panašaus g + =
kai kitas dalykas, kad jie nori pridėti prie jų eilutės pabaigos, ir kad manimi vyksta, kad žlugtų.
Ką jums reikia padaryti g. =
Taigi nepamirškite sąryšis PHP taškas.
Kiti dalykai bandymas atnaujinti: print ("CS" + 50);
Aš Jums sakė, kad nėra ši viltis, todėl CS50
kadangi sąryšis yra ne +.
Ką manote tai vyksta, galų gale yra?
Aš nuoširdžiai neturi jokios idėjos.
Atrodo, kad jis tik 50.
Ji mato eilutę, ir aš bet jei mes įdėti 123CS -
Ji mano, kad pirmąją eilutę, jis bando perskaityti iš jo ar iš jo numerį sveikasis skaičius.
Šiuo atveju jis mato 123CS.
"Tai neturi jokios prasmės, kaip sveikasis skaičius, todėl aš tik ketina galvoti apie 123."
Taigi 123 + 50 bus 173.
Ir čia jis pradeda skaityti tai kaip sveikasis skaičius.
Jis nemato nieko, todėl jis tiesiog elgiasi su ja kaip 0. Taigi 0 + 50 bus 50.
Tai aš darant prielaidą, ketinate daryti kažką panašaus.
Aš galvoju, 99.
Taip, nes ji ketina imtis pirmas
Taip 99.
Čia (10/7), jei tai buvo C, ką norėčiau, kad grįžti?
[Studentas] 1. >> Taip, tai būtų 1, nes 10/7 dalijant 2 sveikieji skaičiai.
Sveikasis skaičius, sveikasis skaičius, padalytas iš nesiruošia grįžti sveikasis skaičius.
Ji negali grąžinti 1 punkte, kad ir kas tai būtų, kad tai tik ketina grįžti 1.
Čia spausdinimas (10/7), tai vyksta iš tikrųjų aiškinti, kad.
, O tai reiškia, kad jei jūs tikrai norite padaryti sveikąjį skaičių apvalinimo ir stuff like that,
ką jums reikia padaryti print (grindys (10/7));
In C, tai turbūt keista, kad galite pasikliauti sveikojo skaičiaus sutrumpinimus reguliariai,
bet PHP galite ne todėl, kad jis bus automatiškai pasukti į plūdės.
Ir tada (7 + tiesa), ką jūs manote, kad bus?
Spėju, 8, jei ji ketina interpretuoti tiesa kaip 1.
Atrodo, kad jis yra 8.
>> Taigi nieko mes padarėme per pastaruosius 10 minučių turėtumėte visiškai niekuomet.
Jūs pamatysite kodą, kuris tai daro.
Ji nebūtinai turi būti taip paprasta, kaip šis.
Jūs galite turėti 2 kintamuosius, ir 1 kintamasis atsitinka būti eilutės
ir kitų kintamo int atsitinka būti, ir tada jums pridėti šiuos kintamuosius.
Nuo PHP yra dinamiškai atspausdinti ir jums tai bus ne bet kokio tipo tikrinimas
nes jis silpnai atspausdinti ir, nes jis bus tiesiog automatiškai mesti šiuos dalykus kartu
ir viskas bus tik dirbti, sunku net nežino, kad šis kintamasis turi būti eilutės,
todėl aš ne įdėti ją į šį kintamąjį, kuris yra sveikasis skaičius.
Geriausia praktika yra, jei kintamasis yra eilutė, laikykite jį kaip eilutę amžinai.
Jei kintamasis yra int, laikykite jį kaip int amžinai.
Jei norite kovoti su sveikaisiais skaičiais ir styginiams,
galite naudoti varsint, kad "JavaScript".
Intval. Aš tai visą laiką. PHP ir JavaScript išmaišyti viską.
Taigi intval ketina grįžti kintamojo skaitinę vertę.
Jei praeina "Spausdinti (intval ('123 ')), jūs gaunate 123.
Intval pati nesiruošia daryti mums patikrinti, kad tai tik sveikasis skaičius.
PHP vadovėlyje, yra tik tiek daug funkcijų,
todėl čia aš manau, kad tai, ką aš norėčiau naudoti is_numeric 1..
Spėju, kad grįžo klaidinga.
Tai dar vienas dalykas, mes turime eiti per yra ===.
Taigi is_numeric ('123df), jums reikės ne manau, kad is_numeric.
In C, jums reikės pakartoti per visus simbolius
ir patikrinti, norėdami pamatyti, jei kiekvienas simbolis yra skaitmuo ar kokia.
Čia is_numeric ketina daryti, kad mums,
ir jis grąžina klaidinga.
Taigi, kai aš atspausdintas, jis atspausdintas nieko, todėl čia aš lyginant jį pamatyti,
Ar būtumėte klaidingas? Ir todėl dabar jis Spausdinimas 1.
Matyt, jis spausdina 1 tiesa vietoj spausdinimo tiesa, kaip tiesa.
Įdomu, jei aš print_r. Ne, ji vis dar daro 1.
>> Grįžtant prie === == vis dar egzistuoja,
ir jei jūs kalbate su Tommy jis pasakys == yra puikiai baudą.
Aš ruošiuosi pasakyti, kad == yra baisi ir jūs niekada neturėtų naudoti ==.
Skirtumas tas, kad == palygina dalykus
kur ji gali būti tiesa, net jei jie yra ne tos pačios rūšies,
o === palygina dalykų ir pirmas ji tikrina, ar jie yra tos pačios rūšies?
Taip. Gerai, dabar aš ruošiuosi pamatyti, jei jie iš tikrųjų palyginti turi būti lygus.
Jums gauti keistam dalykų, pavyzdžiui, 10 lygu - Pažiūrėkime, kas, kad sako.
Taigi, ('10 '== 1 E1);
Tai grąžina true.
Ar kas nors turite spėlioti, kodėl tai grąžina true?
Tai ne tik apie tai. Gal tai užuomina.
Bet jei aš pakeisti, kad prie f - darn it! Aš nuolat naudojant kabutes.
Priežastis kabutes šaukiantį į mane, nes aš įdėti šią nuorodą į kabutes.
, Kad galėčiau išvengti dvigubų kabučių čia, bet apostrofai lengviau.
Taigi, ('10 '== 1 f1), nespausdina tiesa. ('10 '== 1 E1); spausdina tiesa.
[Studentas] Ar hex? >> Tai ne HEX, bet ji yra arti, kad tai kaip -
1e1, mokslo notacijos.
Ji pripažįsta, 1e1 kaip 1 * 10 ^ 1 ar whatever.
Tai yra lygūs sveikieji skaičiai.
Jei mes tai padarysime === tada jis bus klaidingas.
Aš iš tikrųjų neįsivaizduoju, jei mes == ką apie (10 ir '10abc "); Gerai. Taip, tai tiesa.
Taigi, tiesiog patinka, kai jūs padarėte (10 + '10abc "); ir tai būtų 20,
čia (10 == '10abc "); yra tiesa.
Dar blogiau yra dalykų, pavyzdžiui (false == NULL); yra tiesa
arba (klaidinga == 0); tiesa, (klaidinga == []);
Yra keistai atvejai - Tai yra vienas iš šių keistam atvejais.
Atkreipkite dėmesį, kad (false == []); yra tiesa.
('0 '== FALSE); yra tiesa.
('0 '== []); Yra klaidinga.
Taigi == Tranzityvumas jokiu būdu.
gali būti lygus b ir gali būti lygus c,
bet b gali būti lygus c.
Tai pasibjaurėjimas mane, ir jūs visada turėtų naudoti ===.
[Studentas] Ar mes darome! == Taip pat? >> [Bowden] Taip.
Ekvivalentas būtų! =! ==
Tai iš tikrųjų užaugo į pset spec
kai funkcijos grąžina daug -
PHP vadovėlyje yra gerai apie tai.
Tai kelia didelis raudonas lange "Tai bus gražins false, jei yra klaida."
Bet grįžtant 0 yra visiškai pateisinamas dalykas, jei norite grįžti.
Pagalvokite apie bet kurią funkciją, kuri, tikimasi, grąžina sveikąjį skaičių.
Tarkime, kad ši funkcija turėtų skaičiuoti eilučių skaičių faile ar kažką.
Esant normalioms aplinkybėms, pereisite Ši funkcija failą
ir jis ketina grįžti sveikasis skaičius, kuris atstovauja eilučių skaičių.
Taigi 0 yra visiškai pateisinamas numeris, jei failas yra tik tuščias.
Bet ką daryti, jei žmonėms jo duoti neteisingą failą ir funkcijos atsitinka gražins false
jei pereisite neteisingą failą?
Jei jūs tiesiog == nesate diferencijuojant tarp neteisingas failo bylą ir tuščią failą.
Visada naudoti. ===
Štai visi tie.
>> PHP, masyvas tipas skiriasi nuo to, ką įpratę prie C.
Iš tiesų, jūs galite jau pastebėjau, tai tai, kas išdėstyta pirmiau, kai pamatė, kad tai tipo masyvo.
Laikiklis PHP 5.4, kuri yra naujausia versija PHP sintaksė yra nauja.
Prieš tai jūs visada turėjo parašyti, array ("a" -> 1, "b" -> 2.
Tai buvo masyvo konstruktorius.
Dabar PHP pagaliau aplink gražus sintaksės tik laužtiniuose skliaustuose,
Yra tik tiek daug geriau nei masyvo.
Tačiau atsižvelgiant į PHP 5,4 yra naujausia versija,
galite susidurti vietose, kad net nereikia turėti PHP 5,3.
Per vasarą nubėgome į šio klausimo, kur PHP 5,3 buvo tai, ką mes turėjome ant prietaiso,
bet serveris, kad mes dislokuoti visą mūsų kokybės knyga ir pateikti ir visi, kad kita
PHP 5,4.
Nežinodamas, mes sukūrėme 5,3 stumiama į 5,4,
ir dabar visi staiga nė vienas iš mūsų kodas darbai
nes ten atsitiko, įvyko pokyčių tarp 5,3 ir 5,4
, kurie nėra suderinami,
ir mes turime eiti ir išspręsti visas mūsų dalykų, kad neveikia PHP 5.4.
Šios klasės, nes prietaisas veikia PHP 5,4,
puikiai gerai naudoti skliaustus.
Tačiau, jei jūs ieškote dalykus visame internete,
jei jūs ieškote kažkokį masyvo stuff, greičiausiai jūs ketinate pamatyti
gimė iš masyvo konstruktorius sintaksė rašybos, nes tai buvo maždaug nuo PHP
ir kvadrato formos laikiklis sintaksė buvo maždaug per pastaruosius porą mėnesių
arba kai 5,4 buvo aplink.
Tai kaip jums puslapis.
Tiesiog kaip ir C, kaip galėtumėte puslapis laužtiniuose skliaustuose, pvz $ masyvas [0], $ masyvas [1], $ masyvas [2],
Jūsų Indeksas taip pat, jei jums atsitikti, kad jūsų indeksai yra stygos.
Kad $ masyvas [''] ir $ masyvas ['b'].
$ Masyvas [b]. Kodėl taip nutiko negerai?
Tai tikriausiai sukurti įspėjimą, tačiau vis dar dirba. PHP linkęs tai daryti.
Jis linkęs tik: "Aš ruošiuosi įspės jus apie tai, bet aš tik ketina nesustoti
"Ir daryti tai, ką galiu."
Tai tikriausiai išversti į eilutę,
tačiau tai yra įmanoma, kad nors per pastaruosius kažkas sakė
apibrėžti b yra "Hello World".
Taigi, dabar b gali būti nuolat ir $ masyvas [b] bus iš tikrųjų daryti "Hello World".
Manau, kad šiuo metu, arba bent jau mūsų PHP nustatymai,
jei bandysite į masyvo indeksą, ir kad raktas neegzistuoja, ji žlugs.
Nemanau, kad tai bus tik įspėti jus.
Arba bent jau galite nustatyti jį taip, kad jis ne tik įspėti jus, jis tiesiog tiesiai nepavyksta.
>> Kaip jums patikrinti, norėdami pamatyti, jei ten iš tikrųjų yra toks indeksas yra isset.
Taigi isset ($ masyvas ['hello world']) return false.
isset ($ masyvas ['b']) return true.
Galite maišyti šiuos Syntaxes.
Aš esu gana įsitikinęs, tai, ką šis masyvas baigtis yra - Mes galime išbandyti jį.
O, man reikia PHPWord.
Tai maišant sintaksę, kur jūs nurodote, kas svarbiausia yra
ir jums nereikia nurodyti, kas svarbiausia yra.
Taigi 3 čia yra vertybė.
Kurių aiškiai pasakė tai, ką jos pagrindinis bus.
Ką manote jos pagrindinis bus?
[Studentas] 0. >> Spėju, 0 tik todėl, kad pirmasis, mes nenurodomas.
Mes iš tikrųjų gali padaryti porą tokių bylų.
Taigi print_r spausdinti rekursinis. Jis bus atspausdintas visą masyvą.
Tai būtų jei ten buvo bet spausdinti subarrays masyvo.
Taigi print_r ($ masyvas); php.test.php.
Ji atrodo kaip ji davė jam 0.
Yra tikrai kažkas, kad nepamiršti, čia, bet mes grįžti į ją per sekundę.
Bet kas, jei aš atsitikti, kad šį rodiklį 1?
PHP nėra skirtumo tarp styginių indeksų ir sveikasis skaičius rodiklių,
todėl šiuo metu aš tiesiog apibrėžta 1 indeksą Galiu padaryti tiek $ masyvas [1] ir $ masyvas ['1 ']
ir tai bus tas pats puslapis ir tas pats raktas.
Taigi dabar, ką jūs manote, 3 dalis bus? >> [Studentas] 2. >> [Bowden] Spėju, 2.
Taip. Tai 2.
Ką daryti, jei mes, tai yra 10, tai 4? Ką manote puslapis iš 3 bus?
Aš galvoju, 11.
Mano spėjimas, kad tai, kas PHP - ir aš manau, kad aš mačiau prieš tai -
tai tiesiog stebi, kas aukščiausia indekso skaičiai, jis naudojamas iki šiol.
Jis niekada priskirti string indeksas 3. Jis visada bus skaitmeninius indeksus.
Taigi ji stebi aukščiausios jis priskirtas iki šiol, kuri būna, kad 10,
ir ji ketina duoti 11-3.
Ką aš sakiau anksčiau, atkreipkite dėmesį, kaip jis yra šio masyvo spausdinimas.
Jis spausdina klavišas 10, 4 punktą, mygtukas 11, pagrindinis d.
Ar net darykime
Manau, aš ne įdėti 0, bet tai spausdinimas 1, 2, 3, 4.
Ką daryti, jei aš pereinu čia? Arba leiskite faktiškai perjungti Šie 2.
Dabar jis spausdina 2, 1, 3, 4.
PHP matricos yra ne tik kaip savo įprastą maišos lentelės.
Tai visiškai pagrįsta galvoti apie juos kaip maišos lentelės 99% laiko.
Bet savo hash 'lentelės nėra ta tvarka, kuria viskas buvo įdėtos jausmas.
Taigi, kuo greičiau įdėkite jį į savo maišos lentelės
manyti, nėra susijęs sąrašas ir jūs galite spręsti per susietą sąrašą
kuris buvo įtrauktas pirmasis.
Bet čia mes įterpiamas 2 dalies pirmojoje ir jis žino, kai ji spausdinti šį matrica, 2 ateina pirmas.
Jis nespausdinamas tik bet kokia tvarka.
Techninių duomenų struktūra, kad ji yra užsisakyti žemėlapis,
todėl žemėlapiai klavišus vertybes ir ji prisimena tvarką, kuria tie raktai buvo įdėta.
Iš esmės tai yra kai kurių komplikacijų, kur jis erzina, kad iš tikrųjų -
Tarkime, jūs turite masyvą 0, 1, 2, 3, 4, 5
ir norite imti 2 rodyklėje.
Vienas iš būdų tai daryti, galime pamatyti, kas, kad atrodo.
0, 2, 1, 3, 4.
Išjungimo atsitinka, siekiant panaikinti tiek kintamųjų ir masyvo rodiklius.
Taigi išjungimo ($ masyvas [2]);
Dabar, kas tai atrodys? 2 yra tiesiog dingo, todėl, kad puikiai gerai.
Labiau erzina tai, jei norite, ką iš tikrųjų kaip masyvo.
Aš įdėti atsitiktinių skaičių.
Dabar pastebėti savo indeksus.
Noriu, kad jis tiesiog būti kaip C masyvas, kur jis eina nuo 0 iki ilgis - 1
ir aš galiu pakartoti per jį kaip toks.
Bet kaip tik aš išjungimo antrą indeksą, kas buvo indeksu 3 nėra dabar tapo 2 rodyklėje.
Vietoj to ji tiesiog pašalina šį indeksą ir dabar jūs 0, 1, 3, 4.
Tai yra visiškai pagrįstas.
Tai tiesiog erzina, ir jūs turite daryti tai, ko, pavyzdžiui, masyvo sudurti. Taip.
>> [Studentas] Kas nutiktų, jei buvo už linijos
ir jūs norite eiti per visus elementus?
Kai jis trenkėsi 2, ar ji kada duoti?
Iteracja per masyvo. Yra 2 būdai, galite tai padaryti.
Galite naudoti for ciklas reguliarus.
Tai dar vienas PHP painumas.
Daugeliu kalbų, sakyčiau, kažkoks ilgio ar LEN ar kažką
nurodant masyvo ilgį.
PHP tai skaičius.
Taigi skaičius ($ masyvas); $ i + +)
Tegul tiesiog spausdinti ($ masyvas [$ i]);
Pranešimas: Nenurodytas kompensuoti: 2.
Tai tiesiog žlugti.
Tai yra priežastis, kad didžioji dalis, jums niekada nereikės kartoti per masyvas panašaus į tai.
Tai gali būti perdėta, bet jums niekada nereikės kartoti per masyvas panašaus į tai
, nes PHP teikia foreach sintaksę, kur foreach ($ masyvas as $ item).
Dabar, jei mes spausdinti ($ item); - we'll aptarti per sekundę -, kuris veikia puikiai baudą.
Foreach taip, kad dirba, pirmasis argumentas yra masyvas, kad jūs iteravimu per.
O antrasis argumentas punktas, per kiekvieną praeiti kilpa
ji ketina priimti kitą dalyką masyve. Taigi nepamirškite, masyvas turi įsakymą.
Už linijos pirmą kartą per punktas bus 123
tada ji bus 12 tada jis bus 13 tada jis bus 23 tada jis bus 213.
Ko gauti tikrai keista, kai jūs darote kažką panašaus foreach.
Leiskite pamatyti, kas vyksta, nes jūs niekada neturėtų daryti.
Ką daryti, jei mes išjungimo ($ masyvas [1]);
Kad tikriausiai buvo tikėtasi.
Jūs iteravimu per šio masyvo, ir kiekvieną kartą, kai jūs išjungimo Pirmieji indekso.
Taigi indeksuoti kaip 0, pirmas dalykas, punktas įgauna reikšmę "0", todėl jis bus 123.
Bet viduje už linijos išjungimo indeksas 1, taigi tai reiškia 12 dingo.
Taigi spausdinti. PHP_EOL.
PHP_EOL yra tik naujos eilutės, bet tai techniškai daugiau nešiojamų
nes naujų eilučių operacinė sistema "Windows" skiriasi nuo naujų eilučių, Mac ir UNIX.
"Windows" naujos eilutės \ r \ n, o visur kitur jis linkęs tik \ n.
"PHP_EOL yra sukonfigūruotas taip, kad ji naudoja, nepriklausomai nuo jūsų sistemos naujos eilutės yra.
Taigi spausdinti, kad. Tegul ne print_r ($ masyvas) pabaigoje.
Aš turėjau ne idėja, kad tai būtų toks elgesys.
Elementas dar 12 vertės, nors mes išjungimo 12, kol mes kada nors gavo iš masyvo.
Negalima imtis savo žodį apie tai, bet atrodo, if sukuria masyvo kopiją
ir tada prekės prisiima visų tos kopijos reikšmių.
Taigi, net jei pakeisite masyvo viduje už linijos,
ji nerūpi. Prekių imsis pradines reikšmes.
Pabandykime išjungimo jį.
Ką daryti, jei tai yra $ masyvas [1] = "Sveiki";
Net jei mes įdėti "labas" į masyvo elementą niekada trunka nuo tos vertės.
Yra ir kita sintaksė foreach kilpos
kur jūs įdėti 2 kintamuosius atskirti rodykle.
Šis pirmasis kintamasis bus raktas tos vertės,
ir šis antrasis kintamasis bus pats tiksliai pozicija.
Tai čia neįdomu, bet jei mes grįžti į mūsų pradiniu atveju "A" -> 1,
"B" -> 1,
čia, jei mes tiesiog kartoti kiekvienam kaip elementą masyvo punktas bus 1 kiekvieną kartą.
Bet jei mes taip pat norime žinoti raktas, susijusios su šio elemento
tada mes kaip $ key -> $ item.
Taigi dabar mes galime padaryti print ($ key. ":".
Dabar ji iteravimu ir spausdinti kiekvieną klavišą ir jos susijusi reikšmė.
>> Papildomas dalykas, kurį galime padaryti foreach kilpos, jūs galite pamatyti šią sintaksę.
Jungimo prieš kintamųjų pavadinimų linkę būti kaip PHP ar nuorodas.
Tais atvejais, kai nuorodos yra labai panašus į rodykles,
jūs neturite patarimų, todėl jūs niekada tiesiogiai susidoroti su atmintim.
Bet jūs turite nuorodas, kur 1 kintamasis nurodo į tą patį, kaip ir kitas kintamasis.
Viduje čia darykime $ item. Leiskite grįžti prie 1, 10.
Darykime $ item + +; Tai vis dar egzistuoja, PHP. Jūs vis dar galite padaryti + +.
php.test.php. Turiu jį spausdinti. print_r ($ masyvas);
Mes spausdinti 2, 11.
Jei aš tiesiog padaryti foreach ($ masyvas as $ item) prekė bus vertė 1
pirmą kartą per kilpą. Ji bus žingsnis 1 į 2 ir tada baigsime.
Taip, tada ji bus per antrą kilpą praeiti ir, kad elementas yra 10.
Jis žingsniu punktas, 11, ir tada, kad tiesiog išmesti.
Tada mes print_r ($ masyvas); ir pažiūrėkime, kad tai yra tik 1, 10.
Todėl prieaugis, mes padarėme buvo prarasta.
Bet foreach ($ masyvas & $ item)
dabar šis elementas yra pati prekė, kaip šią teisę čia. Tai tas pats dalykas.
Taigi $ item + + yra pakeisti masyvo 0.
Iš esmės, jūs taip pat galite padaryti $ K -> $ item ir jūs galite padaryti $ masyvas [$ k] + +;
>> Taigi, kitą daro, kad mes galime laisvai keisti elementą,
tačiau tai neturi keisti savo pradinį masyvą.
Bet jei mes naudojame k, kuris yra pagrindinis mūsų, tada mes galime tiesiog indeksas į mūsų masyvas naudojant tas raktas
ir prieaugio, kad.
Tai tiesiogiai keičia mūsų originalus masyvo.
Jūs netgi galite padaryti, kad, jei dėl kažkokių priežasčių jūs norėjote galimybę keisti
Tiesą sakant, tai yra visiškai pagrįsta.
Tu nenori rašyti $ masyvas [$ k] + +,
jūs tiesiog norėjau parašyti $ item + +, bet jūs vis dar norėjau pasakyti, if ($ k === "a")
tada prieaugio elementą ir tada spausdinti mūsų masyvo.
Taigi, dabar ką mes tikėtis print_r tai padaryti? Kokios vertybės turi būti atspausdintas?
[Studentas] 2 ir 10. >> [Bowden] Tik jei raktas buvo "mes iš tikrųjų Užsakytos.
>> Jūs tikriausiai labai retai, jei kada nors, reikės apibrėžti funkcijas PHP,
, bet jūs galite pamatyti kažką panašaus, kur jūs apibrėžti kaip funkcija nesvarbu funkciją.
Paprastai jums norėčiau pasakyti ($ foo $ bar) ir tada nustatyti jį, kad jis įrodo.
Bet jei aš tai padaryti, tada tai reiškia, kad kokia ragina, nepriklausomai,
kokia ragina Baz, kad pirmasis argumentas perduota bazių gali būti pakeistas.
Darykime $ foo + +;
ir viduje čia darykime Baz ($ item);
Dabar mes vadiname funkciją.
Argumentas atsižvelgiant, o tai reiškia, kad, jei mes pakeisime
mes pakeisti dalykas, kuris buvo priimtas.
Ir spausdinti tai, mes tikimės, kad - jei aš messed up sintaksę - mes turime 2, 11,
todėl jis iš tikrųjų buvo padidinamas.
Pranešimas turime 2 vietos nuorodas.
Ką daryti, jei tai padarė? Ką tai reiškia?
[Studentas] Tai bus pakeisti. >> Taip.
Prekių yra tik masyve vertės kopija.
Taigi objektas bus pakeisti į 2, o masyvas ['a'] vis dar yra 1.
Arba ką daryti, jei galiu tai padaryti?
Dabar daiktas yra siunčiamas kopija bazių.
Taigi argumentą, kopija bus padidinamas iki 2,
bet patį elementą niekada nebuvo padidinamas iki 2.
Ir punktas yra tas pats, kaip masyvo grupes nepriklausomai,
kad masyvas niekada padidinamas.
Kad abi tos vietos reikia.
>> PHP yra dažniausiai gana protingas apie tai.
Jūs manote, aš noriu praeiti nuoroda
Tai buvo iš tikrųjų klausimą vienoje iš psets.
Tai buvo questions.txt dalykas, kur jis sakė,
Kodėl norite perduoti šią struct remiantis?
Koks buvo atsakymas į tai?
[Studentas] Taigi jūs neturite kopijuoti kažką didelis. >> Taip.
Struct gali būti savavališkai didelis, ir kai pereisite struct kaip argumentas
reikia kopijuoti, kad visą Struct perduoti jį funkcijos,
o jei jūs tiesiog praeiti struct remiantis
tada jis tiesiog reikia nukopijuoti kaip argumento funkcijos 4-baitų adresą.
PHP yra šiek tiek protingesni nei.
, Jei turiu tam tikrą funkciją, ir galiu perduoti jai 1000 dalykų, masyvo,
ar tai reiškia, kad ji ketina turite nukopijuoti visus 1000 iš tų dalykų,
perduoti į funkciją? Ji neturi, tai padaryti nedelsiant.
Jei šią funkciją viduje ji niekada iš tikrųjų keičia foo
taip if ($ foo === "Sveiki") return true;
Atkreipkite dėmesį, mes niekada iš tikrųjų pakeitė argumentas šios funkcijos viduje,
, o tai reiškia, kad viskas, ką buvo priimtas kaip foo niekada reikia nukopijuoti
nes jis ne ją keisti.
Taigi, kaip PHP darbai yra argumentai visada priimtas remiantis
kol jūs iš tikrųjų bando jį pakeisti.
Dabar, jei aš sakau, $ foo + +; ji dabar padaryti pradinės foo kopiją ir keisti kopiją.
Tai sutaupys šiek tiek laiko.
Jei jūs niekada neliesti šią didelę masyvas, jūs niekada iš tikrųjų keisti,
tai nereikia, kad kopija,
o jei mes tiesiog įdėti šią ampersendo, tai reiškia, kad ji nėra net nukopijuokite jį
, net jei jūs jį pakeisti.
Toks elgesys yra vadinamas kopija-su-rašyti.
Pamatysite jį ir kitose vietose, ypač jei vartojate operacinės sistemos kursą.
Kopija-su-rašyti yra gana įprasta modelis, kur jums nereikia, kad kažkas kopiją
išskyrus atvejus, kai tai iš tikrųjų keičiasi. Taip.
[Studentas] Ką daryti, jei turėjo vidinį bandymo prieaugis,
kad tik 1 elementas iš 1000 reikėtų keisti?
Nesu tikras.
Manau, kad būtų nukopijuoti visą dalykas, bet tai įmanoma, jis pakankamai išmanus, kad
Tiesą sakant, tai, ką aš galvoju, yra įsivaizduoti, mes turėjome masyvą, kuris atrodo taip: $ masyvas2 = [
Tada į indeksą "a" yra masyvas [1 2 3 4], o indeksas "b" yra whatever masyvas.
Man reikia kablelius tarp visų tų. Įsivaizduokite, kad yra kableliais.
Tada "c" vertė 3.
Gerai.
Dabar galime pasakyti, mes $ Baz ($ masyvas2);
Baz nėra į tai atsižvelgiant.
Taigi $ foo ['c'] + +;
Tai toks pavyzdys, kai mes perduodame masyvas2 kaip argumentas
ir tada jis keičia tam tikrą indeksą masyvo, jį didinant.
Aš tikrai neįsivaizduoju, ką PHP ketinate daryti.
Jis gali būti lengvai padaryti visą dalykas kopiją, bet jei jis protingas,
ji bus šių raktų kopiją tais atvejais, kai tai turės savo atskirą vertę
bet tai gali vis dar su tuo pačiu masyvo 1,2,3,4
ir tai gali dar su tuo pačiu masyvo.
Aš iPad jį.
Mes pereiname šiame masyve, kur šis vaikinas balų 3, Šis vaikinas taškus [1,2,3,4],
Šis vaikinas [34, ...]
Dabar, kai mes perduoti ją į bazių, mes pakeisti šią.
Jei PHP yra protingas, jis gali tiesiog daryti -
Mes vis dar kopijuoti šiek tiek atminties, bet jei ten buvo šitie didžiuliai įdėtos subarrays
mes ne reikia nukopijuoti tiems.
Aš nežinau, jei tai, ką ji daro, bet aš negaliu įsivaizduoti, kad tai, kad.
Tai taip pat yra gana didelis privalumas C per PHP.
>> PHP daro mūsų gyvenimą daug lengviau daug dalykų,
bet jūs tipo neturi jokios idėjos, kaip gerai ji atliks
nes aš neturiu po gaubtu idėja, kai jis šių dalykų kopijas,
oh, kad bus pastovus laikas kopija,
tai tiesiog ketina pakeisti 1 žymeklį, tai bus juokingai sunku linijinis kopija?
Ką daryti, jei jis negali rasti vietos?
Ji tada reikia paleisti šiukšlių surinkimo, gauti šiek tiek daugiau vietos?
Ir šiukšlių surinkimo gali trukti nepagrįstai ilgai.
In C jūs neturite jaudintis dėl šių dalykų.
Kiekvienas linija rašote jums gali gana daug priežasčių, apie tai, kaip ji ketina atlikti.
>> Leiskite pažvelgti atgal.
Kaip malonu tai, kad jūs neturite kovoti su maišos funkcijų,
nuorodytų sąrašus, ar ko nors panašaus?
Kadangi darbo su maišos lenteles taip lengva dabar, čia yra smagus puzzle dirbti.
Atverti failą pavadinimu unique.php ir rašyti PHP programą
(Taip pat žinomas kaip "scenarijų").
Mes linkę juos vadinti scenarijus, jei jie trumpi dalykų, kad jums paleisti į komandų eilutę.
Iš esmės, bet kalba, kad jums nereikia sudaryti, bet jūs ketinate paleisti vykdomąjį
į komandų eilutę, galite skambinti, kad vykdomąjį scenarijų.
Aš galėjau lygiai taip pat parašyti C programa, kuri daro tai,
bet aš ne ją vadina scenarijus, nes aš pirmą kartą kaupia jį ir tada paleisti dvejetainis.
Bet tai PHP programa mes ketiname skambinti scenarijų.
Arba, jei mes ją parašė Python arba Perl ar Node.js arba bet iš tų dalykų,
mes norime jiems skambinti visi scenarijai, nes galite paleisti juos į komandų eilutę
bet mes ne renka juos.
Galėtume tai padaryti gana greitai.
Mes neketiname naudoti argv. Tegul tiesiog smūgis per tai.
Skambinti ji yra unikali, parašyti programą.
Galite manyti, kad įvestis bus būti vieną žodį eilutėje.
Tiesą sakant, argv bus gana trivialus naudoti.
unique.php.
Pirmas dalykas, pirma, mes norime patikrinti, ar mes buvo perduota 1 komandų eilutės argumentas.
Lygiai taip pat, kaip ir galima buvo tikėtis argc ir argv C, mes vis dar turime, PHP.
Taigi, jei ($ argc! == 2), tada aš ne su spausdinti pranešimą arba nieko.
Aš tiesiog išeiti, klaidos kodas iš 1.
Taip pat galėčiau grąžinti 1.
Retai PHP yra šioje valstybėje, kur mes ne -
Paprastai esate funkcija vadinama funkcija vadinama funkcija vadinama funkcijos.
Ir jei kas nors negerai, ir jūs tiesiog norite viską, kad išeitumėte visiškai,
išėjimas tik tikslas programą.
Tai taip pat yra C.
Jei esate funkcijos funkcija funkcijos funkcija
, ir norite tiesiog nužudyti programą, galite skambinti išėjimą ir jis bus tiesiog išeiti.
Bet PHP tai dar rečiau, kad mes esame šiuo aukščiausio lygio.
Paprastai mes kažkokiu funkcijos viduje, todėl mes vadiname išėjimą
, kad mes neturime grįžti iki 1 dalykas, kuris tada supranta, klaida
kad grąžina, jei pripažįsta, įvyko klaida.
Mes nenorime, kad spręsti, kad, todėl išeiti (1);
grąža (1), šiuo atveju būtų lygiaverčiai.
>> Tada tai, ką mes norime atidaryti norime fopen.
Argumentai atrodo gana panašus.
Mes norime fopen ($ argv [1], ir mes norime atidaryti jį skaityti.
Kuri grąžina išteklius, mes ketiname skambinti f.
Tai atrodo gana panašus kaip C ar jį tik mes neturime pasakyti failą *.
Vietoj to mes tik pasakyti $ f. Gerai.
Tiesą sakant, manau, kad tai netgi suteikia mums užuominą PHP funkcija vadinama failas. PHP failas.
Ką ketina daryti perskaityti visą failą į masyvą.
Jums net nereikia fopen jį. Ji ketina tai padaryti už jus.
Taigi $ linijos = file ($ argv [1]);
Dabar visi atitinkamos bylos linijų linijų. Dabar mes norime rūšiuoti eilutes.
Kaip mes galime rūšiuoti eilutes?
Mes rūšiuoti eilutes.
Ir dabar mes galime atspausdinti juos, ar kas.
Turbūt lengviausias būdas yra foreach ($ as $ linija linijos) echo $ linija;
[Studentas] Ar ne mes net kirsti linijas nurodyti kažką į rūšiuoti?
Tai vieta, kur tarsi turėtų būti apibrėžta kaip funkcija rūšiuoti (& $ masyvas).
Kai Jūs skambinate funkciją jums nereikia perduoti ją nuorodą.
Tai funkcija, kuri apibrėžia ją kaip nuoroda.
Iš tikrųjų tai yra būtent tai, kas nutiko
kai mes įdėti viską, kad mūsų serveriuose, kai mes Eime 5,3-5,4.
Iki 5,4, tai buvo visiškai pateisinamas.
Jos funkcija, neturi tikėtis, kad jį priimti kaip nuoroda, bet galite perduoti jį kaip nuoroda
todėl, jei funkcija netyčia pakeisti jį, jis vis dar pakeistas.
5,4 nesate turėjo tai padaryti.
Taigi, dabar vienintelis būdas jums perduoti remiantis, jei ši funkcija aiškiai tai.
Jei jūs nenorite, kad jis jį keisti, tada jums reikia padaryti $ = $ linijų ir pass kopijavimo kopijas.
Taigi dabar eilutės bus išsaugota ir kopija bus pakeistas.
php.unique.php. Galbūt aš messed kažką daugiau.
Netikėtas "rūšiuoti".
Ten bus kažkas, kad tai atlieka už mus.
Tai net ne ten.
Atkreipkite dėmesį, kai jūs skaitote šį vadovą, kad tikimasi, kad pirmasis argumentas masyvas
ir ji ėmėsi nuoroda.
Kodėl tai skundžiasi, kad man? , Nes aš vis dar čia Ši funkcija rūšiuoti, kad aš nenoriu.
Gerai, php.unique.php. Aš ne perduoti jį argumentą, nes aš neturiu failą.
Tai test.php php.unique.php apie.
Čia yra test.php visi atspausdinti gražioje rūšiuotų tvarka.
Atkreipkite dėmesį,, kad rūšiuojami, kad yra tipo keistam kodo failą
, nes visi mūsų tuščių eilučių ketinate atėjai, pirmas
tada ketinate atvykti visų mūsų 1 lygio išpjovomis
tada ateis mūsų be atspaudų.
Taip. >> [Studentas] Taigi šaltinio kodo nebuvo priimtas remiantis?
Yra tai, kad paprastai perduodama pagal vertę?
[Bowden] Kai Jūs skambinate funkciją, ji niekada nustato, ar jis buvo priimtas remiantis.
Tai funkcijos apibrėžimas, kuris nustato, ar jis buvo priimtas remiantis.
Ir žiūri funkcijos apibrėžimo rūšiuoti arba tiesiog žiūri į tai,
ji mano argumentą pateikiant nuorodą.
Taigi, nepriklausomai nuo to, ar norite, kad jis į jį nuorodą, ji imasi ją nuorodą.
Jis keičia vietoje masyvo.
Tai tik neleidžiama. Jums neleidžiama atlikti šį darbą. >> [Studentas] O, gerai.
[Bowden] Tai, rūšiuoti ketina imtis atskaitos linijas ir pakeisti jį.
Ir vėl, jei nenoriu, kad tai padaryti, jūs galėtų rūšiavimo kopiją.
Net ir šiuo atveju, kopijuoti nėra faktiškai linijų kopija.
Jis tiesiog nurodo į tą patį, kol jis pirmą kartą gauna keistas,
kur jis ketinate gauti pakeisti rūšiavimo funkciją,
, kai dėl jo kopija-su-rašyti, dabar kopija, ketina būti.
Jūs taip pat gali tai padaryti. Štai kita vieta, galite pamatyti ampersendo.
Jūs matote jį foreach kilpos, jūs matote jį pareigų deklaracijų,
ir pamatysite jį, kai tik priskiriant kintamuosius.
Dabar mes esame pasiekę daro tai nieko
nes kopija ir linijos yra tiesiog tas pats.
Jūs galite naudoti linijų ir kopijuoti pakaitomis.
Jūs galite padaryti išjungimo ($ kopiją) ir kad nėra neapibrėžtas linijų,
jūs tiesiog prarasti savo nuorodą į tą patį.
Taigi, šio punkto, dabar linijos yra vienintelis būdas galite pasiekti linijas.
>> Turite klausimų?
Taip.
[Studentas] visiškai ne į temą, bet jūs neturite uždaryti PHP - >> Jūs neturite.
Gerai.
[Bowden] aš norėčiau eiti taip toli, kad pasakyti, kad tai bloga praktika jas uždaryti.
Tai turbūt perdėta, ypač scenarijų,
bet pažiūrėkime, kas atsitiks, jei aš tai padaryti.
Kad nieko nedarė. Ką daryti, jei aš norėjau - [atsidūsta]
Turiu išlaikyti argumentą.
Šaudyti. Aš pašaukiau tai negerai.
Taigi php.unique.php su argumentais.
Dabar aš net nereikia.
Aš perduoti svariu argumentu.
Tai atspausdintas kokia ji spausdinimo.
Aš spausdinti kopiją ir kopija neegzistuoja. Taip linijas.
Jis atspausdintas viską, ir tada pastebėsite visą tą šiukšlių žemyn čia,
nes PHP nieko, kad yra ne PHP žymes
yra tik ketina tiesiog turi būti išspausdinti.
Štai kodėl HTML, tai taip malonu, kad aš galiu padaryti div blah, blah, blah klasę ar kas,
blah, blah, blah ir atlikite PHP kodą ir atlikite pabaigos div.
Ir dabar spausdinti, tai aš gausiu savo gražią div iki viršaus, viską, PHP, spausdinti, div apačioje.
Pražūtingas atsitinka, kai kažkas panašaus į tai, kuri yra gana dažni,
tiesiog benamių naują eilutę failo apačioje.
Jūs taip nemanau, tai būtų, kad spręsti didelis
iki manote, kad tai, kad su naršyklėmis -
>> Kaip nukreipimus darbą ar iš esmės bet koks antraštes darbas,
kai jums padaryti jūsų prisijungti į svetainę ir siunčia atgal visi šios antraštės ir dalykų
kaip atsakas 200 ar kovoti nukreipimų ar kokia,
antraštės galioja tik iki duomenų pirmasis baitas siunčiamas.
Galite peradresuoti tūkstančius kartų, bet kaip tik duomenų pirmasis baitas siunčiamas
nesate vėl turėtų nukreipti.
>> Jei turite benamių naujos eilutės failo apačioje
tarkim, kad jūs naudojate šią funkciją, ir tada jūs norite -
Tarkime, kad tai dar vienas failas, kuris yra index.php, ir jūs require_once kažką -
Aš negaliu galvoti geru.
Problema atsitinka, kai tai apačioje eilutė bus pakartotas.
Jūs nenorite nieko dar buvo atkartojamos.
Net jei jūs neketino nieko gauti atliepianti kažkas buvo gauti atkartojo
ir taip dabar jūs nesate turėtų siųsti daugiau antraštes
ir jūs ketinate gauti skundus.
Jums tiesiog nereikia tuos uždarymo žymes.
Jei planuojate daro kažką su HTML -
ir tai visiškai pagrįsta žemai čia div kokia
ir tada šiuo metu jums gali arba galite ne įtraukti juos.
Jis tikrai ne klausimas.
Bet PHP tai retai, jį uždaryti.
Kai viskas yra PHP, absoliučiai viskas,
jums nereikia tikrai reikia jį uždaryti / jums neturėtų uždaryti jį.
>> Darbas su Styga yra daug gražiau nei C.
PHP galite nurodyti eilutę su viengubų arba dvigubų kabučių.
Su viengubomis kabutėmis jūs negalite naudoti "Escape" sekas.
Nuolat pabėgti, blah, blah, blah.
Taigi printf yra labai reti PHP.
Manau, aš norėčiau naudoti printf, jei aš norėjau padaryti, kad dalykas rūšiuoti jums pset 5 sprintf ar kokia.
Bet jūs norite padaryti 001.jpg ir 002.JPG.
Taigi, kad dalykas rūšiuoti, kur aš tikrai norite formatuoti tekstą, aš norėčiau naudoti printf.
Bet kitaip aš tiesiog naudokite simbolių eilučių sujungimas.
Aš niekada iš tikrųjų naudoti printf.
Mes tiesiog diferencijuojant tarp viengubomis kabutėmis ir dvigubų kabučių.
Apostrofai, ji bus atspausdintas tiesiog didžiausias skirtumas yra.
Yra ne char tipo duomenų PHP, skirtingai nuo C, todėl tai atitinka.
Jie abu stygos.
Ir malonus dalykas, apie viengubas kabutes eilutės galėčiau pasakyti "hello world!" blah, blah, blah,
$ $ Wooo.
Kas atsitinka, kai aš spausdinti, tai jis bus atspausdinti ją pažodžiui.
Leiskite atsikratyti visų mūsų medžiagą.
Taigi echo $ str1;
Jis tiesiog atspausdintas iš tų dalykų, dolerio ženklai,
Backslash n, kurį jūs manote, kad būtų naujų eilučių -
visų tų dalykų jis spausdina pažodžiui.
Vienintelis dalykas, kurį reikia pabėgti apostrofai
nes kitaip būtų manau, kad tai uždarymo Viengubomis kabutėmis.
Dvigubas kabutes, visiškai skirtingi.
Mes jau sintaksės cluing mus į tai, kas eiti siaubingai negerai.
php.unique. Undefined variable: Wooo nes tai interpretuojama kaip kintamojo "Wooo.
Jums įterpti kintamuosius į kabutes -
Tarkime, kad $ name = "Rob";
Taigi echo "Sveiki, mano vardas yra $ vardas!";
Ji pripažįsta tai kaip kintamasis.
Kai aš paleisti, kad ir aš įterpti naują eilutę - Hi, my name is Rob! ir hello world!
Tai yra, nes aš niekada pašalinti Wooo spausdinti virš.
Yra 1 dar vienas žingsnis, kurį galite padaryti,.
$ Masyvas = [1, 2, 3];
Ką daryti, jei noriu spausdinkite pirmą masyvo indeksą?
Tai galite padaryti $ masyvas [0].
Sintaksės išryškinimas yra raktas. Kas tai yra ketinate daryti?
php.unique.
Sveiki, mano vardas yra 1! kuri yra ne tai, ką norėjau.
Sintaksės išryškinimas melavo man.
Pabandykime "" -> 1, "b" -> 2.
Štai kaip aš noriu, kad rašyti jį.
Netikėta viengubas kabutes (T_ENCAPSED blah, blah, blah, blah, blah).
Idėja yra ta, kad tai ne pripažinti tai kaip masyvo.
Ji manimi ne Pripažindama, kad tai masyvas indeksuojamas pagal raidę a.
Jūs norite padaryti, kad apsuptas Garbanotasis petnešos,
ir dabar, kokia yra šio garbanotas petnešomis bus interpoliuota
kuris yra žodis, kurį mes naudojame stebuklingai įterpti šiuos kintamuosius į tinkamose vietose.
Dabar daro tai, php.unique ir Sveiki, mano vardas yra 1! taip, kaip tikėtasi
arba Hi, my name is Rob!
Vienas dalykas, kad rūšies malonu apie viengubomis kabutėmis, kad -
Yra keletas išlaidos interpoliuojant.
Jei naudojate dvigubas kabutes, interpretatorius turi eiti per šią eilutę,
įsitikinkite, kad: "O, čia yra kintamasis. Dabar man reikia eiti gauti šį kintamąjį ir įdėkite jį čia."
Net jei jums nereikia naudoti bet kokiems kintamiesiems,
nieko viduje iš šių dvigubų kabučių reikia interpoliuoti
bet ji vis dar gali būti lėtesnis, nes ji turi eiti per dvigubų kabučių
ieško dalykų, kuriuos reikia interpoliuojami.
Taigi apostrofai gali būti šiek tiek greičiau, jei nieko nereikia interpoliuojami
ir aš paprastai naudoti net Viengubomis kabutėmis "Sveiki, mano vardas yra". $ Masyvas [''] vistiek.
Tai bus lygiavertis, ką turėjome anksčiau.
Bet tai skonio reikalas.
Jei naudojate PHP, jūs tikriausiai ne rūpi greičio skirtumas.
Nėra pakankamai argumentuoti juos pradėti.
>> Bet koks galutinis klausimų?
>> Mes iš tikrųjų nebuvo net gauti per visa tai, tačiau ši medžiaga buvo nuobodu.
Paskutinis dalykas, kad koks gražus PHP yra, kai jūs susiduriame su HTML,
jūs naudosite jį šiek tiek, todėl gražus nuorodų sintaksę spausdinti kintamąjį.
Nesukeliant PHP čia, tai vadinama trumpus žodžius.
Oficialiai PHP 5.4, tai yra pasenusios.
Jūs rekomenduojama įdėti php.
Tai vis dar palaiko, tiek trumpus žodžius su <? = Vis dar puikiai baudą.
Tai yra pagal nutylėjimą palaikomą, todėl jūs galite naudoti juos, kaip norite, ir jie yra labai patogu.
>> Turite klausimų?
Gerai.
>> Likti madingas, San Diego.
[Chuckles]
Bye. [Juokiasi]
[Plojimai] [juokiasi]
>> [CS50.TV]