1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [Seksyon 8 - Higit kumportableng] 2 00:00:02,610 --> 00:00:04,910 [Rob Bowden - Harvard University] 3 00:00:04,910 --> 00:00:07,070 [Ito ay CS50. - CS50.TV] 4 00:00:11,520 --> 00:00:14,160 >> Mga tala sa seksyon ng linggo ay medyo maikling, 5 00:00:14,160 --> 00:00:19,070 kaya lang ako pagpunta sa panatilihin ang pakikipag-usap, guys pagpunta sa patuloy na pagtatanong, 6 00:00:19,070 --> 00:00:22,720 at susubukan naming upang punan up ng mas maraming oras hangga't maaari. 7 00:00:22,720 --> 00:00:31,950 A maraming ng mga tao sa tingin na ang pset na ito ay hindi kinakailangang mahirap, ngunit ito ay masyadong mahaba. 8 00:00:31,950 --> 00:00:37,070 Ang pset spec mismo ay tumatagal ng oras upang basahin. 9 00:00:40,530 --> 00:00:45,730 Kami magbibigay sa iyo ng maraming ng SQL maaari mong posibleng kailangan mong gamitin. 10 00:00:45,730 --> 00:00:50,520 Lakad namin sa iyo sa pamamagitan ng maraming nito, kaya hindi ito dapat masyadong masamang. 11 00:00:50,520 --> 00:00:54,560 Nagsimula ay sinuman o tapos? 12 00:00:55,380 --> 00:00:59,710 Ang huling pset. Oh, aking Diyos. 13 00:00:59,710 --> 00:01:05,400 Karaniwan may JavaScript isa pagkatapos nito, ngunit ang mga bagay sa kalendaryo pagbabago 14 00:01:05,400 --> 00:01:09,560 gumagawa ng lahat ng 1 linggo mas maikli, at hindi na namin magkaroon ng JavaScript pset. 15 00:01:09,560 --> 00:01:12,310 Hindi ko alam kung paano na nakakaapekto kung ang JavaScript ay lilitaw sa pagsusulit 16 00:01:12,310 --> 00:01:15,510 o Pagsusulit 1. 17 00:01:15,510 --> 00:01:22,260 Isipin ko ito ay isang bagay tulad ng kailangan mong malaman ang mataas na antas na mga bagay tungkol sa JavaScript, 18 00:01:22,260 --> 00:01:26,460 ngunit pagdudahan kong nais lang namin magbibigay sa iyo ng tuwid na JavaScript code 19 00:01:26,460 --> 00:01:28,720 dahil hindi mo pa nagkaroon ng pset sa loob nito. 20 00:01:28,720 --> 00:01:33,000 Ngunit iyon ay mga bagay-bagay na para sa pagsusuri ng pagsusulit sa susunod na linggo. 21 00:01:33,000 --> 00:01:36,320 >> Seksyon ng mga tanong. 22 00:01:36,320 --> 00:01:43,870 Isang maraming mga bagay-bagay na ito ay medyo mahina worded, ngunit gagamitin namin talakayin kung bakit. 23 00:01:43,870 --> 00:01:50,220 Hindi tulad ng C, PHP ay isang "dynamic na-type na" wika. Ano ang ibig sabihin, mong tanungin? 24 00:01:50,220 --> 00:01:53,830 Well, halimbawa paalam sa lahat ng mga pansamantalang trabaho, Float, int, at iba pang mga keyword kailangan mong gumamit 25 00:01:53,830 --> 00:01:56,190 kapag deklarasyon ng variable at mga function sa C. 26 00:01:56,190 --> 00:02:00,420 Sa PHP, ang uri ng variable ay natutukoy sa pamamagitan ng halaga na kasalukuyan itong may hawak. 27 00:02:00,420 --> 00:02:04,990 Kaya bago namin i-type ang code na ito sa isang file na tinatawag dynamic.php, 28 00:02:04,990 --> 00:02:12,670 PHP ay dynamic na-type. Na ay totoo. 29 00:02:12,670 --> 00:02:17,590 Hindi sumasang-ayon ako sa ang katunayan na ito ay nangangahulugan na sinasabi namin paalam sa magpasinda, Float, int, 30 00:02:17,590 --> 00:02:20,620 at iba pang mga keyword. 31 00:02:20,620 --> 00:02:25,510 Ang eksaktong pagkakaiba sa pagitan ng dynamic na-type at ang alternatibong, 32 00:02:25,510 --> 00:02:32,010 na statically-type, na dynamic na-type, ang lahat ng iyong uri ng checking at bagay-bagay 33 00:02:32,010 --> 00:02:37,350 mangyayari sa oras ng run, samantalang statically-type ang mangyayari sa makatipon oras. 34 00:02:37,350 --> 00:02:43,030 Ang salitang static sa pangkalahatan ay tila ibig sabihin ang mga bagay makatipon oras. 35 00:02:43,030 --> 00:02:48,170 Hulaan ko may mga iba pang mga gamit para dito, ngunit sa C kapag idedeklara ka ng isang static na variable, 36 00:02:48,170 --> 00:02:52,650 ang imbakan nito ay inilalaan sa makatipon oras. 37 00:02:52,650 --> 00:02:59,260 Dito, dynamic na-type lamang ay nangangahulugan na - 38 00:02:59,260 --> 00:03:04,350 Sa C kung sinusubukan mong magdagdag ng isang string at isang integer, kapag makatipon mo ito, 39 00:03:04,350 --> 00:03:11,000 ito ay pagpunta sa magreklamo dahil ito upang sabihin na hindi ka maaaring magdagdag ng isang int at isang pointer. 40 00:03:11,000 --> 00:03:14,710 Lang hindi isang wastong pagpapatakbo. 41 00:03:14,710 --> 00:03:21,170 Ito ay isa pang bagay na namin sa isang segundo. 42 00:03:21,170 --> 00:03:24,860 Ngunit na uri ng checking, ang katunayan na ito complains sa ipunin ang oras, 43 00:03:24,860 --> 00:03:29,220 ay static uri checking. 44 00:03:29,220 --> 00:03:35,220 May mga wika na kung saan hindi mo na kailangang sabihin ng pansamantalang trabaho, Float, int, at ang lahat ng mga bagay, 45 00:03:35,220 --> 00:03:40,940 ngunit ang wika sabihin sa mula sa konteksto ng bagay na kung anong uri ito ay dapat na maging, 46 00:03:40,940 --> 00:03:43,980 ngunit pa rin ito statically-type. 47 00:03:43,980 --> 00:03:49,000 Kaya kung gagawin mo 51, OCaml, hindi mo na kailangang gamitin ang alinman sa mga uri ng, 48 00:03:49,000 --> 00:03:58,700 ngunit pa rin ito ay sa makatipon oras nating hindi mo maaaring gawin ito dahil ka paghahalo ng isang int at isang string. 49 00:03:58,700 --> 00:04:05,650 Dynamic na-type lamang nangangahulugan na minsan sa panahon magpatakbo ng oras ka upang makakuha ng isang reklamo. 50 00:04:05,650 --> 00:04:13,430 Kung ginamit mo rin ang Java bago, sa pangkalahatan, halos anumang C-type wika 51 00:04:13,430 --> 00:04:20,070 pagpunta sa statically-type, kaya ang C, C + +, Java, ang lahat ng mga pangkalahatang statically-type. 52 00:04:20,070 --> 00:04:22,910 Sa Java kapag makatipon ng isang bagay at sinasabi mo 53 00:04:22,910 --> 00:04:26,670 string mga katumbas ng bagong isang bagay na ay hindi isang string, 54 00:04:26,670 --> 00:04:28,950 na magreklamo dahil ang mga uri ay lamang hindi tumugma. 55 00:04:28,950 --> 00:04:31,180 Na pagpunta sa magreklamo sa makatipon oras. 56 00:04:31,180 --> 00:04:36,750 Ngunit ito din ay may ilang mga dynamic na bagay na gusto kung subukan mong pinalayas ng isang bagay 57 00:04:36,750 --> 00:04:40,500 sa isang uri na mas tiyak na kaysa sa kasalukuyang uri nito, 58 00:04:40,500 --> 00:04:45,610 may walang maaari itong gawin sa ipunin ang oras upang suriin kung ang cast na upang magtagumpay. 59 00:04:45,610 --> 00:04:51,130 Java ay mayroon ding ilang dynamic na uri ng pagsuri sa lalong madaling ito ay nakakakuha na linya ng code 60 00:04:51,130 --> 00:04:54,130 kapag aktwal na ito execute, ito ay pagpunta sa gawin ang cast, 61 00:04:54,130 --> 00:04:56,260 suriin kung ang cast na bisa sa unang lugar, 62 00:04:56,260 --> 00:04:59,890 at kung ito ay hindi, pagkatapos ito ay pagpunta sa magreklamo na mayroon kang isang hindi wastong uri. 63 00:04:59,890 --> 00:05:03,200 Dynamic uri ng check. 64 00:05:03,200 --> 00:05:07,010 Type ito sa isang file na tinatawag na dynamic.php. 65 00:05:10,130 --> 00:05:12,380 Dynamic.php. 66 00:05:14,580 --> 00:05:17,190 Unzip ko na-format. 67 00:05:18,750 --> 00:05:21,880 Mayroon kaming isang variable, namin itakda ito sa integer 7, 68 00:05:21,880 --> 00:05:27,930 pagkatapos kami ay upang i-print ito at ang% s - 69 00:05:27,930 --> 00:05:32,830 Oh, kami ay pag-print sa uri nito, kaya gettype upang ibalik ang uri ng variable. 70 00:05:32,830 --> 00:05:35,720 Lang kami pag-print ang uri nang paulit-ulit. 71 00:05:35,720 --> 00:05:39,440 Lang namin php.dynamic.php. 72 00:05:39,440 --> 00:05:45,920 Susubukan naming makita na pagbabago mula sa integer sa string sa Boolean bilang namin pumunta sa pamamagitan ng. 73 00:05:45,920 --> 00:05:54,590 Sa C ay walang Boolean uri ng data, ay walang uri ng mga data ng string. 74 00:05:54,590 --> 00:06:00,500 Mayroong pansamantalang trabaho * at Boolean lang may kaugaliang int o pansamantalang trabaho o isang bagay. 75 00:06:00,500 --> 00:06:05,690 Sa PHP ganitong mga uri umiiral, at na isa ng malaking kalamangan ng PHP sa C - 76 00:06:05,690 --> 00:06:13,290 na ang mga pagpapatakbo ng string ay walang hanggan mas madali sa PHP kaysa C. Sila lamang gumana. 77 00:06:13,290 --> 00:06:18,290 >> Kaya dumating namin pabalik dito. 78 00:06:18,290 --> 00:06:21,260 Namin tumakbo dynamic.php. 79 00:06:21,260 --> 00:06:26,710 Sinasabi nito sa PHP interpreter, na tinatawag na php, upang patakbuhin ang PHP code sa dynamic.php. 80 00:06:26,710 --> 00:06:30,250 Kung mayroon kang anumang mga error sa file, ang interpreter na ang magsasabi sa iyo! 81 00:06:30,250 --> 00:06:39,110 Interpreter, ito ay isa pang malaking pagkakaiba sa pagitan ng PHP at C. 82 00:06:39,110 --> 00:06:48,200 Sa C mayroon kang upang makatipon ng isang bagay at pagkatapos mo patakbuhin na inipon na file. 83 00:06:48,200 --> 00:06:50,490 Sa PHP hindi kailanman makatipon ng anumang. 84 00:06:50,490 --> 00:06:57,200 Kaya ang PHP interpreter talaga lang binabasa ang linyang ito sa pamamagitan ng linya. 85 00:06:57,200 --> 00:07:02,900 Hit sa var = 7 pagkatapos ito hit sa printf pagkatapos ay pinindot ng var pagkatapos ito hit sa printf at iba pa. 86 00:07:02,900 --> 00:07:10,910 May kaunting kino-compile ang ginagawa nito, at Caches ang mga resulta 87 00:07:10,910 --> 00:07:15,510 kaya kung nagpapatakbo ka ng script sa ibang pagkakataon, maaari mong gawin ang ilang mga, 88 00:07:15,510 --> 00:07:19,280 ngunit isa lamang ito isang linya sa pamamagitan ng linya ng uri ng bagay. 89 00:07:19,280 --> 00:07:25,280 Iyon ay nangangahulugan na ng maraming ng optimizations na makuha namin sa C, 90 00:07:25,280 --> 00:07:31,920 tulad ng kino-compile ang, lamang pangkalahatang tagatala ang maaaring gawin ng maraming ng mga trick para sa iyo. 91 00:07:31,920 --> 00:07:36,110 Maaari itong tumagal ang mga hindi nagamit na mga variable, maaari itong gawin ang lahat ng mga uri ng mga bagay, 92 00:07:36,110 --> 00:07:38,660 maaari itong gawin buntot recursion. 93 00:07:38,660 --> 00:07:42,550 Sa PHP hindi ka pagpunta upang makakuha ng na kalamangan 94 00:07:42,550 --> 00:07:45,690 dahil lamang ito upang simulan ang e-execute ng linya sa pamamagitan ng linya sa pamamagitan ng linya, 95 00:07:45,690 --> 00:07:49,950 at hindi ito talagang makilala ang mga bagay na ito bilang madali 96 00:07:49,950 --> 00:07:54,440 dahil ito ay hindi 1 malaking pass ng compilation sa ibabaw ng bagay at pagkatapos ay pagpapatupad; 97 00:07:54,440 --> 00:07:56,860 ito lamang linya sa pamamagitan ng linya. 98 00:08:00,730 --> 00:08:02,750 Kaya, na ang interpreter. 99 00:08:02,750 --> 00:08:06,840 >> Back sa aming dynamic pagta-type: medyo cool, eh? 100 00:08:06,840 --> 00:08:08,640 Mo talagang hindi maaaring gawin na sa C! 101 00:08:08,640 --> 00:08:11,860 Ngayon, tingnan kung maaari mong malaman kung ang uri ng bawat isa sa mga sumusunod na halaga. 102 00:08:11,860 --> 00:08:14,760 Tingnan ito para sa reference. 103 00:08:14,760 --> 00:08:19,420 Kaya 3.50. Anong uri tingin mo na magiging? 104 00:08:24,480 --> 00:08:26,370 Narito ang mga uri mayroon kami. 105 00:08:26,370 --> 00:08:30,430 Mayroon kaming mga bools, integer, lumulutang na puntos, string, array, mga bagay, 106 00:08:30,430 --> 00:08:38,370 at pagkatapos mapagkukunan, na uri ng malabo. 107 00:08:38,370 --> 00:08:41,010 Tingin ko may talagang isang halimbawa dito. 108 00:08:41,010 --> 00:08:43,740 Pagkatapos may null. Null ay isang espesyal na uri. 109 00:08:43,740 --> 00:08:47,140 Hindi tulad ng C kung saan null lamang ang pointer sa address 0, 110 00:08:47,140 --> 00:08:54,930 sa PHP, null sarili nitong uri kung saan ang tanging wastong bagay ng na uri null. 111 00:08:57,560 --> 00:09:00,670 Ito ay mas kapaki-pakinabang para sa error checking. 112 00:09:00,670 --> 00:09:04,310 Sa C kung saan namin ay ang isyu na ito kung saan kung bumalik ka null, 113 00:09:04,310 --> 00:09:08,660 ay na ibig sabihin bumabalik ka ng Null pointer o paggamit ng null upang magpahiwatig ng error 114 00:09:08,660 --> 00:09:12,380 o lahat ng na pagkalito nagkaroon kami sa isang punto. 115 00:09:12,380 --> 00:09:18,440 Dito, bumabalik null karaniwan ay nangangahulugan error. 116 00:09:20,860 --> 00:09:27,300 May maraming mga bagay ring ibalik maling para sa error. 117 00:09:27,300 --> 00:09:33,140 Ngunit point ang null uri, ang tanging bagay ng null uri null. 118 00:09:33,140 --> 00:09:40,090 Pagkatapos na callback ay tulad ng maaari mong tukuyin ang ilang mga anonymous na function. 119 00:09:40,090 --> 00:09:46,420 Hindi mo na kailangang magbigay ng pag-andar ng isang pangalan, ngunit hindi mo na kailangang humarap sa na dito. 120 00:09:46,420 --> 00:09:53,940 Pagtingin sa ang uri na sila inaasahan sa amin upang malaman, 121 00:09:53,940 --> 00:09:59,000 kung ano sa tingin mo ang uri ng 3.50 ay? >> [Mag-aaral] Float. 122 00:09:59,000 --> 00:10:00,370 Oo. 123 00:10:00,370 --> 00:10:06,290 Kaya pagkatapos dito, ano ang gagawin mo sa tingin ang uri ng ito ay? >> [Mag-aaral] Array. 124 00:10:06,290 --> 00:10:09,890 Oo. Ang unang Float, ang pangalawang isa ay isang array. 125 00:10:09,890 --> 00:10:14,500 Pansinin na ang array na ito ay hindi tulad ng isang array C 126 00:10:14,500 --> 00:10:19,610 kung saan mayroon kang ilang halaga ang index 0, index 1 ilang mga halaga. 127 00:10:19,610 --> 00:10:26,320 Narito ang mga indeks ng mga a, b, at c at ang mga halaga ay 1, 2, at 3. 128 00:10:26,320 --> 00:10:33,980 Sa PHP walang pagkakaiba sa pagitan ng isang nag-uugnay array at isang regular na array 129 00:10:33,980 --> 00:10:36,740 tulad ng iyong tingin nito sa C. 130 00:10:36,740 --> 00:10:43,040 Mayroon lamang ito, at sa ilalim ng hood isang regular na array ay lamang ng isang nag-uugnay array 131 00:10:43,040 --> 00:10:50,000 kung saan 0 mapa sa ilang mga halaga sa parehong paraan ng mga mapa sa ilang mga halaga. 132 00:10:50,000 --> 00:11:00,410 Para sa kadahilanang ito, ang PHP maaaring medyo masamang para sa talagang mabilis code / benchmarking bagay 133 00:11:00,410 --> 00:11:07,930 dahil sa C kapag gumagamit ka ng isang array na alam mo na ang pag-access sa isang miyembro ay pare-pareho ang oras. 134 00:11:07,930 --> 00:11:11,860 Sa PHP-access ang isang miyembro ay na alam kung magkano ang oras? 135 00:11:11,860 --> 00:11:18,970 Marahil ito ay pare-pareho kung hashes tama. 136 00:11:18,970 --> 00:11:21,620 Sino ang nakakaalam kung ano talaga ito ginagawa sa ilalim ng hood? 137 00:11:21,620 --> 00:11:25,600 Mo ba talagang kailangan upang tumingin sa pagpapatupad upang makita kung paano ito haharapin ang mga na. 138 00:11:25,600 --> 00:11:28,550 Kaya pagkatapos fopen. 139 00:11:28,550 --> 00:11:36,420 Tingin ko dito sabihin lang PHP manu-manong fopen upang tingnan ang uri ng return. 140 00:11:36,420 --> 00:11:41,260 Nakikita namin dito maaari kang tumingin hanggang sa medyo magkano ang anumang function sa PHP manu-manong 141 00:11:41,260 --> 00:11:47,540 at ito ay uri ng tao pahina ng PHP. 142 00:11:47,540 --> 00:11:51,060 Ang uri ng return ay na mapagkukunan. 143 00:11:51,060 --> 00:11:56,050 Iyon ay kung bakit Tiningnan ko ito, dahil hindi namin ay talagang tukuyin ang mapagkukunan. 144 00:11:56,050 --> 00:12:04,110 Ang ideya ng mapagkukunan, sa C Mayroon FILE * o anumang uri ng; 145 00:12:04,110 --> 00:12:07,200 sa PHP mapagkukunan ay ang iyong FILE *. 146 00:12:07,200 --> 00:12:10,360 Ito ay kung ano ang iyong pagpunta sa pagbasa mula sa, kung ano ang iyong pagpunta sa pagsulat sa. 147 00:12:10,360 --> 00:12:20,710 Karaniwang panlabas na, kaya ang ito ang mapagkukunan maaari mong hilahin ang mga bagay mula sa at magtapon ng mga bagay sa. 148 00:12:20,710 --> 00:12:26,520 At sa wakas, ano ang uri ng Null? >> [Mag-aaral] null. 149 00:12:26,520 --> 00:12:30,650 Oo. Kaya ang tanging bagay na null null. 150 00:12:30,650 --> 00:12:33,480 Null ay null. 151 00:12:35,490 --> 00:12:41,170 >> Isang tampok ng uri ng sistema ng PHP (para sa mas mahusay o para sa mas masahol pa) nito kakayahan upang salamangkahin ng mga uri. 152 00:12:41,170 --> 00:12:44,390 Kapag sumulat ka ng isang linya ng PHP code na pinagsasama halaga ng iba't-ibang uri, 153 00:12:44,390 --> 00:12:46,670 PHP ay subukan upang gawin ang mga makabuluhang bagay. 154 00:12:46,670 --> 00:12:48,920 Subukan ang bawat isa ng ang mga sumusunod na linya ng code na PHP. Ano-print? 155 00:12:48,920 --> 00:12:51,000 Ba ito kung ano ang iyong inaasahan? Bakit o bakit hindi? 156 00:12:51,000 --> 00:12:58,600 Ito katotohanan tungkol sa PHP kung bakit kung ano ang tinatawag naming mahina-type. 157 00:12:58,600 --> 00:13:04,610 Mahina-type at masidhi-type, 158 00:13:04,610 --> 00:13:06,840 may iba't ibang mga gamit para sa mga term na iyon, 159 00:13:06,840 --> 00:13:12,020 ngunit karamihan ng mga tao ay gumagamit ng mahina-type at masidhi-type nangangahulugan na ang ganitong uri ng bagay 160 00:13:12,020 --> 00:13:15,920 kung saan ("1" + 2); na gumagana. 161 00:13:15,920 --> 00:13:18,290 Sa C na hindi gagana. 162 00:13:18,290 --> 00:13:22,490 Maaari mong isipin na ito ay hindi gumagana. 163 00:13:22,490 --> 00:13:29,200 Isang maraming ng mga tao paghaluin dynamic na-type at mahina na mag-type at static na mag-type at malakas na mag-type. 164 00:13:29,200 --> 00:13:34,050 Python ay isa pang halimbawa ng isang wika na dynamic na-type. 165 00:13:34,050 --> 00:13:41,770 Maaari mong magtapon sa paligid ng mga uri sa mga variable at ito upang matukoy ang oras ng run 166 00:13:41,770 --> 00:13:44,680 anumang error checkings. 167 00:13:44,680 --> 00:13:50,740 Sa Python ito upang maisagawa ang mga ito at makikita nito ("1" + 2); 168 00:13:50,740 --> 00:13:55,920 at ito ay mabibigo dahil sinasabi nito na hindi ka maaaring magdagdag ng isang string at isang integer. 169 00:13:55,920 --> 00:14:00,860 Sa PHP, na lamang ang bilang dynamic na-type, hindi ito ay mabibigo. 170 00:14:00,860 --> 00:14:04,220 Mahinang pagta-type ay may sa gawin sa ang katunayan na bagay sa uri 171 00:14:04,220 --> 00:14:07,800 na hindi talaga kabuluhan ang kinakailangan. 172 00:14:07,800 --> 00:14:17,420 Kaya ("1" + 2), ang maaari kong isipin na ang string 12, ang maaari kong isipin ito ang string 3, 173 00:14:17,420 --> 00:14:20,710 Ang maaari kong isipin na ito bilang integer 3. 174 00:14:20,710 --> 00:14:24,530 Hindi ito kinakailangan na rin tinukoy, at marahil kami ay makikita dito 175 00:14:24,530 --> 00:14:29,140 na kapag-print namin ("1" + 2); marahil ito sa pagiging ibang 176 00:14:29,140 --> 00:14:32,320 kaysa sa pagpi-print (1 + "2"). 177 00:14:32,320 --> 00:14:39,700 At ito ay may kaugaliang, sa aking opinyon, para sa mas masahol pa. 178 00:14:39,700 --> 00:14:44,240 Dito maaari naming subukan ang mga. 179 00:14:44,240 --> 00:14:48,740 Isa pang maliit na nanlilinlang tungkol sa PHP ay hindi mo na kailangang aktwal na isulat ang file. 180 00:14:48,740 --> 00:14:52,790 Nito patakbuhin ang command na mode. 181 00:14:52,790 --> 00:14:57,710 Kaya php-r, pagkatapos ay maaari naming magtapon sa command dito: 182 00:14:57,710 --> 00:15:06,610 "Print ('1 '+ 2);" at makikita ko magtapon ng isang bagong linya. 183 00:15:19,550 --> 00:15:23,970 Na ito ay naka-print na 3. 184 00:15:31,100 --> 00:15:35,330 Mukhang ito ng mga Kopya 3 at ang integer 3. 185 00:15:35,330 --> 00:15:38,420 Kaya ngayon sabihin subukan ang iba pang mga paraan sa paligid: 186 00:15:38,420 --> 00:15:42,970 "Print (1 + '2 '); 187 00:15:45,560 --> 00:15:50,490 Makuha namin 3, at ito din integer 3? Ko matapat ay walang ideya. 188 00:15:50,490 --> 00:15:54,030 Mukhang tulad na pare-pareho. 189 00:15:54,030 --> 00:15:59,550 Walang anumang pagkakataon ng mga ito ang string 12 o anumang bagay tulad na 190 00:15:59,550 --> 00:16:08,080 dahil PHP, hindi katulad ng JavaScript at Java masyadong, 191 00:16:08,080 --> 00:16:11,670 may isang hiwalay na operator para sa pagdudugtong. 192 00:16:11,670 --> 00:16:14,930 Pagdudugtong sa PHP ay tuldok. 193 00:16:14,930 --> 00:16:22,950 Kaya sa pag-print (1 '2 '.); Ay upang bigyan kami ng 12. 194 00:16:25,790 --> 00:16:32,420 May gawi na humantong sa pagkalito kung saan ang mga tao ay subukan upang gawin ang isang bagay tulad ng STR + = 195 00:16:32,420 --> 00:16:37,840 ilang iba pang mga bagay na gusto nila upang idagdag sa sa dulo ng kanilang mga string, at na pagpunta sa mabibigo. 196 00:16:37,840 --> 00:16:40,770 Kailangan mong gawin STR. = 197 00:16:42,000 --> 00:16:46,240 Kaya huwag kalimutan pagdudugtong sa PHP ay isang tuldok. 198 00:16:46,240 --> 00:16:52,100 Iba pang mga bagay na susubukan: i-print ("CS" + 50); 199 00:16:55,750 --> 00:17:03,610 Sinabi ko na na walang pag-asa ng mga ito na nagreresulta sa CS50 200 00:17:03,610 --> 00:17:06,119 dahil ang pagdudugtong ay hindi +. 201 00:17:06,119 --> 00:17:08,440 Ano ang tingin mo ito ay pagpunta sa hanggang pagiging? 202 00:17:10,359 --> 00:17:13,460 Ko matapat may ganap na walang ideya. 203 00:17:14,250 --> 00:17:16,460 Mukhang ito ay may 50. 204 00:17:16,460 --> 00:17:21,490 Nakikita ang string, at pumusta ako kung inilalagay namin 123CS - 205 00:17:21,490 --> 00:17:29,640 Nakikita ang unang string, sinusubukan upang basahin ang isang integer mula sa ito o isang numero mula dito. 206 00:17:29,640 --> 00:17:31,710 Sa kasong ito nakikita 123CS. 207 00:17:31,710 --> 00:17:35,190 "Iyon ay hindi magkaroon ng kahulugan bilang isang integer, kaya lang ako pagpunta sa tingin ng 123." 208 00:17:35,190 --> 00:17:38,580 Kaya 123 + 50 ay magiging 173. 209 00:17:38,580 --> 00:17:40,740 At dito ito nagsisimula pagbabasa ito bilang isang integer. 210 00:17:40,740 --> 00:17:45,690 Ito ay hindi makita ang anumang bagay, kaya itinuturing ito bilang 0. Kaya 0 + 50 ay magiging 50. 211 00:17:45,690 --> 00:17:51,600 Ito ako ipagpalagay ay pagpunta sa gawin ang isang bagay na katulad. 212 00:17:51,600 --> 00:17:54,310 Ako iniisip 99. 213 00:17:54,310 --> 00:17:57,580 Oo, dahil ito ay upang gawin ang unang - 214 00:18:12,880 --> 00:18:15,730 Kaya 99. 215 00:18:15,730 --> 00:18:21,970 Narito (10/7), kung ito ay C, kung ano ang na nagbabalik? 216 00:18:23,700 --> 00:18:29,630 [Mag-aaral] 1. >> Oo, ito ay 1 dahil ang 10/7 paghahati 2 integer. 217 00:18:29,630 --> 00:18:32,910 Isang integer na hinati sa pamamagitan ng isang integer ay pagpunta upang bumalik ang isang integer. 218 00:18:32,910 --> 00:18:37,750 Hindi na ito maaaring ibalik 1 anumang punto na magiging, kaya lamang ito upang bumalik 1. 219 00:18:37,750 --> 00:18:46,120 Dito pag-print (10/7); ito upang bigyang-kahulugan ang aktwal na. 220 00:18:46,120 --> 00:18:53,760 At ito ay nangangahulugan na kung aktwal mong gustong gawin integer rounding at bagay-bagay tulad na, 221 00:18:53,760 --> 00:18:59,950 kailangan mong gawin ang naka-print (palapag (10/7)); 222 00:18:59,950 --> 00:19:08,460 Sa C marahil ito ay kakaiba na maaari mong umasa sa integer truncation regular, 223 00:19:08,460 --> 00:19:12,260 ngunit sa PHP hindi ka maaaring dahil awtomatikong ito i-on ito sa isang Float. 224 00:19:13,430 --> 00:19:17,610 At pagkatapos (7 + totoo); ano ang gagawin sa tingin mo na magiging? 225 00:19:18,550 --> 00:19:23,640 Ako paghula 8 kung ito ay i-interpret ang tunay na bilang 1. 226 00:19:23,640 --> 00:19:25,740 Mukhang ito ang 8. 227 00:19:25,740 --> 00:19:31,710 >> Kaya anumang tapos kami na sa nakalipas na 10 minuto na dapat mong ganap na hindi kailanman gawin. 228 00:19:31,710 --> 00:19:39,870 Makikita mo ang code na ito. 229 00:19:39,870 --> 00:19:42,700 Hindi ito bilang direkta bilang na ito. 230 00:19:42,700 --> 00:19:47,240 Maaari kang magkaroon ng 2 variable, at 1 variable mangyayari sa isang string 231 00:19:47,240 --> 00:19:51,310 at ang iba pang mga variable mangyayari sa isang int, at pagkatapos mong idagdag ang mga variable na ito nang sama-sama. 232 00:19:51,310 --> 00:20:00,120 Dahil ang PHP ay dynamic na-type at hindi ito gawin ang anumang uri checking para sa iyo 233 00:20:00,120 --> 00:20:03,640 at dahil mahina ito ang nai-type at dahil lang ito awtomatikong magtapon mga bagay na ito nang sama-sama 234 00:20:03,640 --> 00:20:11,490 at ang lahat ay lamang gumana, mahirap na kahit alam na ang variable na ito ay dapat na isang string ngayon, 235 00:20:11,490 --> 00:20:14,930 kaya hindi ko dapat idagdag ito sa variable na ito, na kung saan ay isang integer. 236 00:20:18,780 --> 00:20:24,560 Pinakamahusay na kasanayan ay kung ang isang variable ay isang string, panatilihin ito bilang isang string magpakailanman. 237 00:20:24,560 --> 00:20:26,980 Kung ang isang variable ay isang int, panatilihin ito bilang isang int magpakailanman. 238 00:20:26,980 --> 00:20:30,770 Kung nais mong upang harapin na may integer at string, 239 00:20:30,770 --> 00:20:36,970 maaari mong gamitin ang varsint - na sa JavaScript. 240 00:20:36,970 --> 00:20:42,520 Intval. Gagawin ko ito sa lahat ng oras. PHP at JavaScript ko bang isama ang lahat. 241 00:20:42,520 --> 00:20:47,600 Kaya intval ay pagpunta upang ibalik ang integer value ng isang variable. 242 00:20:47,600 --> 00:20:56,550 Kung pumasa kami sa "print (intval ('123 ')); makakakuha ka ng 123. 243 00:21:06,820 --> 00:21:15,850 Intval mismo ay hindi pagpunta sa gawin ang check para sa amin na eksklusibo isang integer. 244 00:21:15,850 --> 00:21:20,460 Ang PHP manual, may mga lamang kaya maraming mga function na magagamit, 245 00:21:20,460 --> 00:21:26,560 kaya dito sa tingin ko kung ano ang gusto kong gamitin ay is_numeric unang. 246 00:21:26,560 --> 00:21:32,590 Ako paghula na ibinalik maling. 247 00:21:32,590 --> 00:21:35,780 Iyon ay isa pang bagay na kailangan namin upang pumunta sa paglipas ay ===. 248 00:21:37,850 --> 00:21:44,020 Kaya is_numeric ('123df '), hindi mo isip ng na bilang is_numeric. 249 00:21:44,020 --> 00:21:46,720 Sa C gusto mong upang umulit sa lahat ng mga character 250 00:21:46,720 --> 00:21:50,410 at suriin upang makita kung ang bawat character na digit o anumang. 251 00:21:50,410 --> 00:21:53,850 Narito is_numeric ay upang gawin iyon para sa amin, 252 00:21:53,850 --> 00:21:56,520 at bumabalik maling. 253 00:21:56,520 --> 00:22:02,120 Kaya kapag-print ko na, naka-print na walang, kaya dito ako paghahambing nito upang makita, 254 00:22:02,120 --> 00:22:05,490 mo mangyayari sa maling? At kaya ngayon pag-print 1. 255 00:22:05,490 --> 00:22:10,060 Tila ito ng mga Kopya 1 bilang totoo sa halip ng pag-print ng tunay na bilang totoo. 256 00:22:10,060 --> 00:22:15,790 Siguro kung gawin ko print_r. Hindi, pa rin ito 1. 257 00:22:15,790 --> 00:22:26,760 >> Pagpunta pabalik sa ===, == umiiral pa rin, 258 00:22:26,760 --> 00:22:32,260 at kung makipag-usap ka sa Tommy makikita siya sabihin == perpektong fine. 259 00:22:32,260 --> 00:22:37,700 Ako sabihin na == ay kahila-hilakbot at hindi mo dapat gamitin ang ==. 260 00:22:37,700 --> 00:22:44,870 Pagkakaiba ay na == ikinukumpara bagay 261 00:22:44,870 --> 00:22:48,450 kung saan maaari ito ay totoo kahit na hindi sila ang parehong uri, 262 00:22:48,450 --> 00:22:53,810 samantalang === Inihahambing ng mga bagay at una itong tseke ang mga ito ay ang parehong uri? 263 00:22:53,810 --> 00:22:58,010 Oo. Okay, ngayon ako pagpunta upang makita kung sila aktwal na ihambing magiging katumbas. 264 00:22:58,010 --> 00:23:08,890 Kang makakuha ng kakaiba na mga bagay tulad ng 10 katumbas - hayaan ang makita kung ano na nagsasabing. 265 00:23:08,890 --> 00:23:15,570 Kaya ('10 '== '1 e1'); 266 00:23:15,570 --> 00:23:17,980 Ito nagbabalik totoo. 267 00:23:17,980 --> 00:23:21,420 Ba ang sinuman anumang mga guesses kung bakit ito ay nagbabalik ng tunay? 268 00:23:25,180 --> 00:23:27,120 Ito ay hindi lamang tungkol sa. Siguro, ito ay isang pahiwatig. 269 00:23:27,120 --> 00:23:33,170 Ngunit kung baguhin ko na sa isang f - darn ito! Panatilihing ako gumagamit ng mga double quote. 270 00:23:33,170 --> 00:23:38,780 Ang dahilan na ang mga double quote ay sumisigaw sa akin dahil ko na ilagay ito sa double quote. 271 00:23:38,780 --> 00:23:43,850 Kaya ko maaaring makatakas ang mga double quote in dito, ngunit solong quote gawing mas madali. 272 00:23:43,850 --> 00:23:49,120 Kaya ('10 '== '1 F1'); ay hindi-print ng tunay. ('10 '== '1 E1'); mga Kopya totoo. 273 00:23:49,120 --> 00:23:56,330 [Mag-aaral] ito hex? >> Ito ay hindi hex, ngunit malapit na ito ay tulad ng - 274 00:23:56,330 --> 00:24:01,060 1e1, pagtatandang siyentipiko. 275 00:24:01,060 --> 00:24:07,950 Kinikilala 1e1 bilang 1 * 10 ^ 1 o anumang. 276 00:24:07,950 --> 00:24:11,510 Iyon ang katumbas integer. 277 00:24:11,510 --> 00:24:15,930 Kung gagawin namin === ito pagpunta sa maling. 278 00:24:15,930 --> 00:24:28,490 Aktwal na ako ay walang ideya kung gagawin namin == kung ano ang tungkol sa (10 at '10abc ');? Ayos lang. Sa gayon ay totoo. 279 00:24:28,490 --> 00:24:35,940 Kaya tulad kapag ginawa mo (10 + '10abc '), at ito ay 20, 280 00:24:35,940 --> 00:24:38,800 dito (10 == '10abc '); ay totoo. 281 00:24:38,800 --> 00:24:45,350 Kahit na mas masahol pa ang mga bagay tulad ng (maling == null); ay totoo 282 00:24:45,350 --> 00:24:52,210 o (maling == 0), ay totoo, (maling == []); 283 00:24:52,210 --> 00:25:00,970 May kakaiba kaso ng - Iyon ay isa ng mga kakaiba mga kaso. 284 00:25:00,970 --> 00:25:08,110 Pansinin na (maling == []); ay totoo. 285 00:25:08,110 --> 00:25:11,950 ('0 '== False); ay totoo. 286 00:25:11,950 --> 00:25:16,090 ('0 '== []); False. 287 00:25:16,090 --> 00:25:19,090 Kaya == ay sa walang paraan palipat. 288 00:25:19,090 --> 00:25:26,830 maaaring maging katumbas sa b at maaaring maging katumbas ng c, 289 00:25:26,830 --> 00:25:29,340 ngunit b hindi maaaring maging katumbas ng c. 290 00:25:29,340 --> 00:25:35,580 Na ang isang pagkasuklam sa akin, at dapat mong laging gamitin ===. 291 00:25:35,580 --> 00:25:38,590 [Mag-aaral] Maaari ba kaming gawin! == Pati na rin? >> [Bowden] Oo. 292 00:25:38,590 --> 00:25:44,600 Katumbas ay! = At! ==. 293 00:25:44,600 --> 00:25:48,230 Ito ay aktwal na nagdala sa pset spec 294 00:25:48,230 --> 00:25:52,000 kung saan maraming mga function ng return - 295 00:25:52,000 --> 00:25:53,890 Ang PHP manu-manong ay magandang tungkol dito. 296 00:25:53,890 --> 00:25:59,140 Inilalagay ng sa isang malaking pulang kahon, "Ito ay bumalik false kung may isang error." 297 00:25:59,140 --> 00:26:03,940 Ngunit bumabalik 0 ay isang perpektong makatwirang bagay upang bumalik. 298 00:26:03,940 --> 00:26:08,250 -Isip tungkol sa anumang mga function na kung saan ay inaasahan upang bumalik ang isang integer. 299 00:26:11,250 --> 00:26:17,880 Sabihin nating function na ito ay dapat bilangin ang bilang ng mga linya sa isang file o isang bagay. 300 00:26:17,880 --> 00:26:23,490 Sa ilalim ng normal na pangyayari, ipasa mo ito function na ang isang file 301 00:26:23,490 --> 00:26:27,120 at ito upang bumalik ng isang integer na kumakatawan sa bilang ng mga linya. 302 00:26:27,120 --> 00:26:30,820 Kaya 0 ay isang perpektong makatwirang bilang kung ang file ay walang laman. 303 00:26:30,820 --> 00:26:36,810 Ngunit ano kung pumasa ka at pag-andar ng isang hindi wastong file ang mangyayari sa bumalik maling 304 00:26:36,810 --> 00:26:38,860 kung kayo na ipasa ang mga ito ng isang hindi wastong file? 305 00:26:38,860 --> 00:26:46,500 Kung kamakailan mo lamang gawin == hindi ka differentiating ang kaso sa pagitan ng hindi wastong file at ng file na walang laman. 306 00:26:48,870 --> 00:26:51,350 Palaging gamitin ang ===. 307 00:26:55,690 --> 00:26:58,000 Na ang lahat ng mga. 308 00:26:58,000 --> 00:27:01,660 >> Sa PHP, ang uri ng array ay naiiba mula sa kung ano ang nakasanayan sa C. 309 00:27:01,660 --> 00:27:06,650 Sa katunayan, maaari mo napansin nito sa itaas kapag nakita mo na ito ng uri ng array. 310 00:27:06,650 --> 00:27:15,640 Ang syntax ng bracket ay bago ng PHP 5.4, na kung saan ay ang pinakabagong bersyon ng PHP. 311 00:27:15,640 --> 00:27:36,960 Bago ito palagi kang nagkaroon na magsulat array ('isang' -> 1, 'b' -> 2. 312 00:27:36,960 --> 00:27:41,160 Na ang constructor para sa isang array. 313 00:27:41,160 --> 00:27:45,950 Ngayon PHP ay sa wakas ay sa paligid sa magaling na syntax ng kuwadradong mga bracket, 314 00:27:45,950 --> 00:27:50,900 na lamang kaya mas mas mahusay kaysa sa array. 315 00:27:50,900 --> 00:27:54,480 Ngunit isinasaalang-alang ng PHP 5.4 ay ang pinakabagong bersyon, 316 00:27:54,480 --> 00:27:59,090 maaari kang makakita ng mga lugar na hindi kahit PHP 5.3. 317 00:27:59,090 --> 00:28:08,220 Sa ibabaw ng tag-araw namin tumakbo sa ang isyu na ito kung saan PHP 5.3 ay kung ano ang namin sa appliance, 318 00:28:08,220 --> 00:28:14,480 ngunit ang server namin deploy ang lahat ng aming grado libro at isumite at ang lahat na mga bagay-bagay sa 319 00:28:14,480 --> 00:28:16,750 ay PHP 5.4. 320 00:28:16,750 --> 00:28:23,060 Hindi alam ito, binuo namin sa 5.3, hunhon sa 5.4, 321 00:28:23,060 --> 00:28:25,660 at ngayon lahat ng isang biglaang na wala sa aming code ay gumagana 322 00:28:25,660 --> 00:28:28,680 dahil mayroong nangyari sa mga pagbabago sa pagitan ng 5.3 at 5.4 323 00:28:28,680 --> 00:28:31,030 na hindi paurong katugmang, 324 00:28:31,030 --> 00:28:35,770 at mayroon kaming upang pumunta at ayusin ang lahat ng aming mga bagay na hindi gumagana para sa PHP 5.4. 325 00:28:39,210 --> 00:28:42,320 Para sa klase na ito, dahil ang ginagawa ng appliance may PHP 5.4, 326 00:28:42,320 --> 00:28:45,490 perpektong pinong upang gamitin ang mga square bracket. 327 00:28:47,240 --> 00:28:50,440 Ngunit kung ikaw ay naghahanap ng mga bagay sa paligid sa Internet, 328 00:28:50,440 --> 00:28:54,880 kung naghahanap ka ng ilang mga uri ng bagay-bagay sa array, malamang ka upang makita 329 00:28:54,880 --> 00:29:02,020 spell out array constructor syntax dahil na ay sa paligid dahil PHP ay ipinanganak 330 00:29:02,020 --> 00:29:07,340 at square bracket syntax ay sa paligid para sa nakalipas na ilang buwan 331 00:29:07,340 --> 00:29:10,020 o tuwing 5.4 dumating sa paligid. 332 00:29:10,020 --> 00:29:12,710 Ito ay kung paano mo index. 333 00:29:12,710 --> 00:29:30,610 Tulad sa C kung paano gagawin mo index sa pamamagitan ng mga square bracket tulad ng $ array [0], $ array [1], $ array [2], 334 00:29:30,610 --> 00:29:36,320 ka-index sa parehong paraan kung mangyari mo ang iyong mga indeks ng pagiging string. 335 00:29:36,320 --> 00:29:40,440 Kaya $ array ['isang'] at $ array ['b']. 336 00:29:40,440 --> 00:29:47,410 $ Array [b]. Bakit ito mali? 337 00:29:52,490 --> 00:29:59,870 Ito ay malamang na bumuo ng isang babala ngunit gagana pa rin. PHP may kaugaliang upang gawin iyon. 338 00:29:59,870 --> 00:30:04,890 Ito ay may kaugaliang lang, "Pupunta ako upang balaan ka tungkol dito, ngunit lamang ako pagpunta sa panatilihin ang pagpunta 339 00:30:04,890 --> 00:30:07,550 "At gawin ang anumang maaari ko." 340 00:30:07,550 --> 00:30:11,500 Ito ay malamang na isalin ang ito sa isang string, 341 00:30:11,500 --> 00:30:15,000 ngunit ito ay posible na sa ilang mga punto sa nakalipas na may sinabi 342 00:30:15,000 --> 00:30:20,180 tukuyin ang b 'Hello World'. 343 00:30:20,180 --> 00:30:28,740 Kaya ngayon b maaaring maging pare-pareho at $ array [b] ang talagang ginagawa 'Hello World'. 344 00:30:28,740 --> 00:30:32,380 Tingin ko sa puntong ito, o hindi bababa sa aming PHP setting ng, 345 00:30:32,380 --> 00:30:37,870 kung susubukan mo na i-index sa isang array at key na hindi umiiral, ito ay mabibigo. 346 00:30:37,870 --> 00:30:40,150 Palagay ko ay hindi ito lamang balaan ka. 347 00:30:40,150 --> 00:30:44,560 O hindi bababa sa maaari mong itakda ito upang hindi ito ay balaan ka lang, ito ay dumaretso nabigo. 348 00:30:44,560 --> 00:30:49,290 >> Ang paraan na suriin upang makita kung mayroong aktwal tulad index ng isset. 349 00:30:49,290 --> 00:30:54,690 Kaya isset ($ array ['Hello World']) ay bumalik false. 350 00:30:54,690 --> 00:30:59,160 isset ($ array ['b']) ay nagbabalik ng tunay. 351 00:31:06,830 --> 00:31:09,880 Maaari mong ihalo ang mga mga syntaxes na ito. 352 00:31:15,060 --> 00:31:22,440 Ako ay medyo sigurado kung ano ang array na ito ay humantong sa pagiging - maaari naming subukan ito. 353 00:31:43,290 --> 00:31:45,700 Oh, kailangan ko PHPWord. 354 00:31:53,960 --> 00:32:00,260 Ito ay paghahalo ang syntax kung saan mo tukuyin kung ano ang susi ay 355 00:32:00,260 --> 00:32:03,330 at hindi mo tukuyin kung ano ang susi ay. 356 00:32:03,330 --> 00:32:05,520 Kaya 3 dito mismo ay isang halaga. 357 00:32:05,520 --> 00:32:08,080 Hindi mo na tahasang sinabi kung ano ang key nito ay magiging. 358 00:32:08,080 --> 00:32:11,670 Ano sa tingin ninyo ang susi nito ay magiging? 359 00:32:11,670 --> 00:32:21,410 [Mag-aaral] 0. >> Ako paghula 0 lamang dahil ito ay ang unang isa na hindi namin tinukoy. 360 00:32:21,410 --> 00:32:23,500 Maaari naming aktwal na gumawa ng ilang mga kaso. 361 00:32:23,500 --> 00:32:28,030 Kaya print_r-print recursive. Ito ay i-print ang buong array. 362 00:32:28,030 --> 00:32:32,700 Ito i-print ang mga subarrays ng array kung mayroong anumang. 363 00:32:32,700 --> 00:32:36,630 Kaya print_r ($ array); php.test.php. 364 00:32:36,630 --> 00:32:38,810 Ito hitsura ito ibinigay ito 0. 365 00:32:38,810 --> 00:32:43,530 Mayroon talagang isang bagay na dapat tandaan dito, ngunit babalikan ka namin sa ito sa isang pangalawang. 366 00:32:43,530 --> 00:32:45,850 Ngunit ano kung mangyari ko sa index na ito 1? 367 00:32:45,850 --> 00:32:51,170 PHP ay hindi pagkakaiba sa pagitan ng mga indeks ng string at integer mga indeks, 368 00:32:51,170 --> 00:33:00,280 kaya sa puntong ito ko na tinukoy ng index 1 at ang maaari kong gawin ang parehong $ array [1] at $ array ['1 '] 369 00:33:00,280 --> 00:33:06,250 at ito ay ang parehong index at ang parehong key. 370 00:33:06,250 --> 00:33:13,000 Kaya ngayon kung ano ang sa tingin mo 3 ay magiging? >> [Mag-aaral] 2. >> [Bowden] ako paghula 2. 371 00:33:16,000 --> 00:33:18,690 Oo. Ito ay 2. 372 00:33:18,690 --> 00:33:24,790 Paano kung ginawa namin ito ay 10, ito ay 4? Ano ang tingin mo sa index ng 3 ay magiging? 373 00:33:27,360 --> 00:33:29,110 Ako iniisip 11. 374 00:33:29,110 --> 00:33:33,060 Aking hula sa kung ano ang PHP ginagawa - at sa tingin ko Nakita ko na ito bago - 375 00:33:33,060 --> 00:33:39,760 ito lamang Sinusubaybayan ng kung ano ang pinakamataas na numeric index ginagamit ito sa ngayon. 376 00:33:39,760 --> 00:33:44,230 Hindi ito upang magtalaga ng isang string index sa 3. Ito ay palaging isang numeric index. 377 00:33:44,230 --> 00:33:47,690 Kaya Sinusubaybayan ng pinakamataas na ito ay nakatalaga sa ngayon, na ang mangyayari sa 10, 378 00:33:47,690 --> 00:33:52,540 at upang magbigay ng 11-3. 379 00:33:52,540 --> 00:34:02,110 Ano ang sinabi ko bago, mapansin ang paraan na ito ay pag-print ito array. 380 00:34:02,110 --> 00:34:06,850 Mga Kopya key 10, key 4, key 11, key d. 381 00:34:06,850 --> 00:34:09,790 O kahit sabihin gawin - 382 00:34:15,760 --> 00:34:22,489 Hulaan ko Hindi ko maglagay ng 0, ngunit ito sa pagpi-print ng 1, 2, 3, 4. 383 00:34:22,489 --> 00:34:29,330 Ano kung lumipat ako dito? O hayaan ang aktwal na ilipat ang mga 2. 384 00:34:29,330 --> 00:34:31,940 Ngayon mga Kopya 2, 1, 3, 4. 385 00:34:31,940 --> 00:34:41,270 PHP ng array ay hindi tulad ng iyong regular na hash talahanayan. 386 00:34:41,270 --> 00:34:45,570 Perpektong makatwirang mag-isip ng mga ito bilang hash na mga talahanayan 99% ng oras. 387 00:34:45,570 --> 00:34:53,790 Ngunit sa iyong hash na mga talahanayan walang pakiramdam ng pagkakasunud-sunod kung saan ang mga bagay ay ipinasok. 388 00:34:53,790 --> 00:34:56,639 Ito sa lalong madaling mong ipasok ang mga ito sa iyong hash talahanayan, 389 00:34:56,639 --> 00:35:00,590 ipinapalagay walang naka-link na listahan at maaari mong hatulan sa loob ng isang naka-link na listahan 390 00:35:00,590 --> 00:35:03,980 na ipinasok sa unang. 391 00:35:03,980 --> 00:35:10,060 Ngunit dito namin ipinasok 2 una at alam ito kapag ito ay pag-print ang array na ito na 2 ang mauna. 392 00:35:10,060 --> 00:35:13,090 Hindi ito i-print ito sa anumang pagkakasunud-sunod lamang. 393 00:35:13,090 --> 00:35:17,550 Ang teknikal na istraktura ng data na ito gamit ang isang order na mapa, 394 00:35:17,550 --> 00:35:24,690 kaya Maps susi sa mga halaga at Naaalala ito ang pagkakasunud-sunod kung saan ang mga susi ay ipinasok. 395 00:35:24,690 --> 00:35:31,600 Isa lamang ito sa ilang mga komplikasyon na kung saan ito nakakainis upang aktwal na - 396 00:35:31,600 --> 00:35:34,510 Sabihin nating mayroon kang isang array 0, 1, 2, 3, 4, 5 397 00:35:34,510 --> 00:35:37,700 at nais mong kumuha ng index 2. 398 00:35:37,700 --> 00:35:47,750 Isang paraan ng paggawa nito, sabihin makita kung ano na kamukha. 399 00:35:47,750 --> 00:35:50,410 0, 2, 1, 3, 4. 400 00:35:50,410 --> 00:35:54,880 I-unset ang mangyayari sa I-unset ang parehong mga variable at mga indeks ng array. 401 00:35:54,880 --> 00:35:58,630 Kaya I-unset ($ array [2]); 402 00:35:58,630 --> 00:36:03,430 Ngayon kung ano ang ito upang magmukhang? 2 ay nawala, kaya na perpektong fine. 403 00:36:03,430 --> 00:36:11,670 Higit pang nakakainis ay kung gusto mong mga bagay na tunay na tulad ng isang array. 404 00:36:11,670 --> 00:36:14,910 Ko bang ilagay ang mga random na numero. 405 00:36:14,910 --> 00:36:20,400 Ngayon mapansin ang aking mga indeks ng. 406 00:36:20,400 --> 00:36:26,860 Gusto ko lang ito sa tulad ng isang array C kung saan ito napupunta mula 0 sa haba - 1 407 00:36:26,860 --> 00:36:30,810 at maaari ba akong umulit sa paglipas ng mga ito bilang tulad. 408 00:36:30,810 --> 00:36:38,520 Ngunit sa lalong madaling I-unset ang ko ang pangalawang index, kung ano ang sa index 3 ay hindi na ngayon maging index 2. 409 00:36:38,520 --> 00:36:44,790 Sa halip lang ito aalis na index at ngayon pumunta ka ng 0, 1, 3, 4. 410 00:36:44,790 --> 00:36:48,740 Ito perpektong makatwirang. 411 00:36:48,740 --> 00:36:53,950 Lang nakakainis at mayroon kang gawin ang mga bagay tulad ng array maghugpong. Oo. 412 00:36:53,950 --> 00:36:57,200 >> [Mag-aaral] Ano ang mangyayari kung mayroon kang isang para sa loop 413 00:36:57,200 --> 00:36:59,630 at nais upang pumunta higit sa lahat ang mga elemento? 414 00:36:59,630 --> 00:37:02,290 Kapag ito pindutin 2, magbunga kailanman? 415 00:37:02,290 --> 00:37:10,150 Iterating sa paglipas ng isang array. Mayroong 2 mga paraan na maaari mong gawin ito. 416 00:37:10,150 --> 00:37:12,770 Maaari mong gamitin ang isang regular para sa loop. 417 00:37:12,770 --> 00:37:22,000 Ito ay isa pang kaguluhan ng PHP. 418 00:37:22,000 --> 00:37:27,420 Karamihan ng mga wika, nais kong sabihin, may ilang uri ng haba o Len o isang bagay 419 00:37:27,420 --> 00:37:30,470 nagpapahiwatig ang haba ng array. 420 00:37:30,470 --> 00:37:32,820 Sa PHP count. 421 00:37:32,820 --> 00:37:36,160 Kaya count ($ array); $ i + +) 422 00:37:36,160 --> 00:37:42,950 Sabihin lamang ang naka-print ($ array [$ i]); 423 00:37:45,920 --> 00:37:48,820 Notice: Hindi natukoy offset: 2. 424 00:37:48,820 --> 00:37:51,610 Lamang ito ng pagpunta sa mabibigo. 425 00:37:51,610 --> 00:38:03,020 Ito ay ang dahilan na, para sa pinaka-bahagi, hindi mo na kailangang upang umulit sa isang array tulad nito. 426 00:38:03,020 --> 00:38:07,110 Maaari itong maging isang pagmamalabis, ngunit hindi mo na kailangang upang umulit sa isang array tulad nito 427 00:38:07,110 --> 00:38:19,410 dahil nagbibigay ng PHP nito foreach syntax kung saan foreach ($ array bilang $ item). 428 00:38:19,410 --> 00:38:31,830 Ngayon namin kung-print ($ item); - we'll talakayin ito sa isang segundo - na gumagana perpektong fine. 429 00:38:31,830 --> 00:38:38,960 Ang paraan na foreach gumagana ang unang argumento ay ang array ka iterating sa paglipas. 430 00:38:38,960 --> 00:38:44,060 At ang pangalawang argumento, ang item, sa pamamagitan ng bawat pass ng para sa loop 431 00:38:44,060 --> 00:38:52,690 ito ay pagpunta sa sa susunod na bagay sa array. Kaya tandaan array ay isang pagkakasunod-sunod. 432 00:38:52,690 --> 00:38:55,690 Sa unang pagkakataon sa pamamagitan ng para sa loop, ang item ay magiging 123 433 00:38:55,690 --> 00:38:59,540 ito 12 pagkatapos ito ng 13 at pagkatapos ito ng 23 at pagkatapos ito ng 213. 434 00:38:59,540 --> 00:39:04,670 Mga bagay makakuha ng talagang kakaiba kapag ginawa mo ang isang bagay tulad ng foreach. 435 00:39:04,670 --> 00:39:07,480 Natin makita kung ano ang mangyayari dahil hindi mo dapat gawin ito. 436 00:39:07,480 --> 00:39:13,320 Paano kung namin I-unset ($ array [1]); 437 00:39:20,410 --> 00:39:26,030 Iyon ay marahil inaasahan. 438 00:39:26,030 --> 00:39:30,950 Ka iterating sa array na ito, at sa bawat oras na ikaw ay unsetting unang index. 439 00:39:30,950 --> 00:39:39,720 Kaya para sa index 0, ang unang bagay na, ang item kinakailangan sa halaga 0, kaya ito ay pagpunta sa 123. 440 00:39:39,720 --> 00:39:44,630 Ngunit sa loob ng para sa loop namin I-unset ang index 1, kaya na nangangahulugan na 12 ay nawala. 441 00:39:44,630 --> 00:39:57,480 Kaya i-print. PHP_EOL. 442 00:39:57,480 --> 00:40:03,580 PHP_EOL lamang newline, ngunit ito ay technically mas portable 443 00:40:03,580 --> 00:40:08,890 dahil newline sa Windows ay naiiba mula sa mga newline sa Mac at UNIX. 444 00:40:08,890 --> 00:40:18,040 Sa Windows newline ay \ r \ n, kung saan lahat ng dako iba pa may kaugaliang lang sa \ n. 445 00:40:18,040 --> 00:40:25,150 PHP_EOL ay naka-configure upang ito ay gumagamit ng anumang newline ng iyong system ay. 446 00:40:25,150 --> 00:40:29,310 Kaya-print na. Natin hindi print_r ($ array) sa dulo. 447 00:40:32,830 --> 00:40:37,390 Mayroon akong walang ideya na na ang pag-uugali. 448 00:40:41,740 --> 00:40:48,960 Item pa rin tumatagal sa ang halaga ng 12 kahit I-unset namin 12 bago namin nakuha sa ito mula sa array. 449 00:40:52,770 --> 00:40:58,840 Huwag dalhin ang aking mga salita sa, ngunit mukhang foreach lumilikha ng isang kopya ng array 450 00:40:58,840 --> 00:41:02,160 at pagkatapos item tumatagal sa lahat ng mga halaga ng kopya na. 451 00:41:02,160 --> 00:41:07,760 Kaya kahit na baguhin ang array sa loob ng para sa loop, 452 00:41:07,760 --> 00:41:17,240 hindi ito pinapahalagahan. Item ay magdadala sa orihinal na halaga. 453 00:41:17,240 --> 00:41:19,240 Natin subukang unsetting ito. 454 00:41:19,240 --> 00:41:24,460 Ano kung ito ay $ array [1] = "kumusta"; 455 00:41:24,460 --> 00:41:31,770 Kahit na inilalagay namin ang "kumusta" sa array, ang item ay hindi kailanman kinakailangan sa halagang iyon. 456 00:41:31,770 --> 00:41:37,430 May isa pang syntax sa foreach loop 457 00:41:37,430 --> 00:41:45,900 kung saan inilagay mo ang 2 mga variable na pinaghiwalay sa pamamagitan ng isang arrow. 458 00:41:45,900 --> 00:41:49,680 Ang unang variable ay ang susi ng halaga na, 459 00:41:49,680 --> 00:41:53,050 at ang pangalawang variable ay ang parehong eksaktong item. 460 00:41:53,050 --> 00:42:01,610 Ito ay hindi kawili-wili dito, ngunit kung pumunta namin pabalik sa aming orihinal na kaso ng 'ng' -> 1, 461 00:42:01,610 --> 00:42:06,090 'B' -> 1, 462 00:42:06,090 --> 00:42:14,470 dito kung lamang namin umulit para sa bawat array bilang item, ang item ay pagpunta sa 1 bawat solong oras. 463 00:42:14,470 --> 00:42:18,170 Ngunit kung gusto rin naming malaman ang key na nauugnay sa item na iyon 464 00:42:18,170 --> 00:42:25,230 ginagawa namin bilang $ key -> $ item. 465 00:42:25,230 --> 00:42:31,980 Kaya ngayon maaari naming gawin ang naka-print ($ key. ':'. 466 00:42:31,980 --> 00:42:39,380 Ngayon iterating at pag-print ng bawat key at ang nauugnay na halaga. 467 00:42:39,380 --> 00:42:47,030 >> Isang karagdagang bagay na maaari naming gawin sa foreach loop ay baka makita mo ang syntax na ito. 468 00:42:47,030 --> 00:42:54,770 Ampersand bago variable pangalan ay malamang na kung paano ginagawa ng PHP reference. 469 00:42:54,770 --> 00:43:00,460 Saan reference na halos kapareho sa mga payo, 470 00:43:00,460 --> 00:43:04,820 hindi mo payo, kaya hindi mo kailangang humarap sa memory direkta. 471 00:43:04,820 --> 00:43:12,620 Ngunit ikaw ay walang reference kung saan ang 1 variable ay tumutukoy sa parehong bagay bilang isa pang variable. 472 00:43:12,620 --> 00:43:21,450 Sa loob ng dito sabihin gawin $ item. Natin bumalik sa 1, 10. 473 00:43:21,450 --> 00:43:28,800 Natin gawin $ item + +; Iyon pa rin umiiral sa PHP. Maaari mo pa ring gawin + +. 474 00:43:28,800 --> 00:43:38,260 php.test.php. Kailangan kong i-print ito. print_r ($ array); 475 00:43:38,260 --> 00:43:42,730 -Print namin 2, 11. 476 00:43:42,730 --> 00:43:49,560 Kung lamang ako ay tapos foreach ($ array bilang $ item) pagkatapos item ay ang halaga 1 477 00:43:49,560 --> 00:43:54,190 sa unang pagkakataon sa pamamagitan ng loop. Ito ay dagdagan ng 1 hanggang 2 at pagkatapos ay tapos na kami. 478 00:43:54,190 --> 00:43:57,260 Kaya pagkatapos ito ay pumunta sa pamamagitan ng pangalawang pass ng loop at ang item na 10. 479 00:43:57,260 --> 00:44:01,570 Ito palugit item sa 11, at pagkatapos na lamang ang layo itinapon. 480 00:44:01,570 --> 00:44:06,670 Pagkatapos namin print_r ($ array); at sabihin makita na ito ay 1, 10. 481 00:44:06,670 --> 00:44:09,070 Kaya ang pagdagdag na ginawa namin ay mawawala. 482 00:44:09,070 --> 00:44:13,410 Ngunit foreach ($ array bilang & $ item) 483 00:44:13,410 --> 00:44:21,910 ngayon item na ito ay ang parehong item bilang na ito dito mismo. Ito ay ang parehong bagay. 484 00:44:21,910 --> 00:44:26,820 Kaya $ item + + pagbabago array 0. 485 00:44:29,330 --> 00:44:41,850 Isa lamang, maaari mo ring gawin ang $ k -> $ item at maaari mong gawin $ array [$ k] + +; 486 00:44:41,850 --> 00:44:48,650 >> Kaya isa pang paraan ng paggawa na, kami ay libreng upang baguhin ang item, 487 00:44:48,650 --> 00:44:54,070 ngunit hindi baguhin ang aming orihinal na array. 488 00:44:54,070 --> 00:44:59,720 Ngunit kung ginagamit namin k, na ang aming key, at pagkatapos ay maaari naming lamang index sa aming array gamit na key 489 00:44:59,720 --> 00:45:01,530 at dagdagan na. 490 00:45:01,530 --> 00:45:05,410 Mas direkta binabago ang aming orihinal na array. 491 00:45:05,410 --> 00:45:10,690 Maaari mo ring gawin na kung para sa ilang kadahilanan nais kakayahan upang baguhin - 492 00:45:10,690 --> 00:45:13,510 Aktwal, ito perpektong makatwirang. 493 00:45:13,510 --> 00:45:16,020 Hindi mo nais na magsulat ng $ array [$ k] + +, 494 00:45:16,020 --> 00:45:27,890 mo lamang nais na magsulat ng $ item + + ngunit gusto mo pa ring sasabihin kung ($ k === 'isang') 495 00:45:27,890 --> 00:45:30,620 pagkatapos ay dagdagan ang item at pagkatapos ay i-print ang aming array. 496 00:45:30,620 --> 00:45:36,290 Kaya ngayon kung ano ang inaasahan namin print_r gawin? Ano ang halaga ay dapat na naka-print? 497 00:45:36,290 --> 00:45:43,770 [Mag-aaral] 2 at 10. >> [Bowden] Tanging kung key ay 'isang' namin aktwal na-print na. 498 00:45:51,940 --> 00:45:55,670 >> Marahil napaka bihira, kung kailanman, kailangan upang tukuyin ang mga function sa PHP, 499 00:45:55,670 --> 00:46:03,370 ngunit maaari mong makita ang isang bagay na katulad kung saan mo tukuyin ang isang function tulad ng function na anumang. 500 00:46:03,370 --> 00:46:09,900 Karaniwan ay sabihin mo ($ foo, $ bar) at pagkatapos ay tukuyin ito sa anumang. 501 00:46:09,900 --> 00:46:17,580 Ngunit kung gagawin ko ito, pagkatapos na nangangahulugan na anumang tawag anumang, 502 00:46:17,580 --> 00:46:25,110 anumang tawag baz, kaya ang unang argumento ang pumasa sa baz ay maaaring mabago. 503 00:46:25,110 --> 00:46:38,100 Sabihin $ foo + +; 504 00:46:38,100 --> 00:46:48,020 at sa loob ng dito sabihin baz ($ item); 505 00:46:48,020 --> 00:46:52,250 Ngayon kami ay pagtawag ng isang function. 506 00:46:52,250 --> 00:46:56,780 Argument ay nakuha sa pamamagitan ng reference, na nangangahulugan na kung namin baguhin ito 507 00:46:56,780 --> 00:47:00,390 namin ang pagbabago ng bagay na pumasa sa. 508 00:47:00,390 --> 00:47:04,420 At pag-print ito inaasahan namin - maliban kung ako messed up syntax - nakuha namin 2, 11, 509 00:47:04,420 --> 00:47:06,300 kaya aktwal na ito ay incremented. 510 00:47:06,300 --> 00:47:08,790 Mapansin namin kailangan ang mga sanggunian sa 2 lugar. 511 00:47:08,790 --> 00:47:13,050 Paano kung ginawa ko ito? Ano ang ibig sabihin nito? 512 00:47:13,050 --> 00:47:15,810 [Mag-aaral] Ito ay baguhin. >> Oo. 513 00:47:15,810 --> 00:47:18,290 Item ay lamang ng isang kopya ng halaga sa array. 514 00:47:18,290 --> 00:47:26,670 Kaya item ay magbabago sa 2, ngunit array sa ['a'] ay pa rin 1. 515 00:47:26,670 --> 00:47:32,560 O kung ano kung gagawin ko ito? 516 00:47:32,560 --> 00:47:39,260 Ngayon item ay ipinadala bilang isang kopya sa baz. 517 00:47:39,260 --> 00:47:46,330 Kaya ang kopya ng argument ay incremented sa 2, 518 00:47:46,330 --> 00:47:49,240 ngunit ang item mismo ay hindi kailanman incremented sa 2. 519 00:47:49,240 --> 00:47:52,880 At item ay ang parehong bagay tulad ng array na bracket anumang, 520 00:47:52,880 --> 00:47:55,380 kaya array na ay hindi kailanman incremented. 521 00:47:55,380 --> 00:47:57,960 Kaya parehong mga lugar na ito kailangan. 522 00:47:57,960 --> 00:48:03,830 >> PHP ay karaniwang medyo na smart tungkol dito. 523 00:48:03,830 --> 00:48:06,570 Maaari mong isipin gusto ko upang pumasa sa pamamagitan ng reference - 524 00:48:06,570 --> 00:48:09,560 Ito ay talagang isang tanong sa isa sa mga psets. 525 00:48:09,560 --> 00:48:14,480 Ito ay isang questions.txt bagay na kung saan ito sinabi, 526 00:48:14,480 --> 00:48:19,280 Bakit baka gusto mong pumasa sa struct na ito sa pamamagitan ng reference? 527 00:48:19,280 --> 00:48:21,250 Ano ang sagot na iyon? 528 00:48:21,250 --> 00:48:25,100 [Mag-aaral] Kaya hindi mo upang kopyahin ang isang bagay malaki. >> Oo. 529 00:48:25,100 --> 00:48:32,920 Struct ay maaaring maging mang malaki, at kapag pumasa ka sa struct in bilang isang argument 530 00:48:32,920 --> 00:48:36,800 kailangang kopyahin na buong struct upang pumasa ang mga ito sa pag-andar, 531 00:48:36,800 --> 00:48:40,410 samantalang kung ikaw lang makapasa sa struct sa pamamagitan ng reference 532 00:48:40,410 --> 00:48:46,530 pagkatapos lamang ito kailangang kopyahin ang isang 4-byte address bilang ang argumento sa function na. 533 00:48:48,520 --> 00:48:52,320 PHP ay isang kaunti mas matalinong kaysa. 534 00:48:52,320 --> 00:49:00,650 Kung mayroon akong ilang function na at pumasa ako dito ng isang hanay ng mga 1,000 na mga bagay, 535 00:49:00,650 --> 00:49:03,990 ay na ibig sabihin ito ay upang kopyahin ang lahat ng 1,000 ng mga bagay 536 00:49:03,990 --> 00:49:10,450 upang pumasa ito sa function na? Ito ay hindi upang gawin iyon agad. 537 00:49:10,450 --> 00:49:15,940 Kung sa loob ng function na ito ay hindi kailanman aktwal na binabago ang foo, 538 00:49:15,940 --> 00:49:22,660 kaya kung ($ foo === 'kumusta') nagbabalik ng tunay.; 539 00:49:22,660 --> 00:49:26,460 Hindi namin mapansin aktwal na-modify ang argumento loob ng function na ito, 540 00:49:26,460 --> 00:49:30,010 na nangangahulugan na ang anumang ay pumasa sa sa bilang foo hindi kailanman kailangang makokopya 541 00:49:30,010 --> 00:49:32,100 dahil hindi ito pagbago nito. 542 00:49:32,100 --> 00:49:39,240 Kaya paraan PHP gawa ay ang argumento ay palaging ang naipasa sa pamamagitan ng reference 543 00:49:39,240 --> 00:49:42,170 hanggang sa iyong aktwal na subukan upang baguhin ito. 544 00:49:42,170 --> 00:49:51,160 Ngayon kung sinasabi ko $ foo + +; ito ngayon gumawa ng isang kopya ng orihinal na foo at baguhin ang mga kopya. 545 00:49:51,160 --> 00:49:53,090 Ito sine-save ng ilang oras. 546 00:49:53,090 --> 00:49:58,210 Kung hindi ka pagpindot napakalaking array na ito, hindi mo kailangang aktwal na baguhin ang mga ito, 547 00:49:58,210 --> 00:50:02,360 hindi ito kailangan upang gumawa ng mga kopya, 548 00:50:02,360 --> 00:50:06,640 samantalang kung namin lamang ilagay ito ampersand na nangangahulugang hindi ito ay kopyahin ito 549 00:50:06,640 --> 00:50:08,640 kahit na baguhin ito. 550 00:50:08,640 --> 00:50:10,680 Pag-uugali na ito ay tinatawag na kopya-sa-write. 551 00:50:10,680 --> 00:50:17,380 Makikita mo ito sa iba pang mga lugar, lalo na kung magdadala sa iyo ng isang kurso ng operating system. 552 00:50:17,380 --> 00:50:23,880 Kopya-sa-write ay medyo karaniwan pattern kung saan hindi mo kailangang gumawa ng isang kopya ng isang bagay 553 00:50:23,880 --> 00:50:26,650 maliban kung ang aktwal na ito nagbabago. Oo. 554 00:50:26,650 --> 00:50:29,520 [Mag-aaral] Paano kung mayroon kang ang pagdagdag sa loob ng pagsubok, 555 00:50:29,520 --> 00:50:33,700 kaya lamang ang 1 elemento ng 1,000 ay kailangang baguhin? 556 00:50:33,700 --> 00:50:38,770 Hindi ako sigurado. 557 00:50:38,770 --> 00:50:51,250 Tingin ko Gusto ito kopyahin ang buong bagay, ngunit posible na smart sapat na - 558 00:50:51,250 --> 00:51:00,020 Aktwal na, kung ano ako iniisip ay isipin nagkaroon kami ng isang array na ganito ang hitsura: $ array2 = [ 559 00:51:00,020 --> 00:51:11,000 Pagkatapos index 'ng' ay isang array ng [1 2 3 4], at index 'b' ay isang array ng anumang. 560 00:51:11,000 --> 00:51:15,380 Kailangan ko ng mga kuwit sa pagitan ng lahat ng mga. Isipin may mga kuwit. 561 00:51:15,380 --> 00:51:21,210 Pagkatapos 'c' ay ang halaga 3. 562 00:51:24,210 --> 00:51:26,290 Okay. 563 00:51:26,290 --> 00:51:33,440 Ngayon sabihin nating ginagawa namin $ baz ($ array2); 564 00:51:33,440 --> 00:51:36,540 kung saan baz ay hindi tumagal ito sa pamamagitan ng reference. 565 00:51:43,510 --> 00:51:47,370 Kaya $ foo ['c'] + +; 566 00:51:47,370 --> 00:51:52,340 Ito ay isang halimbawa kung saan kami ay pagpasa array2 bilang isang argument 567 00:51:52,340 --> 00:51:57,010 at pagkatapos ay pagbabago sa isang partikular na index ng array sa pamamagitan ng incrementing ito. 568 00:51:57,010 --> 00:52:01,090 Ko matapat ay walang ideya kung ano ang PHP ay pagpunta sa gawin. 569 00:52:01,090 --> 00:52:07,200 Maaari itong madaling gumawa ng isang kopya ng ang buong bagay, ngunit kung ito ay sa smart, 570 00:52:07,200 --> 00:52:15,030 ito ay gumawa ng isang kopya ng mga key kung saan ito ay may natatanging halaga nito 571 00:52:15,030 --> 00:52:20,620 ngunit maaari pa ring tumuturo sa parehong array 1,2,3,4 572 00:52:20,620 --> 00:52:22,320 at ito ay maaari pa ring ituro sa parehong array. 573 00:52:22,320 --> 00:52:24,170 Idedetalye ko iPad ito. 574 00:52:28,900 --> 00:52:45,950 Pumasa namin sa array na ito na kung saan ang tao na ito puntos sa 3, ito mga puntos ng tao sa [1,2,3,4], 575 00:52:45,950 --> 00:52:51,350 tao ang mga puntos sa [34, ...] 576 00:52:51,350 --> 00:52:58,590 Ngayon na kami ay pagpasa ito sa baz, kami ay ang pagbabago na ito. 577 00:52:58,590 --> 00:53:03,550 Kung PHP ang smart, maaari lamang gawin - 578 00:53:11,850 --> 00:53:18,230 Mayroon pa rin namin upang kopyahin ilang memory, ngunit kung may mga malaking nested subarrays 579 00:53:18,230 --> 00:53:21,560 hindi namin kailangan upang kopyahin ang mga. 580 00:53:21,560 --> 00:53:27,530 Hindi ko alam kung na kung ano ang ginagawa nito, ngunit maaari kong isipin ito ginagawa na. 581 00:53:29,050 --> 00:53:36,690 Din ito ay isang magandang malaking kalamangan ng C sa paglipas ng PHP. 582 00:53:36,690 --> 00:53:40,320 >> PHP ginagawang buhay kaya mas madali para sa maraming mga bagay, 583 00:53:40,320 --> 00:53:45,060 ngunit uri ng may ganap na walang ideya kung gaano kahusay ito gumanap 584 00:53:45,060 --> 00:53:52,530 dahil mayroon akong walang ideya sa ilalim ng hood kapag ito ay paggawa ng mga kopya ng mga bagay, 585 00:53:52,530 --> 00:53:55,170 oh, ay na pagpunta sa isang pare-pareho ang kopya ng panahon, 586 00:53:55,170 --> 00:54:01,140 ito lamang upang baguhin ang 1 pointer, ito ridiculously mahirap linear kopya? 587 00:54:01,140 --> 00:54:03,000 Paano kung hindi ito mahanap espasyo? 588 00:54:03,000 --> 00:54:06,760 Ba pagkatapos ay kailangan upang patakbuhin ang koleksyon ng basura upang makakuha ng ilang higit pang espasyo? 589 00:54:06,760 --> 00:54:11,210 At basura koleksyon ay maaaring tumagal mang mahaba. 590 00:54:11,210 --> 00:54:13,600 Sa C hindi mo kailangang mag-alala tungkol sa mga bagay na ito. 591 00:54:13,600 --> 00:54:19,780 Bawat solong linya isulat mo ay maaaring medyo magkano dahilan tungkol sa kung paano ito upang isagawa. 592 00:54:26,800 --> 00:54:29,150 >> Tingnan natin muli sa mga. 593 00:54:35,400 --> 00:54:37,520 Paano gandang ito na hindi mo na kailangang humarap sa hash function, 594 00:54:37,520 --> 00:54:39,010 naka-link na mga listahan, o anumang bagay tulad na? 595 00:54:39,010 --> 00:54:41,980 Dahil nagtatrabaho sa hash talahanayan kaya madaling ngayon, narito ang isang masaya palaisipan upang gumana sa. 596 00:54:41,980 --> 00:54:45,920 Buksan up ng isang file na tinatawag na unique.php at sa loob nito magsulat ng isang programa sa PHP 597 00:54:45,920 --> 00:54:48,330 (Kilala rin bilang isang "script"). 598 00:54:48,330 --> 00:54:55,700 May posibilidad namin na tumawag sa kanila script kung hindi sila maikling ang mga bagay na magpatakbo ka sa command line. 599 00:54:55,700 --> 00:55:02,950 Talaga, ang anumang wika na hindi mo makatipon ngunit ka upang patakbuhin ang executable 600 00:55:02,950 --> 00:55:05,920 sa command line, maaari kang tumawag na executable script. 601 00:55:05,920 --> 00:55:08,510 Ko lang pati na rin magsulat ng isang C programa na ito, 602 00:55:08,510 --> 00:55:12,300 ngunit hindi ko tumawag ito ng script dahil makatipon ko muna ito at pagkatapos ay patakbuhin ang binary. 603 00:55:12,300 --> 00:55:15,480 Ngunit ito PHP programa namin ay pagpunta sa tumawag sa isang script. 604 00:55:15,480 --> 00:55:23,830 O kung sinulat ni namin ito sa Python o Perl o Node.js o anumang ng mga bagay, 605 00:55:23,830 --> 00:55:26,500 nais naming tumawag sa kanila lahat ng script dahil mong patakbuhin ang mga ito sa command line 606 00:55:26,500 --> 00:55:30,040 ngunit hindi namin ipunin ang mga ito. 607 00:55:30,860 --> 00:55:33,400 Maaari naming gawin ito medyo mabilis. 608 00:55:36,960 --> 00:55:41,480 Hindi namin ay pumunta sa upang gamitin ang argv. Sabihin lamang pumutok sa pamamagitan ng. 609 00:55:41,480 --> 00:55:45,730 Tumawag ito natatanging, magsulat ng isang programa. 610 00:55:45,730 --> 00:55:49,400 Maaari mong ipagpalagay na ang input ay naglalaman ng isang salita sa bawat linya. 611 00:55:49,400 --> 00:55:52,020 Aktwal, argv medyo hindi mahalaga sa gamitin. 612 00:56:03,730 --> 00:56:06,720 unique.php. 613 00:56:08,550 --> 00:56:13,750 Muna ang unang bagay, gusto naming upang suriin kung tayo ay pumasa sa 1 command-line argumento. 614 00:56:13,750 --> 00:56:20,900 Tulad ng gusto mong asahan argc at argv sa C, mayroon pa rin kaming mga sa PHP. 615 00:56:20,900 --> 00:56:33,900 Kaya kung ($ argc! == 2) hindi ko ay humarap sa pag-print ng isang mensahe o anumang. 616 00:56:33,900 --> 00:56:37,340 Kukunin ko na lang lumabas, error code na 1. 617 00:56:37,340 --> 00:56:41,340 Ko ring bumalik 1. 618 00:56:41,340 --> 00:56:53,180 Bihira sa PHP ay sa estado kung saan hindi namin sa - 619 00:56:53,180 --> 00:56:57,820 Karaniwan ikaw ay nasa isang function na tinatawag na sa pamamagitan ng isang function na tinatawag na sa pamamagitan ng isang function na tinatawag na sa pamamagitan ng isang function. 620 00:56:57,820 --> 00:57:02,070 At kung ang isang bagay napupunta mali at gusto mo lang lumabas ang lahat ng ganap, 621 00:57:02,070 --> 00:57:05,680 exit lang nagtatapos sa programa. 622 00:57:05,680 --> 00:57:08,160 Din umiiral sa C. 623 00:57:08,160 --> 00:57:10,700 Kung ikaw ay nasa isang function sa isang function sa isang function sa isang function 624 00:57:10,700 --> 00:57:17,540 at gusto mong patayin ang programa, maaari kang tumawag sa exit at ito lamang lumabas. 625 00:57:17,540 --> 00:57:23,120 Ngunit sa PHP mas bihira na namin sa nangungunang antas na ito. 626 00:57:23,120 --> 00:57:26,090 Karaniwan hindi namin sa loob ng ilang uri ng mga function na, kaya tinatawag naming exit 627 00:57:26,090 --> 00:57:29,650 sa gayon ay hindi namin upang bumalik 1 bagay kung saan pagkatapos napagtanto ng error 628 00:57:29,650 --> 00:57:32,270 kaya na nagbabalik kung na kinikilala nagkaroon ng isang error. 629 00:57:32,270 --> 00:57:35,270 Hindi namin gustong humarap sa na, kaya lumabas (1); 630 00:57:35,270 --> 00:57:38,240 return (1), sa kasong ito ay magiging katumbas. 631 00:57:38,240 --> 00:57:44,000 >> Pagkatapos kung ano ang gusto naming upang buksan gusto naming fopen. 632 00:57:44,000 --> 00:57:46,760 Ang mga argumento ay pagpunta upang tumingin medyo katulad. 633 00:57:46,760 --> 00:57:51,600 Gusto naming fopen ($ argv [1], at gusto naming upang buksan ito para sa pagbabasa. 634 00:57:51,600 --> 00:57:55,720 Na nagbabalik ng isang mapagkukunan na kung saan kami ay pagpunta sa tumawag ng f. 635 00:57:55,720 --> 00:58:02,180 Ito mukhang medyo katulad sa kung paano ginagawa ng C ito maliban sa hindi namin upang sabihin ang FILE *. 636 00:58:02,180 --> 00:58:06,170 Sa halip lang namin sabihin $ f. Okay. 637 00:58:06,170 --> 00:58:17,190 Aktwal na, sa tingin ko kahit na ito ay nagbibigay sa amin ng isang pahiwatig sa PHP function na tinatawag na file. PHP File. 638 00:58:17,190 --> 00:58:23,990 Ano ito ay pagpunta sa gawin ay basahin ang isang buong file sa isang array. 639 00:58:23,990 --> 00:58:29,770 Hindi mo kailangan sa fopen ito. Ito ay upang gawin iyon para sa iyo. 640 00:58:37,450 --> 00:58:43,700 Kaya $ linya = file ($ argv [1]); 641 00:58:43,700 --> 00:58:49,680 Ngayon ang lahat ng mga linya ng file ay sa linya. Ngayon gusto naming upang pag-uri-uriin ang mga linya. 642 00:58:49,680 --> 00:58:52,180 Paano maaari naming pag-uri-uriin ang mga linya? 643 00:58:52,180 --> 00:58:54,920 Naming ayusin ang linya. 644 00:58:54,920 --> 00:58:58,080 At ngayon maaari naming i-print ang mga ito o anumang. 645 00:58:58,080 --> 00:59:05,580 Marahil ang pinakamadaling paraan ay foreach ($ linya ng $ linya) echo $ linya; 646 00:59:05,580 --> 00:59:10,960 [Mag-aaral] Hindi ba namin kahit tumawid linya sa pamamagitan ng na tumutukoy ng isang bagay sa-uuri? 647 00:59:10,960 --> 00:59:28,850 Ito ay kung saan-uuri ay tinukoy bilang function na-uri-uriin (& $ array). 648 00:59:28,850 --> 00:59:32,650 Kapag tumawag ka sa function na hindi mo pumasa ito sa pamamagitan ng reference. 649 00:59:32,650 --> 00:59:36,900 Ang function na na tumutukoy ito bilang pagkuha ito bilang sanggunian. 650 00:59:36,900 --> 00:59:40,900 Ito ay talagang eksakto kung ano ang nangyaring mali 651 00:59:40,900 --> 00:59:46,220 kapag inilalagay namin ang lahat sa aming mga server kapag nagpunta kami 5.3-5.4. 652 00:59:46,220 --> 00:59:53,800 Hanggang 5.4, ito perpektong makatwirang. 653 00:59:53,800 --> 00:59:58,740 Ang isang function na ay hindi inaasahan upang dalhin ito bilang sanggunian, ngunit maaari mong ipasa ang mga ito bilang sanggunian 654 00:59:58,740 --> 01:00:02,860 kaya kung ang function ay mangyari upang baguhin ito, pa rin ito binagong. 655 01:00:02,860 --> 01:00:05,850 Ng 5.4, hindi mo dapat gawin ito. 656 01:00:05,850 --> 01:00:11,740 Kaya ngayon ay ang tanging paraan na pumasa ka sa pamamagitan ng reference ay kung ang function tahasang ginagawa ito. 657 01:00:11,740 --> 01:00:19,840 Kung hindi mo nais na ito upang baguhin ito, pagkatapos ay kailangan mong gawin ang $ kopya = $ linya at kopya ng pass. 658 01:00:19,840 --> 01:00:24,820 Kaya ngayon linya ay hindi mapangalagaan at kopya baguhin. 659 01:00:27,670 --> 01:00:31,460 php.unique.php. Maaari ko messed ng isang bagay. 660 01:00:31,460 --> 01:00:33,190 Hindi inaasahang '-uuri'. 661 01:00:38,320 --> 01:00:43,850 May pagpunta sa isang bagay na ito para sa amin. 662 01:00:43,850 --> 01:00:45,820 Hindi kahit doon. 663 01:00:45,820 --> 01:00:52,140 Mapansin kapag mong basahin ang manu-manong na ang unang argumento ay inaasahan na maging isang array 664 01:00:52,140 --> 01:00:56,490 at ito ay kinuha sa pamamagitan ng reference. 665 01:00:58,160 --> 01:01:03,540 Bakit ito nagrereklamo sa akin? Dahil mayroon akong ito function na-uri-uriin in dito pa rin na hindi ko nais. 666 01:01:03,540 --> 01:01:09,210 Okay, php.unique.php. Hindi ako pumasa ito sa isang argument dahil hindi ko magkaroon ng isang file. 667 01:01:09,210 --> 01:01:13,560 Ang ng php.unique.php sa test.php. 668 01:01:13,560 --> 01:01:19,080 Narito ang lahat ng naka-print ang test.php sa isang magaling na pinagsunod-sunod pagkakasunod-sunod. 669 01:01:19,080 --> 01:01:24,600 Pansinin na pinagsunod-sunod pagkakasunod-sunod ay uri ng kakaiba para sa isang file code 670 01:01:24,600 --> 01:01:27,460 dahil ang lahat ng aming mga blangko na linya ay darating unang 671 01:01:27,460 --> 01:01:30,190 pagkatapos ay dumating ang lahat ng aming indentations ng 1 antas 672 01:01:30,190 --> 01:01:33,360 at pagkatapos ay ang lahat ng aming mga walang indentations. 673 01:01:33,360 --> 01:01:38,620 Oo. >> [Mag-aaral] Kaya para sa source code ay hindi ito ang naipasa sa pamamagitan ng reference? 674 01:01:38,620 --> 01:01:42,240 Ay na sa pangkalahatan ay naipasa sa pamamagitan ng halaga? 675 01:01:42,240 --> 01:01:50,240 [Bowden] Kapag tumawag ka ng isang function, ito ay hindi kailanman tinutukoy kung ito ay naipasa sa pamamagitan ng reference. 676 01:01:50,240 --> 01:01:53,960 Ang kahulugan ng function na na tumutukoy kung ito ay naipasa sa pamamagitan ng reference. 677 01:01:53,960 --> 01:01:59,450 At pagtingin sa function na kahulugan ng-uri-uriin o lamang ng pagtingin sa ito, 678 01:01:59,450 --> 01:02:02,820 tumatagal ang argumento sa pamamagitan ng reference. 679 01:02:02,820 --> 01:02:07,160 Kaya hindi alintana ng kung nais mong ito upang dalhin ito sa pamamagitan ng reference, ginagawa ito sa pamamagitan ng reference. 680 01:02:07,160 --> 01:02:10,200 Binabago ang array sa lugar. 681 01:02:10,200 --> 01:02:17,400 Na ito ay hindi pinahihintulutan. Hindi ka pinapayagang gawin ito. >> [Mag-aaral] Oh, okay. 682 01:02:17,400 --> 01:02:22,410 [Bowden] ito,-uuri ay pagpunta sa tumagal ng mga linya sa pamamagitan ng sanggunian at baguhin ito. 683 01:02:22,410 --> 01:02:26,850 At muli, kung hindi mo gusto ito upang gawin iyon, maaari mong gumawa ng isang kopya ng-uuri. 684 01:02:26,850 --> 01:02:35,850 Kahit na sa kasong ito, kopyahin ay hindi talagang isang kopya ng mga linya. 685 01:02:35,850 --> 01:02:40,620 POINTS lamang ito sa parehong bagay hanggang unang maipo-modify, 686 01:02:40,620 --> 01:02:44,430 kung saan una itong pagpunta upang binago sa function na-uri-uriin, 687 01:02:44,430 --> 01:02:50,940 kung saan, dahil ito ang kopya ng-sa-sumulat, na ngayon ay isang kopya ng kopya ay pagpunta sa gawin. 688 01:02:57,500 --> 01:03:04,250 Maaari mo ring gawin ito. Na ang iba pang mga lugar maaari mong makita ang ampersand. 689 01:03:04,250 --> 01:03:07,190 Ang makikita mo ito sa foreach loop, makita ang mga ito sa mga pagdeklara ng function na, 690 01:03:07,190 --> 01:03:10,040 at makita ito kapag lamang nagtatalaga ng mga variable. 691 01:03:10,040 --> 01:03:12,350 Nagagawa namin ngayon ang walang sa pamamagitan ng paggawa nito 692 01:03:12,350 --> 01:03:15,600 dahil kopya at linya literal ang parehong bagay. 693 01:03:15,600 --> 01:03:19,940 Maaari mong gamitin ang mga linya at kopyahin salitan. 694 01:03:19,940 --> 01:03:25,430 Maaari mong gawin ang I-unset ($ kopya); at hindi I-unset ang linya, 695 01:03:25,430 --> 01:03:29,120 mo lang mawala ang iyong reference sa parehong bagay. 696 01:03:29,120 --> 01:03:33,440 Kaya ng puntong ito, ngayon linya ay ang tanging paraan na maaari mong ma-access ang linya. 697 01:03:36,450 --> 01:03:38,770 >> Mga tanong? 698 01:03:41,000 --> 01:03:42,460 Oo. 699 01:03:42,460 --> 01:03:45,880 [Mag-aaral] Ganap na off topic, ngunit hindi mo upang isara ang PHP gamit ang - >> gawin mong hindi. 700 01:03:45,880 --> 01:03:47,730 Okay. 701 01:03:47,730 --> 01:03:53,790 [Bowden] Gusto ko pumunta tulad ng upang sabihin ito ay masamang kasanayan upang isara ang mga ito. 702 01:03:53,790 --> 01:03:57,580 Iyon ay marahil isang pagmamalabis, lalo na sa isang script, 703 01:03:57,580 --> 01:04:03,740 ngunit sabihin makita kung ano ang mangyayari kung gawin ko ito. 704 01:04:03,740 --> 01:04:08,890 Na ginawa walang. Paano kung gusto ko - [sighs] 705 01:04:13,870 --> 01:04:16,960 Kailangan ko upang pumasa ang isang argument. 706 01:04:19,000 --> 01:04:22,050 Abutin. Tinatawag ko ito maling. 707 01:04:24,340 --> 01:04:28,310 Kaya php.unique.php may isang argument. 708 01:04:28,310 --> 01:04:30,980 Ngayon hindi ko kailangan ito. 709 01:04:34,520 --> 01:04:37,740 Ba akong magpasa ng isang wastong argumento. 710 01:04:37,740 --> 01:04:42,050 Ito naka-print anumang ito ay pag-print. 711 01:04:45,260 --> 01:04:50,080 Ako pag-print ng kopya at kopya ay hindi umiiral. Kaya linya. 712 01:04:53,650 --> 01:04:58,270 -Print ito ang lahat, at pagkatapos ay mapansin ang lahat ng ito junk pababa dito, 713 01:04:58,270 --> 01:05:06,690 dahil sa PHP anumang na ay sa labas ng PHP tag 714 01:05:06,690 --> 01:05:09,520 ay lamang pagpunta na ipi-print literal. 715 01:05:09,520 --> 01:05:18,050 Iyon ang dahilan kung bakit HTML, kaya magaling na ang maaari kong gawin div blah, blah, blah klase o anumang, 716 01:05:18,050 --> 01:05:25,140 blah, blah, blah at pagkatapos ay gumawa ng ilang PHP code at pagkatapos ay gawin ang pagtatapos div. 717 01:05:25,140 --> 01:05:36,460 At ngayon ay pag-print ito na nakukuha ko ang aking magaling div up tuktok, ang lahat na PHP naka-print, div sa ibaba. 718 01:05:36,460 --> 01:05:43,510 Mapaminsalang kapag nangyayari ang isang bagay tulad nito, na kung saan ay medyo karaniwang, 719 01:05:43,510 --> 01:05:47,930 lamang ng kalat-kalat na newline sa ilalim ng file. 720 01:05:47,930 --> 01:05:50,940 Hindi mo sa tingin ito na malaki ng isang pakikitungo 721 01:05:50,940 --> 01:05:58,660 hanggang isaalang-alang mo ang katotohanan na may mga browser - 722 01:05:58,660 --> 01:06:03,880 >> Paano nagre-redirect sa trabaho o talaga anumang mga header ng trabaho, 723 01:06:03,880 --> 01:06:07,980 kapag gumawa ka ng iyong koneksyon sa isang website at ito ay nagpapadala ng bumalik sa lahat ng mga header at mga bagay 724 01:06:07,980 --> 01:06:12,020 tulad ng pagtugon 200 o tugon na pag-redirect o anumang, 725 01:06:12,020 --> 01:06:18,230 header ng bisa lamang hanggang sa unang byte ng data ay ipinadala. 726 01:06:18,230 --> 01:06:23,140 Maaari mong-redirect ang mga libu-libong ng beses, ngunit sa lalong madaling unang byte ng data na ipinadala 727 01:06:23,140 --> 01:06:26,120 hindi ka dapat na i-redirect muli. 728 01:06:26,120 --> 01:06:31,860 >> Kung mayroon kang isang ligaw na hayop newline sa ilalim ng isang file 729 01:06:31,860 --> 01:06:37,260 at sabihin nating na gamitin mo ang function na ito at pagkatapos ay nais mong - 730 01:06:41,580 --> 01:06:52,870 Ipagpalagay natin na ito ng isa pang file na index.php at require_once ka ng isang bagay - 731 01:06:52,870 --> 01:06:56,920 Hindi ako makapag-isip ng isang magandang halimbawa nito. 732 01:06:56,920 --> 01:07:04,740 Ang isyu mangyayari kapag ang linya na ito sa ibaba ay makakakuha echoed. 733 01:07:04,740 --> 01:07:08,660 Hindi mo nais ang anumang ay echoed pa. 734 01:07:10,820 --> 01:07:15,700 Kahit na hindi mo binalak sa anumang nagsisimula echoed, ang isang bagay ay makapag-echoed 735 01:07:15,700 --> 01:07:17,990 at ito ngayon ay hindi ka dapat magpadala ng anumang higit pang mga header 736 01:07:17,990 --> 01:07:20,030 at ikaw ay pagpunta upang makakuha ng mga reklamo. 737 01:07:22,170 --> 01:07:24,420 Hindi mo lang kailangan ang mga tag na iyon ng pagsasara. 738 01:07:24,420 --> 01:07:27,420 Kung plano mong sa paggawa ng isang bagay na may HTML - 739 01:07:27,420 --> 01:07:30,490 at perpektong makatwirang gawin dito div anumang 740 01:07:30,490 --> 01:07:39,450 at pagkatapos ay sa puntong ito maaari mong o hindi mo maaaring isama ang mga ito. 741 01:07:39,450 --> 01:07:41,590 Hindi ito ay talagang mahalaga. 742 01:07:41,590 --> 01:07:45,450 Ngunit sa PHP script ito bihirang upang isara ito. 743 01:07:45,450 --> 01:07:50,400 Kapag ang lahat ay PHP, talagang lahat, 744 01:07:50,400 --> 01:07:55,460 hindi mo talagang kailangan upang isara ang mga ito / hindi mo dapat itong isara. 745 01:08:02,030 --> 01:08:05,720 >> Pagharap sa string ay mas nicer kaysa sa C. 746 01:08:05,720 --> 01:08:09,470 Sa PHP, maaari mong tukuyin ang isang string na may single o double quote. 747 01:08:09,470 --> 01:08:12,820 May single quote hindi mo maaaring gamitin ang "escape" na pagkakasunud-sunod. 748 01:08:12,820 --> 01:08:17,640 Patuloy makatakas, blah, blah, blah. 749 01:08:19,920 --> 01:08:24,010 Kaya printf ay napakabihirang sa PHP. 750 01:08:24,010 --> 01:08:32,290 Hulaan ko ko bang gamitin ang printf kung Nais kong gawin ang isang uri ng bagay - sa pset 5 na ginamit mo sprintf o anumang. 751 01:08:32,290 --> 01:08:36,060 Ngunit gusto mong gawin 001.jpg at 002.jpg. 752 01:08:36,060 --> 01:08:40,300 Kaya para sa na uri ng bagay kung saan aktwal ko nais upang i-format ang teksto Gusto ko gamitin ang printf. 753 01:08:40,300 --> 01:08:44,689 Ngunit kung hindi man gusto ko lang gamitin ang string pagdudugtong. 754 01:08:44,689 --> 01:08:47,000 Hindi ko talagang gamitin printf. 755 01:08:49,229 --> 01:09:00,170 Lang kami differentiating ang mga detalye sa pagitan ng mga single quote at double quote. 756 01:09:00,170 --> 01:09:07,490 Ang pinakamalaking pagkakaiba ay na single quote, ito ay ipi-print literal. 757 01:09:07,490 --> 01:09:15,390 May ay walang magpasinda uri ng data sa PHP, hindi tulad ng C, kaya ito ay katumbas na ito. 758 01:09:15,390 --> 01:09:17,970 Hindi sila parehong string. 759 01:09:17,970 --> 01:09:29,180 At ang magaling na bagay tungkol sa mga single quote string ay maaari kong sabihin ang 'halo mundo!' blah, blah, blah, 760 01:09:29,180 --> 01:09:33,340 $ $ Wooo. 761 01:09:33,340 --> 01:09:38,260 Ano ang mangyayari kapag-print ko ito ay ito ay i-print ito literal. 762 01:09:38,260 --> 01:09:40,680 Natin mapupuksa ng lahat ng aming mga bagay-bagay. 763 01:09:40,680 --> 01:09:44,700 Kaya echo $ str1; 764 01:09:48,569 --> 01:09:56,570 Naka-print na ito literal ang lahat ng mga bagay: dollar palatandaan, 765 01:09:56,570 --> 01:09:58,770 backslash n, na tingin mo ay newline - 766 01:09:58,770 --> 01:10:01,500 lahat ng mga bagay na ito ng mga Kopya literal. 767 01:10:01,500 --> 01:10:05,650 Ang tanging bagay na kailangan mo upang makatakas ang mga single quote 768 01:10:05,650 --> 01:10:09,470 dahil kung hindi man ay sa tingin ito ay isinasara ang mga single quote. 769 01:10:09,470 --> 01:10:15,050 Double quote, ganap na naiibang. 770 01:10:20,300 --> 01:10:25,870 Namin na makita ang mga syntax-highlight cluing sa amin sa sa kung ano ang pumunta masyado mali. 771 01:10:25,870 --> 01:10:36,190 php.unique. Hindi natukoy variable: wooo dahil ito ay kahulugan bilang isang variable na tinatawag wooo. 772 01:10:36,190 --> 01:10:42,400 Hinahayaan ka ng mga double quote magpasok ng mga variable sa - 773 01:10:42,400 --> 01:10:52,730 Sabihin nating $ name = "Rob"; 774 01:10:52,730 --> 01:10:58,020 Kaya echo "Hi, ang aking pangalan ay $ pangalan!!"; 775 01:10:58,020 --> 01:11:09,260 Ito ay kinikilala ito bilang isang variable. 776 01:11:09,260 --> 01:11:21,210 Kapag nagpatakbo ako na - at ako magpasok ng isang newline - Hi, ang aking pangalan Rob!! at halo mundo!! 777 01:11:21,210 --> 01:11:24,910 Ito ay dahil hindi ko inalis ang pag-print ng wooo sa itaas. 778 01:11:24,910 --> 01:11:30,020 May 1 karagdagang hakbang na maaari mong gawin. 779 01:11:30,020 --> 01:11:39,250 $ Array = [1, 2, 3]; 780 01:11:39,250 --> 01:11:43,270 Paano kung gusto kong i-print ang unang na-index ng array? 781 01:11:43,270 --> 01:11:45,150 Gawin mong $ array [0]. 782 01:11:45,150 --> 01:11:49,280 Ang mga syntax-highlight ay isang palatandaan. Ano ito gawin? 783 01:11:52,320 --> 01:11:54,510 php.unique. 784 01:11:54,510 --> 01:11:59,860 Hi, ang aking pangalan ay 1!! na hindi kung ano ang nais kong. 785 01:11:59,860 --> 01:12:05,050 Syntax-highlight na lied sa akin. 786 01:12:05,050 --> 01:12:13,020 Natin subukan ang 'isang' -> 1, 'b' -> 2. 787 01:12:18,450 --> 01:12:21,440 Kung paano Gusto ko upang isulat ito. 788 01:12:26,350 --> 01:12:32,160 Hindi inaasahang solong quote (T_ENCAPSED blah, blah, blah, blah, blah). 789 01:12:32,160 --> 01:12:41,780 Ang ideya ay na hindi ito pagkilala ito bilang bahagi ng array. 790 01:12:41,780 --> 01:12:46,620 Hindi ito pagkilala ito tulad ng array na-index sa pamamagitan ng sulat ng. 791 01:12:46,620 --> 01:12:49,870 Gusto mong gawin na napapalibutan ng mga kulot tirante, 792 01:12:49,870 --> 01:12:54,730 at ngayon anumang sa kulot suhay na ito ay interpolated, 793 01:12:54,730 --> 01:13:00,340 kung saan ay ang salita na ginagamit namin para sa magically pagpasok ng mga variable na ito sa tamang lugar. 794 01:13:00,340 --> 01:13:04,280 Ngayon ginagawa ito, php.unique, at Hi, ang aking pangalan ay 1!! tulad ng inaasahan 795 01:13:04,280 --> 01:13:07,720 o Hi, ang aking pangalan ay Rob!! 796 01:13:14,110 --> 01:13:23,130 Isang bagay na uri ng magaling tungkol sa mga single quote na - 797 01:13:23,130 --> 01:13:28,480 Mayroong ilang gastos sa interpolating. 798 01:13:30,520 --> 01:13:35,100 Kung gumagamit ka ng mga double quote, interpreter ay upang pumunta sa ang string na ito, 799 01:13:35,100 --> 01:13:41,500 siguraduhin na, "Oh, narito ang isang variable. Ngayon ay kailangan ko upang pumunta makakuha ng variable na iyon at ipasok ito dito." 800 01:13:41,500 --> 01:13:48,930 Kahit na hindi mo gamitin ang anumang mga variable, 801 01:13:48,930 --> 01:13:52,220 wala sa loob ng mga double quote kailangang interpolated, 802 01:13:52,220 --> 01:13:56,800 ngunit ito ay pa rin mas mabagal dahil kailangan nito upang pumunta sa ibabaw ng double quote 803 01:13:56,800 --> 01:14:00,130 naghahanap para sa mga bagay na kailangang interpolated. 804 01:14:00,130 --> 01:14:05,360 Kaya solong quote ay maaaring maging isang bit mas mabilis kung walang kailangang interpolated, 805 01:14:05,360 --> 01:14:15,650 at malamang ko sa kahit na gamitin ang solong quote para sa, 'Hi, ang aking pangalan ay'. $ Array ['isang'] pa rin. 806 01:14:15,650 --> 01:14:20,430 Na katumbas sa kung ano ang namin ay may bago. 807 01:14:24,840 --> 01:14:28,440 Ngunit ito ay isang bagay ng preference. 808 01:14:28,440 --> 01:14:34,750 Kung gumagamit ka ng PHP, marahil ay hindi pakialam tungkol sa speed pagkakaiba. 809 01:14:34,750 --> 01:14:39,480 Walang sapat na dahilan sa kanila upang magsimula sa. 810 01:14:39,480 --> 01:14:43,030 >> Anumang panghuling tanong? 811 01:14:47,430 --> 01:14:51,710 >> Namin ang aktwal na ay hindi kahit na makakuha ng sa pamamagitan ng lahat ng ito, ngunit ang mga bagay na ito ay mayamot. 812 01:14:51,710 --> 01:14:59,080 Ang huling bagay na uri ng magaling sa PHP kapag ikaw ay pagharap sa HTML, 813 01:14:59,080 --> 01:15:06,450 gagamitin mo ang mga ito ng kaunti, kaya maganda ang syntax ng shortcut para sa pag-print ng isang variable. 814 01:15:32,400 --> 01:15:36,730 Nang walang paglalagay ng ng PHP dito, ito ay tinatawag na maikling tag. 815 01:15:36,730 --> 01:15:44,330 Opisyal na bilang ng PHP 5.4, ito ay deprecate. 816 01:15:44,330 --> 01:15:48,640 Inirerekomenda upang ilagay ang php. 817 01:15:48,640 --> 01:15:55,770 Ito pa rin ang suportado, kaya maikli na tag gamit ang 01:16:02,480 Ito ay sa pamamagitan ng default na sinusuportahan, kaya maaari mong gamitin ang mga ito hangga't gusto mo, at ito ay medyo maginhawa. 819 01:16:02,480 --> 01:16:05,700 >> Anumang mga katanungan? 820 01:16:07,780 --> 01:16:09,270 Ayos lang. 821 01:16:10,840 --> 01:16:13,800 >> Manatiling pangunahing uri, San Diego. 822 01:16:13,800 --> 01:16:16,070 [Chuckles] 823 01:16:18,620 --> 01:16:22,660 Bye. [Laughs] 824 01:16:24,350 --> 01:16:28,470 [Palakpakan] [laughs] 825 01:22:46,460 --> 01:22:49,460 >> [CS50.TV]