1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Article 8] [Menys Còmode] 2 00:00:02,000 --> 00:00:04,000 [Nate Hardison] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Aquesta és CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:11,000 >> Benvinguts a la nostra segona a última secció. 5 00:00:11,000 --> 00:00:13,000 En aquesta setmana parlarem de PHP, i després la setmana 6 00:00:13,000 --> 00:00:17,000 farem un petit repàs per la prova 1. 7 00:00:17,000 --> 00:00:20,000 Anem a partir de la pàgina 3 del problema estableix pack, 8 00:00:20,000 --> 00:00:28,000 i treballarem a través de la secció de preguntes amb força rapidesa. 9 00:00:28,000 --> 00:00:34,000 A la pàgina 3, vam començar a parlar de la diferència entre C i PHP 10 00:00:34,000 --> 00:00:38,000 en el sentit que PHP és un llenguatge de tipus dinàmics, 11 00:00:38,000 --> 00:00:42,000 mentre que C és estàtic de tipus, 12 00:00:42,000 --> 00:00:46,000 i ningú ha fet molt ràpid cap codificació en alguna cosa com PHP 13 00:00:46,000 --> 00:00:51,000 o Python o Ruby abans, JavaScript? 14 00:00:51,000 --> 00:00:53,000 Totalment nou? Bé. 15 00:00:53,000 --> 00:00:56,000 >> Tots aquests llenguatges que acabo d'esmentar 16 00:00:56,000 --> 00:01:01,000 són molt diferents de llenguatges com C i C + + i Java 17 00:01:01,000 --> 00:01:04,000 en el sentit que quan es declara una variable que no ha de declarar 18 00:01:04,000 --> 00:01:09,000 Quin tipus de variable és, pel que en C que estaven atrapats haver de dir sempre 19 00:01:09,000 --> 00:01:13,000 això serà una variable int, o això serà una variable char *, 20 00:01:13,000 --> 00:01:16,000 mentre que amb PHP, amb Python, amb Ruby, 21 00:01:16,000 --> 00:01:20,000 amb una gran quantitat d'idiomes més modernes que no han de fer això en absolut. 22 00:01:20,000 --> 00:01:24,000 Vostè acaba de declarar la variable, i en el cas de PHP 23 00:01:24,000 --> 00:01:28,000 vostè declara que és una variable amb el prefix amb un signe $, 24 00:01:28,000 --> 00:01:35,000 i després el tipus de la variable es determina per qualsevol valor que està sostenint, 25 00:01:35,000 --> 00:01:38,000 que és una mena de fresc. 26 00:01:38,000 --> 00:01:44,000 Per jugar amb això una mica, tenim exemple de codi PHP aquí 27 00:01:44,000 --> 00:01:47,000 entre les etiquetes d'inici i fi. 28 00:01:47,000 --> 00:01:53,000 Estem utilitzant aquest tipus de com HTML en el sentit que 29 00:01:53,000 --> 00:01:56,000 tenim aquestes esquadres aquí per obrir i tancar. 30 00:01:56,000 --> 00:01:58,000 Veuràs això amb HTML. 31 00:01:58,000 --> 00:02:03,000 Veurà la mateixa classe de sintaxi de XML també. 32 00:02:03,000 --> 00:02:06,000 >> Això indica el començament d'un bloc de PHP. 33 00:02:06,000 --> 00:02:09,000 Aquesta php? És específic de PHP. 34 00:02:09,000 --> 00:02:16,000 Tanquem tot amb un> també. 35 00:02:16,000 --> 00:02:22,000 Anem a obrir un arxiu en el nostre dispositiu mitjançant el que vol. 36 00:02:22,000 --> 00:02:25,000 En aquest paquet es diu cridar dynamic.php. 37 00:02:25,000 --> 00:02:29,000 En veritat, es pot dir el que vulguis, però el nom de fitxer 38 00:02:29,000 --> 00:02:34,000 i serà important més endavant, de manera que només recorda com es digui. 39 00:02:34,000 --> 00:02:36,000 Vaig a canviar l'aparell, 40 00:02:36,000 --> 00:02:43,000 i jo vaig a fer un directori per 41 00:02:43,000 --> 00:02:48,000 secció 9 Jo crec que estem en aquest moment. 42 00:02:48,000 --> 00:02:51,000 I anem a entrar a la secció 9, 43 00:02:51,000 --> 00:02:54,000 i jo vaig a utilitzar gedit. 44 00:02:54,000 --> 00:02:59,000 A veure, gedit, i jo vaig a trucar dynamic.php meu. 45 00:02:59,000 --> 00:03:03,000 Boom. 46 00:03:03,000 --> 00:03:06,000 Dins dynamic.php, ja que s'indiquen fitxers PHP 47 00:03:06,000 --> 00:03:09,000 i vull executar aquest a través de l'intèrpret PHP 48 00:03:09,000 --> 00:03:12,000 He de començar tot d'aquells amb etiquetes obertes, 49 00:03:12,000 --> 00:03:17,000 així que vaig a començar a aquells immediatament, 50 00:03:17,000 --> 00:03:23,000 donar-me una mica d'espai entre les etiquetes, 51 00:03:23,000 --> 00:03:26,000 i llavors l'objectiu d'aquest exercici era jugar amb 52 00:03:26,000 --> 00:03:34,000 aquesta funció es diu gettype, per gettype, aquesta funció aquí. 53 00:03:34,000 --> 00:03:38,000 >> Recordeu que no hi ha cap guió o un espai o un guió ni res d'això 54 00:03:38,000 --> 00:03:42,000 que separa les dues paraules, obtenir i escriure, només una paraula del tot. 55 00:03:42,000 --> 00:03:46,000 Però el que això farà és si pas en una variable per gettype, 56 00:03:46,000 --> 00:03:51,000 per exemple, $ var o $ x, 57 00:03:51,000 --> 00:03:55,000 això em dirà en una mena de format de depuració 58 00:03:55,000 --> 00:03:59,000 el que el nom d'aquest tipus és. 59 00:03:59,000 --> 00:04:03,000 Anem a experimentar aquí. 60 00:04:03,000 --> 00:04:07,000 En particular, si un mira cap enrere en l'especificació del conjunt de processadors 61 00:04:07,000 --> 00:04:11,000 tenim unes poques línies de codi diferents aquí. 62 00:04:11,000 --> 00:04:16,000 A la primera línia de codi que inicialitza aquesta variable, $ var, 63 00:04:16,000 --> 00:04:21,000 que és igual a 7, i després tenim aquesta línia printf 64 00:04:21,000 --> 00:04:25,000 que diu: hey, var printf està en blanc. 65 00:04:25,000 --> 00:04:29,000 Printf és una de les moltes formes en que pots imprimir coses en PHP. 66 00:04:29,000 --> 00:04:33,000 Sovint, vostè veurà la funció d'eco en lloc de printf, 67 00:04:33,000 --> 00:04:40,000 printf però tots estem familiaritzats amb haver estat programant en C per un temps. 68 00:04:40,000 --> 00:04:42,000 El que en realitat es pot fer és que veurem si funciona copiar i enganxar. 69 00:04:42,000 --> 00:04:46,000 Vaig a donar-li una oportunitat. 70 00:04:46,000 --> 00:04:52,000 Anem a anar de nou cap a l'aparell. 71 00:04:52,000 --> 00:05:00,000 Bé, i aquí anem. 72 00:05:00,000 --> 00:05:05,000 I l'espai és una mica estrany, però aquí anem. 73 00:05:05,000 --> 00:05:08,000 Tenim el codi aquí. 74 00:05:08,000 --> 00:05:11,000 >> [Estudiant] És estil no és bo a la pestanya ell? 75 00:05:11,000 --> 00:05:13,000 Com diu? 76 00:05:13,000 --> 00:05:15,000 [Estudiant] És convencional a la pestanya d'això? 77 00:05:15,000 --> 00:05:21,000 Bé, així que Sam li pregunta si és convenció a la fitxa o no. 78 00:05:21,000 --> 00:05:23,000 En general sí. 79 00:05:23,000 --> 00:05:26,000 En aquest cas he optat per no fer-ho. 80 00:05:26,000 --> 00:05:33,000 Honestament, vostè veurà coses diferents entre els diferents programadors. 81 00:05:33,000 --> 00:05:40,000 PHP se sol utilitzar amb freqüència en combinació amb HTML 82 00:05:40,000 --> 00:05:45,000 i altres idiomes, de manera que de vegades la impressió es veurà una mica estrany 83 00:05:45,000 --> 00:05:50,000 si guió en PHP inici i fi. 84 00:05:50,000 --> 00:05:53,000 Realment depèn. 85 00:05:53,000 --> 00:05:56,000 En aquest cas, la còpia i enganxar no lliga les pestanyes per a mi, 86 00:05:56,000 --> 00:06:02,000 però sens dubte és, com vostè ha dit, fer-lo més clar. 87 00:06:02,000 --> 00:06:06,000 Molt bé, si guarda aquest codi en dynamic.php 88 00:06:06,000 --> 00:06:10,000 llavors el que es pot fer és baixar a la finestra de terminal on estic per aquí 89 00:06:10,000 --> 00:06:17,000 en gedit, i per fer l'equivalent de compilació 90 00:06:17,000 --> 00:06:20,000 usant make i després executar el codi en C 91 00:06:20,000 --> 00:06:25,000 tot el que té a veure amb l'arxiu PHP és posar en marxa l'intèrpret PHP, 92 00:06:25,000 --> 00:06:30,000 que és un petit programa anomenat PHP, 93 00:06:30,000 --> 00:06:35,000 i l'argument que dóna a l'intèrpret és el fitxer que voleu interpretar. 94 00:06:35,000 --> 00:06:40,000 En aquest cas, dynamic.php. 95 00:06:40,000 --> 00:06:43,000 Vaja, on el poso? 96 00:06:43,000 --> 00:06:52,000 Oh, em vaig posar a la secció 9, i aquí estic. Per això. 97 00:06:52,000 --> 00:06:57,000 >> Ara si em quedo una altra vegada 98 00:06:57,000 --> 00:07:02,000 veiem que en la meva primera trucada funció gettype 99 00:07:02,000 --> 00:07:04,000 var és un nombre enter. 100 00:07:04,000 --> 00:07:12,000 En la següent var és una cadena, i després en el tercer var és un boolean. 101 00:07:12,000 --> 00:07:15,000 L'interessant d'això és que si ens desplacem de nou veiem que 102 00:07:15,000 --> 00:07:18,000 aquests són els tipus similars als que teníem en C. 103 00:07:18,000 --> 00:07:22,000 Vam tenir INT en C. 104 00:07:22,000 --> 00:07:26,000 Hem tingut sort de cadenes en C, 105 00:07:26,000 --> 00:07:31,000 així cadenes no eren un tipus totalment de fiar en el sentit que 106 00:07:31,000 --> 00:07:37,000 nostra cadena CS50 era realment què? 107 00:07:37,000 --> 00:07:39,000 Com diu? Missy? 108 00:07:39,000 --> 00:07:41,000 [Missy] Char *. 109 00:07:41,000 --> 00:07:43,000 Sí, va ser aquest char * que utilitzem. 110 00:07:43,000 --> 00:07:47,000 Al començament del semestre que feiem servir el tipus de cadena, 111 00:07:47,000 --> 00:07:52,000 però en realitat era un char * sota el capó. 112 00:07:52,000 --> 00:07:58,000 Acabem de tipus definit, mentre que en PHP aquestes cadenes són un tipus real. 113 00:07:58,000 --> 00:08:07,000 No hi ha res més d'això tipus char *. 114 00:08:07,000 --> 00:08:10,000 >> Vas a veure que podem fer moltes més coses amb les cadenes 115 00:08:10,000 --> 00:08:14,000 molt més fàcilment en PHP que vam poder a C, 116 00:08:14,000 --> 00:08:17,000 i, finalment, tenim aquest tipus boolean, i la gran diferència aquí és que 117 00:08:17,000 --> 00:08:21,000 si es desplaça cap avall, veiem que el nom d'aquest tipus 118 00:08:21,000 --> 00:08:28,000 Ara string sencer, booleà i en lloc de, int i bool 119 00:08:28,000 --> 00:08:31,000 i com es recullen diferents llenguatges de programació, 120 00:08:31,000 --> 00:08:36,000 suposant que en algun moment de les seves vides que vostè entri en contacte amb 121 00:08:36,000 --> 00:08:40,000 els diferents t'adonaràs de petits capricis com aquest 122 00:08:40,000 --> 00:08:44,000 on C diu sencers sencers. 123 00:08:44,000 --> 00:08:46,000 Alguns en diuen sencers. 124 00:08:46,000 --> 00:08:51,000 Hi ha altres termes que vostè trobi. 125 00:08:51,000 --> 00:08:55,000 Int gran que hem vist avui en SQL. 126 00:08:55,000 --> 00:08:59,000 També hi ha nombre i després bool, boolean, 127 00:08:59,000 --> 00:09:03,000 tot tipus de diferències allà. 128 00:09:03,000 --> 00:09:07,000 >> Això no és molt interessant, però ara em vaig a donar una mica de temps- 129 00:09:07,000 --> 00:09:13,000 si s'amplia fora a treballar a través d'aquest exercici en la part inferior de la pàgina 3 130 00:09:13,000 --> 00:09:20,000 on se li pregunta quins tipus corresponen a aquests valors aquí a la part inferior. 131 00:09:20,000 --> 00:09:24,000 Comptem amb 3,50. 132 00:09:24,000 --> 00:09:28,000 Tenim aquesta cosa aquí, que és interessant. 133 00:09:28,000 --> 00:09:32,000 No hem vist això abans, encara que si vostè ha estat seguint al llarg de conferència 134 00:09:32,000 --> 00:09:35,000 vostè probablement ja sap el que és això. 135 00:09:35,000 --> 00:09:40,000 Després tenim això, que això és una espècie de funky. 136 00:09:40,000 --> 00:09:42,000 Vostè reconeix això. 137 00:09:42,000 --> 00:09:46,000 Què és això en C? 138 00:09:46,000 --> 00:09:50,000 Sam? Què li oferim en aquest C? 139 00:09:50,000 --> 00:09:54,000 Obriria un arxiu anomenat dynamic.php i fer-ho llegible. 140 00:09:54,000 --> 00:09:58,000 Sí, i quin seria el tipus de variable que volem assignar a aquest? Estrella de l'arxiu. >> 141 00:09:58,000 --> 00:10:02,000 Exactament, volem assignar a un arxiu d'estrella. 142 00:10:02,000 --> 00:10:08,000 Això és legítim PHP també. 143 00:10:08,000 --> 00:10:12,000 Executeu això. Mireu el que succeeix quan es passa això en gettype. 144 00:10:12,000 --> 00:10:19,000 I després també fes un cop d'ull al que és nul, el que podria ser en PHP. 145 00:10:19,000 --> 00:10:21,000 Et vaig a donar un parell de minuts. 146 00:10:21,000 --> 00:10:24,000 Vostè, literalment, pot copiar i enganxar aquests valors en, 147 00:10:24,000 --> 00:10:29,000 i després farem una trucada a l'atzar poc sobre vostè 148 00:10:29,000 --> 00:10:34,000 i veure el que tens. 149 00:10:34,000 --> 00:10:36,000 >> [Estudiant] Tinc una pregunta. << Yeah. 150 00:10:36,000 --> 00:10:40,000 En una de les conferències David va dir que hi ha alguna cosa que vostè pot posar a la part superior del seu arxiu 151 00:10:40,000 --> 00:10:43,000 de manera que vostè no ha d'escriure en PHP cada vegada. 152 00:10:43,000 --> 00:10:45,000 ¿Què ha estat això? 153 00:10:45,000 --> 00:10:50,000 Probablement estava parlant de l'explosió lliura, l'explosió hash. 154 00:10:50,000 --> 00:10:57,000 És una directiva que si marca l'arxiu com executable 155 00:10:57,000 --> 00:11:01,000 llavors el que fa és quan s'executa l'arxiu 156 00:11:01,000 --> 00:11:06,000 que li dirà al programa de shell 157 00:11:06,000 --> 00:11:12,000 per utilitzar l'intèrpret de PHP per interpretar els continguts de l'arxiu. 158 00:11:12,000 --> 00:11:16,000 La pregunta és: quina va ser la línia especial 159 00:11:16,000 --> 00:11:20,000 que podríem incloure en la part superior dels nostres arxius PHP per no haver d'incloure 160 00:11:20,000 --> 00:11:26,000 aquesta línia de PHP o PHP aquest ordre cada vegada que vulgui executar l'arxiu? 161 00:11:26,000 --> 00:11:31,000 I vostè pot fer això amb un munt d'arxius diferents. 162 00:11:31,000 --> 00:11:37,000 Crec que depèn de la ubicació del binari PHP s'emmagatzema, 163 00:11:37,000 --> 00:11:43,000 però sovint usr / bin / php és un bon lloc per començar. 164 00:11:43,000 --> 00:11:45,000 Podeu evitar-ho exactament per tornar al seu aparell 165 00:11:45,000 --> 00:11:50,000 i escrivint quina php. 166 00:11:50,000 --> 00:11:55,000 La comanda que s'adona de quan estàs executant binari 167 00:11:55,000 --> 00:12:01,000 o una ordre a l'arxiu corresponent. 168 00:12:01,000 --> 00:12:06,000 Això em diu que el PHP és realment aliasing aquest arxiu binari 169 00:12:06,000 --> 00:12:13,000 que s'emmagatzema en usr / bin, que és on molts dels binaris del sistema estan instal · lats. 170 00:12:13,000 --> 00:12:21,000 Per exemple, si em desplaço fins al cim, ara que he posat aquest #! en línia aquí 171 00:12:21,000 --> 00:12:27,000 Em pot desplaçar-se cap avall, i puc tractar d'executar 172 00:12:27,000 --> 00:12:35,000 dynamic.php, però em surt aquest error sobre el permís que se'ls nega, 173 00:12:35,000 --> 00:12:42,000 i el que això significa és que aquest arxiu no està donant permisos d'execució. 174 00:12:42,000 --> 00:12:46,000 No està marcat com un arxiu que algú pot córrer. 175 00:12:46,000 --> 00:12:52,000 >> En fer make o Clang i tens un arxiu executable de la mateixa 176 00:12:52,000 --> 00:12:56,000 el compilador va ser prou intel · ligent per saber que hey, estic construint un executable. 177 00:12:56,000 --> 00:13:00,000 És possible que vulgueu per a la seva execució, de manera que seria configurar 178 00:13:00,000 --> 00:13:02,000 els permisos per a vostè. 179 00:13:02,000 --> 00:13:06,000 Aquest no és el cas, però, quan es crea un arxiu normal de zero, 180 00:13:06,000 --> 00:13:13,000 La raó és en general no desitja tenir cap fitxer al sistema sigui executable, 181 00:13:13,000 --> 00:13:15,000 pel que en realitat han d'anar i fer-ho manualment. 182 00:13:15,000 --> 00:13:22,000 La manera més fàcil de fer-ho és amb la comanda chmod, 183 00:13:22,000 --> 00:13:28,000 i chmod + x diu afegir el bit executable 184 00:13:28,000 --> 00:13:31,000 perquè no és la part de lectura, el bit d'escriptura i el bit executable, 185 00:13:31,000 --> 00:13:35,000 r, w i x, 186 00:13:35,000 --> 00:13:39,000 i dient: chmod + x s'encén el bit executable 187 00:13:39,000 --> 00:13:46,000 per llavors l'arxiu que especifica, que en aquest cas serà dynamic.php. 188 00:13:46,000 --> 00:13:49,000 >> [Estudiant] és que encén per tot el món? 189 00:13:49,000 --> 00:13:52,000 A veure això, així que com puc comprovar per veure els permisos? 190 00:13:52,000 --> 00:13:54,000 Saps com m'agradaria comprovar els permisos d'un arxiu? 191 00:13:54,000 --> 00:13:56,000 [Resposta dels estudiants inaudible] 192 00:13:56,000 --> 00:13:58,000 Com? >> [Estudiant] XSD. 193 00:13:58,000 --> 00:14:03,000 XSD ens dóna l'arxiu en hacks. 194 00:14:03,000 --> 00:14:09,000 Llistat de tots els arxius,-l, es em mostri tots els arxius en el meu directori 195 00:14:09,000 --> 00:14:13,000 una mica en el seu llistat llarg, detallat, i aquí veiem que 196 00:14:13,000 --> 00:14:17,000 aquest arxiu dynamic.php 197 00:14:17,000 --> 00:14:23,000 va ser modificada per última vegada 5 de novembre a 04:21 PM. 198 00:14:23,000 --> 00:14:26,000 El propietari d'aquest arxiu es jharvard. 199 00:14:26,000 --> 00:14:28,000 Aquest és l'usuari que ha iniciat la sessió 200 00:14:28,000 --> 00:14:31,000 Aquest és l'usuari estic treballant com, 201 00:14:31,000 --> 00:14:36,000 i si vostè està també en l'aparell que està també treballant com jharvard usuari. 202 00:14:36,000 --> 00:14:38,000 Vostè està en el grup d'estudiants, 203 00:14:38,000 --> 00:14:44,000 i aquestes són les coses que es veuen sovint. 204 00:14:44,000 --> 00:14:47,000 >> Podem entrar en molt detall aquí, 205 00:14:47,000 --> 00:14:50,000 però en la seva major part el que vols veure quan vostè està mirant per veure 206 00:14:50,000 --> 00:14:55,000 si o no un arxiu és executable és principalment 207 00:14:55,000 --> 00:14:58,000 l'usuari que té l'arxiu, el propietari, 208 00:14:58,000 --> 00:15:03,000 de manera que aquest jharvard, i llavors tenim 209 00:15:03,000 --> 00:15:07,000 els bits de permisos d'aquí a l'esquerra, 210 00:15:07,000 --> 00:15:13,000 i la manera de llegir això és que l'últim bit 211 00:15:13,000 --> 00:15:18,000 típicament s'utilitza per canviar la si més no en-en aquest cas 212 00:15:18,000 --> 00:15:21,000 això últim sovint s'ajustarà a l'anunci que indiqui 213 00:15:21,000 --> 00:15:24,000 que l'arxiu és un directori i no un arxiu normal. 214 00:15:24,000 --> 00:15:28,000 Llavors els 3 bits a la dreta aquí 215 00:15:28,000 --> 00:15:34,000 determinar els permisos que el propietari de l'arxiu té, 216 00:15:34,000 --> 00:15:38,000 pel que en aquest cas jharvard, com a propietari de l'arxiu, pot llegir i escriure en aquest arxiu, 217 00:15:38,000 --> 00:15:42,000 però no hi ha un guió dient que jharvard no pot executar aquest fitxer. 218 00:15:42,000 --> 00:15:46,000 Els propers 3 bits són per al grup, de manera que aquest és el grup d'estudiants, 219 00:15:46,000 --> 00:15:49,000 així que si hi ha diversos usuaris al meu aparell, 220 00:15:49,000 --> 00:15:52,000 i que tenia múltiples usuaris com a part del grup d'estudiants, 221 00:15:52,000 --> 00:15:55,000 llavors tots poden llegir l'arxiu, però no pot escriure, 222 00:15:55,000 --> 00:15:59,000 i de la mateixa manera els altres, el món 223 00:15:59,000 --> 00:16:01,000 només pot llegir l'arxiu també. 224 00:16:01,000 --> 00:16:03,000 Hi ha una valoració crítica bona i llarga sobre això, 225 00:16:03,000 --> 00:16:05,000 així que vostè pot llegir en línia. 226 00:16:05,000 --> 00:16:10,000 En l'especificació del conjunt de problemes d'entrar en això amb més detall. 227 00:16:10,000 --> 00:16:12,000 >> [Estudiant] El 218 es refereix al món? 228 00:16:12,000 --> 00:16:17,000 El 218 és-off de la part superior del meu cap m'estic oblidant, 229 00:16:17,000 --> 00:16:20,000 però no. 230 00:16:20,000 --> 00:16:29,000 Anem a veure. Estic cega en això ara mateix. 231 00:16:29,000 --> 00:16:32,000 Tornar al que anàvem a fer amb aquest chmod + x 232 00:16:32,000 --> 00:16:37,000 on volíem donar permisos dynamic.php executables, 233 00:16:37,000 --> 00:16:40,000 i el dubte era si això donaria permisos d'execució per a tothom 234 00:16:40,000 --> 00:16:44,000 o només jharvard, i podem veure això 235 00:16:44,000 --> 00:16:48,000 d'executar les ordres i escrivint ls-l, 236 00:16:48,000 --> 00:16:51,000 i ara veiem que està marcada com executable. 237 00:16:51,000 --> 00:16:54,000 Es veu que hi va haver un canvi de color. 238 00:16:54,000 --> 00:16:57,000 Ara dynamic.php apareix en verd, 239 00:16:57,000 --> 00:17:01,000 i sembla que la resposta a la pregunta és què, Charlotte? 240 00:17:01,000 --> 00:17:04,000 [Charlotte] Només jharvard. >> Només jharvard, sí. 241 00:17:04,000 --> 00:17:08,000 >> Si volem convertir el bit d'execució a tot el món per 242 00:17:08,000 --> 00:17:10,000 Com podem fer això? 243 00:17:10,000 --> 00:17:13,000 Alguna idea? >> A + x? 244 00:17:13,000 --> 00:17:15,000 Sí, exactament. 245 00:17:15,000 --> 00:17:23,000 Charlotte va dir que podem fer chmod + x d'una de dynamic.php, 246 00:17:23,000 --> 00:17:26,000 i ara si correm ls-l veiem que els bits d'execució 247 00:17:26,000 --> 00:17:30,000 són, en efecte encesa per a tots. 248 00:17:30,000 --> 00:17:37,000 I en realitat es pot fer el contrari d'això, el que es pot apagar per a tots 249 00:17:37,000 --> 00:17:41,000 amb menys. 250 00:17:41,000 --> 00:17:46,000 Ara s'ha apagat, i ara podem tornar a engegar per jharvard 251 00:17:46,000 --> 00:17:52,000 pel que en realitat podem executar ara, 252 00:17:52,000 --> 00:17:58,000 i ara que es veu quan s'executa el codi d'aquest especial #! línia a la part superior, 253 00:17:58,000 --> 00:18:04,000 #! línia, va dir a la closca, 254 00:18:04,000 --> 00:18:08,000 va dir al nostre terminal hey, quan l'arxiu s'executa, 255 00:18:08,000 --> 00:18:14,000 utilitzar / usr / bin / php per interpretar aquest arxiu 256 00:18:14,000 --> 00:18:20,000 i després imprimir el resultat. 257 00:18:20,000 --> 00:18:22,000 [Pregunta estudiant inaudible] 258 00:18:22,000 --> 00:18:25,000 És clar, deixa passar de tornada. Igual que aquest. 259 00:18:25,000 --> 00:18:36,000 Vostè veurà totes aquestes directives començar amb aquest lliura i després el signe d'exclamació, 260 00:18:36,000 --> 00:18:39,000 de vegades anomenat un cop shebang, hash. 261 00:18:39,000 --> 00:18:48,000 >> [Estudiant] Com podem córrer amb dynamic.php php abans que sigui executable? 262 00:18:48,000 --> 00:18:55,000 La pregunta era: com podem executar està utilitzant el binari de PHP 263 00:18:55,000 --> 00:18:58,000 mentre dynamic.php no és executable? 264 00:18:58,000 --> 00:19:01,000 Això és súper important perquè així és exactament com 265 00:19:01,000 --> 00:19:06,000 que treballarà quan s'escriu conjunt de problemes 7. 266 00:19:06,000 --> 00:19:09,000 La majoria dels arxius de temps de PHP no són directament executables. 267 00:19:09,000 --> 00:19:14,000 La forma en que funciona és perquè és el binari PHP que és executable. 268 00:19:14,000 --> 00:19:16,000 L'intèrpret és el que està sent executat, 269 00:19:16,000 --> 00:19:20,000 i per tant el que està fent és, literalment, xarrupant en tot el contingut 270 00:19:20,000 --> 00:19:25,000 del nostre arxiu i dynamic.php línia que va per la línia 271 00:19:25,000 --> 00:19:29,000 i executar aquests comandaments, així que usant el nostre arxiu PHP 272 00:19:29,000 --> 00:19:31,000 com una llista d'instruccions. 273 00:19:31,000 --> 00:19:36,000 No és directament executora. 274 00:19:36,000 --> 00:19:40,000 Aquí és on diem que aquests arxius s'interpreten en temps d'execució. 275 00:19:40,000 --> 00:19:46,000 És un llenguatge de temps d'execució en lloc d'una cosa que es determina en temps de compilació, 276 00:19:46,000 --> 00:19:49,000 no és un llenguatge compilat com C 277 00:19:49,000 --> 00:19:54,000 >> Hi ha una manera d'aconseguir un llenguatge de temps d'execució per actuar com si fos un llenguatge de temps de compilació, 278 00:19:54,000 --> 00:19:58,000 com si vostè té tot el rodatge realitzat al servidor 279 00:19:58,000 --> 00:20:00,000 en lloc de, ja saps el que vull dir? 280 00:20:00,000 --> 00:20:04,000 Sí, així que la pregunta és 281 00:20:04,000 --> 00:20:11,000 ¿Hi ha alguna manera d'aconseguir executar idiomes moment d'actuar més com els tipus en temps de compilació d'idiomes? 282 00:20:11,000 --> 00:20:18,000 I aquí estan, vull dir, que és una àrea activa d'investigació per moltes d'aquestes empreses. 283 00:20:18,000 --> 00:20:22,000 Crec que Facebook ha fet una gran feina amb PHP 284 00:20:22,000 --> 00:20:25,000 i la compilació de baix, pel que és més ràpid, optimitzant el seu 285 00:20:25,000 --> 00:20:29,000 ja que el seu lloc està construït en PHP. 286 00:20:29,000 --> 00:20:34,000 Si vostè ha estat seguint Node.js en absolut, 287 00:20:34,000 --> 00:20:40,000 que és una espècie d'intèrpret de JavaScript 288 00:20:40,000 --> 00:20:44,000 per ser capaç d'executar JavaScript fora del navegador, als afores del seu navegador web, 289 00:20:44,000 --> 00:20:47,000 perquè tradicionalment JavaScript acaba de funcionar dins de Firefox o Chrome, 290 00:20:47,000 --> 00:20:52,000 i que s'utilitza per fer animacions fresc succeir en una pàgina web 291 00:20:52,000 --> 00:20:55,000 i fer que la seva pàgina web dinàmica. 292 00:20:55,000 --> 00:20:59,000 Això ha estat construït sobre una gran quantitat de treball que ha fet Google 293 00:20:59,000 --> 00:21:03,000 que JavaScript i C + + 294 00:21:03,000 --> 00:21:09,000 uneixen, així que hi ha un munt de recerca activa per 295 00:21:09,000 --> 00:21:13,000 obtenir aquests llenguatges per interactuar i optimitzar, 296 00:21:13,000 --> 00:21:17,000 principalment perquè molta gent pot codificar en PHP i JavaScript 297 00:21:17,000 --> 00:21:19,000 perquè és molt més fàcil. 298 00:21:19,000 --> 00:21:21,000 És molt més agradable. No té punters. 299 00:21:21,000 --> 00:21:27,000 No ha tipus que suren al seu voltant. 300 00:21:27,000 --> 00:21:31,000 Volien obtenir els beneficis d'aquests idiomes en temps de compilació 301 00:21:31,000 --> 00:21:36,000 amb tota la comprovació del tipus i la velocitat i l'ús de memòria més baixa i que tot 302 00:21:36,000 --> 00:21:42,000 mentre que encara manté la flexibilitat i la facilitat d'ús d'aquests els més nous. 303 00:21:42,000 --> 00:21:46,000 >> De tornada al nostre pla original d'atac. 304 00:21:46,000 --> 00:21:50,000 Tenim algunes d'aquestes preguntes aquí a la nostra especificació de problemes. 305 00:21:50,000 --> 00:21:54,000 Anem a anar a través d'ells molt ràpidament, i anirem per l'habitació. 306 00:21:54,000 --> 00:21:59,000 Charlotte, quin tipus és de 3,50? 307 00:21:59,000 --> 00:22:01,000 [Charlotte] Això és un doble. >> És un doble. 308 00:22:01,000 --> 00:22:03,000 Jimmy, què és aquest proper? >> Una matriu. 309 00:22:03,000 --> 00:22:09,000 Una matriu, impressionant, i Jared, quina és la funció fopen? 310 00:22:09,000 --> 00:22:11,000 [Jared] És un recurs. >> És un recurs. 311 00:22:11,000 --> 00:22:15,000 Això és una mica d'un ésser nou, no un estel de l'arxiu, no un arxiu. 312 00:22:15,000 --> 00:22:19,000 És un recurs és el tipus en PHP, 313 00:22:19,000 --> 00:22:24,000 i ho sento, Ella, la hipòtesi nul · la és l'últim? 314 00:22:24,000 --> 00:22:26,000 Null. 315 00:22:26,000 --> 00:22:28,000 Null, com s'escriu en PHP? >> La mateixa forma. 316 00:22:28,000 --> 00:22:30,000 De la mateixa manera, capitals? >> Yeah. 317 00:22:30,000 --> 00:22:33,000 Sí, està bé. 318 00:22:33,000 --> 00:22:35,000 Aquí, tenim un doble, tenim una matriu, 319 00:22:35,000 --> 00:22:41,000 tenim un recurs, i llavors tenim nul. 320 00:22:41,000 --> 00:22:48,000 Anem a veure ara si l'has vist- 321 00:22:48,000 --> 00:22:51,000 veurem, de manera que ara crec que el que jo també vull fer és aixecar 322 00:22:51,000 --> 00:22:56,000 aquesta pàgina web aquí, aquest php.net / manual, 323 00:22:56,000 --> 00:23:01,000 així que si vostès de copiar i obrir un navegador web. 324 00:23:01,000 --> 00:23:07,000 Vaig a aixecar Chrome, ja que in 325 00:23:07,000 --> 00:23:10,000 Vull mostrar que això no només perquè 326 00:23:10,000 --> 00:23:13,000 podem parlar tot el dia sobre els tipus i totes aquestes coses divertides 327 00:23:13,000 --> 00:23:19,000 sinó perquè aquest és el manual de PHP, 328 00:23:19,000 --> 00:23:23,000 i hi ha una gran quantitat de programadors de PHP que hi ha. 329 00:23:23,000 --> 00:23:26,000 Hi ha un munt de llocs web PHP per aquí, 330 00:23:26,000 --> 00:23:31,000 i com a resultat, hi ha una gran quantitat de documentació sobre PHP, 331 00:23:31,000 --> 00:23:36,000 i el manual, aquest php.net, és un molt bon lloc per anar 332 00:23:36,000 --> 00:23:43,000 quan tens preguntes sobre quina és la millor manera de fer X en PHP 333 00:23:43,000 --> 00:23:45,000 o el que és una funció sembla? 334 00:23:45,000 --> 00:23:49,000 Només tipus de familiaritzar-se amb l'aspecte que té, perquè 335 00:23:49,000 --> 00:23:54,000 se li ve aquí sovint, una mica per ajustar problema 7. 336 00:23:54,000 --> 00:23:57,000 >> Si vostè acaba damunt de fer un projecte final que utilitza PHP 337 00:23:57,000 --> 00:24:04,000 aquest serà un lloc que es convertirà molt ben informat. 338 00:24:04,000 --> 00:24:09,000 Sovint, la manera de fer això és que utilitzen Google per buscar el lloc, 339 00:24:09,000 --> 00:24:16,000 i no utilitzar el quadre de cerca que passa aquí a la part superior dreta, que és una espècie de petit. 340 00:24:16,000 --> 00:24:19,000 Si vostè està buscant a Google voltant buscant alguna cosa que fer amb PHP i ens veiem 341 00:24:19,000 --> 00:24:24,000 un dels enllaços manuals aparèixer normalment es pot confiar que 342 00:24:24,000 --> 00:24:31,000 com un recurs bastant bo. 343 00:24:31,000 --> 00:24:34,000 Impressionant, tan fora d'aquest tipus, només per curiositat, 344 00:24:34,000 --> 00:24:37,000 quins no ho hem vist? 345 00:24:37,000 --> 00:24:40,000 Qualsevol cosa que no hem vist aquí? 346 00:24:40,000 --> 00:24:44,000 [Estudiant] Recursos. >> Vam veure recurs a la crida fopen. 347 00:24:44,000 --> 00:24:48,000 [Estudiant] Objectes. >> Objectes que no hem vist amb seguretat. 348 00:24:48,000 --> 00:24:51,000 Devolucions de trucada que no hem vist. 349 00:24:51,000 --> 00:24:54,000 Hi ha alguns d'aquests pseudo-tipus. 350 00:24:54,000 --> 00:24:57,000 Sens dubte, només vaig veure sencer i doble. 351 00:24:57,000 --> 00:25:01,000 No arribem a veure alguns dels altres, així que si fem clic sobre els nombres enters 352 00:25:01,000 --> 00:25:08,000 podem veure hi ha enters qualssevol altres que tenen aquí? 353 00:25:08,000 --> 00:25:11,000 Són tots tan sencer, nombre enter, nombre enter. 354 00:25:11,000 --> 00:25:14,000 Alguns idiomes tenen grans tipus sencers, 355 00:25:14,000 --> 00:25:23,000 com vam veure en MySQL avui va haver int i després int gran. 356 00:25:23,000 --> 00:25:25,000 Cool. 357 00:25:25,000 --> 00:25:28,000 >> Així, PHP manual. 358 00:25:28,000 --> 00:25:37,000 Tornem a la nostra especificacions conjunt de problemes, i ara vaig a desplaçar-se cap avall a la pàgina 4. 359 00:25:37,000 --> 00:25:41,000 Una de les coses que succeeix quan rep aquests idiomes 360 00:25:41,000 --> 00:25:49,000 que no tenen aquest tipus estàtics, de manera que aquests idiomes en què ha de declarar 361 00:25:49,000 --> 00:25:52,000 el tipus de variable de fins a un front 362 00:25:52,000 --> 00:26:00,000 és que et donen casos en què podria començar a tenir variables de diferents tipus 363 00:26:00,000 --> 00:26:04,000 interactuen entre ells, 364 00:26:04,000 --> 00:26:09,000 i PHP fa això quan tracta de fer 365 00:26:09,000 --> 00:26:13,000 el que considera que és el més sensat 366 00:26:13,000 --> 00:26:18,000 quan es té 2 tipus diferents interactuen entre ells. 367 00:26:18,000 --> 00:26:24,000 Per exemple, si ens fixem en aquestes línies de codi aquí 368 00:26:24,000 --> 00:26:29,000 veus que tenim el que succeeix quan 369 00:26:29,000 --> 00:26:38,000 tractem d'afegir la cadena 1 fins al nombre enter 2. 370 00:26:38,000 --> 00:26:41,000 Què passa si tractem d'afegir una cadena que no és un valor numèric 371 00:26:41,000 --> 00:26:48,000 sinó més aviat personatges reals, CS amb el número 50? 372 00:26:48,000 --> 00:26:51,000 Llavors veurem, hi ha alguna cosa diferent que el que succeeix amb 373 00:26:51,000 --> 00:26:56,000 en lloc d'afegir una cadena a un nombre que va a afegir un nombre a una cadena, 374 00:26:56,000 --> 00:27:00,000 i així successivament i així successivament fins al punt en què estem rebent 375 00:27:00,000 --> 00:27:05,000 algun tipus de coses rares aquí on tenim 7 + veritat. 376 00:27:05,000 --> 00:27:09,000 Què diables vol dir això? 377 00:27:09,000 --> 00:27:19,000 >> Si vostès van per davant i enganxar una mica d'aquest codi en l'aparell. 378 00:27:19,000 --> 00:27:27,000 Vostè pot mantenir-lo en dynamic.php. 379 00:27:27,000 --> 00:27:30,000 Anem a veure què passa. 380 00:27:41,000 --> 00:27:43,000 [Estudiant] Només ha d'utilitzar la impressió no, printf? 381 00:27:43,000 --> 00:27:52,000 Sí, i trobareu que la impressió és també una funció vàlida per imprimir en PHP. 382 00:27:52,000 --> 00:27:54,000 Hi ha moltes maneres diferents de fer-ho. 383 00:27:54,000 --> 00:27:58,000 Anem a veure amb un parell dels exemples més endavant, una vegada que comença a parlar 384 00:27:58,000 --> 00:28:02,000 sobre l'únic problema que escriurem 385 00:28:02,000 --> 00:28:06,000 i després la concentració problema que escriurem 386 00:28:06,000 --> 00:28:09,000 que tot i que tenim fopen i fclose 387 00:28:09,000 --> 00:28:15,000 que no és sovint la forma més senzilla de llegir en el contingut d'un arxiu. 388 00:28:15,000 --> 00:28:21,000 PHP té un munt d'aquests romanents C-like. 389 00:28:21,000 --> 00:28:28,000 [Estudiant] Quan poso en tots els 6 d'aquestes coses que només et donen un nombre com una sortida. 390 00:28:28,000 --> 00:28:36,000 [Nate H.] Quan es posa en tots els 6 d'aquestes coses. 391 00:28:36,000 --> 00:28:39,000 Anem a veure que és perquè és possible- 392 00:28:39,000 --> 00:28:46,000 una cosa és que aquestes trucades d'impressió no s'acaben al final amb noves línies. 393 00:28:46,000 --> 00:28:49,000 No hi ha nova línia que separa cadascuna d'aquestes trucades d'impressió, 394 00:28:49,000 --> 00:28:51,000 així que potser vostè està rebent un gran nombre, 395 00:28:51,000 --> 00:28:58,000 i no deixa de ser amalgama de caràcters de nova línia. 396 00:28:58,000 --> 00:29:00,000 [Estudiant] Bé, com puc estar segur- 397 00:29:00,000 --> 00:29:03,000 Bé, hi ha un munt de maneres diferents. 398 00:29:03,000 --> 00:29:06,000 Manualment, pot posar en una impressió d'un caràcter de nova línia, 399 00:29:06,000 --> 00:29:09,000 un ressò d'un caràcter de nova línia, 400 00:29:09,000 --> 00:29:12,000 imprimir de nova línia. 401 00:29:12,000 --> 00:29:16,000 [Estudiant] Així que trobo és el mateix que printf? 402 00:29:16,000 --> 00:29:21,000 >> Printf és com printf 403 00:29:21,000 --> 00:29:24,000 on s'està imprimint una cadena amb format. 404 00:29:24,000 --> 00:29:32,000 El estàs subministrament de la cadena de format i, a continuació totes les variables de marcador de posició. 405 00:29:32,000 --> 00:29:39,000 Sovint és una cosa que no s'utilitza- 406 00:29:39,000 --> 00:29:42,000 veurem, com un descàrrec de responsabilitat, 407 00:29:42,000 --> 00:29:48,000 Estic menys familiaritzat amb PHP que jo amb els idiomes de llocs web, 408 00:29:48,000 --> 00:29:53,000 i quan he programat en PHP que no solen usar printf 409 00:29:53,000 --> 00:29:59,000 perquè em resulta més ràpid utilitzar les funcions d'interpolació de cadenes que té, 410 00:29:59,000 --> 00:30:04,000 que entrarem i et vaig a mostrar en un segon, 411 00:30:04,000 --> 00:30:08,000 mentre que en C que tipus de haver de fer això hacky per aconseguir que s'imprimeixi correctament. 412 00:30:08,000 --> 00:30:16,000 En realitat es pot posar directament en les variables de les cadenes en PHP. 413 00:30:16,000 --> 00:30:22,000 Printf és una mica massa llarg per al que faig. Sí, Ella. 414 00:30:22,000 --> 00:30:25,000 [Ella] En general, si vostè aconsegueix error d'anàlisi significa això- 415 00:30:25,000 --> 00:30:30,000 igual que en C no li dirà exactament on és l'error i el que és, 416 00:30:30,000 --> 00:30:34,000 ¿Això vol dir mirar a través del seu codi complet i la figura cap a fora? 417 00:30:34,000 --> 00:30:39,000 És típicament més específic que això. 418 00:30:39,000 --> 00:30:48,000 Crec que en aquest cas era una mica apagat, 419 00:30:48,000 --> 00:30:51,000 així que crec que en aquest cas ens faltava un punt i coma. 420 00:30:51,000 --> 00:30:54,000 Es tractava de donar sentit a tot, 421 00:30:54,000 --> 00:30:57,000 així com els llenguatges interpretats, l'intèrpret es tractarà 422 00:30:57,000 --> 00:31:01,000 i fer tot el possible perquè tot funcioni correctament. 423 00:31:01,000 --> 00:31:04,000 >> Vas a veure, per exemple, en JavaScript 424 00:31:04,000 --> 00:31:10,000 Vas sovint-line declaracions finals amb un punt i coma igual que ho fan en PHP, 425 00:31:10,000 --> 00:31:13,000 tal com ho fan en C. 426 00:31:13,000 --> 00:31:15,000 En JavaScript alguns dels intèrprets de JavaScript 427 00:31:15,000 --> 00:31:20,000 en molts dels navegadors posarà en punt i coma per a vostè 428 00:31:20,000 --> 00:31:23,000 si li passa que se'ls falta. 429 00:31:23,000 --> 00:31:29,000 Van a tractar de donar cabuda a alguns descuit de la seva part. 430 00:31:29,000 --> 00:31:34,000 Aquí és on podria estar tractant i tractant i tractant de fer que les coses funcionin, 431 00:31:34,000 --> 00:31:36,000 i, finalment, s'arriba a un punt on diu bé, 432 00:31:36,000 --> 00:31:38,000 No puc fer les coses en el rescat, i aquí és on vostè obtindrà un nombre de línia 433 00:31:38,000 --> 00:31:44,000 que pot semblar una mica fora del lloc exacte. 434 00:31:44,000 --> 00:31:47,000 Està bé, així que anirem a través d'aquest molt ràpid. 435 00:31:47,000 --> 00:31:50,000 Ens va deixar amb Ella, així que anirem a Missy, 436 00:31:50,000 --> 00:31:54,000 i Missy, què impressió de la cadena 1 més el nombre 2 li donar? 437 00:31:54,000 --> 00:31:56,000 [Missy] 3. >> 3. 438 00:31:56,000 --> 00:31:59,000 Això té sentit? Una cosa així? 439 00:31:59,000 --> 00:32:02,000 Et dóna un nombre? Et dóna una cadena? 440 00:32:02,000 --> 00:32:05,000 [Missy] Diversos. >> Es tracta d'un nombre. 441 00:32:05,000 --> 00:32:09,000 Però val la impressió, pel que et donarà algun tipus de cadena. 442 00:32:09,000 --> 00:32:12,000 >> Una de les coses que podem fer per comprovar això 443 00:32:12,000 --> 00:32:21,000 és si ho fem $ var = 1 + 2 444 00:32:21,000 --> 00:32:28,000 i llavors diem ressò de gettype, 445 00:32:28,000 --> 00:32:33,000 així que estem utilitzant un tercer tipus d'impressió aquí. 446 00:32:33,000 --> 00:32:39,000 Ara podem veure el que passa aquí. 447 00:32:39,000 --> 00:32:42,000 Aquí el que tenim és que tenim un nombre enter d'això. 448 00:32:42,000 --> 00:32:45,000 Tot i que es van anar sumant aquesta cadena en un nombre, 449 00:32:45,000 --> 00:32:48,000 que no et donin una cadena a partir d'aquesta, igual que Missy va dir. 450 00:32:48,000 --> 00:32:52,000 Estàvem preparant un sencer. 451 00:32:52,000 --> 00:32:57,000 Està bé, així que anem a veure, al costat de dalt, Kevin. 452 00:32:57,000 --> 00:32:59,000 CS + 50? >> [Kevin] 50. 453 00:32:59,000 --> 00:33:02,000 [Nate H.] 50. Això té sentit? 454 00:33:02,000 --> 00:33:04,000 [Kevin] Yeah. 455 00:33:04,000 --> 00:33:06,000 [Nate H.] Per què? Per què té sentit per a tu? 456 00:33:06,000 --> 00:33:11,000 [Kevin] Perquè és només tenir la cadena, amb número zero valor. 457 00:33:11,000 --> 00:33:16,000 Sí, molt bé. 458 00:33:16,000 --> 00:33:20,000 Tipus de situacions ambigües, però és bo saber el que passa. 459 00:33:20,000 --> 00:33:25,000 Stella, què passa després amb el número 1 + cadena 2? 460 00:33:25,000 --> 00:33:27,000 [Stella] 3. >> 3 de nou. 461 00:33:27,000 --> 00:33:30,000 I en aquest cas, no obtenim una cadena o un nombre? 462 00:33:30,000 --> 00:33:36,000 >> Anem a donar-li una oportunitat. 463 00:33:36,000 --> 00:33:43,000 Algú més ràpid que jo obtenir la resposta? Charlotte? 464 00:33:43,000 --> 00:33:46,000 Oh, no ho va fer-bé, anem a veure, farem el mateix tipus de coses 465 00:33:46,000 --> 00:33:49,000 on tenim un nombre més una cadena, i que repetirem el tipus, 466 00:33:49,000 --> 00:33:51,000 veure el que tenim. 467 00:33:51,000 --> 00:33:55,000 També vam rebre un nombre enter. 468 00:33:55,000 --> 00:33:58,000 No importa quina és la cadena, que un és el nombre. 469 00:33:58,000 --> 00:34:00,000 Encara obtindrem un nombre enter. 470 00:34:00,000 --> 00:34:04,000 És encara va a fer el que es podria esperar. 471 00:34:04,000 --> 00:34:09,000 D'acord, Sam, què passa amb 90 + 9 ampolles de cervesa a la paret? 472 00:34:09,000 --> 00:34:12,000 [Sam] 99. >> 99. 473 00:34:12,000 --> 00:34:15,000 No hi havia ampolles de cervesa a la paret, però. 474 00:34:15,000 --> 00:34:17,000 Ens fa una mica més d'informació sobre el que està passant. 475 00:34:17,000 --> 00:34:21,000 [Sam] Si haguessis escrit amb lletres 9 476 00:34:21,000 --> 00:34:23,000 llavors tindria 90, no? 477 00:34:23,000 --> 00:34:26,000 [Nate H.] Yeah. 478 00:34:26,000 --> 00:34:30,000 La pregunta era si ens haguéssim escrit 9 sobre com N-I-N-E 479 00:34:30,000 --> 00:34:34,000 hauríem aconseguit 99 o 90? 480 00:34:34,000 --> 00:34:38,000 Ens agradaria obtenir 90. 481 00:34:38,000 --> 00:34:42,000 És, literalment, només a la recerca de caràcters de dos dígits. 482 00:34:42,000 --> 00:34:46,000 No és prou intel · ligent per reconèixer les paraules de nombres i aquestes coses. Sí 483 00:34:46,000 --> 00:34:48,000 >> [Estudiant] Existeix tal cosa com l'encasellament en PHP? 484 00:34:48,000 --> 00:34:54,000 Existeix, i és exactament la manera com ho faria en C. 485 00:34:54,000 --> 00:34:56,000 Què hi ha de 10/7, Charlotte? 486 00:34:56,000 --> 00:34:58,000 [Charlotte] 1,4285. 487 00:34:58,000 --> 00:35:01,000 [Nate H.] Sí, i què podria ser sorprenent sobre això? 488 00:35:01,000 --> 00:35:04,000 Què passaria si ho fessis aquest mateix tipus de coses en C, 489 00:35:04,000 --> 00:35:06,000 si ho has fet 10/7 en C? 490 00:35:06,000 --> 00:35:08,000 [Charlotte] Només li donaria vostè, depenent de com es typecasted suposo 491 00:35:08,000 --> 00:35:12,000 seria donar-li només un nombre limitat de dígits després del punt decimal. 492 00:35:12,000 --> 00:35:16,000 Sí, de manera que un nombre limitat de dígits després del punt decimal. 493 00:35:16,000 --> 00:35:21,000 Quina altra cosa podria ser, li donarà cap dígit després del decimal? 494 00:35:21,000 --> 00:35:28,000 Sovint, no tan nou, depenent de com ho està typecasting 495 00:35:28,000 --> 00:35:31,000 que pot o no pot convertir en un nombre de coma flotant. 496 00:35:31,000 --> 00:35:35,000 Aquí era una mica agradable que ho va fer. 497 00:35:35,000 --> 00:35:40,000 Si haguéssim mostrat això quan vam començar a fer aquest tipus de coses en C 498 00:35:40,000 --> 00:35:44,000 probablement hauria tingut sentit una mica més 499 00:35:44,000 --> 00:35:48,000 que no només ha d'anar a 1. 500 00:35:48,000 --> 00:35:51,000 I, finalment, Jamie, què hi ha de 7 + veritat? 501 00:35:51,000 --> 00:35:53,000 [Jamie] 8. >> 8. 502 00:35:53,000 --> 00:35:56,000 Què significa això? 503 00:35:56,000 --> 00:35:58,000 Suposo que només dóna el veritable valor d'1. 504 00:35:58,000 --> 00:36:01,000 Si. Què passa si canviem això a fals? 505 00:36:01,000 --> 00:36:04,000 [Estudiant] 7. 506 00:36:04,000 --> 00:36:09,000 Sí, així que recorda on es parla d'aquests valors binaris, 507 00:36:09,000 --> 00:36:12,000 1 és activat, 0 és apagat? 508 00:36:12,000 --> 00:36:17,000 Ara tenim cert és 1, 0 és fals, 509 00:36:17,000 --> 00:36:21,000 i és possible que no hem vist en els exemples C que hem fet aquest semestre passat, 510 00:36:21,000 --> 00:36:27,000 però històricament el tipus bool al carrer no ha estat un tipus real, 511 00:36:27,000 --> 00:36:32,000 així que la gent ha utilitzat 0 i 1 en el lloc de veritable i fals. 512 00:36:32,000 --> 00:36:35,000 Aquesta és una manifestació d'això. 513 00:36:35,000 --> 00:36:39,000 >> Bé, així que una part important de tot això 514 00:36:39,000 --> 00:36:41,000 és que tenim aquests tipus. 515 00:36:41,000 --> 00:36:43,000 Ells poden interactuar entre ells. 516 00:36:43,000 --> 00:36:49,000 Sovint poden interactuar entre si de manera que siguin agradables, com hem vist aquí. 517 00:36:49,000 --> 00:36:53,000 És agradable ser capaç de tenir una cadena i el número 2, sumar-los i obtenir 3. 518 00:36:53,000 --> 00:36:55,000 Això té sentit. 519 00:36:55,000 --> 00:36:59,000 No obstant això, quan vostè està escrivint pàgines web, i especialment quan vostè està processant 520 00:36:59,000 --> 00:37:04,000 entrada de l'usuari, pel que diuen que ha escrit un formulari web 521 00:37:04,000 --> 00:37:09,000 que recull la informació de l'usuari i després es va a processar 522 00:37:09,000 --> 00:37:13,000 en la part posterior, al costat del servidor en el codi PHP 523 00:37:13,000 --> 00:37:18,000 si estàs esperant que el valor que l'usuari va escriure i presentar 524 00:37:18,000 --> 00:37:23,000 a la seva forma de ser un enter o com un nombre de punt flotant o alguna cosa per l'estil 525 00:37:23,000 --> 00:37:29,000 ha d'emetre explícitament 526 00:37:29,000 --> 00:37:34,000 i després fer una mica de comprovació de tipus. 527 00:37:34,000 --> 00:37:41,000 >> No vol dependre només d'aquest sistema de manipulació de tipus per fer les coses funcionen, 528 00:37:41,000 --> 00:37:48,000 sobretot per raons de seguretat i només per la solidesa del seu lloc web. 529 00:37:48,000 --> 00:37:51,000 Només és una cosa a tenir en compte que cada vegada que vostè està manejant les dades del formulari, 530 00:37:51,000 --> 00:37:57,000 tot el que ve al correu o les superglobales get 531 00:37:57,000 --> 00:38:01,000 assegureu-vos que sempre validar i convertir i encasellar-hi. 532 00:38:01,000 --> 00:38:04,000 I igual que parlàvem fa un moment que encasellament 533 00:38:04,000 --> 00:38:08,000 en PHP és exactament el mateix que en C, on té els parèntesis 534 00:38:08,000 --> 00:38:14,000 i després el tipus. 535 00:38:14,000 --> 00:38:16,000 Tingueu-ho en compte. 536 00:38:16,000 --> 00:38:19,000 Una de les funcions que li serà útil quan vostè està fent això 537 00:38:19,000 --> 00:38:22,000 és que hem estat utilitzant, i això és una mica com un apart- 538 00:38:22,000 --> 00:38:27,000 hem estat usant aquesta funció gettype aquí 539 00:38:27,000 --> 00:38:30,000 per esbrinar el tipus d'una variable, 540 00:38:30,000 --> 00:38:37,000 i si bé això és útil per a la depuració i per veure quin tipus d'una variable és 541 00:38:37,000 --> 00:38:42,000 no voleu utilitzar això, per exemple, en una condició on 542 00:38:42,000 --> 00:38:57,000 vostè està comprovant per veure si gettype de $ var = sencer fer alguna cosa. 543 00:38:57,000 --> 00:39:01,000 Això és dolent, dolent, dolent. 544 00:39:01,000 --> 00:39:09,000 En el seu lloc hi ha aquestes funcions trucades és sencer, és una cadena, 545 00:39:09,000 --> 00:39:14,000 és array que voleu utilitzar en el seu lloc, de manera que en aquest cas 546 00:39:14,000 --> 00:39:18,000 el que m'agradaria fer en lloc d'aquest tipus aquí 547 00:39:18,000 --> 00:39:31,000 S'utilitza el nombre enter és var. 548 00:39:31,000 --> 00:39:37,000 I estan sovint plantejada * is_ en el sentit que podria reemplaçar el * amb número sencer, 549 00:39:37,000 --> 00:39:43,000 cadena, etcètera, i només per assegurar-se que realment ràpida 550 00:39:43,000 --> 00:39:50,000 Es tracta int php. 551 00:39:50,000 --> 00:39:59,000 Sembla que pot fer qualsevol és int o s'hagi sencer també? 552 00:39:59,000 --> 00:40:06,000 Sí, àlies, sobrenoms tan sencers int. 553 00:40:06,000 --> 00:40:08,000 Cool. 554 00:40:14,000 --> 00:40:17,000 >> Com ho estem fent? 555 00:40:17,000 --> 00:40:20,000 Anem a agafar el ritme una mica. 556 00:40:20,000 --> 00:40:24,000 Ara anem a parlar sobre les matrius, així com es pot veure 557 00:40:24,000 --> 00:40:28,000 a la següent part de l'especificació es parla de com les matrius en PHP 558 00:40:28,000 --> 00:40:31,000 són lleugerament diferents del que són en C. 559 00:40:31,000 --> 00:40:34,000 En veritat, són una mena d'amalgama de 560 00:40:34,000 --> 00:40:36,000 les matrius que hem arribat a conèixer i estimar en C 561 00:40:36,000 --> 00:40:40,000 on tot és del mateix tipus 562 00:40:40,000 --> 00:40:43,000 emmagatzemen consecutivament i de forma contigua a la memòria, 563 00:40:43,000 --> 00:40:46,000 i vostè té aquests índexs numèrics. 564 00:40:46,000 --> 00:40:49,000 Vostè té l'índex 0, l'índex 1, índex 2, 565 00:40:49,000 --> 00:40:53,000 i guarda els valors en els índexs. 566 00:40:53,000 --> 00:40:57,000 També al carrer, quan va escriure Speller, que molts de vostès 567 00:40:57,000 --> 00:41:00,000 va fer l'enfocament de la taula hash, i va veure que no teníem 568 00:41:00,000 --> 00:41:03,000 un tipus diferent d'emmagatzematge en què es cartografia 569 00:41:03,000 --> 00:41:07,000 la clau d'un valor, de manera que en intentar desar alguna cosa a la taula hash 570 00:41:07,000 --> 00:41:11,000 calia especificar que volia guardar amb una clau específica, 571 00:41:11,000 --> 00:41:17,000 i que la clau determina la ubicació del valor i on seria emmagatzemat. 572 00:41:17,000 --> 00:41:22,000 Vostè té classe d'aquests dos conceptes succeint al mateix temps en una matriu de PHP, 573 00:41:22,000 --> 00:41:27,000 i, com a resultat, sovint ens criden a aquestes matrius associatives 574 00:41:27,000 --> 00:41:33,000 on s'associa una clau en un valor. 575 00:41:33,000 --> 00:41:39,000 En la següent part es parla d'un array PHP simple 576 00:41:39,000 --> 00:41:45,000 on tenim tecles a, b, i c, 577 00:41:45,000 --> 00:41:53,000 totes les cadenes, l'assignació als nombres enters 1, 2, i 3. 578 00:41:53,000 --> 00:41:57,000 I vostè pot tenir claus de diferents tipus. 579 00:41:57,000 --> 00:42:00,000 >> Vostè pot tenir algunes claus que són cadenes, algunes claus que són nombres enters. 580 00:42:00,000 --> 00:42:03,000 Pot tenir valors de diferents tipus. 581 00:42:03,000 --> 00:42:06,000 Vostè pot tenir un valor que és una cadena, un valor que és un nombre enter, 582 00:42:06,000 --> 00:42:11,000 un valor que és un objecte o una altra matriu, per exemple, 583 00:42:11,000 --> 00:42:16,000 tots en el mateix objecte de matriu, que és una mica estrany. 584 00:42:16,000 --> 00:42:20,000 No ha de tenir una matriu que s'acaba d'aconseguir un tipus d'element en el mateix. 585 00:42:20,000 --> 00:42:26,000 Vostè pot tenir moltes coses diferents passant aquí. 586 00:42:26,000 --> 00:42:33,000 L'altra cosa a tenir en compte és que quan vostè veu alguna cosa com això en el seu codi, 587 00:42:33,000 --> 00:42:38,000 que és PHP vàlid per declarar una matriu com aquesta, 0, 1, 2, 3, 4, 5, 588 00:42:38,000 --> 00:42:43,000 que es declara un arranjament de $ inicialitzat a ser aquesta matriu. 589 00:42:43,000 --> 00:42:48,000 Però el que en realitat estàs rebent sota el capó és aquest tipus de implícit 590 00:42:48,000 --> 00:42:55,000 generació de claus on tenim 0 a 0, 1 a 1, 2 a 2, 3 a 3. 591 00:42:55,000 --> 00:42:59,000 I resulta que, fins i tot si vostè té un arranjament com aquest noi aquí 592 00:42:59,000 --> 00:43:03,000 on té a, b i c com les tecles de 593 00:43:03,000 --> 00:43:09,000 i després de començar a utilitzar el mètode push matriu per a poder fer servir aquesta matriu com una pila, 594 00:43:09,000 --> 00:43:12,000 així que vostè pot veure que aquest objecte de matriu, aquesta matriu és en realitat es sobrecarregui. 595 00:43:12,000 --> 00:43:15,000 Podem utilitzar-lo com una matriu. Podem utilitzar com una taula hash. 596 00:43:15,000 --> 00:43:19,000 Podem utilitzar-lo com una pila. 597 00:43:19,000 --> 00:43:22,000 En començar a empènyer les coses en aquesta sèrie 598 00:43:22,000 --> 00:43:30,000 la primera cosa que empènyer a aquest serà l'índex 0 i l'índex 1 i l'índex 2. 599 00:43:30,000 --> 00:43:33,000 Vostè pot obtenir aquest tipus de generació implícita de tecles 600 00:43:33,000 --> 00:43:38,000 llevat que s'especifiqui de forma explícita. 601 00:43:38,000 --> 00:43:43,000 La forma en què s'especifiqui explícitament tecles, és clar, és mitjançant l'ús d'aquesta notació suport, 602 00:43:43,000 --> 00:43:48,000 que és similar a les matrius excepte que en lloc de permetre que únicament 603 00:43:48,000 --> 00:43:54,000 índexs sencers d'aquí, ara permetem que res. 604 00:43:54,000 --> 00:43:57,000 Si desitja que el seu clau sigui una cadena, que t'ho especifica així. 605 00:43:57,000 --> 00:44:06,000 Si vostè vol que sigui un int, cal identificar-lo amb el int que voleu utilitzar. 606 00:44:06,000 --> 00:44:13,000 >> Preguntes sobre els que fins ara? 607 00:44:13,000 --> 00:44:18,000 Una de les coses bones sobre aquesta idea 608 00:44:18,000 --> 00:44:26,000 és que es pot només tingui un valor emmagatzemat amb una clau particular. 609 00:44:26,000 --> 00:44:32,000 Si tornem al nostre aparell-em deixa esborrar algunes d'aquestes coses. 610 00:44:32,000 --> 00:44:47,000 I diguem que inicialitzar una matriu a ser 0, 1, 2, fet. 611 00:44:47,000 --> 00:44:55,000 Si jo ara sé que, per exemple, si jo trec $ arr [0] 612 00:44:55,000 --> 00:44:59,000 Em vaig a posar el valor 0 imprimir, 613 00:44:59,000 --> 00:45:05,000 i ja que no tan sols pot ser un valor emmagatzemat d'una clau particular 614 00:45:05,000 --> 00:45:11,000 si guardo alguna cosa en $ arr [0], diguem a, 615 00:45:11,000 --> 00:45:16,000 llavors sé que quan em poso $ arr [0] de nou 616 00:45:16,000 --> 00:45:19,000 Jo no vaig a obtenir 0 imprimir com abans. 617 00:45:19,000 --> 00:45:24,000 Jo només vaig a aconseguir una. 618 00:45:24,000 --> 00:45:30,000 Així que això és bàsicament dient que no puc tenir $ arr [0] emmagatzemar 2 valors diferents. 619 00:45:30,000 --> 00:45:34,000 No es pot emmagatzemar tant en 0 i la cadena, com això literalment reemplaça 620 00:45:34,000 --> 00:45:38,000 el que estava en $ arr [0] prèviament. 621 00:45:38,000 --> 00:45:43,000 La raó Porto això a col · lació és córrer, a veure què passa. 622 00:45:43,000 --> 00:45:47,000 Mira que tinc 0 imprimir i després aquí baix. 623 00:45:47,000 --> 00:45:51,000 No hi ha una nova línia allà perquè era mandrós i no indicar un polz 624 00:45:51,000 --> 00:45:54,000 El millor d'això és que podem utilitzar això com una manera 625 00:45:54,000 --> 00:46:00,000 per captar aquesta idea d'un conjunt 626 00:46:00,000 --> 00:46:07,000 on no podem tenir diverses claus dins d'una matriu. 627 00:46:07,000 --> 00:46:10,000 No podem tenir claus idèntiques dins d'una matriu. 628 00:46:10,000 --> 00:46:17,000 No puc permetre que la tecla 0 i el valor 1 i la tecla 0 i un valor 629 00:46:17,000 --> 00:46:21,000 o la tecla 0 i el valor vertader. 630 00:46:21,000 --> 00:46:27,000 Les claus són tot només hi ha una clau a la matriu. 631 00:46:27,000 --> 00:46:32,000 Tot i que pot tenir el mateix valor emmagatzemat 632 00:46:32,000 --> 00:46:35,000 diverses vegades a la matriu en virtut de diferents claus 633 00:46:35,000 --> 00:46:42,000 que no és possible tenir claus idèntiques diverses vegades en la matriu de PHP. 634 00:46:42,000 --> 00:46:47,000 >> Si ens fixem en el problema següent, unique.php, 635 00:46:47,000 --> 00:46:51,000 on volem obrir un arxiu PHP 636 00:46:51,000 --> 00:46:54,000 que conté una llista de cadenes, una cadena per línia, 637 00:46:54,000 --> 00:47:01,000 i volem trobar totes les cadenes úniques en aquest arxiu 638 00:47:01,000 --> 00:47:06,000 tot el que hem de fer és utilitzar una d'aquestes matrius de PHP 639 00:47:06,000 --> 00:47:12,000 i l'ús de les cadenes a l'arxiu com les claus d'aquest array 640 00:47:12,000 --> 00:47:17,000 i mantenir l'actualització de la nostra matriu com emmagatzemem aquestes noves claus. 641 00:47:17,000 --> 00:47:22,000 En llegir cada línia del fitxer que pot emmagatzemar en la matriu, 642 00:47:22,000 --> 00:47:28,000 i al final tindrem com les nostres claus en el nostre array 643 00:47:28,000 --> 00:47:34,000 totes les cadenes úniques dins de l'arxiu. 644 00:47:34,000 --> 00:47:37,000 Això té sentit? 645 00:47:37,000 --> 00:47:41,000 Anem a veure com funciona això. 646 00:47:41,000 --> 00:47:49,000 Anem a obrir, d'acord a les especificacions, un nou arxiu anomenat unique.php. 647 00:47:49,000 --> 00:47:58,000 Obriu. Oops, ho sento, nou arxiu. 648 00:47:58,000 --> 00:48:03,000 Anem a començar amb les etiquetes de l'inici i el final mateix. 649 00:48:03,000 --> 00:48:17,000 Anem a guardar-lo en la secció 9, i anem a cridar unique.php. 650 00:48:17,000 --> 00:48:25,000 Bé, ara zoom in 651 00:48:25,000 --> 00:48:32,000 La idea és obrir un arxiu, 652 00:48:32,000 --> 00:48:38,000 llegir en arxiu línia per línia. 653 00:48:38,000 --> 00:48:46,000 Per a cada línia a l'arxiu 654 00:48:46,000 --> 00:48:51,000 tindrem una matriu on tenim 655 00:48:51,000 --> 00:49:03,000  la línia com la clau. 656 00:49:03,000 --> 00:49:09,000 I després, quan arribem a la final aquí 657 00:49:09,000 --> 00:49:17,000 Tecles $ arr són les úniques línies 658 00:49:17,000 --> 00:49:25,000 de les actuacions, ja que sabem que si poso la línia a la matriu 659 00:49:25,000 --> 00:49:33,000 moltes vegades s'acaba de mantenir reemplaçant el valor anterior, 660 00:49:33,000 --> 00:49:46,000 i que en realitat es pot posar com line array en si mateix així com així. 661 00:49:46,000 --> 00:49:48,000 >> Això és una mica estrany. 662 00:49:48,000 --> 00:49:52,000 Estem emmagatzemant el mateix valor de clau parell una i altra vegada i una altra, 663 00:49:52,000 --> 00:50:00,000 però ja que es garanteix que no hi haurà només una clau anomenada línia 664 00:50:00,000 --> 00:50:05,000 de manera que si tenim un arxiu que diu-un arxiu de sons d'animals i té guau, guau, 665 00:50:05,000 --> 00:50:11,000 miau, miau, mu, mu, i cada vegada que llegim un soroll animal fora 666 00:50:11,000 --> 00:50:15,000 com trama i l'emmagatzemem en la nostra matriu obtenim trama, i després la segona vegada 667 00:50:15,000 --> 00:50:20,000 emmagatzemem trama es sobreescriurà la primera vegada que l'emmagatzema. 668 00:50:20,000 --> 00:50:25,000 Al final, només tindrà una entrada a la matriu 669 00:50:25,000 --> 00:50:33,000 per a cada un dels sorolls dels animals al nostre animal arxiu de sorolls. 670 00:50:33,000 --> 00:50:41,000 Vostès se senten segurs que vostè pot fer front a l'obertura d'un arxiu en PHP? 671 00:50:41,000 --> 00:50:45,000 Una forma de fer-ho-anem a repassar aquesta manera ràpidament, que ho faci 672 00:50:45,000 --> 00:50:50,000 és amb fopen, com hem vist anteriorment. 673 00:50:50,000 --> 00:50:55,000 Pot fopen some_file.txt. 674 00:50:55,000 --> 00:50:59,000 Pot obrir en mode de lectura, igual que en C. 675 00:50:59,000 --> 00:51:02,000 Aquesta és una forma perfectament vàlida per fer-ho. 676 00:51:02,000 --> 00:51:05,000 També després de la lectura a l'arxiu línia per línia 677 00:51:05,000 --> 00:51:12,000 tenen les mateixes funcions, moltes d'elles, que ho va fer al C. 678 00:51:12,000 --> 00:51:14,000 Vostè té fgets. 679 00:51:14,000 --> 00:51:17,000 Vostè té feof, encara que no ens agrada fer servir aquesta 680 00:51:17,000 --> 00:51:22,000 perquè, recordi, que no era molta en C. 681 00:51:22,000 --> 00:51:25,000 Pot fer-ho de la mateixa manera, 682 00:51:25,000 --> 00:51:34,000 però aquí és una cosa realment genial. 683 00:51:34,000 --> 00:51:41,000 Ho sento, no vull fer $ arxiu, però hi ha una funció anomenada arxiu en PHP, 684 00:51:41,000 --> 00:51:47,000 i aquesta funció aquí és genial, perquè el llegeix tot el contingut 685 00:51:47,000 --> 00:51:52,000 l'arxiu que especifiqueu, per some_file.txt, 686 00:51:52,000 --> 00:51:56,000 llegeix tot el contingut d'aquest fitxer en una matriu 687 00:51:56,000 --> 00:52:03,000 i després li permet iterar sobre ella, la qual cosa és bastant enginyós. 688 00:52:03,000 --> 00:52:07,000 >> Si ens anem, per exemple, al nostre navegador web 689 00:52:07,000 --> 00:52:14,000 i ens fixem en Google per a l'arxiu PHP 690 00:52:14,000 --> 00:52:23,000 vostè pot veure aquí que el manual diu que l'arxiu es llegeix un arxiu sencer en una matriu, 691 00:52:23,000 --> 00:52:27,000 i podem file_get_contents per tornar el contingut d'un arxiu com una cadena, 692 00:52:27,000 --> 00:52:30,000 però en general només el rep com un conjunt és molt bonic perquè el que fa 693 00:52:30,000 --> 00:52:33,000 l'hi trenca de manera que cada element 694 00:52:33,000 --> 00:52:37,000 de la matriu és una línia de l'arxiu, 695 00:52:37,000 --> 00:52:41,000 pel que si ens fixem en l'arxiu 0, que és la primera línia de l'arxiu. 696 00:52:41,000 --> 00:52:46,000 Arxiu 1, segona línia, l'arxiu 2, tercera línia, i així successivament i així successivament. 697 00:52:46,000 --> 00:52:50,000 No seria agradable si això era tot el que havia de fer en C? 698 00:52:50,000 --> 00:52:53,000 Bastant enginyós. 699 00:52:53,000 --> 00:52:59,000 David va mostrar en aquesta conferència, i va ser l'idioma que va mostrar 700 00:52:59,000 --> 00:53:03,000 que, a més del nostre estàndard de bucle en PHP que havíem de 701 00:53:03,000 --> 00:53:09,000 for ($ i = 0; i <10, i + +), 702 00:53:09,000 --> 00:53:16,000 i vostè pot fer això en PHP també, el mateix: 703 00:53:16,000 --> 00:53:27,000 també tenim aquesta construcció fresc anomenat foreach. 704 00:53:27,000 --> 00:53:32,000 Foreach és realment útil quan iterar sobre matrius o les estructures de dades 705 00:53:32,000 --> 00:53:36,000 ja que li permet treure cada element de la matriu 706 00:53:36,000 --> 00:53:42,000 sense haver de fer-ho manualment la indexació de tu mateix, 707 00:53:42,000 --> 00:53:46,000 sense haver de crear manualment una variable índex, incrementar, 708 00:53:46,000 --> 00:53:51,000 treure el valor de la matriu en aquest moment, perquè això és una cosa molt comú que fer. 709 00:53:51,000 --> 00:53:54,000 >> Vostè probablement ha fet un munt de vegades quan estava fent coses C 710 00:53:54,000 --> 00:54:00,000 al llarg del semestre, de manera que amb aquesta foreach 711 00:54:00,000 --> 00:54:06,000 podem iterar sobre aquest conjunt d'arxius, 712 00:54:06,000 --> 00:54:12,000 i la sintaxi és que volem ara llaç sobre aquesta matriu 713 00:54:12,000 --> 00:54:18,000 i especificar que la variable que utilitzarem per emmagatzemar 714 00:54:18,000 --> 00:54:27,000 l'element d'aquesta matriu local, local per a l'àmbit d'aplicació d'aquest bucle foreach, 715 00:54:27,000 --> 00:54:32,000 és que anem a anomenar línia. 716 00:54:32,000 --> 00:54:38,000 Si es tracta d'un arxiu de només paraules i no hi ha una sola paraula en una línia 717 00:54:38,000 --> 00:54:43,000 que podríem anomenar paraula, així, en realitat només li dono un nom, 718 00:54:43,000 --> 00:54:49,000 el que vulguis dir, 719 00:54:49,000 --> 00:55:02,000 i després dins del bucle que pot fer el que vulguis amb aquesta línia variable. 720 00:55:02,000 --> 00:55:08,000 Si no és suficient per obtenir el valor de la matriu i també obtenir 721 00:55:08,000 --> 00:55:17,000 l'índex juntament amb ell es pot especificar un nom per l'índex 722 00:55:17,000 --> 00:55:22,000 així com el valor, i ara vostè té accés a 2 variables. 723 00:55:22,000 --> 00:55:26,000 Tens $ i i la línia 724 00:55:26,000 --> 00:55:30,000 on $ i és l'índex a la matriu, 725 00:55:30,000 --> 00:55:38,000 i la línia és la línia que recupera l'arxiu. 726 00:55:38,000 --> 00:55:49,000 Per exemple, si volem imprimir fet 0 línia de l'arxiu d'aquest tipus, 727 00:55:49,000 --> 00:55:57,000 podríem fer-ho de la mateixa manera que aquest, "Línia $ i del fitxer és $ line" 728 00:55:57,000 --> 00:56:02,000 i aquí és una cosa que també no han vist encara ni 729 00:56:02,000 --> 00:56:13,000 on acabo totalment saltat% aquest negoci sencer% s d 730 00:56:13,000 --> 00:56:16,000 que hem hagut d'enfrontar a C, i en el seu lloc m'he anat directament a 731 00:56:16,000 --> 00:56:19,000 escrivint les variables en línia en el meu cadena. 732 00:56:19,000 --> 00:56:23,000 >> Això es diu interpolació variable, cadena d'interpolació 733 00:56:23,000 --> 00:56:26,000 on està farcit de les variables en el dret, i l'intèrpret de PHP 734 00:56:26,000 --> 00:56:31,000 és prou intel · ligent quan està llegint a través d'una cadena que comença amb cometes- 735 00:56:31,000 --> 00:56:34,000 No cometes simples, amb cadenes entre cometes senzilles que vostè no pot fer això- 736 00:56:34,000 --> 00:56:38,000 però amb dobles cadenes entre cometes com es llegeix a través d'ella està buscant per les variables. 737 00:56:38,000 --> 00:56:42,000 Està caçant, i si veu les variables es prendrà el valor de la variable 738 00:56:42,000 --> 00:56:47,000 i ficar-ho en la cadena si es pot convertir en una representació de cadena, 739 00:56:47,000 --> 00:56:51,000 que és bastant enginyós. 740 00:56:51,000 --> 00:56:56,000 Per ara, anem a comentar la resta de tot, 741 00:56:56,000 --> 00:57:00,000 salvar això, i el que podem fer ara és que podem obrir un arxiu 742 00:57:00,000 --> 00:57:06,000 que podem anomenar some_file.txt-let 's crear un nou arxiu- 743 00:57:06,000 --> 00:57:15,000 i ens pot posar en un munt de coses sense sentit en aquí només per provar tot el que fos, 744 00:57:15,000 --> 00:57:25,000 el guarda, en diuen some_file.txt, com estic fent aquí dalt a la part superior, 745 00:57:25,000 --> 00:57:33,000 i ara si el zoom només per assegurar-se que tot és al mateix directori 746 00:57:33,000 --> 00:57:36,000 sembla que tinc unique.php i some_file.txt al mateix directori. 747 00:57:36,000 --> 00:57:42,000 Si em quedo unique.php php 748 00:57:42,000 --> 00:57:51,000 veure com s'imprimeix cada línia del meu arxiu i quin és el límit? 749 00:57:51,000 --> 00:57:56,000 >> Això és molt poderós, no? 750 00:57:56,000 --> 00:58:03,000 Mira, ens va prendre 3 línies de codi per obrir un arxiu. 751 00:58:03,000 --> 00:58:08,000 Bé, 4 línies de codi. No puc comptar avui, clarament. 752 00:58:08,000 --> 00:58:13,000 Però en realitat només 2 línies interessants de codi, perquè els altres 2 van ser les claus, 753 00:58:13,000 --> 00:58:17,000 però en aquest codi molt hem estat capaços d'obrir un arxiu, iterar a través d'ell, 754 00:58:17,000 --> 00:58:20,000 tregui el número de línia i la línia en si 755 00:58:20,000 --> 00:58:24,000 i s'imprimeixi. 756 00:58:24,000 --> 00:58:26,000 Cool stuff. Charlotte. 757 00:58:26,000 --> 00:58:28,000 [Charlotte] Tinc una pregunta sobre la sintaxi. 758 00:58:28,000 --> 00:58:33,000 Així foreach acords amb cada línia del fitxer que s'obre, 759 00:58:33,000 --> 00:58:37,000 i després, quan volem fer les coses amb cada línia que acaba de fer-ho com 760 00:58:37,000 --> 00:58:39,000 i després associar el valor. 761 00:58:39,000 --> 00:58:41,000 [Nate H.] El que pot fer aquí mateix-el dubte era 762 00:58:41,000 --> 00:58:46,000 el foreach té a veure amb la matriu, de manera que la sintaxi foreach 763 00:58:46,000 --> 00:58:51,000 és realment foreach i observi que no hi ha espai 764 00:58:51,000 --> 00:58:53,000 o qualsevol cosa entre ell i per a cada un el. 765 00:58:53,000 --> 00:58:56,000 Ells han d'anar a la dreta al costat de l'altra, 766 00:58:56,000 --> 00:59:00,000 i llavors es pren en una matriu, 767 00:59:00,000 --> 00:59:05,000 i després tens aquesta altra paraula clau es diu com el que ha de ser-hi, 768 00:59:05,000 --> 00:59:11,000 i després, després de la qual vostè pot posar un nom de variable, 769 00:59:11,000 --> 00:59:14,000 en aquest cas vostè estarà tirant dels valors de la matriu, 770 00:59:14,000 --> 00:59:20,000 no dels índexs, o si ho fa com ho he escrit a sota 771 00:59:20,000 --> 00:59:24,000 obtenir les claus i els valors. 772 00:59:24,000 --> 00:59:33,000 Vostè té foreach element de la matriu o el parell de la matriu com la forma adequada per al valor 773 00:59:33,000 --> 00:59:38,000 o com el valor just. 774 00:59:38,000 --> 00:59:40,000 Depenent del que necessiti, si vostè no necessita les claus, 775 00:59:40,000 --> 00:59:42,000 llavors vostè pot anar amb el valor. 776 00:59:42,000 --> 00:59:45,000 Si voleu que les tecles que pot anar amb ells. 777 00:59:45,000 --> 00:59:48,000 >> [Charlotte] També em vaig adonar que mai va declarar la io línia. 778 00:59:48,000 --> 00:59:51,000 Com tan sols saben el que són? 779 00:59:51,000 --> 00:59:53,000 [Nate H.] Què entén vostè per declarar? 780 00:59:53,000 --> 00:59:57,000 [Charlotte] Mai els vaig dir el que o la línia de mitjans. 781 00:59:57,000 --> 01:00:01,000 [Nate H.] mai Ens van dir que l'ordinador el que significa o la línia en termes de- 782 01:00:01,000 --> 01:00:05,000 [Charlotte] Que estan indexades o que-són 783 01:00:05,000 --> 01:00:09,000 [Nate H.] Mai hem dit que això se suposa que és l'índex o la clau i el valor, 784 01:00:09,000 --> 01:00:13,000 i això és perquè aquest és l'intèrpret PHP. 785 01:00:13,000 --> 01:00:17,000 Això serveix com la declaració i diu bé, la clau serà 786 01:00:17,000 --> 01:00:20,000 una variable anomenada i s'emmagatzema en una variable anomenada i. 787 01:00:20,000 --> 01:00:24,000 El valor s'emmagatzemarà en una variable anomenada línia, 788 01:00:24,000 --> 01:00:28,000 així que això serveix com a declaració d'aquestes variables 789 01:00:28,000 --> 01:00:35,000 i diu que $ i és una clau, i $ line és un valor. 790 01:00:35,000 --> 01:00:37,000 Sí, Ella. 791 01:00:37,000 --> 01:00:41,000 [Ella] Si les claus no es fan numèricament 792 01:00:41,000 --> 01:00:44,000 Com decidir quin ordre d'imprimir tot? 793 01:00:44,000 --> 01:00:47,000 És igual que l'ordre en que van entrar a? 794 01:00:47,000 --> 01:00:51,000 [Nate H.] Anem a donar-li una oportunitat. 795 01:00:51,000 --> 01:00:57,000 Crearem una variable anomenada arr, 796 01:00:57,000 --> 01:01:06,000 i podem fer una va a 7. 797 01:01:06,000 --> 01:01:19,000 Diguem que 0 va a un altre matriu amb 1, 2 o poma. 798 01:01:19,000 --> 01:01:30,000 Diguem 7 passa a 1, b passa a 2, 799 01:01:30,000 --> 01:01:39,000 i 3 passa a 4. 800 01:01:39,000 --> 01:01:44,000 Això és una mica boig buscant un exemple perquè estem barrejant 801 01:01:44,000 --> 01:01:47,000 cadenes i sencers per tot el lloc. 802 01:01:47,000 --> 01:01:50,000 No hi ha una ordre real a aquesta matriu. 803 01:01:50,000 --> 01:01:55,000 Vull dir, tot el que podíem demanar per ordre alfabètic de les claus. 804 01:01:55,000 --> 01:01:57,000 Podríem demanar tot en ordre alfabètic pel valor. 805 01:01:57,000 --> 01:02:00,000 >> Podríem tractar de tenir en compte que algunes són cadenes, alguns són sencers, 806 01:02:00,000 --> 01:02:03,000 i que es podia tractar de convertir a tots en el mateix tipus i veure què passa, 807 01:02:03,000 --> 01:02:09,000 o podríem considerar-los en el valor en què ja van entrar 808 01:02:09,000 --> 01:02:14,000 on posem a aquest tipus en primer lloc, a aquest tipus en segon lloc, a aquest tipus en tercer lloc, 809 01:02:14,000 --> 01:02:19,000 aquest tipus en el quart, etc. 810 01:02:19,000 --> 01:02:23,000 Anem a veure el que passa quan ens trobem aquest codi. 811 01:02:23,000 --> 01:02:29,000 Si ens desplacem cap avall i fer el mateix tipus de coses, 812 01:02:29,000 --> 01:02:31,000 i aquí no s'està imprimint les noves línies. 813 01:02:31,000 --> 01:02:35,000 Quan ho vaig llegir coses del fitxer, va ser inclòs les noves línies en els valors, 814 01:02:35,000 --> 01:02:38,000 que va ser per això que imprimeix molt bé, mentre que aquí no ho va fer, 815 01:02:38,000 --> 01:02:40,000 així que per això tot està aixafat junts. 816 01:02:40,000 --> 01:02:44,000 Anem a afegir a la nova línia per fer les coses bé. 817 01:02:44,000 --> 01:02:51,000 Anem a repetir l'execució, i aquí el 818 01:02:51,000 --> 01:02:54,000 mira el que va passar. 819 01:02:54,000 --> 01:03:00,000 S'imprimirà tot en l'ordre en que posem a la matriu. 820 01:03:00,000 --> 01:03:10,000 Sense preservar l'ordre en aquest sentit. 821 01:03:10,000 --> 01:03:15,000 >> Tornant al problema de visitants únics 822 01:03:15,000 --> 01:03:20,000 on volem ser capaços de repetir un arxiu, 823 01:03:20,000 --> 01:03:24,000 i donarem some_file.txt, 824 01:03:24,000 --> 01:03:27,000 i anem a iterar sobre ella d'aquesta manera. 825 01:03:27,000 --> 01:03:31,000 Vam dir que volíem utilitzar una matriu per assegurar-se que ens van donar tot el 826 01:03:31,000 --> 01:03:36,000 línies úniques d'allí, i podríem fer-ho molt fàcilment 827 01:03:36,000 --> 01:03:49,000 amb només emmagatzemar en una matriu que, per descomptat, declarar fora de l'àmbit d'un bucle, 828 01:03:49,000 --> 01:03:55,000 i ens va dir que si fem servir les línies a l'arxiu com les claus en la nostra gamma 829 01:03:55,000 --> 01:03:59,000 si entrem en una línia duplicada estaríem anul · lant el valor anterior. 830 01:03:59,000 --> 01:04:08,000 No és sempre possible tenir dues claus que són idèntics en la mateixa matriu. 831 01:04:08,000 --> 01:04:13,000 Podem fer precisament això. 832 01:04:13,000 --> 01:04:17,000 Ens desfarem d'aquesta declaració ressò aquí. 833 01:04:17,000 --> 01:04:24,000 Aquí està guardant la línia a l'arxiu en el nostre arsenal 834 01:04:24,000 --> 01:04:28,000 utilitzant si mateix com la clau. 835 01:04:28,000 --> 01:04:32,000 No hi ha res a ella, i resulta que ni tan sols necessita aquesta clau. 836 01:04:32,000 --> 01:04:38,000 No cal que em variable. 837 01:04:38,000 --> 01:04:43,000 En aquest punt, si haguéssim de fer un altre bucle foreach 838 01:04:43,000 --> 01:04:48,000 i estàvem a un bucle sobre cada arr 839 01:04:48,000 --> 01:04:56,000 i la línia d'ara, si ens fem ressò-oops, em sap greu. 840 01:04:56,000 --> 01:05:00,000 No podem fer servir la coma. Hem de fer servir això com a paraula clau. 841 01:05:00,000 --> 01:05:05,000 Ara bé, si ens fem ressò de la línia que hem d'obtenir totes les paraules úniques a l'arxiu. 842 01:05:05,000 --> 01:05:10,000 Si pugem a some_file.txt, 843 01:05:10,000 --> 01:05:19,000 i diguem que fem poma, plàtan, poma, poma, plàtan, 844 01:05:19,000 --> 01:05:22,000 si anem a imprimir totes les paraules úniques en aquest arxiu només ha de rebre 845 01:05:22,000 --> 01:05:30,000 poma i plàtan per imprimir. 846 01:05:30,000 --> 01:05:36,000 Si estalviem això, ara aquí tornarem a augmentar, 847 01:05:36,000 --> 01:05:44,000 php unique.php, i ta-da. 848 01:05:44,000 --> 01:05:51,000 Hem uniqued amb èxit l'arxiu. 849 01:05:51,000 --> 01:05:55,000 >> L'última part d'aquest problema se li demana que ordenar aquesta matriu abans d'imprimir 850 01:05:55,000 --> 01:05:58,000 perquè en aquest senzill exemple que acabem de fer 851 01:05:58,000 --> 01:06:04,000 vam tenir la sort en el sentit que l'arxiu 852 01:06:04,000 --> 01:06:06,000 que vam fer aquest exemple inventat amb pomes i plàtans. 853 01:06:06,000 --> 01:06:08,000 Va ser ordenat ja. 854 01:06:08,000 --> 01:06:19,000 Però l'ús de la funció de classificació simple que vostè pot ordenar una matriu, que és bastant enginyós. 855 01:06:19,000 --> 01:06:24,000 L'última cosa que volia parlar amb vosaltres sobre molt ràpid 856 01:06:24,000 --> 01:06:31,000 és que aquest tipus de PHP està molt bé, i és super útil 857 01:06:31,000 --> 01:06:43,000 saber que fer si mai ha de fer coses petites, ràpides programació. 858 01:06:43,000 --> 01:06:48,000 Per exemple, si he d'escriure un programa que, per exemple, 859 01:06:48,000 --> 01:06:53,000 posa a tothom en seccions que no aniré i escriure en C. 860 01:06:53,000 --> 01:06:55,000 Això serà llarg. 861 01:06:55,000 --> 01:06:57,000 Serà una mena de dolor, especialment si hi ha arxius involucrats, 862 01:06:57,000 --> 01:07:00,000 com vostès han vist. 863 01:07:00,000 --> 01:07:05,000 És tan bonic que només amb això molt codi aquí 864 01:07:05,000 --> 01:07:08,000 hem estat capaços d'extreure a través d'un arxiu, extraieu tots els valors únics 865 01:07:08,000 --> 01:07:11,000 i els imprimeix de tornada. 866 01:07:11,000 --> 01:07:16,000 >> No obstant això, per als seus treballs, dels seus projectes, 867 01:07:16,000 --> 01:07:20,000 si vostè està construint llocs web amb PHP és que el poder 868 01:07:20,000 --> 01:07:25,000 ens estem quedant nostres arxius PHP a través d'aquest intèrpret, 869 01:07:25,000 --> 01:07:29,000 i l'intèrpret està processant tot dins de les etiquetes PHP, 870 01:07:29,000 --> 01:07:34,000 deixant tota la resta intacte i escopint els resultats. 871 01:07:34,000 --> 01:07:40,000 Podem fer això per construir HTML mitjançant programació. 872 01:07:40,000 --> 01:07:46,000 Ara bé, si ens remuntem a l'especificació, l'últim problema a l'especificació 873 01:07:46,000 --> 01:07:56,000 parla d'aquesta idea de les concentracions 874 01:07:56,000 --> 01:08:01,000 i la creació d'un menú desplegable, 875 01:08:01,000 --> 01:08:06,000 que pot o no vol fer, depenent del que el projecte final està fent, 876 01:08:06,000 --> 01:08:13,000 que permet a l'usuari seleccionar d'una llista de totes les concentracions possibles 877 01:08:13,000 --> 01:08:15,000 seva única concentració. 878 01:08:15,000 --> 01:08:21,000 Ara, aquest és un tipus de dolor que escriure això 879 01:08:21,000 --> 01:08:25,000 i hem de fer tot això de forma manual, especialment quan vostè està tenint per assegurar 880 01:08:25,000 --> 01:08:28,000 que té tots els suports angulars en el lloc correcte i totes les cites en el lloc correcte, 881 01:08:28,000 --> 01:08:34,000 així que amb PHP es pot fer això mitjançant programació, i vostè pot fer això molt ràpidament. 882 01:08:34,000 --> 01:08:36,000 >> Anem a veure com es fa això. 883 01:08:36,000 --> 01:08:42,000 Anem a obrir un nou arxiu. 884 01:08:42,000 --> 01:08:46,000 Posarem en les nostres etiquetes PHP. 885 01:08:46,000 --> 01:08:53,000 Anem a cridar concentrations.php, 886 01:08:53,000 --> 01:08:58,000 i ara, quan vostè està fent això, una mica d'alguna cosa bona per pensar 887 01:08:58,000 --> 01:09:02,000 quan vostè està tractant de barrejar i combinar la seva PHP i l'HTML 888 01:09:02,000 --> 01:09:08,000 és determinar, d'acord, quina és la part que vull generar mitjançant programació? 889 01:09:08,000 --> 01:09:11,000 Quina és la part que pot generar mitjançant programació? 890 01:09:11,000 --> 01:09:17,000 És cert que es pot fer tot de la seva HTML 891 01:09:17,000 --> 01:09:19,000 dins dels blocs de PHP. 892 01:09:19,000 --> 01:09:24,000 Vostè pot repetir tot l'HTML com cadenes. 893 01:09:24,000 --> 01:09:30,000 Per exemple, si vull començar a fer les etiquetes seleccionades dins de PHP 894 01:09:30,000 --> 01:09:46,000 El que puc dir d'eco, per exemple seleccionar el nom = concentració, 895 01:09:46,000 --> 01:09:49,000 i després per sota que podria tenir una altra etiqueta eco 896 01:09:49,000 --> 01:09:57,000 o altre ressò anomenat tancar la selecció. 897 01:09:57,000 --> 01:10:00,000 Aquesta és una manera de fer-ho, perquè el que és a dir, literalment, farà 898 01:10:00,000 --> 01:10:09,000 és imprimir aquesta cadena quan s'executa a través de l'intèrpret PHP, 899 01:10:09,000 --> 01:10:12,000 de manera que el resultat serà HTML. 900 01:10:12,000 --> 01:10:18,000 Si guarda aquest arxiu, ja que és en aquests moments 901 01:10:18,000 --> 01:10:24,000 i corro concentrations.php php 902 01:10:24,000 --> 01:10:26,000 mira el que tinc. 903 01:10:26,000 --> 01:10:30,000 Tinc aquesta etiqueta de selecció obert prop. 904 01:10:30,000 --> 01:10:36,000 >> Si hagués de fer això i jo anàvem a salvar aquest resultat a un arxiu, 905 01:10:36,000 --> 01:10:45,000 dir, concentrations.html-espera, sembla que el l ha passat a l'altre costat- 906 01:10:45,000 --> 01:11:02,000 ara si m'obro aquí concentrations.html veieu que jo tinc un arxiu HTML vàlid. 907 01:11:02,000 --> 01:11:05,000 Això és una mica estrany? 908 01:11:05,000 --> 01:11:09,000 Estem usant PHP per crear HTML, crear HTML vàlid. 909 01:11:09,000 --> 01:11:13,000 La manera com ho estem fent és que estem només tenir la impressió de PHP 910 01:11:13,000 --> 01:11:16,000 el codi HTML que volem imprimir. 911 01:11:16,000 --> 01:11:20,000 Això és literalment com els llocs web de PHP estan funcionant. 912 01:11:20,000 --> 01:11:24,000 Quan vostè visita un lloc web que el manté a una mena 913 01:11:24,000 --> 01:11:30,000 alguna cosa, alguna cosa, alguna cosa dot com slash index.php 914 01:11:30,000 --> 01:11:33,000 l'equip està literalment cridar index.php, 915 01:11:33,000 --> 01:11:38,000 executar a través de l'intèrpret PHP, i tot el que surt escombraries 916 01:11:38,000 --> 01:11:49,000 que està enviant de tornada al navegador i dir hey, navegador, interpretar això com HTML. 917 01:11:49,000 --> 01:11:54,000 El millor és que pot ser un mal de escriure constantment ressò, ressò, ressò, ressò 918 01:11:54,000 --> 01:11:59,000 i tancar tot en cites com aquesta, així que si vols escriure 919 01:11:59,000 --> 01:12:04,000 el codi HTML que serà estàtic vostè mateix ho pot fer d'aquesta manera, 920 01:12:04,000 --> 01:12:16,000 posar fora, el tanca, 921 01:12:16,000 --> 01:12:21,000 i aquí només es col · loca dins de les etiquetes PHP que vostè coneix 922 01:12:21,000 --> 01:12:26,000 vol generar mitjançant programació, i en aquest cas es tracta de les etiquetes d'opció 923 01:12:26,000 --> 01:12:31,000 que són un mal de generar. 924 01:12:31,000 --> 01:12:37,000 >> Per exemple, es podria generar un miler d'etiquetes d'opció 925 01:12:37,000 --> 01:12:48,000 fent alguna cosa com això, $ i <1000, i + + 926 01:12:48,000 --> 01:13:00,000 i dient valor eco-option = $ crits, no puc fer això. 927 01:13:00,000 --> 01:13:03,000 Bé, anem a donar-li una oportunitat i veure què passa. 928 01:13:03,000 --> 01:13:22,000 $ I i després dir $ i 01:13:27,000 En lloc d'haver de escriure aquesta etiqueta opció mil vegades diferents 930 01:13:27,000 --> 01:13:33,000 Estic utilitzant el codi PHP per generar de forma automàtica, mitjançant programació. 931 01:13:33,000 --> 01:13:38,000 Una mica enginyós. Si. 932 01:13:38,000 --> 01:13:41,000 Recordo que això s'esmenta ni a la conferència o el tutorial, 933 01:13:41,000 --> 01:13:43,000 però quina és la diferència entre les cometes, 934 01:13:43,000 --> 01:13:45,000 les normals i aquestes coses simples? 935 01:13:45,000 --> 01:13:49,000 Això és realment una cosa que he fet malament aquí que jo anava a mostrar. 936 01:13:49,000 --> 01:13:52,000 Les cometes simples no permeten els caràcters especials, 937 01:13:52,000 --> 01:13:57,000 així que tot l'interior d'una sola cadena entre cometes s'interpreta literalment. 938 01:13:57,000 --> 01:14:02,000 Si jo tingués un \ n dins cometes simples i llevat això, per exemple, 939 01:14:02,000 --> 01:14:07,000 i ara vaig per aquí i executar- 940 01:14:07,000 --> 01:14:12,000 oops, on vaig? 941 01:14:12,000 --> 01:14:19,000 Oh, és perquè es va oblidar el $. 942 01:14:19,000 --> 01:14:25,000 >> Ara bé, si obro-en realitat, aquí, anem a desfer-nos de la que escriu a un arxiu. 943 01:14:25,000 --> 01:14:27,000 Anem a llegir-lo. 944 01:14:27,000 --> 01:14:34,000 Aquí podeu veure que tinc aquest literal \ n a la cadena, com no és una nova línia actual, 945 01:14:34,000 --> 01:14:38,000 i de la mateixa manera, en lloc de realment interpolant el valor d'aquesta variable 946 01:14:38,000 --> 01:14:42,000 em va donar la $ i en si, que és una espècie de dolor. 947 01:14:42,000 --> 01:14:46,000 La forma d'evitar això és utilitzar les cometes dobles, 948 01:14:46,000 --> 01:14:52,000 i després, quan s'utilitza cometes dobles que en realitat es 949 01:14:52,000 --> 01:14:56,000 adequadament interpolar els valors de totes aquestes variables a aquí 950 01:14:56,000 --> 01:14:59,000 i també reconeixen aquesta \ n per ser la nova línia que és 951 01:14:59,000 --> 01:15:02,000 i no \ n. 952 01:15:02,000 --> 01:15:07,000 Amb els sols és agradable quan tens 953 01:15:07,000 --> 01:15:10,000 personatges que podrien ser interpretats com caràcters especials, perquè llavors vostè no ha de 954 01:15:10,000 --> 01:15:15,000 escapar d'ells constantment. 955 01:15:15,000 --> 01:15:18,000 Les coses poden causar problemes, i moltes vegades la manera com ho fan, 956 01:15:18,000 --> 01:15:24,000 només per fer les coses fàcils, és que si vaig a tenir res 957 01:15:24,000 --> 01:15:31,000 HTML com en el meu codi vaig a incloure dins de cometes simples d'edició 958 01:15:31,000 --> 01:15:36,000 i després utilitzar aquest operador de concatenació 959 01:15:36,000 --> 01:15:43,000 per concatenar les variables polz 960 01:15:43,000 --> 01:15:47,000 Aquesta és una altra manera de fer-ho 961 01:15:47,000 --> 01:15:52,000 on tenim el punt que va a connectar aquesta és una cadena 962 01:15:52,000 --> 01:15:56,000 amb això amb això amb això, 963 01:15:56,000 --> 01:15:59,000 i ara no ha de fugir d'aquestes cometes dobles. 964 01:15:59,000 --> 01:16:02,000 No cal utilitzar aquest tipus d'escapar. 965 01:16:02,000 --> 01:16:08,000 Ells literalment va a imprimir com cometes i després aquest noi aquí. 966 01:16:08,000 --> 01:16:11,000 Aquesta és una altra manera de barrejar tot junt. 967 01:16:11,000 --> 01:16:14,000 >> [Estudiant] A més, quan es va fer ressò de gettype no hi ha cometes en absolut. 968 01:16:14,000 --> 01:16:22,000 Bé, així que és una espècie d'eco especial en el sentit que no és necessari parèntesi. 969 01:16:22,000 --> 01:16:29,000 No ha de tenir necessàriament les cometes al voltant de les variables, 970 01:16:29,000 --> 01:16:37,000 com que és vàlid dir echo $ i, i que interpretarà això com una cadena. 971 01:16:37,000 --> 01:16:44,000 Es farà el repartiment, així que vam poder fer això, i això és vàlid també, però nosaltres no ho necessitem. 972 01:16:44,000 --> 01:16:48,000 És opcional. 973 01:16:48,000 --> 01:16:53,000 En conjunt de problemes d'aquesta setmana mirar cap a fora per a una gran quantitat d'aquest tipus de coses 974 01:16:53,000 --> 01:16:58,000 on vostè està barrejant i combinant HTML amb PHP 975 01:16:58,000 --> 01:17:08,000 igual que aquest, i ara si que desplaçar-se cap enrere i correm aquest 976 01:17:08,000 --> 01:17:13,000 podem veure que tenim un munt de valors d'opció 977 01:17:13,000 --> 01:17:15,000 que acaba d'imprimir. 978 01:17:15,000 --> 01:17:20,000 Tenim tot això que he HTML generat molt ràpid per a nosaltres. 979 01:17:20,000 --> 01:17:22,000 Ho deixo com a exercici. 980 01:17:22,000 --> 01:17:24,000 És molt similar a la lectura d'arxius que vam fer anteriorment. 981 01:17:24,000 --> 01:17:31,000 >> Hi ha un arxiu concentrations.txt que es pot baixar de la CDN, 982 01:17:31,000 --> 01:17:34,000 i es pot obrir utilitzant el mateix truc foreach que vam fer abans, 983 01:17:34,000 --> 01:17:39,000 foreach i només cal fer-se ressò d'una opció i endoll 984 01:17:39,000 --> 01:17:44,000 els valors adequats, les tecles i índexs, 985 01:17:44,000 --> 01:17:49,000 i després et donen un menú desplegable que literalment crea 986 01:17:49,000 --> 01:17:54,000 programació per a tots vostès de les diferents concentracions de Harvard. 987 01:17:54,000 --> 01:17:57,000 Una cosa molt útil a tenir. 988 01:17:57,000 --> 01:18:02,000 Hi ha un munt de coses de configuració per aquesta tasca. 989 01:18:02,000 --> 01:18:07,000 Si no ho ha fet ja prendre la següent mitja hora, una hora, 990 01:18:07,000 --> 01:18:10,000 algun temps aquesta nit definitivament amb seguretat, 991 01:18:10,000 --> 01:18:14,000 caminar a través de l'especificació de conjunt de problemes, 992 01:18:14,000 --> 01:18:20,000 veure el que està passant amb la creació dels vhosts, l'amfitrió local, totes aquestes coses. 993 01:18:20,000 --> 01:18:24,000 Una cosa a destacar és que en aquests moments 994 01:18:24,000 --> 01:18:30,000 en la majoria dels conjunts de problemes que hem estat anant a la carpeta de Dropbox 995 01:18:30,000 --> 01:18:34,000 i després descarregar el butlletí de problemes zip i descomprimir. 996 01:18:34,000 --> 01:18:36,000 Per aquest conjunt de problemes que vostè no desitja. 997 01:18:36,000 --> 01:18:40,000 Vols anar a aquest directori vhosts. 998 01:18:40,000 --> 01:18:45,000 Et vull entrar en vhosts i entrar al directori del servidor local dins d'ella, 999 01:18:45,000 --> 01:18:50,000 i aquí és on vostè vol baixar l'arxiu zip, 1000 01:18:50,000 --> 01:18:55,000 descomprimir, i estar llest per anar. 1001 01:18:55,000 --> 01:18:57,000 Vas a haver de seguir els passos de prop. 1002 01:18:57,000 --> 01:19:02,000 >> Si vostè té alguna pregunta, envieu un correu electrònic, publicar-los en discutir, arribar a horari d'oficina. 1003 01:19:02,000 --> 01:19:08,000 Gràcies nois. La setmana que ve tindrem una sessió de revisió de la prova. 1004 01:19:08,000 --> 01:19:12,000 Gaudeixi del seu conjunt de problemes últim. Espero que tot va molt bé. 1005 01:19:12,000 --> 01:19:14,000 [CS50.TV]