1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [Adran 8 - Mwy cyfforddus] 2 00:00:02,610 --> 00:00:04,910 [Rob Bowden - Harvard University] 3 00:00:04,910 --> 00:00:07,070 [Mae hyn yn CS50. - CS50.TV] 4 00:00:11,520 --> 00:00:14,160 >> Mae'r nodiadau wythnos adran yn mynd i fod yn eithaf byr, 5 00:00:14,160 --> 00:00:19,070 felly Im 'jyst yn mynd i barhau i siarad,' ch guys yn mynd i ddal i ofyn cwestiynau, 6 00:00:19,070 --> 00:00:22,720 a byddwn yn ceisio i lenwi amser gymaint ag y bo modd. 7 00:00:22,720 --> 00:00:31,950 Mae llawer o bobl yn credu nad yw hyn pset yw o reidrwydd yn anodd, ond mae'n hir iawn. 8 00:00:31,950 --> 00:00:37,070 Mae'r fanyleb pset ei hun yn awr i ddarllen. 9 00:00:40,530 --> 00:00:45,730 Rydym yn rhoi llawer o SQL gallech o bosibl angen i chi ddefnyddio. 10 00:00:45,730 --> 00:00:50,520 Rydym yn cerdded i chi drwy lawer ohono, felly ni ddylai fod yn rhy ddrwg. 11 00:00:50,520 --> 00:00:54,560 Oes unrhyw un wedi dechrau neu orffen? 12 00:00:55,380 --> 00:00:59,710 Mae'ny pset diwethaf. O, fy Nuw. 13 00:00:59,710 --> 00:01:05,400 Fel arfer mae 'na JavaScript i un fel hyn, ond mae pethau newid calendr 14 00:01:05,400 --> 00:01:09,560 yn gwneud popeth 1 wythnos fyrrach, ac nid oes gennym a pset JavaScript. 15 00:01:09,560 --> 00:01:12,310 Nid wyf yn gwybod sut mae hynny'n effeithio ar p'un a JavaScript yn mynd i ymddangos ar yr arholiad 16 00:01:12,310 --> 00:01:15,510 neu Cwis 1. 17 00:01:15,510 --> 00:01:22,260 Yr wyf yn tybio y bydd yn rhywbeth fel angen i chi wybod lefel uchel pethau am JavaScript, 18 00:01:22,260 --> 00:01:26,460 ond yr wyf yn amau ​​byddem yn unig yn rhoi i chi yn syth JavaScript cod 19 00:01:26,460 --> 00:01:28,720 gan nad ydych wedi cael pset ynddo. 20 00:01:28,720 --> 00:01:33,000 Ond a fydd yn stwff am cwis adolygiad yr wythnos nesaf. 21 00:01:33,000 --> 00:01:36,320 >> Adran o gwestiynau. 22 00:01:36,320 --> 00:01:43,870 Mae llawer o bethau hyn braidd yn wael eirio, ond byddwn yn trafod pam. 23 00:01:43,870 --> 00:01:50,220 Yn wahanol i C, PHP yn "ddeinamig-deipio" iaith. Beth yw ystyr hyn, byddwch yn gofyn? 24 00:01:50,220 --> 00:01:53,830 Wel, dweud hwyl fawr i bawb torgoch, arnofio, int, a geiriau allweddol eraill y mae angen i chi ddefnyddio 25 00:01:53,830 --> 00:01:56,190 wrth ddatgan newidynnau a swyddogaethau yn C. 26 00:01:56,190 --> 00:02:00,420 Yn PHP, math newidyn yn cael ei bennu gan werth ei fod yn dal ar hyn o bryd. 27 00:02:00,420 --> 00:02:04,990 Felly, cyn i ni deipio cod hwn i mewn i ffeil o'r enw dynamic.php, 28 00:02:04,990 --> 00:02:12,670 PHP ei deipio ddeinamig. Mae hynny'n wir. 29 00:02:12,670 --> 00:02:17,590 Wyf yn anghytuno â'r ffaith fod hynny'n golygu ein bod yn ffarwelio â torgoch, arnofio, int, 30 00:02:17,590 --> 00:02:20,620 a keywords eraill. 31 00:02:20,620 --> 00:02:25,510 Y gwahaniaeth rhwng yr union ddynamig deipio a'r dewis arall, 32 00:02:25,510 --> 00:02:32,010 sy'n cael ei deipio llonydd, yw bod teipio ddeinamig, eich holl gwirio math a phethau 33 00:02:32,010 --> 00:02:37,350 digwydd yn ystod amser rhedeg, tra teipio statically ei fod yn digwydd yn ystod amser crynhoi. 34 00:02:37,350 --> 00:02:43,030 Mae'r gair sefydlog yn gyffredinol yn ymddangos i olygu pethau amser crynhoi. 35 00:02:43,030 --> 00:02:48,170 Amcana mae o ffyrdd eraill ar ei gyfer, ond yn C pan fyddwch yn datgan newidyn sefydlog, 36 00:02:48,170 --> 00:02:52,650 ei storio yn cael ei ddyrannu yn ystod amser crynhoi. 37 00:02:52,650 --> 00:02:59,260 Yma, teipio ddynamig jyst yn golygu bod - 38 00:02:59,260 --> 00:03:04,350 Yn C os ydych yn ceisio ychwanegu llinyn a cyfanrif, pan fyddwch yn llunio ei, 39 00:03:04,350 --> 00:03:11,000 mae'n mynd i gwyno oherwydd ei fod yn mynd i ddweud na allwch ychwanegu int a pwyntydd. 40 00:03:11,000 --> 00:03:14,710 Nid yw'n un llawdriniaeth dilys. 41 00:03:14,710 --> 00:03:21,170 Dyna beth arall y byddwn yn dod i mewn eiliad. 42 00:03:21,170 --> 00:03:24,860 Ond y math o wirio, y ffaith ei bod yn cwyno ar adeg Casglu, 43 00:03:24,860 --> 00:03:29,220 yn gwirio fath sefydlog. 44 00:03:29,220 --> 00:03:35,220 Mae yna ieithoedd lle nad oes angen i chi ddweud torgoch, arnofio, int, a phob un o'r pethau hynny, 45 00:03:35,220 --> 00:03:40,940 ond gall yr iaith dweud o'r cyd-destun y peth pa fath y mae'n 'n dybiedig i fod, 46 00:03:40,940 --> 00:03:43,980 ond mae'n dal i deipio statically. 47 00:03:43,980 --> 00:03:49,000 Felly, os ydych yn cymryd 51, OCaml byth, mae angen i chi ddefnyddio unrhyw un o'r mathau hyn, 48 00:03:49,000 --> 00:03:58,700 ond bydd yn dal ar amser Casglu dweud na allwch wneud hyn oherwydd eich bod yn cymysgu yn int a llinyn. 49 00:03:58,700 --> 00:04:05,650 Teipio ddynamig jyst yn golygu bod rywbryd yn ystod amser rhedeg ydych yn mynd i gael cwyn. 50 00:04:05,650 --> 00:04:13,430 Os ydych chi hefyd wedi defnyddio Java o'r blaen, yn gyffredinol, bron unrhyw iaith C-fath 51 00:04:13,430 --> 00:04:20,070 yn mynd i gael eu teipio llonydd, felly C, C + +, Java, mae pawb yn gyffredinol teipio statically. 52 00:04:20,070 --> 00:04:22,910 Yn Java pan fyddwch yn llunio rhywbeth ac rydych yn ei ddweud 53 00:04:22,910 --> 00:04:26,670 llinyn s yn dychwelyd rhywbeth newydd nad yw llinyn, 54 00:04:26,670 --> 00:04:28,950 mae hynny'n mynd i gwyno am y mathau hynny nid yn unig yn cyfateb i fyny. 55 00:04:28,950 --> 00:04:31,180 Mae hynny'n mynd i gwyno yn ystod amser crynhoi. 56 00:04:31,180 --> 00:04:36,750 Ond mae ganddo hefyd peth amser deinamig pethau fel os ydych yn ceisio bwrw rhywbeth 57 00:04:36,750 --> 00:04:40,500 i fath sy'n fwy penodol na'r math hyn o bryd, 58 00:04:40,500 --> 00:04:45,610 does dim byd y gall ei wneud yn ystod amser Casglu i wirio a yw'r cast yn mynd i lwyddo. 59 00:04:45,610 --> 00:04:51,130 Java hefyd rhyw fath deinamig gwirio bod cyn gynted ag y mae'n mynd at y llinell o god 60 00:04:51,130 --> 00:04:54,130 pan fydd mewn gwirionedd yn gweithredu, mae'n mynd i wneud y cast, 61 00:04:54,130 --> 00:04:56,260 gwirio os yw'r cast yn ddilys yn y lle cyntaf, 62 00:04:56,260 --> 00:04:59,890 ac os nad oedd, yna mae'n mynd i gwyno bod gennych fath annilys. 63 00:04:59,890 --> 00:05:03,200 Fath Dynamic gwirio. 64 00:05:03,200 --> 00:05:07,010 Teipiwch hyn i mewn i ffeil o'r enw dynamic.php. 65 00:05:10,130 --> 00:05:12,380 Dynamic.php. 66 00:05:14,580 --> 00:05:17,190 'N annhymerus' unzip y fformatio. 67 00:05:18,750 --> 00:05:21,880 Mae gennym amrywiol, rydym yn gosod i 7 cyfanrif, 68 00:05:21,880 --> 00:05:27,930 yna yr ydym am ei argraffu ac mae% s - 69 00:05:27,930 --> 00:05:32,830 O, rydym yn argraffu y math ohono, felly gettype yn mynd i ddychwelyd y math y newidyn. 70 00:05:32,830 --> 00:05:35,720 Rydym yn unig yn argraffu'r fath drosodd a throsodd. 71 00:05:35,720 --> 00:05:39,440 Rydym yn unig php.dynamic.php. 72 00:05:39,440 --> 00:05:45,920 Byddwn yn gweld ei fod yn newid o cyfanrif i llinyn i Boolean wrth i ni fynd drwy. 73 00:05:45,920 --> 00:05:54,590 Yn C, nid oes math data Boole, nid oes llinyn data fath. 74 00:05:54,590 --> 00:06:00,500 Mae * torgoch a Boolean yn unig yn tueddu i fod yn int neu torgoch neu rywbeth. 75 00:06:00,500 --> 00:06:05,690 Yn PHP mathau hyn yn bodoli, a dyna un o fanteision mawr o PHP dros C - 76 00:06:05,690 --> 00:06:13,290 bod gweithrediadau llinyn yn eithriadol haws mewn PHP nag C. Maent yn unig yn gweithio. 77 00:06:13,290 --> 00:06:18,290 >> Felly, rydym yn dod yn ôl yma. 78 00:06:18,290 --> 00:06:21,260 Rydym yn rhedeg dynamic.php. 79 00:06:21,260 --> 00:06:26,710 Mae hyn yn dweud y cyfieithydd PHP, a elwir yn php, i redeg y cod PHP yn dynamic.php. 80 00:06:26,710 --> 00:06:30,250 Os oes gennych unrhyw wallau yn y ffeil, bydd y cyfieithydd yn dweud wrthych! 81 00:06:30,250 --> 00:06:39,110 Mae'r cyfieithydd, mae hwn yn gwahaniaeth mawr rhwng PHP a C. 82 00:06:39,110 --> 00:06:48,200 Yn C rhaid i chi lunio rhywbeth ac yna rydych yn rhedeg y ffeil a luniwyd. 83 00:06:48,200 --> 00:06:50,490 Byth yn PHP i chi lunio unrhyw beth. 84 00:06:50,490 --> 00:06:57,200 Felly, y cyfieithydd PHP yn y bôn dim ond darllen hwn fesul llinell. 85 00:06:57,200 --> 00:07:02,900 Mae'n taro var = 7, yna mae'n taro printf yna mae'n taro var yna mae'n taro printf ac yn y blaen. 86 00:07:02,900 --> 00:07:10,910 Mae ychydig o gasglu mae'n ei wneud, ac y mae'n storio y canlyniadau 87 00:07:10,910 --> 00:07:15,510 felly os ydych yn rhedeg y sgript yn ddiweddarach, gallwch wneud rhai, 88 00:07:15,510 --> 00:07:19,280 ond yn y bôn mae'n llinell drwy linell math yna o beth. 89 00:07:19,280 --> 00:07:25,280 Mae hynny'n golygu bod llawer o optimeiddiad yr ydym yn mynd i mewn C, 90 00:07:25,280 --> 00:07:31,920 fel lunio, dim ond yn gyffredinol gall y casglwr yn gwneud llawer o driciau i chi. 91 00:07:31,920 --> 00:07:36,110 Gall gymryd allan newidynnau heb ei ddefnyddio, gall wneud pob un o'r mathau hyn o bethau, 92 00:07:36,110 --> 00:07:38,660 y gall ei wneud dychweliad gynffon. 93 00:07:38,660 --> 00:07:42,550 Yn PHP nad ydych yn mynd i gael y fantais 94 00:07:42,550 --> 00:07:45,690 oherwydd ei fod dim ond yn mynd i ddechrau gweithredu linell wrth linell wrth linell, 95 00:07:45,690 --> 00:07:49,950 ac nid yw'n wir yn cydnabod y pethau hyn yn hawdd 96 00:07:49,950 --> 00:07:54,440 gan nad yw'n pasio 1 casgliad mawr dros y peth ac wedyn yn gweithredu; 97 00:07:54,440 --> 00:07:56,860 'i' jyst fesul llinell. 98 00:08:00,730 --> 00:08:02,750 Felly dyna y cyfieithydd. 99 00:08:02,750 --> 00:08:06,840 >> Cefnogwch i'n teipio deinamig: 'n bert oera, eh? 100 00:08:06,840 --> 00:08:08,640 Chi na allai wneud hynny yn bendant yn C! 101 00:08:08,640 --> 00:08:11,860 Yn awr, weld a allwch chi chyfrif i maes y math o bob un o'r gwerthoedd canlynol. 102 00:08:11,860 --> 00:08:14,760 Gweler hyn ar gyfer cyfeirio. 103 00:08:14,760 --> 00:08:19,420 Felly, 3.50. Pa fath ydych chi'n credu bod yn mynd i fod? 104 00:08:24,480 --> 00:08:26,370 Dyma'r mathau sydd gennym. 105 00:08:26,370 --> 00:08:30,430 Mae gennym bools, cyfanrifau, pwyntiau fel y bo'r angen, llinynnau, araeau, gwrthrychau, 106 00:08:30,430 --> 00:08:38,370 ac yna adnoddau, sy'n fath o amwys. 107 00:08:38,370 --> 00:08:41,010 Rwy'n credu bod yna mewn gwirionedd enghraifft yma. 108 00:08:41,010 --> 00:08:43,740 Yna mae NULL. NULL yn fath arbennig. 109 00:08:43,740 --> 00:08:47,140 Yn wahanol i C lle NULL yn unig yw pwyntydd gyda chyfeiriad 0, 110 00:08:47,140 --> 00:08:54,930 yn PHP, NULL yw ei fath ei hun lle yr unig beth ddilys o'r math hwnnw yn null. 111 00:08:57,560 --> 00:09:00,670 Mae hyn yn llawer mwy defnyddiol ar gyfer gwirio camgymeriadau. 112 00:09:00,670 --> 00:09:04,310 Yn C lle cawsom y mater hwn lle os byddwch yn dychwelyd NULL, 113 00:09:04,310 --> 00:09:08,660 mae hynny'n golygu eich bod yn dychwelyd pwyntydd NULL neu ddefnyddio NULL i ddynodi gwall 114 00:09:08,660 --> 00:09:12,380 neu'r cyfan o'r dryswch oedd gennym ar un adeg. 115 00:09:12,380 --> 00:09:18,440 Yma, dychwelyd NULL gyffredinol yn golygu gwall. 116 00:09:20,860 --> 00:09:27,300 Mae llawer o bethau hefyd yn dychwelyd ffug ar gyfer camgymeriadau. 117 00:09:27,300 --> 00:09:33,140 Ond y pwynt yw y math NULL, yr unig beth y math NULL yn null. 118 00:09:33,140 --> 00:09:40,090 Yna alwad yn ôl yn debyg y gallwch ddiffinio rhai swyddogaethau dienw. 119 00:09:40,090 --> 00:09:46,420 Nid oes rhaid i chi roi y swyddogaeth enw, ond ni fydd yn rhaid i chi ddelio â hynny yma. 120 00:09:46,420 --> 00:09:53,940 O edrych ar y mathau y maent yn disgwyl i ni wybod, 121 00:09:53,940 --> 00:09:59,000 beth ydych chi'n meddwl bod y math o 3.50 yw? >> [Myfyrwyr] arnawf. 122 00:09:59,000 --> 00:10:00,370 Yeah. 123 00:10:00,370 --> 00:10:06,290 Felly, yna yma, beth ydych chi'n feddwl y math o hyn? >> [Myfyrwyr] Array. 124 00:10:06,290 --> 00:10:09,890 Yeah. Mae'r un cyntaf yn arnofio, yr ail un yn arae. 125 00:10:09,890 --> 00:10:14,500 Hysbysiad nad yw'r casgliad yn debyg i amrywiaeth C 126 00:10:14,500 --> 00:10:19,610 lle mae gennych fynegai 0 rhywfaint o werth, mynegai 1 yn rhywfaint o werth. 127 00:10:19,610 --> 00:10:26,320 Yma, mae'r mynegeion yn a, b, c ac a gwerthoedd yw 1, 2, a 3. 128 00:10:26,320 --> 00:10:33,980 Yn PHP nid oes gwahaniaeth rhwng nifer cysylltiadol a dim ond casgliad rheolaidd 129 00:10:33,980 --> 00:10:36,740 fel y byddech yn feddwl amdano o C. 130 00:10:36,740 --> 00:10:43,040 Mae hyn yn unig, ac o dan y cwfl yn arae rheolaidd yn unig yw amrywiaeth cysylltiadol 131 00:10:43,040 --> 00:10:50,000 lle mae 0 mapiau i ryw werth yr un ffordd a mapiau i ryw werth. 132 00:10:50,000 --> 00:11:00,410 Am y rheswm hwn, gall PHP fod yn eithaf drwg i 'n sylweddol ymprydia cod / meincnodi pethau 133 00:11:00,410 --> 00:11:07,930 ers hynny yn C pan fyddwch yn defnyddio amrywiaeth chi'n gwybod bod mynediad i aelod yn cysonyn amser. 134 00:11:07,930 --> 00:11:11,860 Yn PHP mynediad i aelod sy'n gwybod faint o amser? 135 00:11:11,860 --> 00:11:18,970 Mae'n debyg gyson os yw'n hashes gywir. 136 00:11:18,970 --> 00:11:21,620 Pwy a ŵyr beth yw hi go wneud o dan y cwfl? 137 00:11:21,620 --> 00:11:25,600 Rydych yn wir angen i chi edrych ar y gweithredu i weld sut mae'n mynd i ddelio â hynny. 138 00:11:25,600 --> 00:11:28,550 Felly, yna fopen. 139 00:11:28,550 --> 00:11:36,420 Rwy'n credu yma gadewch i 'jyst PHP fopen llaw i edrych ar y math dychwelyd. 140 00:11:36,420 --> 00:11:41,260 Rydym yn gweld yma, gallwch edrych i fyny 'n bert lawer unrhyw swyddogaeth yn y llawlyfr PHP 141 00:11:41,260 --> 00:11:47,540 ac mae hyn yn fath o dudalen dyn o PHP. 142 00:11:47,540 --> 00:11:51,060 Mae'r math dychwelyd yn mynd i fod adnoddau. 143 00:11:51,060 --> 00:11:56,050 Dyna pam yr wyf yn edrych i fyny, oherwydd nid ydym ddim wir yn diffinio adnoddau. 144 00:11:56,050 --> 00:12:04,110 Mae'r syniad o adnoddau, yn C i chi fath o got * FILE neu beth bynnag; 145 00:12:04,110 --> 00:12:07,200 yn PHP yr adnodd yw eich * FILE. 146 00:12:07,200 --> 00:12:10,360 Mae'n beth rydych chi'n mynd i gael ei ddarllen o, dyma beth rydych chi'n mynd i gael ei ysgrifennu i. 147 00:12:10,360 --> 00:12:20,710 Mae'n allanol fel arfer, felly mae'n adnodd y gallwch ei dynnu pethau o a thaflu pethau i. 148 00:12:20,710 --> 00:12:26,520 Ac yn olaf, beth yw'r math o null? >> [Myfyrwyr] NULL. 149 00:12:26,520 --> 00:12:30,650 Yeah. Felly, yr unig beth sy'n NULL yn null. 150 00:12:30,650 --> 00:12:33,480 NULL yn null. 151 00:12:35,490 --> 00:12:41,170 >> Un nodwedd o system fath PHP (er gwell neu er gwaeth) yw ei allu i jyglo fath. 152 00:12:41,170 --> 00:12:44,390 Pan fyddwch yn ysgrifennu llinell o PHP cod sy'n cyfuno gwerthoedd fathau gwahanol, 153 00:12:44,390 --> 00:12:46,670 Bydd PHP ceisio gwneud y peth synhwyrol. 154 00:12:46,670 --> 00:12:48,920 Rhowch gynnig ar bob un o'r llinellau canlynol o PHP cod. Beth sy'n argraffu? 155 00:12:48,920 --> 00:12:51,000 A yw'n beth oeddech yn ei ddisgwyl? Pam neu pam ddim? 156 00:12:51,000 --> 00:12:58,600 Mae'r ffaith hon am PHP yw'r hyn yn ei gwneud yn yr hyn a alwn wan teipio. 157 00:12:58,600 --> 00:13:04,610 Teipio wan ac yn teipio yn gryf, 158 00:13:04,610 --> 00:13:06,840 mae yna wahanol ddefnyddiau ar gyfer y termau hynny, 159 00:13:06,840 --> 00:13:12,020 ond mae rhan fwyaf o bobl yn defnyddio teipio wan ac yn teipio yn gryf i olygu y math hwn o beth 160 00:13:12,020 --> 00:13:15,920 lle ("1" + 2); sy'n gweithio. 161 00:13:15,920 --> 00:13:18,290 Yn C na fyddai'n gweithio. 162 00:13:18,290 --> 00:13:22,490 Gallwch ddychmygu hyn nad ydynt yn gweithio. 163 00:13:22,490 --> 00:13:29,200 Mae llawer o bobl yn cymysgu i fyny teipio deinamig a theipio gwan a theipio statig a theipio cryf. 164 00:13:29,200 --> 00:13:34,050 Python yn enghraifft arall o iaith sydd wedi teipio ddeinamig. 165 00:13:34,050 --> 00:13:41,770 Gallwch daflu yn ymwneud â mathau mewn newidynnau ac mae'n mynd i benderfynu pan yn rhedeg 166 00:13:41,770 --> 00:13:44,680 unrhyw checkings wall. 167 00:13:44,680 --> 00:13:50,740 Yn Python mae'n mynd i weithredu hyn a bydd yn gweld ("1" + 2); 168 00:13:50,740 --> 00:13:55,920 a bydd hyn yn methu oherwydd ei fod yn dweud nad ydych yn gallu ychwanegu llinyn a cyfanrif. 169 00:13:55,920 --> 00:14:00,860 Yn PHP, sydd yr un mor ddynamig teipio, ni fydd hyn yn methu. 170 00:14:00,860 --> 00:14:04,220 Teipio gwan wedi ei wneud â'r ffaith ei fod yn gwneud pethau gyda mathau 171 00:14:04,220 --> 00:14:07,800 nad ydynt yn wir yn gwneud synnwyr o reidrwydd. 172 00:14:07,800 --> 00:14:17,420 Felly ("1" + 2); Gallaf ddychmygu bod y llinyn 12, gallaf ddychmygu ei fod yn y llinyn 3, 173 00:14:17,420 --> 00:14:20,710 Gallaf ddychmygu ei fod yn y 3 gyfanrif. 174 00:14:20,710 --> 00:14:24,530 Dyw hi ddim o reidrwydd yn bendant, ac rydym yn fwy na thebyg yn mynd i weld yma 175 00:14:24,530 --> 00:14:29,140 pan fyddwn yn argraffu ("1" + 2); mae'n debyg yn mynd i roi diwedd ar i fyny fod yn wahanol 176 00:14:29,140 --> 00:14:32,320 nag argraffu (1 + "2"). 177 00:14:32,320 --> 00:14:39,700 Ac mae hyn yn tueddu i fod, yn fy marn i, er gwaeth. 178 00:14:39,700 --> 00:14:44,240 Yma, gallwn roi cynnig ar y rhain. 179 00:14:44,240 --> 00:14:48,740 Arall castia ychydig am PHP yw nad oes angen i chi ysgrifennu mewn gwirionedd y ffeil. 180 00:14:48,740 --> 00:14:52,790 Yw'n wedi rhedeg y dull hwn gorchymyn. 181 00:14:52,790 --> 00:14:57,710 Felly, php-r, yna gallwn daflu yn y gorchymyn yma: 182 00:14:57,710 --> 00:15:06,610 "Print ('1 '+ 2);" a byddaf yn taflu llinell newydd. 183 00:15:19,550 --> 00:15:23,970 Mae hyn yn argraffu 3. 184 00:15:31,100 --> 00:15:35,330 Mae'n edrych fel y bydd yn argraffu 3 a 'i' y 3 gyfanrif. 185 00:15:35,330 --> 00:15:38,420 Felly nawr gadewch i ni roi cynnig ar y ffordd arall o gwmpas: 186 00:15:38,420 --> 00:15:42,970 "Print (1 + '2 '); 187 00:15:45,560 --> 00:15:50,490 Rydym yn cael 3, ac a yw'n hefyd yn mynd i fod yn gyfanrif 3? Rwyf yn onest i ddim syniad. 188 00:15:50,490 --> 00:15:54,030 Mae'n edrych fel 'na yn gyson. 189 00:15:54,030 --> 00:15:59,550 Nid oes byth unrhyw siawns o ei fod yn y 12 llinyn neu unrhyw beth fel 'na 190 00:15:59,550 --> 00:16:08,080 oherwydd PHP, yn wahanol i JavaScript a Java hefyd, 191 00:16:08,080 --> 00:16:11,670 Mae gweithredwr ar wahân ar gyfer concatenation. 192 00:16:11,670 --> 00:16:14,930 Concatenation yn PHP yn dot. 193 00:16:14,930 --> 00:16:22,950 Felly argraffu (1 '2 '.); Yn mynd i roi i ni 12. 194 00:16:25,790 --> 00:16:32,420 Mae hyn yn tueddu i arwain at ddryswch lle mae pobl yn ceisio gwneud rhywbeth fel str + = 195 00:16:32,420 --> 00:16:37,840 rhyw beth arall y maent yn awyddus i ychwanegu at ddiwedd eu llinyn, ac mae hynny'n mynd i fethu. 196 00:16:37,840 --> 00:16:40,770 Mae angen i chi wneud str. = 197 00:16:42,000 --> 00:16:46,240 Felly, peidiwch ag anghofio concatenation yn PHP yn dot. 198 00:16:46,240 --> 00:16:52,100 Pethau eraill i roi cynnig ar: argraffu ("CS" + 50); 199 00:16:55,750 --> 00:17:03,610 Rwyf wedi dweud wrthych nad oes unrhyw obaith o hyn arwain at CS50 200 00:17:03,610 --> 00:17:06,119 gan nad yw concatenation +. 201 00:17:06,119 --> 00:17:08,440 Beth ydych chi'n meddwl bod hyn yn mynd i roi diwedd ar i fyny fod yn? 202 00:17:10,359 --> 00:17:13,460 Yr wyf yn wir wedi gwbl ddim syniad. 203 00:17:14,250 --> 00:17:16,460 Mae'n edrych fel ei fod dim ond 50. 204 00:17:16,460 --> 00:17:21,490 Mae'n gweld y llinyn, ac fe fentraf os ydym yn rhoi 123CS - 205 00:17:21,490 --> 00:17:29,640 Mae'n gweld y llinyn cyntaf, mae'n ceisio i ddarllen cyfanrif ohono neu nifer ohono. 206 00:17:29,640 --> 00:17:31,710 Yn yr achos hwn mae'n gweld 123CS. 207 00:17:31,710 --> 00:17:35,190 "Nid yw hynny'n gwneud synnwyr fel cyfanrif, felly Im 'jyst yn mynd i feddwl o 123." 208 00:17:35,190 --> 00:17:38,580 Felly 123 + 50 yn mynd i fod yn 173. 209 00:17:38,580 --> 00:17:40,740 Ac yma mae'n dechrau darllen hwn fel cyfanrif. 210 00:17:40,740 --> 00:17:45,690 Nid yw'n gweld unrhyw beth, felly dim ond yn ei drin fel 0. Felly 0 + 50 yn cael ei mynd i fod yn 50. 211 00:17:45,690 --> 00:17:51,600 Mae hyn yr wyf i'n tybio yn mynd i wneud rhywbeth tebyg. 212 00:17:51,600 --> 00:17:54,310 Rydw i'n meddwl 99. 213 00:17:54,310 --> 00:17:57,580 Yeah, oherwydd ei fod yn mynd i gymryd y cyntaf - 214 00:18:12,880 --> 00:18:15,730 Felly 99. 215 00:18:15,730 --> 00:18:21,970 Yma (10/7), os yw hyn yn C, beth fyddai hynny'n ei dychwelyd? 216 00:18:23,700 --> 00:18:29,630 [Myfyrwyr] 1. >> Yeah, byddai'n 1 oherwydd 10/7 yn rhannu 2 gyfanrifau. 217 00:18:29,630 --> 00:18:32,910 Cyfanrif wedi'i rannu gan cyfanrif yn mynd i ddychwelyd yn gyfanrif. 218 00:18:32,910 --> 00:18:37,750 Ni all ddychwelyd 1 pwynt beth bynnag byddai hynny, felly mae'n jyst yn mynd i ddychwelyd 1. 219 00:18:37,750 --> 00:18:46,120 Yma argraffu (10/7); mae'n mynd i mewn gwirionedd yn dehongli hynny. 220 00:18:46,120 --> 00:18:53,760 Ac mae hyn yn golygu, os ydych ei eisiau mewn gwirionedd i wneud talgrynnu cyfanrif a phethau fel 'na, 221 00:18:53,760 --> 00:18:59,950 angen i chi wneud print (llawr (10/7)); 222 00:18:59,950 --> 00:19:08,460 Yn C mae'n debyg 'n annaearol y gallwch ddibynnu ar cwtogi cyfanrif yn rheolaidd, 223 00:19:08,460 --> 00:19:12,260 ond yn PHP nad ydych yn gallu oherwydd ei fod yn awtomatig yn troi i mewn i arnofio. 224 00:19:13,430 --> 00:19:17,610 Ac yna (7 + wir); beth ydych chi'n feddwl sy'n mynd i fod? 225 00:19:18,550 --> 00:19:23,640 Rwy'n dyfalu 8 os mae'n mynd i ddehongli wir fel 1. 226 00:19:23,640 --> 00:19:25,740 Mae'n edrych fel ei fod yn 8. 227 00:19:25,740 --> 00:19:31,710 >> Felly unrhyw beth yr ydym wedi ei wneud yn y 10 munud diwethaf ddylid byth byddwch yn llwyr yn ei wneud. 228 00:19:31,710 --> 00:19:39,870 Byddwch yn gweld cod sy'n gwneud hyn. 229 00:19:39,870 --> 00:19:42,700 Nid oes rhaid i fod mor syml â hyn. 230 00:19:42,700 --> 00:19:47,240 Gallech gael 2 newidynnau, ac 1 newidyn yn digwydd i fod yn llinyn 231 00:19:47,240 --> 00:19:51,310 a'r newidyn arall yn digwydd i fod yn int, ac yna fyddwch yn ychwanegu hyn at ei gilydd newidynnau. 232 00:19:51,310 --> 00:20:00,120 Ers PHP ei deipio ddynamig ac ni fydd yn gwneud unrhyw fath gwirio i chi 233 00:20:00,120 --> 00:20:03,640 ac ers ei fod yn wan ac yn teipio gan y bydd yn dim ond yn awtomatig taflu pethau at ei gilydd y 234 00:20:03,640 --> 00:20:11,490 a bydd popeth yn unig yn gweithio, mae'n anodd i hyd yn oed yn gwybod bod yn rhaid newidyn hwn fod yn llinyn yn awr, 235 00:20:11,490 --> 00:20:14,930 felly ni ddylwn ei ychwanegu at y newidyn, sydd yn gyfanrif. 236 00:20:18,780 --> 00:20:24,560 Yr arfer gorau yw os yw newidyn yn llinyn, cadwch ef fel llinyn am byth. 237 00:20:24,560 --> 00:20:26,980 Os newidyn yn int, ei gadw fel int am byth. 238 00:20:26,980 --> 00:20:30,770 Os ydych am i ddelio gyda chyfanrifau a llinynnau, 239 00:20:30,770 --> 00:20:36,970 gallwch ddefnyddio varsint - dyna JavaScript. 240 00:20:36,970 --> 00:20:42,520 Intval. Rwy'n gwneud hyn drwy'r amser. PHP a JavaScript I cymysgu i fyny bopeth. 241 00:20:42,520 --> 00:20:47,600 Felly intval yn mynd i ddychwelyd y gwerth cyfanrifol newidyn. 242 00:20:47,600 --> 00:20:56,550 Os byddwn yn pasio yn "print (intval ('123 ')); byddwch yn cael 123. 243 00:21:06,820 --> 00:21:15,850 Nid Intval ei hun yn mynd i wneud y siec i ni ei fod yn unig yn gyfanrif. 244 00:21:15,850 --> 00:21:20,460 Mae'r llawlyfr PHP, mae swyddogaethau a dim ond cymaint sydd ar gael, 245 00:21:20,460 --> 00:21:26,560 felly dyma wyf yn meddwl beth byddwn yn ei ddefnyddio yn is_numeric gyntaf. 246 00:21:26,560 --> 00:21:32,590 Rwy'n dyfalu a ddychwelodd ffug. 247 00:21:32,590 --> 00:21:35,780 Dyna'r peth arall mae'n rhaid i ni fynd drosodd yn ===. 248 00:21:37,850 --> 00:21:44,020 Felly is_numeric ('123df '), fyddech chi ddim yn meddwl am hynny fel is_numeric. 249 00:21:44,020 --> 00:21:46,720 Yn C byddai'n rhaid i chi ailadrodd dros yr holl gymeriadau 250 00:21:46,720 --> 00:21:50,410 ac yn gwirio i weld os yw pob cymeriad yn digid neu beth bynnag. 251 00:21:50,410 --> 00:21:53,850 Yma is_numeric yn mynd i wneud hynny i ni, 252 00:21:53,850 --> 00:21:56,520 ac mae'n dychwelyd ffug. 253 00:21:56,520 --> 00:22:02,120 Felly, pan fyddaf yn argraffedig, ei hargraffu ddim, felly dyma yr wyf yn ei gymharu i weld, 254 00:22:02,120 --> 00:22:05,490 wnaethoch chi yn digwydd bod yn ffug? Ac felly, yn awr ei fod yn argraffu 1. 255 00:22:05,490 --> 00:22:10,060 Mae'n debyg y bydd yn argraffu 1 fel gwir yn hytrach na argraffu yn wir yn wir. 256 00:22:10,060 --> 00:22:15,790 Tybed os wyf yn gwneud print_r. Na, mae'n dal i wneud 1. 257 00:22:15,790 --> 00:22:26,760 >> Fynd yn ôl at ===, == yn dal i fodoli, 258 00:22:26,760 --> 00:22:32,260 ac os ydych yn siarad â Tommy bydd e'n == yn berffaith iawn. 259 00:22:32,260 --> 00:22:37,700 Rydw i'n mynd i ddweud bod == yn ofnadwy ac ni ddylech fyth ddefnyddio ==. 260 00:22:37,700 --> 00:22:44,870 Y gwahaniaeth yw bod == cymharu pethau 261 00:22:44,870 --> 00:22:48,450 lle gall fod yn wir hyd yn oed os nad ydynt yn yr un math, 262 00:22:48,450 --> 00:22:53,810 tra === cymharu pethau ac yn gyntaf mae'n gwiriadau ydynt yr un fath? 263 00:22:53,810 --> 00:22:58,010 Ydw. Iawn, nawr rwy'n mynd i weld os ydynt mewn gwirionedd cymharu i fod yn gyfartal. 264 00:22:58,010 --> 00:23:08,890 Byddwch yn cael pethau od fel 10 yn dychwelyd - gadewch i ni weld beth mae hynny'n ei ddweud. 265 00:23:08,890 --> 00:23:15,570 Felly ('10 ''1 == e1'); 266 00:23:15,570 --> 00:23:17,980 Mae hyn yn wir yn dychwelyd. 267 00:23:17,980 --> 00:23:21,420 A oes gan unrhyw un ddyfalu pam mae hyn yn dychwelyd yn wir? 268 00:23:25,180 --> 00:23:27,120 Nid dim ond am hynny. Efallai mai dyma awgrym. 269 00:23:27,120 --> 00:23:33,170 Ond os byddaf yn newid hynny i f - asio ei! Rwy'n cadw defnyddio dyfynodau dwbl. 270 00:23:33,170 --> 00:23:38,780 Y rheswm y dyfynodau dwbl yn gweiddi arna i yw am fy mod wedi rhoi hyn mewn dyfynodau dwbl. 271 00:23:38,780 --> 00:23:43,850 Felly, gallwn ddianc rhag y dyfynodau dwbl mewn yma, ond dyfyniadau sengl yn ei gwneud yn haws. 272 00:23:43,850 --> 00:23:49,120 Felly ('10 ''1 == f1'), nid yw'n wir argraffu. ('10 ''1 == E1'); printiau wir. 273 00:23:49,120 --> 00:23:56,330 [Myfyrwyr] A yw'n hecs? >> Dyw hi ddim yn felltith, ond mae'n agos y mae fel - 274 00:23:56,330 --> 00:24:01,060 1e1, nodiant gwyddonol. 275 00:24:01,060 --> 00:24:07,950 Mae'n cydnabod 1e1 fel 1 * 10 ^ 1 neu beth bynnag. 276 00:24:07,950 --> 00:24:11,510 Mae'r rhai yn gyfanrifau cyfartal. 277 00:24:11,510 --> 00:24:15,930 Os ydym yn ei wneud === yna mae'n mynd i fod yn ffug. 278 00:24:15,930 --> 00:24:28,490 Fi 'n weithredol yn cael unrhyw syniad os ydym yn ei wneud == beth am (10 a '10abc');? Mae pob hawl. Felly, mae hynny'n wir. 279 00:24:28,490 --> 00:24:35,940 Felly, yn union fel pan wnaethoch chi (10 + '10abc '), a fyddai'n 20, 280 00:24:35,940 --> 00:24:38,800 yma (10 == '10abc '); yn wir. 281 00:24:38,800 --> 00:24:45,350 Hyd yn oed yn waeth yw pethau fel (ffug == NULL); yn wir 282 00:24:45,350 --> 00:24:52,210 neu (ffug == 0); yn wir, (ffug == []); 283 00:24:52,210 --> 00:25:00,970 Mae yna achosion rhyfedd - Dyna un o'r achosion hynny 'n annaearol. 284 00:25:00,970 --> 00:25:08,110 Sylwch fod (ffug == []); yn wir. 285 00:25:08,110 --> 00:25:11,950 ('0 '== Ffug); yn wir. 286 00:25:11,950 --> 00:25:16,090 ('0 '== []); Yn ffug. 287 00:25:16,090 --> 00:25:19,090 Felly == mewn unrhyw ffordd transitive. 288 00:25:19,090 --> 00:25:26,830 gall fod yn hafal i b a gall fod yn hafal i c, 289 00:25:26,830 --> 00:25:29,340 ond efallai na b yn hafal i c. 290 00:25:29,340 --> 00:25:35,580 Dyna ffiaidd i mi, a dylech bob amser ddefnyddio ===. 291 00:25:35,580 --> 00:25:38,590 [Myfyrwyr] Allwn ni wneud! == Hefyd? >> [Bowden] Ydw. 292 00:25:38,590 --> 00:25:44,600 Byddai'r cyfwerth fod! = A! ==. 293 00:25:44,600 --> 00:25:48,230 Mae hyn yn cael ei ddwyn i fyny mewn gwirionedd yn y fanyleb pset 294 00:25:48,230 --> 00:25:52,000 lle mae llawer o swyddogaethau dychwelyd - 295 00:25:52,000 --> 00:25:53,890 Mae'r llawlyfr PHP yn dda ynglŷn â hyn. 296 00:25:53,890 --> 00:25:59,140 Mae'n rhoi mewn blwch coch mawr, "Bydd hyn yn dychwelyd ffug os oes gwall." 297 00:25:59,140 --> 00:26:03,940 Ond 0 yn dychwelyd yn beth hollol resymol i ddychwelyd. 298 00:26:03,940 --> 00:26:08,250 Meddyliwch am unrhyw swyddogaeth y disgwylir iddo ddychwelyd yn gyfanrif. 299 00:26:11,250 --> 00:26:17,880 Lets 'ddeud y swyddogaeth hon i fod i gyfrif y nifer o linellau mewn ffeil neu rywbeth. 300 00:26:17,880 --> 00:26:23,490 O dan amgylchiadau arferol, byddwch yn mynd heibio swyddogaeth hon ffeil 301 00:26:23,490 --> 00:26:27,120 ac mae'n mynd i ddychwelyd yn gyfanrif sy'n cynrychioli nifer y llinellau. 302 00:26:27,120 --> 00:26:30,820 Felly 0 yn nifer berffaith resymol os yw'r ffeil yn unig wag. 303 00:26:30,820 --> 00:26:36,810 Ond beth os ydych yn ei drosglwyddo ffeil annilys a swyddogaeth yn digwydd dychwelyd ffug 304 00:26:36,810 --> 00:26:38,860 os byddwch yn ei throsglwyddo ffeil annilys? 305 00:26:38,860 --> 00:26:46,500 Os ydych yn unig yn gwneud == nad ydych yn gwahaniaethu rhwng yr achos ffeil annilys a ffeil gwag. 306 00:26:48,870 --> 00:26:51,350 Bob amser yn defnyddio ===. 307 00:26:55,690 --> 00:26:58,000 Dyna'r cyfan o'r rheiny. 308 00:26:58,000 --> 00:27:01,660 >> Yn PHP, y math amrywiaeth yn wahanol i'r hyn rydych chi'n ei ddefnyddio yn C. 309 00:27:01,660 --> 00:27:06,650 Yn wir, efallai eich bod wedi sylwi ar hyn eisoes uchod pan fyddwch chi'n gweld bod hyn o amrywiaeth fath. 310 00:27:06,650 --> 00:27:15,640 Mae'r gystrawen braced yn newydd fel o PHP 5.4, sef y fersiwn diweddaraf o PHP. 311 00:27:15,640 --> 00:27:36,960 Cyn hyn i chi bob amser wedi ysgrifennu array ('a' -> 1, 'b' -> 2. 312 00:27:36,960 --> 00:27:41,160 Dyna oedd y Constructor am arae. 313 00:27:41,160 --> 00:27:45,950 Nawr PHP wedi dod o'r diwedd at y gystrawen 'n glws o ychydig cromfachau sgwâr, 314 00:27:45,950 --> 00:27:50,900 sydd ychydig yn well o lawer nag amrywiaeth. 315 00:27:50,900 --> 00:27:54,480 Ond o ystyried PHP 5.4 yw'r fersiwn mwyaf newydd, 316 00:27:54,480 --> 00:27:59,090 efallai y byddwch yn dod ar draws lleoedd nad ydynt hyd yn oed PHP 5.3. 317 00:27:59,090 --> 00:28:08,220 Dros yr haf, rydym yn rhedeg i mewn i'r mater lle roedd PHP 5.3 Beth rydym yn ei gael ar yr offer, 318 00:28:08,220 --> 00:28:14,480 ond y gweinydd ein bod yn defnyddio ein holl lyfr gradd a chyflwyno a'r holl bethau i 319 00:28:14,480 --> 00:28:16,750 Roedd PHP 5.4. 320 00:28:16,750 --> 00:28:23,060 Ddim yn gwybod hyn, rydym wedi datblygu yn 5.3, gwthio i 5.4, 321 00:28:23,060 --> 00:28:25,660 ac erbyn hyn i gyd o un sydyn o'n cod yn gweithio 322 00:28:25,660 --> 00:28:28,680 oherwydd yno y digwyddodd newidiadau wedi bod rhwng 5.3 a 5.4 323 00:28:28,680 --> 00:28:31,030 nad ydynt yn gydnaws yn ôl, 324 00:28:31,030 --> 00:28:35,770 a rhaid i ni fynd a gosod ein holl bethau nad ydynt yn gweithio ar gyfer PHP 5.4. 325 00:28:39,210 --> 00:28:42,320 Ar gyfer y dosbarth, gan fod yr offer yn cael PHP 5.4, 326 00:28:42,320 --> 00:28:45,490 mae'n berffaith iawn i ddefnyddio cromfachau sgwâr. 327 00:28:47,240 --> 00:28:50,440 Ond os ydych yn chwilio am bethau o amgylch y Rhyngrwyd, 328 00:28:50,440 --> 00:28:54,880 os ydych chi'n edrych i fyny rhyw fath o bethau amrywiaeth, yn fwyaf tebygol ydych yn mynd i weld 329 00:28:54,880 --> 00:29:02,020 y cyfnod diweddar allan cystrawen Constructor amrywiaeth ers hynny wedi bod o gwmpas ers PHP ei eni 330 00:29:02,020 --> 00:29:07,340 a chystrawen braced sgwâr wedi bod o gwmpas ers y misoedd diwethaf cwpl 331 00:29:07,340 --> 00:29:10,020 neu bryd bynnag 5.4 Daeth o gwmpas. 332 00:29:10,020 --> 00:29:12,710 Dyma sut rydych mynegai. 333 00:29:12,710 --> 00:29:30,610 Yn union fel yn C sut y byddech yn mynegai cromfachau sgwâr fel $ array [0], $ array [1], $ array [2], 334 00:29:30,610 --> 00:29:36,320 chi fynegai yr un modd os ydych yn digwydd i gael eich mynegeion cael eu llinynnau. 335 00:29:36,320 --> 00:29:40,440 Amrywiaeth Felly $ array ['a'] a $ ['b']. 336 00:29:40,440 --> 00:29:47,410 $ Array [b]. Pam y byddai hyn yn anghywir? 337 00:29:52,490 --> 00:29:59,870 Mae'n debygol y bydd yn cynhyrchu rhybudd ond yn dal i weithio. PHP yn tueddu i wneud hynny. 338 00:29:59,870 --> 00:30:04,890 Mae'n tueddu i ychydig, "Rydw i'n mynd i eich rhybuddio am hyn, ond Im 'jyst yn mynd i gadw i fynd 339 00:30:04,890 --> 00:30:07,550 "Ac yn gwneud beth bynnag y gallaf." 340 00:30:07,550 --> 00:30:11,500 Mae'n debyg y bydd cyfieithu hyn i llinyn, 341 00:30:11,500 --> 00:30:15,000 ond mae'n bosibl bod ar ryw adeg yn y gorffennol rhywun ddweud 342 00:30:15,000 --> 00:30:20,180 diffinio b i fod yn 'HELO BYD'. 343 00:30:20,180 --> 00:30:28,740 Felly, yn awr y gallai fod b amrywiaeth cyson a $ [b] mewn gwirionedd yn ei wneud 'HELO BYD'. 344 00:30:28,740 --> 00:30:32,380 Rwy'n credu ar y pwynt hwn, neu o leiaf ein lleoliadau PHP, 345 00:30:32,380 --> 00:30:37,870 os ydych yn ceisio mynegai i mewn i amrywiaeth ac nad yw allwedd yn bodoli, bydd yn methu. 346 00:30:37,870 --> 00:30:40,150 Nid wyf yn credu y bydd yn dim ond eich rhybuddio. 347 00:30:40,150 --> 00:30:44,560 Neu o leiaf gallwch ei osod fel nad yw dim ond yn eich rhybuddio, 'i jyst yn syth i fyny yn methu. 348 00:30:44,560 --> 00:30:49,290 >> Y ffordd eich bod yn gwirio i weld a oes gwirionedd yn fath mynegai yn ISSET. 349 00:30:49,290 --> 00:30:54,690 Felly, bydd ISSET ($ array ['HELO BYD']) yn dychwelyd ffug. 350 00:30:54,690 --> 00:30:59,160 ISSET ($ array ['b']) yn dychwelyd yn wir. 351 00:31:06,830 --> 00:31:09,880 Gallwch gymysgu hyn chystrawennau. 352 00:31:15,060 --> 00:31:22,440 Rwy'n eithaf siwr beth fyddai hyn yn amrywiaeth y pen draw yn cael yw - Gallwn brofi 'ii maes. 353 00:31:43,290 --> 00:31:45,700 O, rwy'n angen PHPWord. 354 00:31:53,960 --> 00:32:00,260 Mae hyn yn cymysgu y gystrawen lle rydych yn nodi beth yw'r allweddol yw 355 00:32:00,260 --> 00:32:03,330 ac nad ydych yn nodi beth yw'r allweddol yw. 356 00:32:03,330 --> 00:32:05,520 Hynny 3 dde yma yn werth. 357 00:32:05,520 --> 00:32:08,080 Nad ydych wedi dweud yn benodol beth yw ei allwedd yn mynd i fod. 358 00:32:08,080 --> 00:32:11,670 Beth ydych chi'n meddwl ei allwedd yn mynd i fod? 359 00:32:11,670 --> 00:32:21,410 [Myfyrwyr] 0. >> Rwy'n dyfalu 0 dim ond am ei fod y cyntaf nid ydym wedi nodi. 360 00:32:21,410 --> 00:32:23,500 Gallwn ei wneud mewn gwirionedd ychydig o'r achosion hyn. 361 00:32:23,500 --> 00:32:28,030 Felly print_r yn argraffu ailadroddus. Bydd yn argraffu'r amrywiaeth gyfan. 362 00:32:28,030 --> 00:32:32,700 Byddai'n argraffu subarrays y rhesi os oedd unrhyw. 363 00:32:32,700 --> 00:32:36,630 Felly print_r ($ array); php.test.php. 364 00:32:36,630 --> 00:32:38,810 Yw'n edrych fel ei fod yn rhoi ei 0. 365 00:32:38,810 --> 00:32:43,530 Mae mewn gwirionedd yn rhywbeth i gadw mewn cof yma, ond byddwn yn mynd yn ôl ato mewn eiliad. 366 00:32:43,530 --> 00:32:45,850 Ond beth os wyf yn digwydd i wneud hyn yn mynegai 1? 367 00:32:45,850 --> 00:32:51,170 Nid yw PHP yn gwahaniaethu rhwng mynegeion llinyn a mynegeion cyfanrif, 368 00:32:51,170 --> 00:33:00,280 hynny ar y pwynt hwn rwyf wedi diffinio dim ond mynegai 1 a gallaf wneud y ddau arae $ [1] a $ array ['1 '] 369 00:33:00,280 --> 00:33:06,250 a bydd yn y mynegai un a'r un allweddol. 370 00:33:06,250 --> 00:33:13,000 Felly, nawr beth yn eich barn chi 3 yn mynd i fod? >> [Myfyrwyr] 2. >> [Bowden] Rwy'n dyfalu 2. 371 00:33:16,000 --> 00:33:18,690 Yeah. Mae'n 2. 372 00:33:18,690 --> 00:33:24,790 Beth os ydym yn gwneud hyn yw 10, mae hyn yn 4? Beth ydych chi'n meddwl y mynegai o 3 yn mynd i fod? 373 00:33:27,360 --> 00:33:29,110 Rydw i'n meddwl 11. 374 00:33:29,110 --> 00:33:33,060 Fy ddyfalu ynghylch yr hyn PHP yn ei wneud - ac yr wyf yn meddwl fy mod i wedi gweld hyn o'r blaen - 375 00:33:33,060 --> 00:33:39,760 a yw'n dim ond yn cadw golwg ar yr hyn y mynegai uchaf rhifol caiff ei ddefnyddio hyd yn hyn. 376 00:33:39,760 --> 00:33:44,230 Nid yw byth yn mynd i neilltuo mynegai llinyn i 3. Bydd bob amser yn mynegai rhifol. 377 00:33:44,230 --> 00:33:47,690 Felly mae'n cadw golwg ar yr un uchaf ei fod yn neilltuo hyd yn hyn, sy'n digwydd i fod yn 10, 378 00:33:47,690 --> 00:33:52,540 ac mae'n mynd i roi 11-3. 379 00:33:52,540 --> 00:34:02,110 Yr hyn a ddywedais o'r blaen, sylwi ar y ffordd y caiff ei argraffu y casgliad. 380 00:34:02,110 --> 00:34:06,850 Mae'n printiau 10 allweddol, allweddol 4, allweddol 11, allweddol d. 381 00:34:06,850 --> 00:34:09,790 Neu hyd yn oed gadewch i ni ei wneud - 382 00:34:15,760 --> 00:34:22,489 Amcana Doeddwn i ddim yn rhoi 0, ond mae'n argraffu 1, 2, 3, 4. 383 00:34:22,489 --> 00:34:29,330 Beth os byddaf yn newid yma? Neu gadewch i ni mewn gwirionedd yn newid hyn 2. 384 00:34:29,330 --> 00:34:31,940 Nawr bydd yn argraffu 2, 1, 3, 4. 385 00:34:31,940 --> 00:34:41,270 Nid yw PHP yn araeau yn union fel eich bwrdd rheolaidd hash. 386 00:34:41,270 --> 00:34:45,570 Mae'n berffaith resymol i feddwl amdanynt fel tablau hash 99% o'r amser. 387 00:34:45,570 --> 00:34:53,790 Ond yn eich tablau hash oes unrhyw synnwyr o drefn y mae pethau'n cael eu mewnosod. 388 00:34:53,790 --> 00:34:56,639 Felly, cyn gynted ag y byddwch yn mewnosod i mewn i'ch bwrdd hash, 389 00:34:56,639 --> 00:35:00,590 cymryd yn ganiataol nad oes rhestr cysylltiedig a gallech farnu o fewn rhestr cysylltiedig 390 00:35:00,590 --> 00:35:03,980 a fewnosodwyd yn gyntaf. 391 00:35:03,980 --> 00:35:10,060 Ond dyma ni fewnosod cyntaf 2 ac yn gwybod pryd mae'n argraffu hon amrywiaeth bod 2 yn dod yn gyntaf. 392 00:35:10,060 --> 00:35:13,090 Nid yw'n ei hargraffu mewn dim ond unrhyw drefn. 393 00:35:13,090 --> 00:35:17,550 Mae strwythur y data technegol ei fod yn defnyddio map yn archebu, 394 00:35:17,550 --> 00:35:24,690 felly mae'n mapio allweddi i werthoedd ac mae'n cofio ym mha drefn y allweddi yn cael eu mewnosod. 395 00:35:24,690 --> 00:35:31,600 Yn y bôn mae'n rhai cymhlethdodau lle mae'n blino i mewn gwirionedd - 396 00:35:31,600 --> 00:35:34,510 Lets 'ddeud oes gennych amrywiaeth 0, 1, 2, 3, 4, 5 397 00:35:34,510 --> 00:35:37,700 ac rydych eisiau mynd allan mynegai 2. 398 00:35:37,700 --> 00:35:47,750 Un ffordd o wneud hynny, gadewch i ni weld beth sy'n edrych fel. 399 00:35:47,750 --> 00:35:50,410 0, 2, 1, 3, 4. 400 00:35:50,410 --> 00:35:54,880 Datosod digwydd i Datosod yn y ddwy newidynnau a mynegeion amrywiaeth. 401 00:35:54,880 --> 00:35:58,630 Felly unset ($ array [2]); 402 00:35:58,630 --> 00:36:03,430 Nawr beth hyn yn mynd i edrych fel? 2 yn mynd yn unig, felly dyna berffaith iawn. 403 00:36:03,430 --> 00:36:11,670 Mwy o blino yw os ydych am i bethau fod fel mewn gwirionedd arae. 404 00:36:11,670 --> 00:36:14,910 Byddaf yn rhoi rhifau ar hap. 405 00:36:14,910 --> 00:36:20,400 Nawr sylwi fy mynegeion. 406 00:36:20,400 --> 00:36:26,860 Yr wyf am iddo yr un fath ag amrywiaeth C ble mae'n mynd o 0 i hyd - 1 407 00:36:26,860 --> 00:36:30,810 a gallaf ailadrodd drosto fel y cyfryw. 408 00:36:30,810 --> 00:36:38,520 Ond nid cyn gynted ag y Datosod yn y mynegai ail beth oedd yn y mynegai 3 yn dod yn awr mynegai 2. 409 00:36:38,520 --> 00:36:44,790 Yn hytrach, 'i jyst yn cael gwared ar y mynegai ac yn awr ydych yn mynd 0, 1, 3, 4. 410 00:36:44,790 --> 00:36:48,740 Mae hyn yn gwbl resymol. 411 00:36:48,740 --> 00:36:53,950 'I' jyst yn blino, ac mae'n rhaid i chi wneud pethau fel sbleis amrywiaeth. Yeah. 412 00:36:53,950 --> 00:36:57,200 >> [Myfyrwyr] Beth fyddai'n digwydd os ydych wedi cael ar gyfer dolen 413 00:36:57,200 --> 00:36:59,630 ac rydych eisiau mynd dros yr holl elfennau? 414 00:36:59,630 --> 00:37:02,290 Pan cyrraedd 2, a fyddai'n ildio erioed? 415 00:37:02,290 --> 00:37:10,150 Ailadrodd dros arae. Mae 2 ffordd y gallwch wneud hynny. 416 00:37:10,150 --> 00:37:12,770 Gallwch ddefnyddio rheolaidd ar gyfer dolen. 417 00:37:12,770 --> 00:37:22,000 Mae hyn yn un arall cymhlethdod PHP. 418 00:37:22,000 --> 00:37:27,420 Rhan fwyaf o ieithoedd, byddwn yn dweud, cael rhyw fath o hyd neu len neu rywbeth 419 00:37:27,420 --> 00:37:30,470 dangos hyd arae. 420 00:37:30,470 --> 00:37:32,820 Yn PHP mae'n cyfrif. 421 00:37:32,820 --> 00:37:36,160 Felly cyfrif ($ array); $ i + +) 422 00:37:36,160 --> 00:37:42,950 Gadewch i 'jyst print ($ array [$ i]); 423 00:37:45,920 --> 00:37:48,820 Rhybudd: amhenodol gwrthbwyso: 2. 424 00:37:48,820 --> 00:37:51,610 Mae'n dim ond yn mynd i fethu. 425 00:37:51,610 --> 00:38:03,020 Dyma'r rheswm, ar gyfer y rhan fwyaf erioed, mae angen i chi ailadrodd dros amrywiaeth fel hyn. 426 00:38:03,020 --> 00:38:07,110 Gallai fod yn gor-ddweud, ond dydych chi byth angen i chi ailadrodd dros amrywiaeth fel hyn 427 00:38:07,110 --> 00:38:19,410 oherwydd PHP yn darparu ei cystrawen foreach lle foreach ($ array â $ eitem). 428 00:38:19,410 --> 00:38:31,830 Nawr, os ydym yn argraffu ($ eitem); - we'll ei drafod mewn eiliad - sy'n gweithio 'n anhyfreg ddirwya. 429 00:38:31,830 --> 00:38:38,960 Mae'r ffordd y foreach yn gweithio yn y ddadl gyntaf yw'r amrywiaeth eich bod yn ailadrodd drosodd. 430 00:38:38,960 --> 00:38:44,060 A'r ail ddadl, eitem, drwy bob tocyn y ddolen ar gyfer 431 00:38:44,060 --> 00:38:52,690 mae'n mynd i gymryd y peth nesaf yn y rhesi. Felly cofiwch yr amrywiaeth yn gorchymyn. 432 00:38:52,690 --> 00:38:55,690 Y tro cyntaf drwy'r gyfer ddolen, eitem yn mynd i fod yn 123 433 00:38:55,690 --> 00:38:59,540 yna bydd fod yn 12, yna bydd yn fod yn 13, yna bydd yn fod yn 23, yna bydd yn 213. 434 00:38:59,540 --> 00:39:04,670 Pethau ca 'n sylweddol' n annaearol pan fyddwch yn gwneud rhywbeth fel foreach. 435 00:39:04,670 --> 00:39:07,480 Gadewch i ni weld beth sy'n digwydd oherwydd ni ddylech wneud hyn. 436 00:39:07,480 --> 00:39:13,320 Beth os ydym yn unset ($ array [1]); 437 00:39:20,410 --> 00:39:26,030 A oedd yn disgwyl yn ôl pob tebyg. 438 00:39:26,030 --> 00:39:30,950 Rydych yn ailadrodd dros y array, a phob tro y byddwch chi'n Llwybrau byr y Bysellfwrdd y mynegai cyntaf. 439 00:39:30,950 --> 00:39:39,720 Felly, ar gyfer mynegai 0, y peth cyntaf, ar eitem yn werth 0, felly mae'n mynd i fod yn 123. 440 00:39:39,720 --> 00:39:44,630 Ond tu mewn i'r ddolen ydym am unset mynegai 1, felly mae hynny'n golygu 12 yn mynd. 441 00:39:44,630 --> 00:39:57,480 Felly argraffu. PHP_EOL. 442 00:39:57,480 --> 00:40:03,580 PHP_EOL yn unig Newline, ond mae'n dechnegol, yn fwy cludadwy 443 00:40:03,580 --> 00:40:08,890 ers newlines i mewn Ffenestri yn wahanol newlines ar Mac a UNIX. 444 00:40:08,890 --> 00:40:18,040 Ar Windows Newline yn \ r \ n, ond ym mhob man arall mae'n tueddu yn unig i fod \ n. 445 00:40:18,040 --> 00:40:25,150 PHP_EOL ei ffurfweddu fel ei fod yn defnyddio beth bynnag y Newline eich system yn. 446 00:40:25,150 --> 00:40:29,310 Felly argraffu hynny. Gadewch i ni beidio print_r ($ array) ar y diwedd. 447 00:40:32,830 --> 00:40:37,390 Doedd gen i ddim syniad y byddai hynny'n cael yr ymddygiad. 448 00:40:41,740 --> 00:40:48,960 Eitem dal i gymryd ar werth 12 er ein bod yn Datosod yn 12 cyn ydym byth yn cael oddi wrth y rhesi. 449 00:40:52,770 --> 00:40:58,840 Peidiwch â chymryd fy ngair ar hyn, ond mae'n edrych fel foreach yn creu copi o'r amrywiaeth 450 00:40:58,840 --> 00:41:02,160 ac yna yr eitem yn cymryd yr holl werthoedd y copi hwnnw. 451 00:41:02,160 --> 00:41:07,760 Felly, hyd yn oed os ydych yn addasu'r amrywiaeth y tu mewn i'r ddolen ar gyfer, 452 00:41:07,760 --> 00:41:17,240 ni fydd yn gofalu. Bydd yr eitem yn cymryd ar y gwerthoedd gwreiddiol. 453 00:41:17,240 --> 00:41:19,240 Gadewch i ni geisio Llwybrau byr y Bysellfwrdd iddo. 454 00:41:19,240 --> 00:41:24,460 Beth os yw hyn yn $ array [1] = "helo"; 455 00:41:24,460 --> 00:41:31,770 Er ein bod yn rhoi "helo" yn y casgliad byth, eitem yn cymryd ar y gwerth. 456 00:41:31,770 --> 00:41:37,430 Mae arall chystrawen i foreach dolenni 457 00:41:37,430 --> 00:41:45,900 lle rydych yn rhoi 2 newidyn gwahanu gan saeth. 458 00:41:45,900 --> 00:41:49,680 Mae'r newidyn cyntaf yn mynd i fod yn allweddol o'r gwerth hwnnw, 459 00:41:49,680 --> 00:41:53,050 ac mae'r newidyn ail yn mynd i fod yr union eitem yr un. 460 00:41:53,050 --> 00:42:01,610 Mae hyn yn anniddorol yma, ond os ydym yn mynd yn ôl at ein achos gwreiddiol o 'a' -> 1, 461 00:42:01,610 --> 00:42:06,090 'B' -> 1, 462 00:42:06,090 --> 00:42:14,470 yma os ydym yn unig ailadrodd ar gyfer pob amrywiaeth fel eitem, eitem yn mynd i fod yn 1 bob tro. 463 00:42:14,470 --> 00:42:18,170 Ond os ydym hefyd eisiau gwybod y allweddol sy'n gysylltiedig â'r eitem honno 464 00:42:18,170 --> 00:42:25,230 yna rydym yn ei wneud â $ allweddol -> $ eitem. 465 00:42:25,230 --> 00:42:31,980 Felly, yn awr gallwn wneud print ($ allweddol. ':'. 466 00:42:31,980 --> 00:42:39,380 Nawr mae'n ailadrodd drosodd ac argraffu pob allweddol a'i werth cysylltiedig. 467 00:42:39,380 --> 00:42:47,030 >> Mae beth ychwanegol y gallwn ei wneud yn foreach dolenni yw efallai y byddwch yn gweld y gystrawen. 468 00:42:47,030 --> 00:42:54,770 Ampersands cyn enwau amrywiol yn tueddu i fod sut PHP yn gwneud cyfeiriadau. 469 00:42:54,770 --> 00:43:00,460 Pan gyfeirir yn debyg iawn i awgrymiadau, 470 00:43:00,460 --> 00:43:04,820 nad oes gennych awgrymiadau, er mwyn i chi byth yn delio gyda'r cof uniongyrchol. 471 00:43:04,820 --> 00:43:12,620 Ond oes gennych gyfeiriadau lle mae 1 newidyn yn cyfeirio at yr un peth â newidyn arall. 472 00:43:12,620 --> 00:43:21,450 Y tu mewn yma gadewch i ni wneud $ eitem. Gadewch i ni fynd yn ôl i 1, 10. 473 00:43:21,450 --> 00:43:28,800 Gadewch i ni wneud $ eitem + +; Mae hynny'n dal yn bodoli yn PHP. Gallwch ddal i wneud + +. 474 00:43:28,800 --> 00:43:38,260 php.test.php. Rhaid i mi ei argraffu. print_r ($ array); 475 00:43:38,260 --> 00:43:42,730 Rydym yn argraffu 2, 11. 476 00:43:42,730 --> 00:43:49,560 Os wyf wedi gwneud yr union foreach ($ array â $ eitem), yna bydd yr eitem yn y gwerth 1 477 00:43:49,560 --> 00:43:54,190 y tro cyntaf yn y ddolen. Bydd yn codiad 1-2 ac yna rydym ni'n ei wneud. 478 00:43:54,190 --> 00:43:57,260 Felly, yna bydd yn mynd trwy y tocyn ail ddolen a bod eitem yn 10. 479 00:43:57,260 --> 00:44:01,570 Mae'n codiadau eitem i 11, ac yna ei daflu i ffwrdd. 480 00:44:01,570 --> 00:44:06,670 Yna rydym yn print_r ($ array), a gadewch i ni weld bod hyn yn dim ond 1, 10. 481 00:44:06,670 --> 00:44:09,070 Felly, y cynyddiad wnaethom ei golli. 482 00:44:09,070 --> 00:44:13,410 Ond foreach ($ array fel & $ eitem) 483 00:44:13,410 --> 00:44:21,910 awr yr eitem hon yr un eitem gan fod hyn yn iawn yma. Mae yr un peth. 484 00:44:21,910 --> 00:44:26,820 Felly, $ eitem + + yn addasu amrywiaeth 0. 485 00:44:29,330 --> 00:44:41,850 Yn y bôn, gallwch hefyd wneud $ k - amrywiaeth> $ eitem a gallwch wneud $ [$ k] + +; 486 00:44:41,850 --> 00:44:48,650 >> Felly, ffordd arall o wneud hynny, rydym yn rhad ac am ddim i addasu eitem, 487 00:44:48,650 --> 00:44:54,070 ond ni fydd yn newid ein casgliad gwreiddiol. 488 00:44:54,070 --> 00:44:59,720 Ond os ydym yn defnyddio k, sef ein prif, yna rydym yn gall dim ond mynegai yn ein amrywiaeth defnyddio'r allweddol 489 00:44:59,720 --> 00:45:01,530 ac codiad hynny. 490 00:45:01,530 --> 00:45:05,410 Mae hyn yn fwy uniongyrchol yn addasu ein casgliad gwreiddiol. 491 00:45:05,410 --> 00:45:10,690 Gallwch hyd yn oed wneud hynny os am ryw reswm eich bod am y gallu i addasu - 492 00:45:10,690 --> 00:45:13,510 Mewn gwirionedd, mae hyn yn gwbl resymol. 493 00:45:13,510 --> 00:45:16,020 Doeddech chi ddim eisiau gorfod ysgrifennu $ array [$ k] + +, 494 00:45:16,020 --> 00:45:27,890 'ch jyst eisiau ysgrifennu $ eitem + + ond rydych yn dal yn awyddus i ddweud os yw ($ k ===' a ') 495 00:45:27,890 --> 00:45:30,620 yna ychwanegiad eitem ac yna ei argraffu ein casgliad. 496 00:45:30,620 --> 00:45:36,290 Felly, yn awr beth ydym yn ei ddisgwyl print_r ei wneud? Beth ddylai gwerthoedd yn cael eu hargraffu? 497 00:45:36,290 --> 00:45:43,770 [Myfyrwyr] 2 a 10. >> [Bowden] Dim ond os yw'r allwedd oedd 'a' rydym yn argraffu mewn gwirionedd yn hynny. 498 00:45:51,940 --> 00:45:55,670 >> Mae'n debyg y byddwch yn anaml iawn, os o gwbl, bydd angen i ddiffinio swyddogaethau yn PHP, 499 00:45:55,670 --> 00:46:03,370 ond efallai y byddwch yn gweld rhywbeth tebyg lle yr ydych yn diffinio swyddogaeth fel beth bynnag swyddogaeth. 500 00:46:03,370 --> 00:46:09,900 Fel arfer byddech yn dweud ($ foo, $ bar) ac yna diffinio ei fod yn beth bynnag. 501 00:46:09,900 --> 00:46:17,580 Ond os wyf yn gwneud hyn, yna mae hynny'n golygu bod beth bynnag galw beth bynnag, 502 00:46:17,580 --> 00:46:25,110 beth bynnag galw Baz, felly mae'r ddadl cyntaf a basiwyd i Baz ellir ei newid. 503 00:46:25,110 --> 00:46:38,100 Gadewch i ni wneud $ foo + +; 504 00:46:38,100 --> 00:46:48,020 ac y tu mewn yma gadewch i ni wneud Baz ($ eitem); 505 00:46:48,020 --> 00:46:52,250 Nawr rydym yn galw swyddogaeth. 506 00:46:52,250 --> 00:46:56,780 Mae'r ddadl yn cael ei gymryd drwy gyfeirio, sy'n golygu os byddwn yn addasu ei 507 00:46:56,780 --> 00:47:00,390 rydym yn addasu'r peth a basiwyd mewn 508 00:47:00,390 --> 00:47:04,420 Ac argraffu hyn rydym yn ei ddisgwyl - oni bai fy mod cyboledig i fyny cystrawen - rydym yn cael 2, 11, 509 00:47:04,420 --> 00:47:06,300 felly roedd mynd i fyny mewn gwirionedd. 510 00:47:06,300 --> 00:47:08,790 Rhybudd arnom angen cyfeiriadau yn 2 le. 511 00:47:08,790 --> 00:47:13,050 Beth os ydw i'n gwneud hyn? Beth yw ystyr hyn? 512 00:47:13,050 --> 00:47:15,810 [Myfyrwyr] Bydd yn newid. >> Yeah. 513 00:47:15,810 --> 00:47:18,290 Eitem yn unig yw copi o werth yn y rhesi. 514 00:47:18,290 --> 00:47:26,670 Felly, bydd yn newid i eitem 2, ond y casgliad ['a'] yn dal i fod 1. 515 00:47:26,670 --> 00:47:32,560 Neu beth os ydw i'n gwneud hyn? 516 00:47:32,560 --> 00:47:39,260 Nawr eitem yn cael ei anfon fel copi i Baz. 517 00:47:39,260 --> 00:47:46,330 Felly, bydd y copi y ddadl yn cael ei cynyddran i 2, 518 00:47:46,330 --> 00:47:49,240 ond byth yn eitem ei hun yn mynd i fyny i 2. 519 00:47:49,240 --> 00:47:52,880 A yw'r eitem yr un peth â braced array beth bynnag, 520 00:47:52,880 --> 00:47:55,380 felly ni bod amrywiaeth yn mynd i fyny. 521 00:47:55,380 --> 00:47:57,960 Felly, y rhai lleoedd ei angen. 522 00:47:57,960 --> 00:48:03,830 >> PHP fel arfer yn eithaf smart am hyn. 523 00:48:03,830 --> 00:48:06,570 Efallai y byddwch yn meddwl fy mod am i basio drwy gyfeirio - 524 00:48:06,570 --> 00:48:09,560 Hyn oedd mewn gwirionedd yn gwestiwn ar un o'r psets. 525 00:48:09,560 --> 00:48:14,480 Roedd yn beth questions.txt lle mae'n dweud, 526 00:48:14,480 --> 00:48:19,280 Pam y byddai eisiau trosglwyddo hyn strwythur drwy gyfeirio? 527 00:48:19,280 --> 00:48:21,250 Beth oedd yr ateb i hynny? 528 00:48:21,250 --> 00:48:25,100 [Myfyrwyr] Felly nid oes rhaid i chi gopïo rhywbeth mawr. >> Yeah. 529 00:48:25,100 --> 00:48:32,920 Gall strwythur fod yn fympwyol fawr, a phan fyddwch yn pasio y strwythur mewn fel dadl 530 00:48:32,920 --> 00:48:36,800 mae angen i copi y strwythur cyfan i ei throsglwyddo i'r swyddogaeth, 531 00:48:36,800 --> 00:48:40,410 ond os ydych yn unig yn pasio'r strwythur drwy gyfeirio 532 00:48:40,410 --> 00:48:46,530 yna mae'n dim ond angen i gopïo cyfeiriad 4-beit gan fod y ddadl i'r swyddogaeth. 533 00:48:48,520 --> 00:48:52,320 PHP yw ychydig yn gallach na hynny. 534 00:48:52,320 --> 00:49:00,650 Os byddaf yn cael rhywfaint o swyddogaeth a dwi'n pasio iddo amrywiaeth o 1,000 o bethau, 535 00:49:00,650 --> 00:49:03,990 mae hynny'n golygu ei fod yn mynd i gael i gopïo pob un o'r 1,000 o'r pethau hynny 536 00:49:03,990 --> 00:49:10,450 ei throsglwyddo i'r swyddogaeth? Nid yw'n rhaid i chi wneud hynny ar unwaith. 537 00:49:10,450 --> 00:49:15,940 Os nad mewnol y swyddogaeth y mae'n mewn gwirionedd yn addasu foo, 538 00:49:15,940 --> 00:49:22,660 felly os ($ foo === 'helo') yn dychwelyd yn wir.; 539 00:49:22,660 --> 00:49:26,460 Hysbysiad ni fyddwn byth yn newid mewn gwirionedd y tu mewn dadl y swyddogaeth hon, 540 00:49:26,460 --> 00:49:30,010 sy'n golygu bod beth bynnag ei ​​basio yn byth fel foo angen i gael ei gopïo 541 00:49:30,010 --> 00:49:32,100 oherwydd nad yw'n ei newid. 542 00:49:32,100 --> 00:49:39,240 Felly, y ffordd PHP gwaith yn y dadleuon yn cael eu pasio bob amser drwy gyfeirio 543 00:49:39,240 --> 00:49:42,170 hyd nes y byddwch mewn gwirionedd yn ceisio ei newid. 544 00:49:42,170 --> 00:49:51,160 Nawr, os wyf yn dweud $ foo + +; bydd yn awr yn gwneud copi o foo gwreiddiol ac addasu y copi. 545 00:49:51,160 --> 00:49:53,090 Mae hyn yn arbed peth amser. 546 00:49:53,090 --> 00:49:58,210 Os nad ydych yn cyffwrdd y casgliad enfawr byth, rydych mewn gwirionedd yn addasu, 547 00:49:58,210 --> 00:50:02,360 Nid oes angen i wneud y copi, 548 00:50:02,360 --> 00:50:06,640 ond os ydym yn unig roi hyn ampersand sy'n golygu nad yw hyd yn oed gopïo 549 00:50:06,640 --> 00:50:08,640 hyd yn oed os ydych yn newid. 550 00:50:08,640 --> 00:50:10,680 Mae'r ymddygiad hwn yn cael ei alw'n copi-ar-ysgrifennu. 551 00:50:10,680 --> 00:50:17,380 Byddwch yn ei weld mewn mannau eraill, yn enwedig os ydych yn cymryd cwrs sy'n gweithredu system. 552 00:50:17,380 --> 00:50:23,880 Copi-on-ysgrifennu yn batrwm eithaf arferol lle nad oes angen i chi wneud copi o rywbeth 553 00:50:23,880 --> 00:50:26,650 oni bai ei fod yn newid mewn gwirionedd. Yeah. 554 00:50:26,650 --> 00:50:29,520 [Myfyrwyr] Beth os ydych yn cael y cynyddiad y tu mewn i'r prawf, 555 00:50:29,520 --> 00:50:33,700 felly byddai dim ond 1 elfen allan o 1,000 angen eu newid? 556 00:50:33,700 --> 00:50:38,770 Dwi ddim yn siŵr. 557 00:50:38,770 --> 00:50:51,250 Rwy'n credu y byddai'n gopïo y peth cyfan, ond mae'n bosibl ei fod yn smart ddigon - 558 00:50:51,250 --> 00:51:00,020 A dweud y gwir, yr hyn yr wyf i'n meddwl ei ddychmygu, a chawsom nifer sy'n edrych fel hyn: $ arae2 = [ 559 00:51:00,020 --> 00:51:11,000 Yna mynegai 'a' yn amrywiaeth o [1 2 3 4], a mynegai 'b' yn amrywiaeth o beth bynnag. 560 00:51:11,000 --> 00:51:15,380 Fi angen atalnodau rhwng pawb. Dychmygwch mae atalnodau. 561 00:51:15,380 --> 00:51:21,210 Yna 'c' yn y 3 gwerth. 562 00:51:24,210 --> 00:51:26,290 Iawn. 563 00:51:26,290 --> 00:51:33,440 Nawr gadewch i ni ddweud rydym yn ei wneud $ Baz ($ arae2); 564 00:51:33,440 --> 00:51:36,540 lle nad yw Baz yn manteisio ar hyn trwy gyfeirio. 565 00:51:43,510 --> 00:51:47,370 Felly, $ foo ['c'] + +; 566 00:51:47,370 --> 00:51:52,340 Mae hwn yn fath yn enghraifft lle yr ydym yn pasio arae2 fel dadl 567 00:51:52,340 --> 00:51:57,010 ac yna mae'n cael ei addasu mynegai penodol o'r casgliad trwy ei incrementing. 568 00:51:57,010 --> 00:52:01,090 Rwyf yn onest i ddim syniad beth PHP yn mynd i'w wneud. 569 00:52:01,090 --> 00:52:07,200 Gall yn hawdd gwneud copi o'r peth cyfan, ond os yw'n smart, 570 00:52:07,200 --> 00:52:15,030 bydd yn gwneud copi o'r allweddi lle bydd hyn yn cael ei werth arbennig 571 00:52:15,030 --> 00:52:20,620 ond gall hyn yn dal i gyfeirio at yr amrywiaeth un 1,2,3,4 572 00:52:20,620 --> 00:52:22,320 a gall hyn yn dal i gyfeirio at yr amrywiaeth un. 573 00:52:22,320 --> 00:52:24,170 'N annhymerus' iPad hynny. 574 00:52:28,900 --> 00:52:45,950 Rydym yn pasio yn y casgliad lle mae hyn yn guy pwynt i 3, mae hyn yn guy pwyntiau i [1,2,3,4], 575 00:52:45,950 --> 00:52:51,350 y boi yn cyfeirio at [34, ...] 576 00:52:51,350 --> 00:52:58,590 Nawr ein bod yn ei throsglwyddo i mewn i Baz, rydym yn addasu'r hyn. 577 00:52:58,590 --> 00:53:03,550 Os PHP yn smart, gall dim ond gwneud - 578 00:53:11,850 --> 00:53:18,230 Rydym yn dal i gopïo rhai cof, ond os oedd hyn subarrays enfawr nythu 579 00:53:18,230 --> 00:53:21,560 Nid oedd angen i gopïo rhai. 580 00:53:21,560 --> 00:53:27,530 Nid wyf yn gwybod os dyna beth mae'n ei wneud, ond gallaf ddychmygu y mae'n gwneud hynny. 581 00:53:29,050 --> 00:53:36,690 Mae hyn hefyd yn fantais eithaf mawr o C dros PHP. 582 00:53:36,690 --> 00:53:40,320 >> PHP yn gwneud bywyd gymaint yn haws ar gyfer llawer o bethau, 583 00:53:40,320 --> 00:53:45,060 ond rydych fath o wedi gwbl ddim syniad pa mor dda y bydd yn perfformio 584 00:53:45,060 --> 00:53:52,530 oherwydd nid oes gennyf unrhyw syniad o dan y cwfl pan mae'n gwneud y copïau o bethau, 585 00:53:52,530 --> 00:53:55,170 oh, yw bod yn mynd i fod yn gopi cysonyn amser, 586 00:53:55,170 --> 00:54:01,140 mae'n jyst yn mynd i newid 1 pwyntydd, mae'n mynd i fod yn gopi chwerthinllyd anodd llinol? 587 00:54:01,140 --> 00:54:03,000 Beth os na all ddod o hyd i le? 588 00:54:03,000 --> 00:54:06,760 A oes yna angen i redeg casgliad garbage i gael lle rhagor? 589 00:54:06,760 --> 00:54:11,210 A gall casglu garbage gymryd fympwyol hir. 590 00:54:11,210 --> 00:54:13,600 Yn C Nid oes rhaid i chi boeni am y pethau hyn. 591 00:54:13,600 --> 00:54:19,780 Mae pob un llinell i chi ysgrifennu gallwch reswm 'n bert lawer am sut y mae'n mynd i berfformio. 592 00:54:26,800 --> 00:54:29,150 >> Gadewch i ni edrych yn ôl ar y rhain. 593 00:54:35,400 --> 00:54:37,520 Pa mor braf yw hi nad oes rhaid i chi ddelio â swyddogaethau hash, 594 00:54:37,520 --> 00:54:39,010 rhestrau cysylltiedig, neu unrhyw beth fel 'na? 595 00:54:39,010 --> 00:54:41,980 Ers i weithio gyda thablau hash mor hawdd yn awr, dyma pos hwyl i weithio ar. 596 00:54:41,980 --> 00:54:45,920 Agor i fyny ffeil o'r enw unique.php ac ynddo ysgrifennu rhaglen PHP 597 00:54:45,920 --> 00:54:48,330 (A elwir hefyd yn "sgript"). 598 00:54:48,330 --> 00:54:55,700 Rydym yn tueddu i'w galw sgriptiau os ydynt yn bethau byr y byddwch yn rhedeg ar y llinell orchymyn. 599 00:54:55,700 --> 00:55:02,950 Yn y bôn, unrhyw iaith nad ydych yn llunio ond rydych chi'n mynd i redeg y gweithredadwy 600 00:55:02,950 --> 00:55:05,920 ar y llinell orchymyn, gallwch ffonio y sgript gweithredadwy. 601 00:55:05,920 --> 00:55:08,510 Gallai Fi jyst yn ogystal ysgrifennu rhaglen C sy'n gwneud hyn, 602 00:55:08,510 --> 00:55:12,300 ond nid wyf yn ei alw sgript ers tro cyntaf i mi lunio ac yna rhedeg y deuaidd. 603 00:55:12,300 --> 00:55:15,480 Ond mae hyn yn rhaglen PHP rydym yn mynd i alw sgript. 604 00:55:15,480 --> 00:55:23,830 Neu os ydym yn ysgrifennu mewn Python neu Perl neu Node.js neu unrhyw un o'r pethau hynny, 605 00:55:23,830 --> 00:55:26,500 byddem yn galw nhw i gyd sgriptiau oherwydd eich bod yn eu rhedeg ar y llinell orchymyn 606 00:55:26,500 --> 00:55:30,040 ond nid ydym yn llunio nhw. 607 00:55:30,860 --> 00:55:33,400 Gallem wneud hyn yn weddol gyflym. 608 00:55:36,960 --> 00:55:41,480 Nid ydym yn mynd i ddefnyddio argv. Gadewch i 'jyst chwythu drwy hyn. 609 00:55:41,480 --> 00:55:45,730 Ffoniwch yn unigryw, ysgrifennu rhaglen. 610 00:55:45,730 --> 00:55:49,400 Gallwch gymryd yn ganiataol y bydd y mewnbwn yn cynnwys un gair fesul llinell. 611 00:55:49,400 --> 00:55:52,020 Mewn gwirionedd, bydd argv fod yn eithaf dibwys i ddefnyddio. 612 00:56:03,730 --> 00:56:06,720 unique.php. 613 00:56:08,550 --> 00:56:13,750 Y peth cyntaf yn gyntaf, rydym am i wirio os ydym wedi bod yn dros 1 gorchymyn-lein ddadl. 614 00:56:13,750 --> 00:56:20,900 Yn union fel y byddech yn disgwyl argc a argv yn C, rydym yn dal i gael rhai yn PHP. 615 00:56:20,900 --> 00:56:33,900 Felly, os yw ($ argc! == 2), yna ni wnaf ddelio ag argraffu neges neu unrhyw beth. 616 00:56:33,900 --> 00:56:37,340 'N annhymerus' jyst gadael, cod gwall o 1. 617 00:56:37,340 --> 00:56:41,340 Gallwn hefyd ddychwelyd 1. 618 00:56:41,340 --> 00:56:53,180 Yn anaml iawn yn PHP ydych chi ar hyn o gyflwr lle rydym yn - 619 00:56:53,180 --> 00:56:57,820 Fel arfer, rydych chi mewn swyddogaeth a elwir gan swyddogaeth a elwir gan swyddogaeth a elwir gan swyddogaeth. 620 00:56:57,820 --> 00:57:02,070 Ac os bydd rhywbeth yn mynd o'i le ac nid oes ond eisiau gadael popeth yn gyfan gwbl, 621 00:57:02,070 --> 00:57:05,680 allanfa yn unig yn dod i ben y rhaglen. 622 00:57:05,680 --> 00:57:08,160 Mae hyn hefyd yn bodoli yn C. 623 00:57:08,160 --> 00:57:10,700 Os ydych chi mewn swyddogaeth yn swyddogaeth mewn swyddogaeth yn swyddogaeth 624 00:57:10,700 --> 00:57:17,540 ac a ydych dim ond lladd y rhaglen, gallwch ffonio allanfa a bydd yn dim ond gadael. 625 00:57:17,540 --> 00:57:23,120 Ond yn PHP mae hyd yn oed yn fwy prin ein bod ar y lefel uchaf. 626 00:57:23,120 --> 00:57:26,090 Fel arfer rydym yn y tu mewn i ryw fath o swyddogaeth, felly rydym yn galw allanfa 627 00:57:26,090 --> 00:57:29,650 fel nad oes rhaid i ni ddychwelyd i fyny 1 peth sydd wedyn yn sylweddoli mae gwall 628 00:57:29,650 --> 00:57:32,270 fel sy'n dychwelyd i fyny os sy'n cydnabod bod camgymeriad. 629 00:57:32,270 --> 00:57:35,270 Nid ydym am i ddelio â hynny, felly gadewch (1); 630 00:57:35,270 --> 00:57:38,240 ddychwelyd (1); yn yr achos hwn fod yn gyfwerth. 631 00:57:38,240 --> 00:57:44,000 >> Yna beth rydym am ei agor ydym am fopen. 632 00:57:44,000 --> 00:57:46,760 Mae'r dadleuon yn mynd i edrych yn eithaf tebyg. 633 00:57:46,760 --> 00:57:51,600 Rydym yn awyddus i fopen ($ argv [1], ac rydym am i agor ar gyfer darllen. 634 00:57:51,600 --> 00:57:55,720 Mae hynny'n dychwelyd adnodd yr ydym yn mynd i alw f. 635 00:57:55,720 --> 00:58:02,180 Mae hyn yn edrych yn eithaf tebyg i sut mae'n C ac eithrio nid oes raid i ni ddweud * FILE. 636 00:58:02,180 --> 00:58:06,170 Yn hytrach, rydym yn unig yn dweud $ f. Iawn. 637 00:58:06,170 --> 00:58:17,190 A dweud y gwir, yr wyf yn credu bod hyn hyd yn oed yn rhoi i ni awgrym ynghylch PHP swyddogaeth o'r enw ffeil. PHP Ffeil. 638 00:58:17,190 --> 00:58:23,990 Beth mae hyn yn mynd i wneud yw darllen ffeil gyfan yn arae. 639 00:58:23,990 --> 00:58:29,770 Nid oes hyd yn oed angen i fopen hynny. Mae'n mynd i wneud hynny ar eich rhan. 640 00:58:37,450 --> 00:58:43,700 Felly, $ llinellau = ffeil ($ argv [1]); 641 00:58:43,700 --> 00:58:49,680 Nawr holl linellau y ffeil mewn llinellau. Nawr rydym am i ddatrys y llinellau. 642 00:58:49,680 --> 00:58:52,180 Sut allwn ni ddatrys y llinellau? 643 00:58:52,180 --> 00:58:54,920 Rydym yn datrys y llinellau. 644 00:58:54,920 --> 00:58:58,080 Ac yn awr y gallwn ni eu hargraffu neu beth bynnag. 645 00:58:58,080 --> 00:59:05,580 Mae'n debyg mai'r ffordd hawsaf yw foreach ($ $ llinellau fel llinell) adleisio $ llinell; 646 00:59:05,580 --> 00:59:10,960 [Myfyrwyr] Ni fyddem hyd yn oed yn croesi llinellau drwy gyfeirio rhywbeth yn fath? 647 00:59:10,960 --> 00:59:28,850 Dyma lle y byddai fath yn cael ei ddiffinio fel math swyddogaeth (& $ array). 648 00:59:28,850 --> 00:59:32,650 Pan fyddwch yn ffonio y swyddogaeth nad ydych yn ei drosglwyddo trwy gyfeirio. 649 00:59:32,650 --> 00:59:36,900 Mae'n swyddogaeth sy'n diffinio fel ei gymryd fel cyfeirnod. 650 00:59:36,900 --> 00:59:40,900 Mae hyn mewn gwirionedd yn union beth aeth o'i le 651 00:59:40,900 --> 00:59:46,220 pan fyddwn yn rhoi popeth at ein gweinyddion pan aethon ni 5.3-5.4. 652 00:59:46,220 --> 00:59:53,800 Hyd at 5.4, roedd hyn yn gwbl resymol. 653 00:59:53,800 --> 00:59:58,740 Nid yw swyddogaeth yn disgwyl ei gael fel cyfeirio, ond gallwch ei drosglwyddo fel cyfeiriad 654 00:59:58,740 --> 01:00:02,860 felly os yw'r swyddogaeth yn digwydd i addasu, mae'n dal i addasu. 655 01:00:02,860 --> 01:00:05,850 Fel o 5.4, nid ydych yn fod i wneud hyn. 656 01:00:05,850 --> 01:00:11,740 Felly, yn awr yr unig ffordd i chi basio trwy gyfeirio yw os bydd y swyddogaeth benodol yn ei wneud. 657 01:00:11,740 --> 01:00:19,840 Os nad ydych am ei addasu, yna mae angen i chi wneud copi $ = $ llinellau a chopi pasio. 658 01:00:19,840 --> 01:00:24,820 Felly nawr Bydd llinellau yn cael eu cadw, a bydd copi yn cael ei newid. 659 01:00:27,670 --> 01:00:31,460 php.unique.php. Efallai fy mod wedi cyboledig i fyny rhywbeth. 660 01:00:31,460 --> 01:00:33,190 Annisgwyl 'fath'. 661 01:00:38,320 --> 01:00:43,850 Mae mynd i fod yn rhywbeth sy'n gwneud hyn i ni. 662 01:00:43,850 --> 01:00:45,820 Dyw hi ddim hyd yn oed yno. 663 01:00:45,820 --> 01:00:52,140 Hysbysiad pan fyddwch yn darllen y llawlyfr bod y ddadl gyntaf yn disgwyl i fod yn arae 664 01:00:52,140 --> 01:00:56,490 ac mae wedi cymryd trwy gyfeirio. 665 01:00:58,160 --> 01:01:03,540 Pam mae hyn yn cwyno i mi? Gan fy mod yn cael y fath swyddogaeth yn dal i mewn yma nad wyf yn dymuno. 666 01:01:03,540 --> 01:01:09,210 Iawn, php.unique.php. Doeddwn i ddim yn ei drosglwyddo ddadl gan nad oes gen i ffeil. 667 01:01:09,210 --> 01:01:13,560 Mae'n php.unique.php ar test.php. 668 01:01:13,560 --> 01:01:19,080 Dyma test.php argraffu i gyd allan mewn trefn 'n glws datrys. 669 01:01:19,080 --> 01:01:24,600 Hysbysiad bod drefn datrys yn fath o 'n annaearol am ffeil cod 670 01:01:24,600 --> 01:01:27,460 oherwydd bod ein holl linellau gwag yn mynd i ddod yn gyntaf 671 01:01:27,460 --> 01:01:30,190 wedyn yn mynd i ddod pob un o'n 1 indentations lefel 672 01:01:30,190 --> 01:01:33,360 yna dewch ein holl indentations ddim. 673 01:01:33,360 --> 01:01:38,620 Yeah. >> [Myfyrwyr] Felly, ar gyfer y cod ffynhonnell nad oedd yn pasio trwy gyfeirio? 674 01:01:38,620 --> 01:01:42,240 A yw hynny'n pasio yn gyffredinol gan werth? 675 01:01:42,240 --> 01:01:50,240 [Bowden] Pan fyddwch yn ffonio swyddogaeth byth, mae'n penderfynu a gaiff ei basio trwy gyfeirio. 676 01:01:50,240 --> 01:01:53,960 Dyma'r diffiniad swyddogaeth sy'n penderfynu a gaiff ei basio trwy gyfeirio. 677 01:01:53,960 --> 01:01:59,450 Ac edrych ar y diffiniad swyddogaeth fath neu dim ond yn edrych ar hyn, 678 01:01:59,450 --> 01:02:02,820 mae'n cymryd y ddadl drwy gyfeirio. 679 01:02:02,820 --> 01:02:07,160 Felly, ni waeth a ydych am i gymryd iddo gan gyfeirio, mae'n mynd ag ef drwy gyfeirio. 680 01:02:07,160 --> 01:02:10,200 Mae'n addasu'r amrywiaeth yn ei le. 681 01:02:10,200 --> 01:02:17,400 Mae hyn nid yn unig yn cael ei ganiatáu. Dydych chi ddim hawl i wneud hyn. >> [Myfyrwyr] O, iawn. 682 01:02:17,400 --> 01:02:22,410 [Bowden] Mae hyn, math yn mynd i gymryd llinellau drwy gyfeirio a'i addasu. 683 01:02:22,410 --> 01:02:26,850 Ac eto, os nad ydych chi ddim eisiau iddo wneud hynny, fe allech chi wneud copi o'r fath. 684 01:02:26,850 --> 01:02:35,850 Hyd yn oed yn yr achos hwn, nid copi mewn gwirionedd yn gopi o linellau. 685 01:02:35,850 --> 01:02:40,620 'I jyst yn cyfeirio at yr un peth hyd nes yn gyntaf yn cael ei haddasu, 686 01:02:40,620 --> 01:02:44,430 lle mae'n cyntaf yn mynd i gael haddasu yn y swyddogaeth fath, 687 01:02:44,430 --> 01:02:50,940 lle, oherwydd ei fod yn gopi-ar-ysgrifennu, sydd bellach yn gopi o gopi yn mynd i gael eu gwneud. 688 01:02:57,500 --> 01:03:04,250 Gallwch hefyd wneud hyn. Dyna y lle arall gallwch weld ampersand. 689 01:03:04,250 --> 01:03:07,190 Byddwch yn gweld yn dolenni foreach, byddwch yn ei weld yn y datganiadau swyddogaeth, 690 01:03:07,190 --> 01:03:10,040 a byddwch yn ei weld pan dim ond neilltuo newidynnau. 691 01:03:10,040 --> 01:03:12,350 Nawr rydym wedi cyflawni unrhyw beth drwy wneud hyn 692 01:03:12,350 --> 01:03:15,600 oherwydd bod copi a llinellau yn llythrennol yr un peth. 693 01:03:15,600 --> 01:03:19,940 Gallwch ddefnyddio llinellau a chopïo gyfnewidiol. 694 01:03:19,940 --> 01:03:25,430 Gallwch wneud unset ($ copi), ac nad yw'n llinellau ei osod, caiff 695 01:03:25,430 --> 01:03:29,120 'ch jyst yn colli eich cyfeirio at yr un peth. 696 01:03:29,120 --> 01:03:33,440 Felly, fel y pwynt hwn, yn awr llinellau yw'r unig ffordd y gallwch gael mynediad llinellau. 697 01:03:36,450 --> 01:03:38,770 >> Cwestiynau? 698 01:03:41,000 --> 01:03:42,460 Yeah. 699 01:03:42,460 --> 01:03:45,880 [Myfyrwyr] Hollol oddi ar y pwnc, ond nid oes rhaid i chi gau'r PHP gyda - >> Nid ydych yn ei wneud. 700 01:03:45,880 --> 01:03:47,730 Iawn. 701 01:03:47,730 --> 01:03:53,790 [Bowden] byddwn yn mynd mor bell â dweud ei fod yn arfer gwael i gau nhw. 702 01:03:53,790 --> 01:03:57,580 Dyna fwy na thebyg yn gor-ddweud, yn enwedig mewn sgript, 703 01:03:57,580 --> 01:04:03,740 ond gadewch i ni weld beth fydd yn digwydd os byddaf yn gwneud hyn. 704 01:04:03,740 --> 01:04:08,890 Dyna wnaeth ddim. Beth os ydw i eisiau - [gynt] 705 01:04:13,870 --> 01:04:16,960 Angen i mi basio dadl. 706 01:04:19,000 --> 01:04:22,050 Shoot. Gelwais yn anghywir. 707 01:04:24,340 --> 01:04:28,310 Felly php.unique.php gyda dadl. 708 01:04:28,310 --> 01:04:30,980 Nawr Dydw i ddim hyd yn oed angen hyn. 709 01:04:34,520 --> 01:04:37,740 'N annhymerus' pasio ei fod yn ddadl ddilys. 710 01:04:37,740 --> 01:04:42,050 Mae hyn yn argraffu beth bynnag ei ​​fod yn argraffu. 711 01:04:45,260 --> 01:04:50,080 Rwy'n argraffu copi a chopi nid yn bodoli. Felly llinellau. 712 01:04:53,650 --> 01:04:58,270 Mae'n argraffu popeth, ac yna sylwi hyn i gyd junk i lawr yma, 713 01:04:58,270 --> 01:05:06,690 oherwydd yn PHP unrhyw beth sydd y tu allan tagiau PHP 714 01:05:06,690 --> 01:05:09,520 yn unig yn mynd i gael ei argraffu yn llythrennol. 715 01:05:09,520 --> 01:05:18,050 Dyna pam HTML, mae mor braf y gallaf ei wneud div blah, blah, blah dosbarth neu beth bynnag, 716 01:05:18,050 --> 01:05:25,140 blah, blah, blah, ac yna gwneud rhywfaint o cod PHP, ac yna gwneud div diwedd. 717 01:05:25,140 --> 01:05:36,460 Ac yn awr argraffu hyn yr wyf yn cael fy div 'n glws i fyny top, popeth a PHP printiedig, div ar y gwaelod. 718 01:05:36,460 --> 01:05:43,510 Trychinebus pan fydd rhywbeth fel hyn yn digwydd, sydd yn eithaf cyffredin, 719 01:05:43,510 --> 01:05:47,930 dim ond Newline crwydr ar waelod y ffeil. 720 01:05:47,930 --> 01:05:50,940 Fyddech chi ddim yn meddwl y byddai'n bod fawr o gytundeb 721 01:05:50,940 --> 01:05:58,660 hyd nes y byddwch yn ystyried y ffaith bod gyda phorwyr - 722 01:05:58,660 --> 01:06:03,880 >> Sut ailgyfeiriadau gwaith neu yn y bôn penawdau gwaith o gwbl, 723 01:06:03,880 --> 01:06:07,980 pan fyddwch yn gwneud eich cysylltiad i'r wefan ac mae'n anfon yn ôl pob un o'r penawdau a phethau 724 01:06:07,980 --> 01:06:12,020 fel ymateb 200 neu ymateb ailgyfeirio neu beth bynnag, 725 01:06:12,020 --> 01:06:18,230 penawdau yn ddilys hyd nes y beit gyntaf o ddata yn cael ei anfon. 726 01:06:18,230 --> 01:06:23,140 Gallwch ailgyfeirio filoedd o weithiau, ond cyn gynted ag y beit gyntaf o ddata yn cael ei anfon 727 01:06:23,140 --> 01:06:26,120 nad ydych yn fod i ailgyfeirio eto. 728 01:06:26,120 --> 01:06:31,860 >> Os oes gennych Newline crwydr ar waelod y ffeil 729 01:06:31,860 --> 01:06:37,260 a gadewch i ni ddweud eich bod yn defnyddio'r swyddogaeth hon ac yna rydych am - 730 01:06:41,580 --> 01:06:52,870 Lets 'ddeud ei fod yn ffeil arall sy'n index.php ac rydych require_once rhywbeth - 731 01:06:52,870 --> 01:06:56,920 Ni allaf feddwl am enghraifft dda o hynny. 732 01:06:56,920 --> 01:07:04,740 Mae'r mater yn digwydd pan fydd y llinell hon ar y gwaelod yn cael ei adleisio. 733 01:07:04,740 --> 01:07:08,660 Dydych chi ddim eisiau unrhyw beth i wedi eu hadleisio eto. 734 01:07:10,820 --> 01:07:15,700 Er nad oeddech yn bwriadu ar unrhyw beth cael adleisio, rhywbeth oedd yn cael eu hadleisio 735 01:07:15,700 --> 01:07:17,990 ac felly, yn awr nad ydych yn fod i anfon penawdau mwy o 736 01:07:17,990 --> 01:07:20,030 a ydych yn mynd i gael cwynion. 737 01:07:22,170 --> 01:07:24,420 Rydych nid yn unig yn angen y tagiau cau. 738 01:07:24,420 --> 01:07:27,420 Os ydych yn bwriadu gwneud rhywbeth gyda HTML - 739 01:07:27,420 --> 01:07:30,490 ac mae'n hollol resymol i'w wneud i lawr yma div beth bynnag 740 01:07:30,490 --> 01:07:39,450 ac yna yn y fan hon gallwch chi neu os nad ydych yn gallu eu cynnwys. 741 01:07:39,450 --> 01:07:41,590 Nid oes llawer o bwys. 742 01:07:41,590 --> 01:07:45,450 Ond mewn sgriptiau PHP ei bod yn brin i gau. 743 01:07:45,450 --> 01:07:50,400 Pan fydd popeth yn PHP, popeth, 744 01:07:50,400 --> 01:07:55,460 nad ydych yn wir angen inni ei gau / ni ddylech ei gau. 745 01:08:02,030 --> 01:08:05,720 >> Delio gyda llinynnau yn llawer brafiach nag yn C. 746 01:08:05,720 --> 01:08:09,470 Yn PHP, gallwch bennu llinyn gyda dyfyniadau sengl neu ddwbl. 747 01:08:09,470 --> 01:08:12,820 Gyda dyfynodau sengl na allwch ddefnyddio "escape" dilyniannau. 748 01:08:12,820 --> 01:08:17,640 Gyson ddianc, blah, blah, blah. 749 01:08:19,920 --> 01:08:24,010 Felly printf yn brin iawn yn PHP. 750 01:08:24,010 --> 01:08:32,290 Amcana byddwn yn defnyddio printf os oeddwn i eisiau gwneud rhyw fath o beth - yn pset 5 eich bod yn defnyddio sprintf neu beth bynnag. 751 01:08:32,290 --> 01:08:36,060 Ond rydych am ei wneud 001.jpg a 002.jpg. 752 01:08:36,060 --> 01:08:40,300 Felly, ar gyfer y math yna o beth lle Fi 'n weithredol am fformadu'r testun byddwn yn ei ddefnyddio printf. 753 01:08:40,300 --> 01:08:44,689 Ond, fel arall byddwn yn ei ddefnyddio concatenation llinyn. 754 01:08:44,689 --> 01:08:47,000 Dwi byth yn wir yn defnyddio printf. 755 01:08:49,229 --> 01:09:00,170 Rydym yn unig yn gwahaniaethu rhwng y manylion dyfyniadau sengl a dyfynodau dwbl. 756 01:09:00,170 --> 01:09:07,490 Y gwahaniaeth mwyaf yw bod dyfynodau sengl, bydd yn cael ei argraffu yn llythrennol. 757 01:09:07,490 --> 01:09:15,390 Nid oes unrhyw fath ddata torgoch yn PHP, yn wahanol i C, felly mae hyn yn cyfateb i hyn. 758 01:09:15,390 --> 01:09:17,970 Maent yn ddau llinynnau. 759 01:09:17,970 --> 01:09:29,180 A'r peth braf am llinynnau dyfyniad sengl yn y gallwn i ddweud 'helo byd!' blah, blah, blah, 760 01:09:29,180 --> 01:09:33,340 $ $ Wooo. 761 01:09:33,340 --> 01:09:38,260 Beth sy'n digwydd pan fyddaf yn argraffu hwn yw y bydd yn argraffu yn llythrennol. 762 01:09:38,260 --> 01:09:40,680 Gadewch i ni gael gwared o'n holl bethau. 763 01:09:40,680 --> 01:09:44,700 Felly adleisio $ STR1; 764 01:09:48,569 --> 01:09:56,570 Mae'n llythrennol argraffu pob un o'r pethau hynny: arwyddion ddoler, 765 01:09:56,570 --> 01:09:58,770 slaes n, y byddech yn meddwl y byddai yn newlines - 766 01:09:58,770 --> 01:10:01,500 pob un o'r pethau hynny y bydd yn argraffu llythrennol. 767 01:10:01,500 --> 01:10:05,650 Yr unig beth mae angen i chi ddianc yn dyfynodau sengl 768 01:10:05,650 --> 01:10:09,470 oherwydd fel arall byddai'n credu ei bod yn cau'r dyfynodau sengl. 769 01:10:09,470 --> 01:10:15,050 Dyfynodau dwbl, yn gyfan gwbl wahanol. 770 01:10:20,300 --> 01:10:25,870 Rydym eisoes yn gweld y amlygu cystrawen yn cluing i ni ar beth sydd ar fin mynd mawr o'i le. 771 01:10:25,870 --> 01:10:36,190 php.unique. Amhenodol amrywiol: wooo gan fod hyn yn cael ei ddehongli fel newidyn a elwir yn wooo. 772 01:10:36,190 --> 01:10:42,400 Dyfynodau dwbl yn gadael i chi mewnosod i mewn i newidynnau - 773 01:10:42,400 --> 01:10:52,730 Lets 'ddeud $ enw = "Rob"; 774 01:10:52,730 --> 01:10:58,020 Felly adleisio "Helo, fy enw i yw $ enw!!"; 775 01:10:58,020 --> 01:11:09,260 Mae'n cydnabod hyn fel newidyn. 776 01:11:09,260 --> 01:11:21,210 Pan fyddaf yn rhedeg hynny - a byddaf yn ychwanegu Newline - Hi, fy enw i yw Rob!! a helo byd!! 777 01:11:21,210 --> 01:11:24,910 Mae hyn yn byth oherwydd yr wyf gwared ar y argraffu wooo uchod. 778 01:11:24,910 --> 01:11:30,020 Mae yna 1 cam pellach y gallwch ei wneud. 779 01:11:30,020 --> 01:11:39,250 $ Array = [1, 2, 3]; 780 01:11:39,250 --> 01:11:43,270 Beth os ydw i eisiau argraffu mynegai cyntaf o amrywiaeth? 781 01:11:43,270 --> 01:11:45,150 Rydych yn gwneud $ array [0]. 782 01:11:45,150 --> 01:11:49,280 Mae'r amlygu cystrawen yn cliw. Beth mae hyn yn mynd i'w wneud? 783 01:11:52,320 --> 01:11:54,510 php.unique. 784 01:11:54,510 --> 01:11:59,860 Hi, fy enw i yw 1!! nad yw hyn yr wyf eisiau. 785 01:11:59,860 --> 01:12:05,050 Tynnu sylw at Cystrawen dweud celwydd i mi. 786 01:12:05,050 --> 01:12:13,020 Gadewch i ni geisio 'a' -> 1, 'b' -> 2. 787 01:12:18,450 --> 01:12:21,440 Dyna sut y byddai rhaid i mi ei ysgrifennu. 788 01:12:26,350 --> 01:12:32,160 Dyfynbris annisgwyl sengl (T_ENCAPSED blah, blah, blah, blah, blah). 789 01:12:32,160 --> 01:12:41,780 Y syniad yw nad yw'n cydnabod hyn fel rhan o'r casgliad. 790 01:12:41,780 --> 01:12:46,620 Dyw hi ddim yn cydnabod hyn fel array mynegeio gan lythyr a. 791 01:12:46,620 --> 01:12:49,870 Byddwch am wneud hynny amgylchynu gan braces cyrliog, 792 01:12:49,870 --> 01:12:54,730 ac yn awr bydd beth bynnag sydd yn y brês cyrliog yn cael ei rhyngosod, 793 01:12:54,730 --> 01:13:00,340 sef y gair a ddefnyddiwn ar gyfer hudol mewnosod newidynnau hyn yn y mannau cywir. 794 01:13:00,340 --> 01:13:04,280 Nawr gwneud hyn, php.unique, a Hi, fy enw i yw 1!! yn ôl y disgwyl 795 01:13:04,280 --> 01:13:07,720 neu Hi, fy enw i yw Rob!! 796 01:13:14,110 --> 01:13:23,130 Un peth sy'n fath o neis am dyfynodau sengl yw bod - 797 01:13:23,130 --> 01:13:28,480 Mae rhywfaint o gost i interpolating. 798 01:13:30,520 --> 01:13:35,100 Os ydych yn defnyddio dyfynodau dwbl, y cyfieithydd wedi mynd dros y llinyn, 799 01:13:35,100 --> 01:13:41,500 gwneud yn siŵr bod, "O, dyma amrywiol. Nawr mae angen i mi fynd yn cael y newidyn a mewnosod yma." 800 01:13:41,500 --> 01:13:48,930 Hyd yn oed os nad ydych yn defnyddio unrhyw newidynnau, 801 01:13:48,930 --> 01:13:52,220 dim byd tu mewn dyfynodau dwbl hyn sydd angen ei rhyngosod, 802 01:13:52,220 --> 01:13:56,800 ond bydd yn dal yn arafach oherwydd mae angen iddo fynd dros y dyfynodau dwbl 803 01:13:56,800 --> 01:14:00,130 chwilio am bethau y mae angen eu rhyngosod. 804 01:14:00,130 --> 01:14:05,360 Gall dyfyniadau Felly un fod ychydig yn gyflymach os nad oes dim angen rhyngosod, 805 01:14:05,360 --> 01:14:15,650 ac yr wyf yn tueddu i hyd yn oed yn defnyddio dyfynodau sengl ar gyfer, 'Helo, fy enw i yw'. $ Array ['a'] beth bynnag. 806 01:14:15,650 --> 01:14:20,430 Mae hynny'n mynd i fod yn cyfateb i'r hyn oedd gennym o'r blaen. 807 01:14:24,840 --> 01:14:28,440 Ond mae'n fater o ddewis. 808 01:14:28,440 --> 01:14:34,750 Os ydych yn defnyddio PHP, mae'n debyg nad ydych yn poeni am y gwahaniaeth cyflymder. 809 01:14:34,750 --> 01:14:39,480 Nid oes digon i resymu nhw allan i ddechrau. 810 01:14:39,480 --> 01:14:43,030 >> Unrhyw gwestiynau terfynol? 811 01:14:47,430 --> 01:14:51,710 >> Nid ydym mewn gwirionedd yn ddim hyd yn oed gael drwy y cyfan ohono, ond y pethau hyn yn ddiflas. 812 01:14:51,710 --> 01:14:59,080 Y peth olaf y fath o braf yn PHP yw pan fyddwch yn delio â HTML, 813 01:14:59,080 --> 01:15:06,450 byddwch yn ei ddefnyddio ychydig, felly mae'r gystrawen shortcut 'n glws ar gyfer argraffu newidyn. 814 01:15:32,400 --> 01:15:36,730 Heb roi PHP yma, gelwir hyn yn tagiau byr. 815 01:15:36,730 --> 01:15:44,330 Swyddogol fel o PHP 5.4, mae hyn yn anghymeradwy. 816 01:15:44,330 --> 01:15:48,640 Fe'ch argymhellir i roi php. 817 01:15:48,640 --> 01:15:55,770 Mae hyn yn dal i gael cymorth, tagiau mor fyr ag y 01:16:02,480 Mae'n ddiofyn cefnogi, fel y gallwch ddefnyddio'r rhain ag y dymunwch, ac maent yn eithaf gyfleus. 819 01:16:02,480 --> 01:16:05,700 >> Unrhyw gwestiynau? 820 01:16:07,780 --> 01:16:09,270 Mae pob hawl. 821 01:16:10,840 --> 01:16:13,800 >> Arhoswch classy, ​​San Diego. 822 01:16:13,800 --> 01:16:16,070 [Chuckles] 823 01:16:18,620 --> 01:16:22,660 Hwyl. [Chwerthin] 824 01:16:24,350 --> 01:16:28,470 [Gymeradwyaeth] [chwerthin] 825 01:22:46,460 --> 01:22:49,460 >> [CS50.TV]