1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Sección 8] [menos cómodo] 2 00:00:02,000 --> 00:00:04,000 [Nate Hardison] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Esta é CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:11,000 >> Benvido ao noso segundo a última sección. 5 00:00:11,000 --> 00:00:13,000 Esta semana imos falar sobre PHP e entón a próxima semana 6 00:00:13,000 --> 00:00:17,000 imos facer unha pequena revisión para Quiz 1. 7 00:00:17,000 --> 00:00:20,000 Nós imos comezar na páxina 3 do problema define paquete, 8 00:00:20,000 --> 00:00:28,000 e imos traballar a través da sección de preguntas rapidamente. 9 00:00:28,000 --> 00:00:34,000 Na páxina 3, comezan a falar sobre esa diferenza entre C e PHP 10 00:00:34,000 --> 00:00:38,000 no sentido de que o PHP é unha linguaxe de tipagem dinámica, 11 00:00:38,000 --> 00:00:42,000 mentres C é tipagem estática, 12 00:00:42,000 --> 00:00:46,000 e alguén realmente feito rapidamente calquera codificación en algo así como PHP 13 00:00:46,000 --> 00:00:51,000 ou Python ou Ruby antes JavaScript? 14 00:00:51,000 --> 00:00:53,000 Totalmente novo? Okay. 15 00:00:53,000 --> 00:00:56,000 >> Todas esas linguas que eu acaba de mencionar 16 00:00:56,000 --> 00:01:01,000 son moi diferentes linguaxes como C e C + + e Java 17 00:01:01,000 --> 00:01:04,000 no sentido de que cando declara unha variable que non ten que declarar 18 00:01:04,000 --> 00:01:09,000 que tipo de variable é, polo tanto, C foron preso ter que sempre digo 19 00:01:09,000 --> 00:01:13,000 iso vai ser unha variable int, ou iso vai ser unha variable char *, 20 00:01:13,000 --> 00:01:16,000 mentres que con PHP, co Python, con Ruby, 21 00:01:16,000 --> 00:01:20,000 con unha morea de linguas máis modernas non ten que facelo en todo. 22 00:01:20,000 --> 00:01:24,000 Vostede acaba de declarar a súa variable, e, no caso de PHP 23 00:01:24,000 --> 00:01:28,000 vostede declarar que é unha variable prefixando-lo con un sinal de $, 24 00:01:28,000 --> 00:01:35,000 e, a continuación, o tipo de variable é determinada por calquera valor que está seguro, 25 00:01:35,000 --> 00:01:38,000 que é legal. 26 00:01:38,000 --> 00:01:44,000 Para xogar con iso un pouco, temos un código de exemplo PHP aquí 27 00:01:44,000 --> 00:01:47,000 entre as etiquetas de inicio e fin. 28 00:01:47,000 --> 00:01:53,000 Estamos a usar este tipo de como HTML no sentido de que 29 00:01:53,000 --> 00:01:56,000 temos estes corchetes aquí para abrir e pechar. 30 00:01:56,000 --> 00:01:58,000 Vai ver iso con HTML. 31 00:01:58,000 --> 00:02:03,000 Vai ver o mesmo tipo de sintaxe con XML tamén. 32 00:02:03,000 --> 00:02:06,000 >> Isto indica o inicio dun bloque PHP. 33 00:02:06,000 --> 00:02:09,000 Este php? E específico para PHP. 34 00:02:09,000 --> 00:02:16,000 Pechamos todo cun> tamén. 35 00:02:16,000 --> 00:02:22,000 Imos abrir un arquivo no noso aparello co que desexa. 36 00:02:22,000 --> 00:02:25,000 Neste paquete que di chamarse dynamic.php. 37 00:02:25,000 --> 00:02:29,000 En realidade, pode chamalo de todo o que quere, pero o nome do ficheiro aparecerá 38 00:02:29,000 --> 00:02:34,000 e ser importante máis tarde, entón lembre que vostede chama-lo. 39 00:02:34,000 --> 00:02:36,000 Vou pasar o aparello, 40 00:02:36,000 --> 00:02:43,000 e eu vou facer un directorio para 41 00:02:43,000 --> 00:02:48,000 Sección 9 Eu creo que estamos agora. 42 00:02:48,000 --> 00:02:51,000 E imos á sección 9, 43 00:02:51,000 --> 00:02:54,000 e eu vou usar o gedit. 44 00:02:54,000 --> 00:02:59,000 Imos ver, gedit, e eu vou chamar dynamic.php meu. 45 00:02:59,000 --> 00:03:03,000 Boom. 46 00:03:03,000 --> 00:03:06,000 Dentro dynamic.php, xa que este é un arquivo PHP 47 00:03:06,000 --> 00:03:09,000 e quero facer este a través do intérprete PHP 48 00:03:09,000 --> 00:03:12,000 Eu teño comezar todo coas etiquetas abertas, 49 00:03:12,000 --> 00:03:17,000 entón eu vou comezar inmediatamente, 50 00:03:17,000 --> 00:03:23,000 me dar un pouco de espazo entre as etiquetas, 51 00:03:23,000 --> 00:03:26,000 e entón o punto deste exercicio foi de xogar con 52 00:03:26,000 --> 00:03:34,000 esta función chamada gettype, así gettype, esta función aquí. 53 00:03:34,000 --> 00:03:38,000 >> Teña en conta que non hai espazo ou subliñado ou guión ou algo así 54 00:03:38,000 --> 00:03:42,000 separando as dúas palabras, comezar e escribir, só unha palabra completamente. 55 00:03:42,000 --> 00:03:46,000 Pero o que isto vai facer é pasar unha variable para gettype, 56 00:03:46,000 --> 00:03:51,000 dicir $ var ou $ x, 57 00:03:51,000 --> 00:03:55,000 iso me vai dicir o tipo de nun formato de depuración 58 00:03:55,000 --> 00:03:59,000 que o nome que tipo é. 59 00:03:59,000 --> 00:04:03,000 Nós imos probar aquí. 60 00:04:03,000 --> 00:04:07,000 En particular, se ollar cara atrás, a especificación pset 61 00:04:07,000 --> 00:04:11,000 Temos algunhas liñas diferentes do código aquí. 62 00:04:11,000 --> 00:04:16,000 Na primeira liña de código que arrincar esta variable, $ var, 63 00:04:16,000 --> 00:04:21,000 ser igual a 7, e, a continuación, temos esta liña printf 64 00:04:21,000 --> 00:04:25,000 que di hey, var printf está baleiro. 65 00:04:25,000 --> 00:04:29,000 Printf é unha das moitas formas de imprimir cousas en PHP. 66 00:04:29,000 --> 00:04:33,000 Moitas veces vai ver a función eco usado en vez de printf, 67 00:04:33,000 --> 00:04:40,000 printf pero estamos todos familiarizado con sendo codificación en C por un tempo. 68 00:04:40,000 --> 00:04:42,000 O que realmente pode facer é deixar de ver obras copiar e pegar. 69 00:04:42,000 --> 00:04:46,000 Vou tentar dar un regalo. 70 00:04:46,000 --> 00:04:52,000 Imos volver para o aparello. 71 00:04:52,000 --> 00:05:00,000 Ok, e alí imos nós. 72 00:05:00,000 --> 00:05:05,000 E paso é un pouco descolados, pero aquí imos nós. 73 00:05:05,000 --> 00:05:08,000 Temos ese código aquí. 74 00:05:08,000 --> 00:05:11,000 >> [Estudante] e estilo non é bo para a guía-lo? 75 00:05:11,000 --> 00:05:13,000 Sentímolo? 76 00:05:13,000 --> 00:05:15,000 [Estudante] e convencional para guía-lo? 77 00:05:15,000 --> 00:05:21,000 Certo, entón Sam pregunta se é convenio para guía-lo ou non. 78 00:05:21,000 --> 00:05:23,000 Normalmente si. 79 00:05:23,000 --> 00:05:26,000 Neste caso, eu escollín non facelo. 80 00:05:26,000 --> 00:05:33,000 Honesta, vai ver cousas diferentes entre os programadores diferentes. 81 00:05:33,000 --> 00:05:40,000 PHP é normalmente usado moitas veces en combinación co HTML 82 00:05:40,000 --> 00:05:45,000 e outras linguas, e por iso ás veces a impresión se ve un pouco descolados 83 00:05:45,000 --> 00:05:50,000 se recuar no PHP inicio e etiquetas de final. 84 00:05:50,000 --> 00:05:53,000 Ela realmente depende. 85 00:05:53,000 --> 00:05:56,000 Neste caso, o copiar e pegar non pegar as pestanas para min, 86 00:05:56,000 --> 00:06:02,000 pero definitivamente non, como dixo, facelo máis claro. 87 00:06:02,000 --> 00:06:06,000 Todo ben, se gardar este código dynamic.php 88 00:06:06,000 --> 00:06:10,000 entón o que podes facer é vir abaixo a súa fiestra de terminal onde estou aquí abaixo 89 00:06:10,000 --> 00:06:17,000 no gedit e para facer o equivalente a compilación 90 00:06:17,000 --> 00:06:20,000 con make e despois executar o código en C 91 00:06:20,000 --> 00:06:25,000 todo o que ten que ver co arquivo PHP é iniciar o intérprete PHP, 92 00:06:25,000 --> 00:06:30,000 que é un pequeno programa chamado PHP, 93 00:06:30,000 --> 00:06:35,000 eo argumento que lle dá ao intérprete é o arquivo que quere interpretar. 94 00:06:35,000 --> 00:06:40,000 Neste caso dynamic.php,. 95 00:06:40,000 --> 00:06:43,000 Oops, onde foi que eu colocar-lo? 96 00:06:43,000 --> 00:06:52,000 Oh, eu poñelas na sección 9, e aquí estou eu. É por isto. 97 00:06:52,000 --> 00:06:57,000 >> Agora, se eu executar de novo 98 00:06:57,000 --> 00:07:02,000 vemos que na miña primeira chamada función gettype 99 00:07:02,000 --> 00:07:04,000 var é un enteiro. 100 00:07:04,000 --> 00:07:12,000 Na var próximo é unha cadea, e despois no var terceiro é un boolean. 101 00:07:12,000 --> 00:07:15,000 O que é interesante sobre iso é cambiar de volta, vemos que 102 00:07:15,000 --> 00:07:18,000 estes son tipos semellantes aos que tiñamos en C. 103 00:07:18,000 --> 00:07:22,000 Tivemos ints en C. 104 00:07:22,000 --> 00:07:26,000 Nós medio que cordas en C, 105 00:07:26,000 --> 00:07:31,000 así cordas non eran un tipo totalmente lexítimos no sentido de que 106 00:07:31,000 --> 00:07:37,000 nosa cadea CS50 era realmente o que? 107 00:07:37,000 --> 00:07:39,000 Sentímolo? Missy? 108 00:07:39,000 --> 00:07:41,000 [Missy] char *. 109 00:07:41,000 --> 00:07:43,000 Si, foi ese char * usan. 110 00:07:43,000 --> 00:07:47,000 No inicio do semestre nós utilizando o tipo cadea, 111 00:07:47,000 --> 00:07:52,000 pero era realmente un char * baixo o capô. 112 00:07:52,000 --> 00:07:58,000 Nós só tipo definido que, mentres en PHP esas cadeas son un tipo real. 113 00:07:58,000 --> 00:08:07,000 Non hai máis desas cousas do tipo char *. 114 00:08:07,000 --> 00:08:10,000 >> Vai ver que podemos facer moito máis cousas con cordas 115 00:08:10,000 --> 00:08:14,000 moito máis facilmente en PHP que poderiamos C, 116 00:08:14,000 --> 00:08:17,000 e, finalmente, temos este tipo boolean, é a gran diferenza aquí é que 117 00:08:17,000 --> 00:08:21,000 desprazarse de volta para abaixo, vemos que o nome destes tipos 118 00:08:21,000 --> 00:08:28,000 agora son string, enteiro, e en vez de boolean, int e bool 119 00:08:28,000 --> 00:08:31,000 e como incorporarse distintas linguaxes de programación, 120 00:08:31,000 --> 00:08:36,000 asumindo que nalgún momento das súas vidas, pode poñerse en contacto con 121 00:08:36,000 --> 00:08:40,000 os distintos vai notar pequenas peculiaridades como esta 122 00:08:40,000 --> 00:08:44,000 onde C chámase ints enteiros. 123 00:08:44,000 --> 00:08:46,000 Algúns chaman-lle números enteiros. 124 00:08:46,000 --> 00:08:51,000 Existen outros termos que vai executar en. 125 00:08:51,000 --> 00:08:55,000 Int grande que vimos hoxe en SQL. 126 00:08:55,000 --> 00:08:59,000 Hai tamén o número e, a continuación, bool, boolean, 127 00:08:59,000 --> 00:09:03,000 todo tipo de diferenzas alí. 128 00:09:03,000 --> 00:09:07,000 >> Isto non é moi interesante, pero agora eu estou indo darlle un pouco de tempo 129 00:09:07,000 --> 00:09:13,000 o zoom-out para traballar a través deste exercicio, na parte inferior da páxina 3 130 00:09:13,000 --> 00:09:20,000 onde pide que tipo corresponden a eses valores aquí no fondo. 131 00:09:20,000 --> 00:09:24,000 Temos 3.50. 132 00:09:24,000 --> 00:09:28,000 Temos esta cousa aquí, o que é interesante. 133 00:09:28,000 --> 00:09:32,000 Nós non vimos isto antes, pero se está seguindo ao longo de charla 134 00:09:32,000 --> 00:09:35,000 probablemente xa sabe o que é. 135 00:09:35,000 --> 00:09:40,000 Entón temos iso, que este é o tipo de funky. 136 00:09:40,000 --> 00:09:42,000 Vostede recoñece iso. 137 00:09:42,000 --> 00:09:46,000 ¿Que é iso en C? 138 00:09:46,000 --> 00:09:50,000 Sam? O que isto lle dar en C? 139 00:09:50,000 --> 00:09:54,000 Sería abrir un ficheiro chamado dynamic.php e facelo lexible. 140 00:09:54,000 --> 00:09:58,000 Si, e cal sería o tipo de variable que sería asignar isto? Estrela do arquivo. >> 141 00:09:58,000 --> 00:10:02,000 Exactamente, sería asignar iso a unha estrela de arquivo. 142 00:10:02,000 --> 00:10:08,000 Este é PHP lexítimo tamén. 143 00:10:08,000 --> 00:10:12,000 Executar iso. Mira o que acontece cando pasar iso para gettype. 144 00:10:12,000 --> 00:10:19,000 E tamén comprobar o que é nula, o que podería ser en PHP. 145 00:10:19,000 --> 00:10:21,000 Eu vou te dar un par de minutos. 146 00:10:21,000 --> 00:10:24,000 Pode literalmente copiar e pegar estes valores, 147 00:10:24,000 --> 00:10:29,000 e entón imos facer unha chamada pouco ao chou en ti 148 00:10:29,000 --> 00:10:34,000 e ver o que ten. 149 00:10:34,000 --> 00:10:36,000 >> [Estudante] Eu teño unha pregunta. << Yeah. 150 00:10:36,000 --> 00:10:40,000 Nunha das charlas David dixo que hai algo que pode pór na parte superior do seu arquivo 151 00:10:40,000 --> 00:10:43,000 de xeito que non precisa escribir o PHP cada vez. 152 00:10:43,000 --> 00:10:45,000 O que foi iso? 153 00:10:45,000 --> 00:10:50,000 El foi, probablemente, a falar sobre o estrondo libra, o estrondo de hash. 154 00:10:50,000 --> 00:10:57,000 É unha directiva que se marcar o ficheiro como executábel 155 00:10:57,000 --> 00:11:01,000 entón o que fai é cando executar o arquivo 156 00:11:01,000 --> 00:11:06,000 vai dicir ao programa shell 157 00:11:06,000 --> 00:11:12,000 para usar o intérprete PHP para interpretar o contido do arquivo. 158 00:11:12,000 --> 00:11:16,000 A cuestión de ser o que era esta liña especial 159 00:11:16,000 --> 00:11:20,000 que poderiamos incluír na parte superior dos nosos arquivos PHP para non ter que incluír 160 00:11:20,000 --> 00:11:26,000 esta liña PHP ou PHP este comando en calquera momento realizar o ficheiro? 161 00:11:26,000 --> 00:11:31,000 E pode realmente facer iso con unha morea de arquivos diferentes. 162 00:11:31,000 --> 00:11:37,000 Eu creo que depende de onde o binario do PHP é almacenado, 163 00:11:37,000 --> 00:11:43,000 pero moitas veces usr / bin / php é un bo lugar para comezar. 164 00:11:43,000 --> 00:11:45,000 Pode descubrir iso exactamente, indo de volta para o seu dispositivo 165 00:11:45,000 --> 00:11:50,000 e escribindo que php. 166 00:11:50,000 --> 00:11:55,000 O comando que calcula cando está executando binario 167 00:11:55,000 --> 00:12:01,000 ou un comando de onde o arquivo correspondente. 168 00:12:01,000 --> 00:12:06,000 Tanto me di que o PHP é realmente aliasing este ficheiro binario 169 00:12:06,000 --> 00:12:13,000 que está almacenado usr / bin, que é onde moitos dos binarios do sistema están instaladas. 170 00:12:13,000 --> 00:12:21,000 Por exemplo, se eu rolar ata o cumio, agora que eu coloque esa #! liña aquí 171 00:12:21,000 --> 00:12:27,000 Eu podo rolar para abaixo, e podo tentar executar 172 00:12:27,000 --> 00:12:35,000 dynamic.php, pero eu recibín este erro sobre o permiso que está a ser negado, 173 00:12:35,000 --> 00:12:42,000 eo que iso significa que este ficheiro non está dando os permisos de execución. 174 00:12:42,000 --> 00:12:46,000 Non está marcado como un arquivo que alguén poida ser executado. 175 00:12:46,000 --> 00:12:52,000 >> Cando executou facer ou Clang e ten un executable a partir del 176 00:12:52,000 --> 00:12:56,000 o compilador foi intelixente abondo para saber que, ei, eu estou construíndo un executable. 177 00:12:56,000 --> 00:13:00,000 Probablemente vai querer executa-lo, de modo que sería configurar automaticamente 178 00:13:00,000 --> 00:13:02,000 os permisos para ti. 179 00:13:02,000 --> 00:13:06,000 Este non é o caso, porén, cando se crea un ficheiro normal a partir de cero, 180 00:13:06,000 --> 00:13:13,000 A razón é normalmente non quere ter calquera arquivo no seu sistema sexa executábel, 181 00:13:13,000 --> 00:13:15,000 para que realmente ten que ir e facelo manualmente. 182 00:13:15,000 --> 00:13:22,000 O xeito máis doado de facelo é coa orde chmod, 183 00:13:22,000 --> 00:13:28,000 e chmod + x di engadir o bit executable 184 00:13:28,000 --> 00:13:31,000 porque non é o pouco de lectura, o bit de gravación eo pouco executable, 185 00:13:31,000 --> 00:13:35,000 r, w e X, 186 00:13:35,000 --> 00:13:39,000 e dicindo chmod + x ha conectar o bit executable 187 00:13:39,000 --> 00:13:46,000 para, a continuación, o ficheiro que especificamos, que neste caso será dynamic.php. 188 00:13:46,000 --> 00:13:49,000 >> [Estudante] é que ligado para todos? 189 00:13:49,000 --> 00:13:52,000 Imos comprobar iso, así como eu comproba os permisos? 190 00:13:52,000 --> 00:13:54,000 Vostede sabe como eu comproba os permisos dun ficheiro? 191 00:13:54,000 --> 00:13:56,000 [Resposta do alumno inaudível] 192 00:13:56,000 --> 00:13:58,000 Sentímolo? >> [Estudante] XSD. 193 00:13:58,000 --> 00:14:03,000 XSD dános o ficheiro en hacks. 194 00:14:03,000 --> 00:14:09,000 Listado todos os arquivos,-L, me vai amosar os arquivos no meu directorio 195 00:14:09,000 --> 00:14:13,000 tipo de na súa longa lista detallada, e así por aquí vemos que 196 00:14:13,000 --> 00:14:17,000 este ficheiro dynamic.php 197 00:14:17,000 --> 00:14:23,000 modificouse por última vez o 05 de novembro 04:21 AM. 198 00:14:23,000 --> 00:14:26,000 O propietario deste arquivo é jharvard. 199 00:14:26,000 --> 00:14:28,000 Ese é o usuario que está rexistrado Pol 200 00:14:28,000 --> 00:14:31,000 Ese é o usuario que eu estou a traballar como, 201 00:14:31,000 --> 00:14:36,000 e tamén está no aparello que está a traballar tamén como jharvard usuario. 202 00:14:36,000 --> 00:14:38,000 Está no grupo de alumnos, 203 00:14:38,000 --> 00:14:44,000 e estas son as cousas que vai ver moitas veces o suficiente. 204 00:14:44,000 --> 00:14:47,000 >> Podemos entrar en moitos detalles aquí, 205 00:14:47,000 --> 00:14:50,000 pero na maior parte o que quere ollar para cando está olhando para ver 206 00:14:50,000 --> 00:14:55,000 ou non un arquivo executable é primariamente 207 00:14:55,000 --> 00:14:58,000 o usuario que posúe o ficheiro, o propietario, 208 00:14:58,000 --> 00:15:03,000 así jharvard iso, e entón temos 209 00:15:03,000 --> 00:15:07,000 os bits de permisos por aquí á esquerda, 210 00:15:07,000 --> 00:15:13,000 e da forma de ler esta é que o último bit 211 00:15:13,000 --> 00:15:18,000 tipicamente se usa para a reserva ou polo menos non menos neste caso 212 00:15:18,000 --> 00:15:21,000 esta última, moitas veces, ser definido para anuncio para indicar 213 00:15:21,000 --> 00:15:24,000 que o ficheiro é un directorio, e non só un arquivo normal. 214 00:15:24,000 --> 00:15:28,000 Entón, os seguintes 3 bits aquí mesmo 215 00:15:28,000 --> 00:15:34,000 determinar os permisos que o propietario do ficheiro ten, 216 00:15:34,000 --> 00:15:38,000 polo tanto, neste caso jharvard, como o propietario do ficheiro, pode ler e escribir neste ficheiro, 217 00:15:38,000 --> 00:15:42,000 pero hai un trazo dicindo que jharvard non pode executar este ficheiro. 218 00:15:42,000 --> 00:15:46,000 Os próximos tres bits son para o grupo, de xeito que este é o grupo de alumnos, 219 00:15:46,000 --> 00:15:49,000 por iso, se había varios usuarios no meu dispositivo, 220 00:15:49,000 --> 00:15:52,000 e tivemos varios usuarios como parte do grupo de alumnos, 221 00:15:52,000 --> 00:15:55,000 entón poden ler este ficheiro, pero non pode escribir, 222 00:15:55,000 --> 00:15:59,000 e tamén calquera outra persoa, o mundo 223 00:15:59,000 --> 00:16:01,000 só pode ler este ficheiro tamén. 224 00:16:01,000 --> 00:16:03,000 Hai un writeup, bo tempo sobre isto, 225 00:16:03,000 --> 00:16:05,000 así podes ler en liña. 226 00:16:05,000 --> 00:16:10,000 Na especificación do conxunto de problemas que van para iso con máis detalle. 227 00:16:10,000 --> 00:16:12,000 >> [Estudante] é o 218 referíndose ao mundo? 228 00:16:12,000 --> 00:16:17,000 O 218 é-por riba da miña cabeza, eu estou esquecendo, 229 00:16:17,000 --> 00:16:20,000 pero non. 230 00:16:20,000 --> 00:16:29,000 Imos ver. Estou cega niso agora. 231 00:16:29,000 --> 00:16:32,000 Volta para o que estabamos a piques de facer con este chmod + x 232 00:16:32,000 --> 00:16:37,000 onde queriamos dar permisos de execución dynamic.php, 233 00:16:37,000 --> 00:16:40,000 ea pregunta era se iso ía dar permisos de execución para todos 234 00:16:40,000 --> 00:16:44,000 ou só jharvard, e podemos ver iso 235 00:16:44,000 --> 00:16:48,000 executar os comandos e escribindo ls-l, 236 00:16:48,000 --> 00:16:51,000 e agora vemos que é marcada como executable. 237 00:16:51,000 --> 00:16:54,000 Vostede ve que houbo un cambio de cor. 238 00:16:54,000 --> 00:16:57,000 Agora dynamic.php está listada de verde, 239 00:16:57,000 --> 00:17:01,000 e parece que a resposta á pregunta é que, Charlotte? 240 00:17:01,000 --> 00:17:04,000 [Charlotte] Só jharvard. >> Jharvard Só, si. 241 00:17:04,000 --> 00:17:08,000 >> Se quería virar a pouco executable en para todos 242 00:17:08,000 --> 00:17:10,000 como podemos facelo? 243 00:17:10,000 --> 00:17:13,000 Calquera pensamentos? >> A + x? 244 00:17:13,000 --> 00:17:15,000 Si, exactamente. 245 00:17:15,000 --> 00:17:23,000 Charlotte dixo que podemos facer chmod + x dun dos dynamic.php, 246 00:17:23,000 --> 00:17:26,000 e agora, executar ls-l, vemos que os bits de execución 247 00:17:26,000 --> 00:17:30,000 son de feito conectado para todos. 248 00:17:30,000 --> 00:17:37,000 E pode realmente facer o inverso deste, de modo que pode desactiva-lo para todos 249 00:17:37,000 --> 00:17:41,000 usando menos. 250 00:17:41,000 --> 00:17:46,000 Agora está desconectado, e agora podemos ligalo novo para jharvard 251 00:17:46,000 --> 00:17:52,000 para que poidamos realmente executa-lo agora 252 00:17:52,000 --> 00:17:58,000 e agora ve cando fai o código agasallo especial #! liña na parte superior, 253 00:17:58,000 --> 00:18:04,000 #! liña, dixo o shell, 254 00:18:04,000 --> 00:18:08,000 dixo o noso terminal hey, cando ese ficheiro é executado, 255 00:18:08,000 --> 00:18:14,000 usar / usr / bin / php para interpretar este ficheiro 256 00:18:14,000 --> 00:18:20,000 e, a continuación, imprimir a saída. 257 00:18:20,000 --> 00:18:22,000 [Pregunta estudante inaudível] 258 00:18:22,000 --> 00:18:25,000 Por suposto, deixe-me ir para arriba. Así como este. 259 00:18:25,000 --> 00:18:36,000 Vai ver todas esas directivas comezar con este libra e, a continuación, o punto de exclamación, 260 00:18:36,000 --> 00:18:39,000 ás veces chamado de un estrondo, shebang hash. 261 00:18:39,000 --> 00:18:48,000 >> [Estudante] Como podemos executa-lo con dynamic.php php antes de facelo executable? 262 00:18:48,000 --> 00:18:55,000 A cuestión era como podemos facer iso usando o binario de PHP 263 00:18:55,000 --> 00:18:58,000 mentres dynamic.php non é executable? 264 00:18:58,000 --> 00:19:01,000 Isto é super importante, porque é exactamente como 265 00:19:01,000 --> 00:19:06,000 está indo para o traballo cando escribe conxunto de problemas 7. 266 00:19:06,000 --> 00:19:09,000 A maioría dos arquivos de tempo de PHP non son directamente executable. 267 00:19:09,000 --> 00:19:14,000 O xeito que funciona é porque é o binario PHP que é executable. 268 00:19:14,000 --> 00:19:16,000 O intérprete é a cousa que está a ser executado, 269 00:19:16,000 --> 00:19:20,000 e así o que está facendo é, literalmente, chupando en todo o contido 270 00:19:20,000 --> 00:19:25,000 do noso arquivo dynamic.php e liña por liña vai 271 00:19:25,000 --> 00:19:29,000 e executar os comandos, polo que é usando o noso arquivo PHP 272 00:19:29,000 --> 00:19:31,000 como unha lista de instrucións. 273 00:19:31,000 --> 00:19:36,000 Non está directamente executalo. 274 00:19:36,000 --> 00:19:40,000 É aí onde dicimos que eses arquivos son interpretados en tempo de execución. 275 00:19:40,000 --> 00:19:46,000 É unha linguaxe tempo de execución, en vez de algo que é determinado en tempo de compilación, 276 00:19:46,000 --> 00:19:49,000 non unha linguaxe compilada como C. 277 00:19:49,000 --> 00:19:54,000 >> Existe unha maneira de obter unha linguaxe tempo de execución de actuar como se fose unha linguaxe tempo de compilación, 278 00:19:54,000 --> 00:19:58,000 Como se ten todo o corredor feito no servidor 279 00:19:58,000 --> 00:20:00,000 en vez de, vostede sabe o que quero dicir? 280 00:20:00,000 --> 00:20:04,000 Si, entón a pregunta é 281 00:20:04,000 --> 00:20:11,000 hai unha forma de obter linguas tempo de execución para actuar máis como os tipos de tempo de compilación de linguaxes? 282 00:20:11,000 --> 00:20:18,000 E alí están, é dicir, que é unha área activa de investigación para moitas destas empresas. 283 00:20:18,000 --> 00:20:22,000 Creo que Facebook ten feito un gran traballo con PHP 284 00:20:22,000 --> 00:20:25,000 e recompila-lo para abaixo, tornándose o máis rápido, optimizando o 285 00:20:25,000 --> 00:20:29,000 desde o seu sitio está construído en PHP. 286 00:20:29,000 --> 00:20:34,000 Se seguindo Node.js en todo, 287 00:20:34,000 --> 00:20:40,000 que é unha especie de intérprete de JavaScript 288 00:20:40,000 --> 00:20:44,000 para ser capaz de executar JavaScript fóra do navegador, fóra do seu navegador, 289 00:20:44,000 --> 00:20:47,000 porque tradicionalmente JavaScript sería só correr dentro do Firefox ou Chrome, 290 00:20:47,000 --> 00:20:52,000 e sería usado para facer animacións legais ocorrer nunha páxina web 291 00:20:52,000 --> 00:20:55,000 e facer a súa páxina web dinámica. 292 00:20:55,000 --> 00:20:59,000 Que foi construída sobre unha chea de traballo que Google fixo 293 00:20:59,000 --> 00:21:03,000 que ter Javascript e C + + 294 00:21:03,000 --> 00:21:09,000 se unen, entón non hai moita investigación activa para 295 00:21:09,000 --> 00:21:13,000 obter esas linguas para interactuar e optimiza-los, 296 00:21:13,000 --> 00:21:17,000 sobre todo porque moitas persoas poden codificar en PHP e JavaScript 297 00:21:17,000 --> 00:21:19,000 porque é moito máis fácil. 298 00:21:19,000 --> 00:21:21,000 É moito máis agradable. Non ten punteiros. 299 00:21:21,000 --> 00:21:27,000 Non ten tipos flotando. 300 00:21:27,000 --> 00:21:31,000 Eles querían gañar os beneficios de linguas en tempo de compilación 301 00:21:31,000 --> 00:21:36,000 con todo tipo de control é a velocidade e uso de memoria baixo e todo iso 302 00:21:36,000 --> 00:21:42,000 mantendo aínda a flexibilidade e facilidade de uso destas novas. 303 00:21:42,000 --> 00:21:46,000 >> De volta ao noso plan orixinal de ataque. 304 00:21:46,000 --> 00:21:50,000 Temos algunhas destas preguntas aquí na nosa especificación conxunto de problemas. 305 00:21:50,000 --> 00:21:54,000 Imos pasar por eles moi rapidamente, e nós imos dar a volta ao cuarto. 306 00:21:54,000 --> 00:21:59,000 Charlotte, que tipo é 3,50? 307 00:21:59,000 --> 00:22:01,000 [Charlotte] Isto é un dobre. >> É unha dobre. 308 00:22:01,000 --> 00:22:03,000 Jimmy, que é ese próximo? >> Unha matriz. 309 00:22:03,000 --> 00:22:09,000 Unha matriz, impresionante, e Jared, o que é o fopen? 310 00:22:09,000 --> 00:22:11,000 [Jared] É un recurso. >> É un recurso. 311 00:22:11,000 --> 00:22:15,000 Este é un tipo de un novo, non unha estrela de ficheiro, non un arquivo. 312 00:22:15,000 --> 00:22:19,000 É un recurso é o tipo en PHP, 313 00:22:19,000 --> 00:22:24,000 e eu sinto moito, Ella, o nulo último é o que? 314 00:22:24,000 --> 00:22:26,000 Nulo. 315 00:22:26,000 --> 00:22:28,000 Nulo, como está escrito en PHP? >> A mesma forma. 316 00:22:28,000 --> 00:22:30,000 Do mesmo xeito, capitais? >> Si 317 00:22:30,000 --> 00:22:33,000 Si, todo ben. 318 00:22:33,000 --> 00:22:35,000 Aquí imos nós, temos un dobre, temos unha matriz, 319 00:22:35,000 --> 00:22:41,000 temos un recurso, e logo temos nulo. 320 00:22:41,000 --> 00:22:48,000 Imos ver agora viuse 321 00:22:48,000 --> 00:22:51,000 Imos ver, entón agora eu creo que eu tamén quero facer é puxar arriba 322 00:22:51,000 --> 00:22:56,000 Esta páxina web aquí, este php.net / manual, 323 00:22:56,000 --> 00:23:01,000 por iso, se vostedes que copiar e abrir un navegador. 324 00:23:01,000 --> 00:23:07,000 Vou tirar o Chrome, que puxo dentro 325 00:23:07,000 --> 00:23:10,000 Quero demostrar que iso non só porque 326 00:23:10,000 --> 00:23:13,000 podemos falar todos os días sobre os tipos e todas as cousas que a diversión 327 00:23:13,000 --> 00:23:19,000 senón porque este é o guía do PHP, 328 00:23:19,000 --> 00:23:23,000 e hai unha morea de programadores PHP alí fora. 329 00:23:23,000 --> 00:23:26,000 Hai unha morea de sitios PHP alí fóra, 330 00:23:26,000 --> 00:23:31,000 e, como resultado, hai unha gran cantidade de documentación en PHP, 331 00:23:31,000 --> 00:23:36,000 e do manual, este php.net, é un bo lugar para ir 332 00:23:36,000 --> 00:23:43,000 sempre que está con dúbidas sobre o que é a mellor forma de facer X en PHP 333 00:23:43,000 --> 00:23:45,000 ou o que é que unha función se parece? 334 00:23:45,000 --> 00:23:49,000 Só o tipo de familiarizarse co que iso parece, porque 335 00:23:49,000 --> 00:23:54,000 vai vir aquí moitas veces, un pouco de conxunto de problemas 7. 336 00:23:54,000 --> 00:23:57,000 >> Se acaba facendo un proxecto final que usa PHP 337 00:23:57,000 --> 00:24:04,000 este será un lugar que vai tornar-se moi ben familiarizado. 338 00:24:04,000 --> 00:24:09,000 Moitas veces, o xeito no que as persoas facer iso é que eles usan Google para buscar o lugar, 339 00:24:09,000 --> 00:24:16,000 e non usar a caixa de busca que está aquí enriba na esquina superior dereita, que é unha especie de pequeno. 340 00:24:16,000 --> 00:24:19,000 Se está buscando en torno a algo para facer con PHP e ve 341 00:24:19,000 --> 00:24:24,000 un dos enlaces manuais aparecer normalmente pode confiar en que 342 00:24:24,000 --> 00:24:31,000 como un recurso moi bo. 343 00:24:31,000 --> 00:24:34,000 Incribles, polo tanto, fóra destes tipos, só por curiosidade, 344 00:24:34,000 --> 00:24:37,000 que non vimos? 345 00:24:37,000 --> 00:24:40,000 Calquera cousa que non vimos aquí? 346 00:24:40,000 --> 00:24:44,000 [Estudante] >> Recursos. Vimos de recursos coa chamada fopen. 347 00:24:44,000 --> 00:24:48,000 [Estudante] obxectos. >> Obxectos que non vimos, con certeza. 348 00:24:48,000 --> 00:24:51,000 Callbacks non vimos. 349 00:24:51,000 --> 00:24:54,000 Hai algúns deses pseudo-clase. 350 00:24:54,000 --> 00:24:57,000 Nós sempre só vin enteiro e de parella. 351 00:24:57,000 --> 00:25:01,000 Non ver algúns dos outros, polo que se preme en números enteiros 352 00:25:01,000 --> 00:25:08,000 podemos ver hai outros enteiros que teñen aquí? 353 00:25:08,000 --> 00:25:11,000 Son todos tan completo, enteiro, completo. 354 00:25:11,000 --> 00:25:14,000 Algunhas linguas teñen maiores tipos enteiros, 355 00:25:14,000 --> 00:25:23,000 como vimos no MySQL hoxe houbo int e int grande. 356 00:25:23,000 --> 00:25:25,000 Cool. 357 00:25:25,000 --> 00:25:28,000 >> Entón, manual de PHP. 358 00:25:28,000 --> 00:25:37,000 Imos volver para a nosa especificación conxunto de problemas, e agora imos rodar a páxina 4. 359 00:25:37,000 --> 00:25:41,000 Unha das cousas que acontece cando comeza linguas 360 00:25:41,000 --> 00:25:49,000 que non teñen esta tipagem estática, polo tanto, estas linguas, onde ten que declarar 361 00:25:49,000 --> 00:25:52,000 tipo dunha variable de fronte para arriba 362 00:25:52,000 --> 00:26:00,000 é que comeza casos en que pode comezar a ter variables de tipos diferentes 363 00:26:00,000 --> 00:26:04,000 interactuar uns cos outros, 364 00:26:04,000 --> 00:26:09,000 e PHP fai esa cousa que tenta facer 365 00:26:09,000 --> 00:26:13,000 o que considera a cousa máis sensata a facer 366 00:26:13,000 --> 00:26:18,000 cando ten dous tipos interactúan uns cos outros. 367 00:26:18,000 --> 00:26:24,000 Por exemplo, se olharmos para estas liñas de código aquí 368 00:26:24,000 --> 00:26:29,000 ve que temos o que ocorre cando 369 00:26:29,000 --> 00:26:38,000 Tentamos e engadir a secuencia 1 ao número enteiro 2. 370 00:26:38,000 --> 00:26:41,000 Qué acontece se tentar e engadir unha secuencia que non é un valor numérico 371 00:26:41,000 --> 00:26:48,000 senón personaxes reais, CS co número 50? 372 00:26:48,000 --> 00:26:51,000 Entón imos ver hai algo diferente que acontece cando 373 00:26:51,000 --> 00:26:56,000 en vez de engadir unha cadea para un número que está engadindo un número a unha cadea, 374 00:26:56,000 --> 00:27:00,000 e así por diante e así por diante ata o punto en que estamos recibindo 375 00:27:00,000 --> 00:27:05,000 algún tipo de cousas estrañas aquí, onde temos 7 + verdade. 376 00:27:05,000 --> 00:27:09,000 O que diaños significa isto? 377 00:27:09,000 --> 00:27:19,000 >> Se vostedes van adiante e pegar algúns este código no seu dispositivo. 378 00:27:19,000 --> 00:27:27,000 Pode mantelo en dynamic.php. 379 00:27:27,000 --> 00:27:30,000 Imos ver o que acontece. 380 00:27:41,000 --> 00:27:43,000 [Estudante] necesitará empregar impresión non, printf? 381 00:27:43,000 --> 00:27:52,000 Si, entón podes ver que de impresión tamén é unha función válida para a impresión en PHP. 382 00:27:52,000 --> 00:27:54,000 Hai moitas formas diferentes de facer iso. 383 00:27:54,000 --> 00:27:58,000 Imos ver un par de exemplos máis tarde, unha vez que comeza a falar 384 00:27:58,000 --> 00:28:02,000 sobre o único problema que nós estamos indo para escribir 385 00:28:02,000 --> 00:28:06,000 e entón o problema concentracións que imos escribir 386 00:28:06,000 --> 00:28:09,000 que aínda que temos fopen e fclose 387 00:28:09,000 --> 00:28:15,000 que moitas veces non é o xeito máis sinxelo de ler o contido dun arquivo. 388 00:28:15,000 --> 00:28:21,000 PHP ten unha morea deses remanentes C-like. 389 00:28:21,000 --> 00:28:28,000 [Estudante] Cando engada en todas as 6 desas cousas que eu só obter un número como unha saída. 390 00:28:28,000 --> 00:28:36,000 [Nate H.] Cando se pon en todas as 6 destas cousas. 391 00:28:36,000 --> 00:28:39,000 Imos ver o que é, porque é posiblemente- 392 00:28:39,000 --> 00:28:46,000 unha cousa é que esas chamadas de impresión non están rematados a finais con novas liñas. 393 00:28:46,000 --> 00:28:49,000 Non hai como nova liña que separa cada unha desas chamadas de impresión, 394 00:28:49,000 --> 00:28:51,000 quizais por iso que está a recibir un gran número, 395 00:28:51,000 --> 00:28:58,000 e é realmente só amálgama de novos carácteres de liña. 396 00:28:58,000 --> 00:29:00,000 [Estudante] Ok, como podo estar seguro de- 397 00:29:00,000 --> 00:29:03,000 Así, hai unha morea de maneiras diferentes. 398 00:29:03,000 --> 00:29:06,000 Vostede podería poñer a man nunha copia dun carácter de nova liña, 399 00:29:06,000 --> 00:29:09,000 un eco dun carácter de nova liña, 400 00:29:09,000 --> 00:29:12,000 imprimir de nova liña. 401 00:29:12,000 --> 00:29:16,000 [Estudante] Entón eco é a mesma cousa que printf? 402 00:29:16,000 --> 00:29:21,000 >> Printf é como C printf 403 00:29:21,000 --> 00:29:24,000 onde está imprimindo unha secuencia formatada. 404 00:29:24,000 --> 00:29:32,000 Vostede está dando-lle a secuencia de formato e as variables de espazo reservado. 405 00:29:32,000 --> 00:29:39,000 É algo que moitas veces non se usa- 406 00:29:39,000 --> 00:29:42,000 imos ver, como un aviso, 407 00:29:42,000 --> 00:29:48,000 Estou menos familiarizado con PHP que eu con linguaxes web, 408 00:29:48,000 --> 00:29:53,000 e cando ten programado en PHP eu normalmente non usan printf 409 00:29:53,000 --> 00:29:59,000 porque creo que é máis rápido para usar os recursos de interpolación de cadeas que ten, 410 00:29:59,000 --> 00:30:04,000 que nós imos entrar e eu vou lle amosar en só un segundo, 411 00:30:04,000 --> 00:30:08,000 mentres que en C nós medio que temos para facer esta cousa hacky para obtelo para imprimir correctamente. 412 00:30:08,000 --> 00:30:16,000 Realmente pode pór variables directamente cadeas en PHP. 413 00:30:16,000 --> 00:30:22,000 Printf é unha especie de excesivamente longo para o que eu costume facer. Si, Ella. 414 00:30:22,000 --> 00:30:25,000 [Ella] Xeralmente, se conseguir un erro de interpretación é que iso significa- 415 00:30:25,000 --> 00:30:30,000 como en C non dicir exactamente onde está o erro e que é, 416 00:30:30,000 --> 00:30:34,000 Entón, isto significa ollar a través do seu código completo e descubrir iso? 417 00:30:34,000 --> 00:30:39,000 É tipicamente máis segmentado que iso. 418 00:30:39,000 --> 00:30:48,000 Eu creo que nese caso foi un pouco fóra, 419 00:30:48,000 --> 00:30:51,000 entón eu creo que, nese caso, que estaba falta un punto e coma. 420 00:30:51,000 --> 00:30:54,000 El estaba tentando facer sentido de todo, 421 00:30:54,000 --> 00:30:57,000 así como esas linguaxes interpretadas, o intérprete vai 422 00:30:57,000 --> 00:31:01,000 e facer o mellor para que todo funcione correctamente. 423 00:31:01,000 --> 00:31:04,000 >> Vai ver, por exemplo, en JavaScript 424 00:31:04,000 --> 00:31:10,000 Vostede moitas veces liña de declaracións finais con un punto e coma como o fan en PHP, 425 00:31:10,000 --> 00:31:13,000 así como fan en C. 426 00:31:13,000 --> 00:31:15,000 En JavaScript algúns dos intérpretes de JavaScript 427 00:31:15,000 --> 00:31:20,000 en moitos dos navegadores pode pór en punto e coma para 428 00:31:20,000 --> 00:31:23,000 Se ocorrer de estar falta eles. 429 00:31:23,000 --> 00:31:29,000 Eles van tentar acomodar por algún desleixo da súa parte. 430 00:31:29,000 --> 00:31:34,000 É onde pode estar intentando e intentando e intentando facer as cousas de traballo, 431 00:31:34,000 --> 00:31:36,000 e, finalmente, vai chegar a un punto onde el di que está ben, 432 00:31:36,000 --> 00:31:38,000 Eu non podo facer as cousas funcionen en fiando, e é aí onde vai ter un número de liña 433 00:31:38,000 --> 00:31:44,000 que pode parecer un pouco fóra do lugar exacto. 434 00:31:44,000 --> 00:31:47,000 Ok, entón imos pasar por iso moi rapidamente. 435 00:31:47,000 --> 00:31:50,000 Paramos con ella, entón imos pasar Missy, 436 00:31:50,000 --> 00:31:54,000 e Missy, o que fai impresión de corda 1 máis o número 2 darlle? 437 00:31:54,000 --> 00:31:56,000 [Missy] 3. >> 3. 438 00:31:56,000 --> 00:31:59,000 Isto ten sentido? Máis ou menos? 439 00:31:59,000 --> 00:32:02,000 Dálle un número? Dá-lle unha corda? 440 00:32:02,000 --> 00:32:05,000 [Missy] Un número. >> É un número. 441 00:32:05,000 --> 00:32:09,000 Pero é imprimir lo, polo que vai dar-lle algún tipo de corda. 442 00:32:09,000 --> 00:32:12,000 >> Unha cousa que podemos facer para comprobar iso 443 00:32:12,000 --> 00:32:21,000 é se facemos $ var = 1 + 2 444 00:32:21,000 --> 00:32:28,000 e entón dicimos eco de gettype, 445 00:32:28,000 --> 00:32:33,000 por iso estamos a usar un terceiro tipo de impresión aquí. 446 00:32:33,000 --> 00:32:39,000 Agora podemos ver o que pasa aquí. 447 00:32:39,000 --> 00:32:42,000 Aquí o que temos é que temos un número enteiro fóra diso. 448 00:32:42,000 --> 00:32:45,000 Aínda que estaban engadindo este string a un número, 449 00:32:45,000 --> 00:32:48,000 nós non conseguimos unha secuencia de fóra, así como Missy dixo. 450 00:32:48,000 --> 00:32:52,000 Estabamos a recibir un número enteiro. 451 00:32:52,000 --> 00:32:57,000 Ok, entón imos ver, xunto a, 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. Isto ten sentido? 454 00:33:02,000 --> 00:33:04,000 [Kevin] Yeah. 455 00:33:04,000 --> 00:33:06,000 [Nate H.] Por que? Por que ten sentido para ti? 456 00:33:06,000 --> 00:33:11,000 [Kevin], porque é só ter a corda, tendo valor cero número. 457 00:33:11,000 --> 00:33:16,000 Si, xenial. 458 00:33:16,000 --> 00:33:20,000 Tipo de situacións ambiguas, pero é bo saber que pasa. 459 00:33:20,000 --> 00:33:25,000 Stella, o que pasa co número 1 + secuencia 2? 460 00:33:25,000 --> 00:33:27,000 [Stella] 3. >> 3 novo. 461 00:33:27,000 --> 00:33:30,000 E, neste caso, podemos obter unha cadea ou un número? 462 00:33:30,000 --> 00:33:36,000 >> Imos tentar dar un regalo. 463 00:33:36,000 --> 00:33:43,000 Alguén máis rápido que obter a resposta? Charlotte? 464 00:33:43,000 --> 00:33:46,000 Ah, eu didn't-todo ben, imos ver, imos facer o mesmo tipo de cousas 465 00:33:46,000 --> 00:33:49,000 onde temos un número de unha cadea, e nós estamos indo a ecoar o tipo, 466 00:33:49,000 --> 00:33:51,000 ver o que temos. 467 00:33:51,000 --> 00:33:55,000 Tamén obter un número enteiro. 468 00:33:55,000 --> 00:33:58,000 Non importa cal é a cadea, que é o número un. 469 00:33:58,000 --> 00:34:00,000 Nós aínda estamos indo para obter un número enteiro. 470 00:34:00,000 --> 00:34:04,000 El aínda vai facer o que poderiamos esperar. 471 00:34:04,000 --> 00:34:09,000 Todo ben, entón Sam, que preto de 90 + 9 botellas de cervexa na parede? 472 00:34:09,000 --> 00:34:12,000 [Sam] 99. >> 99. 473 00:34:12,000 --> 00:34:15,000 Non botellas de cervexa na parede, no entanto. 474 00:34:15,000 --> 00:34:17,000 Iso dános un pouco máis información sobre o que está a suceder. 475 00:34:17,000 --> 00:34:21,000 [Sam] Se tivese escrito en letras 9 476 00:34:21,000 --> 00:34:23,000 entón tería 90, non? 477 00:34:23,000 --> 00:34:26,000 [Nate H.] Yeah. 478 00:34:26,000 --> 00:34:30,000 A cuestión era se tivésemos escrito 9 como N-I-N-E 479 00:34:30,000 --> 00:34:34,000 teriamos obtido 99 ou 90? 480 00:34:34,000 --> 00:34:38,000 Teriamos 90. 481 00:34:38,000 --> 00:34:42,000 É literalmente mirando só para personaxes de dous díxitos. 482 00:34:42,000 --> 00:34:46,000 Non é suficientemente intelixente para recoñecer palabras para números e esas cousas. Si 483 00:34:46,000 --> 00:34:48,000 >> [Estudante] Existe tal cousa como typecasting en PHP? 484 00:34:48,000 --> 00:34:54,000 Non hai, e é exactamente do xeito que faría en C. 485 00:34:54,000 --> 00:34:56,000 O que preto 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.] Si, entón o que pode ser sorprendente sobre iso? 488 00:35:01,000 --> 00:35:04,000 O que sucedería se fixo ese mesmo tipo de cousas en C, 489 00:35:04,000 --> 00:35:06,000 se fixo 10/7 en C? 490 00:35:06,000 --> 00:35:08,000 [Charlotte] É só dar-lle dependendo de como typecasted eu creo 491 00:35:08,000 --> 00:35:12,000 que lle daría só un número limitado de díxitos despois da coma. 492 00:35:12,000 --> 00:35:16,000 Si, entón un número limitado de díxitos despois da coma. 493 00:35:16,000 --> 00:35:21,000 O que máis podería ser se podería que lle dar calquera díxitos despois da coma? 494 00:35:21,000 --> 00:35:28,000 Moitas veces, non tan novo, dependendo de como está typecasting 495 00:35:28,000 --> 00:35:31,000 pode ou non pode convertelo en un número de punto flotante. 496 00:35:31,000 --> 00:35:35,000 Aquí era unha especie de bo que fixo. 497 00:35:35,000 --> 00:35:40,000 Se tivésemos mostra que está de volta cando comezamos a facer este tipo de cousas en C 498 00:35:40,000 --> 00:35:44,000 probablemente tería feito sentido un pouco máis 499 00:35:44,000 --> 00:35:48,000 que non só tes que ir a un. 500 00:35:48,000 --> 00:35:51,000 E entón, finalmente, Jamie, o que dicir de 7 + verdade? 501 00:35:51,000 --> 00:35:53,000 [Jamie] 8. >> 8. 502 00:35:53,000 --> 00:35:56,000 O que significa isto? 503 00:35:56,000 --> 00:35:58,000 Coido que só dá certo o valor de 1. 504 00:35:58,000 --> 00:36:01,000 Si Qué acontece se cambiar isto para false? 505 00:36:01,000 --> 00:36:04,000 [Estudante] 7. 506 00:36:04,000 --> 00:36:09,000 Si, para lembrar onde falamos sobre estes valores binarios, 507 00:36:09,000 --> 00:36:12,000 Sendo 1 en diante, sendo 0 fóra? 508 00:36:12,000 --> 00:36:17,000 Agora temos certo é 1, 0 é falso, 509 00:36:17,000 --> 00:36:21,000 e non pode ver iso nos exemplos C que fixemos neste semestre pasado, 510 00:36:21,000 --> 00:36:27,000 pero históricamente tipo bool en C non foi un tipo de real, 511 00:36:27,000 --> 00:36:32,000 para que as persoas teñen usado 0 e 1 no lugar de verdadeiro e falso. 512 00:36:32,000 --> 00:36:35,000 Esta é unha manifestación diso. 513 00:36:35,000 --> 00:36:39,000 >> Ok, entón por unha banda importante de todo isto 514 00:36:39,000 --> 00:36:41,000 é que temos estes tipos diferentes. 515 00:36:41,000 --> 00:36:43,000 Eles poden interactuar uns cos outros. 516 00:36:43,000 --> 00:36:49,000 Moitas veces poden interactuar uns cos outros de formas que son agradables, como vimos aquí. 517 00:36:49,000 --> 00:36:53,000 É bo ser capaz de ter unha corda eo número 2, engadila los xuntos e obter 3. 518 00:36:53,000 --> 00:36:55,000 Isto ten sentido. 519 00:36:55,000 --> 00:36:59,000 Con todo, cando está escribindo sitios, e especialmente cando se está procesando 520 00:36:59,000 --> 00:37:04,000 entrada do usuario, para dicir que teña escrito un formulario web 521 00:37:04,000 --> 00:37:09,000 que recolle información do usuario e, a continuación, vai para proceso-lo 522 00:37:09,000 --> 00:37:13,000 no extremo traseira, na parte do servidor no seu código PHP 523 00:37:13,000 --> 00:37:18,000 se está esperando que o valor que o usuario introduciu e sometidos 524 00:37:18,000 --> 00:37:23,000 ao seu formulario para ser un enteiro ou ser un número de punto flotante, ou algo así 525 00:37:23,000 --> 00:37:29,000 precisa explícitamente lanzalo 526 00:37:29,000 --> 00:37:34,000 e despois facer algunha comprobación de tipo. 527 00:37:34,000 --> 00:37:41,000 >> Non quere só contar con este sistema de malabarismo tipo para facer as cousas funcionan, 528 00:37:41,000 --> 00:37:48,000 especialmente por razóns de seguridade e só para a robustez do seu sitio. 529 00:37:48,000 --> 00:37:51,000 Só algo para manter presente que cando está lidando con datos do formulario, 530 00:37:51,000 --> 00:37:57,000 calquera cousa que ven na mensaxe ou superglobais get 531 00:37:57,000 --> 00:38:01,000 asegúrese de que sempre válida-lo e convertela-lo e typecast-lo. 532 00:38:01,000 --> 00:38:04,000 E, así como nós estabamos falando sobre un momento atrás que typecasting 533 00:38:04,000 --> 00:38:08,000 en PHP é exactamente o mesmo que no C, onde ten os parénteses 534 00:38:08,000 --> 00:38:14,000 e, a continuación, o tipo. 535 00:38:14,000 --> 00:38:16,000 Teña isto en mente. 536 00:38:16,000 --> 00:38:19,000 Unha función que vai vir a cadra cando está facendo iso 537 00:38:19,000 --> 00:38:22,000 é que estamos usando e este é o tipo de como un aparte- 538 00:38:22,000 --> 00:38:27,000 Estamos a usar esta función gettype aquí 539 00:38:27,000 --> 00:38:30,000 para descubrir o tipo dunha variable, 540 00:38:30,000 --> 00:38:37,000 e mentres tanto é útil para depuración e para ver que tipo dunha variable é 541 00:38:37,000 --> 00:38:42,000 non quere usar iso, por exemplo, nunha condición en que 542 00:38:42,000 --> 00:38:57,000 está comprobando para ver se gettype de $ var = enteiro facer algo. 543 00:38:57,000 --> 00:39:01,000 Isto é malo, malo, malo. 544 00:39:01,000 --> 00:39:09,000 En vez diso, son esas funcións chamadas é enteiro, é string, 545 00:39:09,000 --> 00:39:14,000 é matriz que quere empregar no lugar, polo tanto, neste caso 546 00:39:14,000 --> 00:39:18,000 o que me gustaría facer, en vez de este cara aquí 547 00:39:18,000 --> 00:39:31,000 utilizar o var é número enteiro. 548 00:39:31,000 --> 00:39:37,000 E son moitas veces referido é * is_ no sentido de que podería substituír o * con número enteiro, 549 00:39:37,000 --> 00:39:43,000 cadea, etcétera, e só para estar seguro realmente rápido 550 00:39:43,000 --> 00:39:50,000 E iso é int php. 551 00:39:50,000 --> 00:39:59,000 Parece que pode facer ou é int ou se existe enteiro tamén? 552 00:39:59,000 --> 00:40:06,000 Si, de feito, tan int aliases enteiros. 553 00:40:06,000 --> 00:40:08,000 Cool. 554 00:40:14,000 --> 00:40:17,000 >> Como estamos indo? 555 00:40:17,000 --> 00:40:20,000 Imos incorporarse o ritmo un pouco. 556 00:40:20,000 --> 00:40:24,000 Agora imos falar sobre matrices, así como se pode ver 557 00:40:24,000 --> 00:40:28,000 na seguinte parte da especificación falamos sobre como arrays en PHP 558 00:40:28,000 --> 00:40:31,000 son un pouco diferentes do que son na C. 559 00:40:31,000 --> 00:40:34,000 En realidade, son unha especie de amalgama de 560 00:40:34,000 --> 00:40:36,000 as matrices que xa coñece e ama na C 561 00:40:36,000 --> 00:40:40,000 onde todo é do mesmo tipo 562 00:40:40,000 --> 00:40:43,000 almacenadas consecutivamente e de forma contigua na memoria, 563 00:40:43,000 --> 00:40:46,000 e ten eses índices numéricos. 564 00:40:46,000 --> 00:40:49,000 Tes índice 0, o índice 1, índice 2, 565 00:40:49,000 --> 00:40:53,000 e almacenar valores neses índices. 566 00:40:53,000 --> 00:40:57,000 Tamén en C, cando escribiu Speller, unha morea de ti 567 00:40:57,000 --> 00:41:00,000 fixo o achegamento táboa hash, e viu que non tivemos 568 00:41:00,000 --> 00:41:03,000 outro tipo de almacenamento onde estabamos mapeando 569 00:41:03,000 --> 00:41:07,000 unha clave para un valor, por iso, cando intentou gardar algo en táboa hash 570 00:41:07,000 --> 00:41:11,000 tivo que especificar que quería gardalo cunha clave específica, 571 00:41:11,000 --> 00:41:17,000 e que a clave determinada a localización do valor e onde sería almacenado. 572 00:41:17,000 --> 00:41:22,000 Tes tipo de ambos os conceptos ocorrer ao mesmo tempo nun array PHP, 573 00:41:22,000 --> 00:41:27,000 e, como resultado, moitas veces chamamos estas matrices asociativas 574 00:41:27,000 --> 00:41:33,000 onde estamos asociando unha clave nun valor. 575 00:41:33,000 --> 00:41:39,000 Nesta próxima parte falamos dunha matriz PHP simple 576 00:41:39,000 --> 00:41:45,000 onde temos teclas a, b, c, 577 00:41:45,000 --> 00:41:53,000 todas as cordas, o mapeamento para os enteiros 1, 2 e 3. 578 00:41:53,000 --> 00:41:57,000 E pode ter chaves de diferentes tipos. 579 00:41:57,000 --> 00:42:00,000 >> Pode ter que algunhas claves que son cordas, algunhas claves que son enteiros. 580 00:42:00,000 --> 00:42:03,000 Pode ter valores de diferentes tipos. 581 00:42:03,000 --> 00:42:06,000 Pode ter un valor que é unha cadea, un valor que é un número enteiro, 582 00:42:06,000 --> 00:42:11,000 un valor que é un obxecto ou outro array, por exemplo, 583 00:42:11,000 --> 00:42:16,000 todo no obxecto mesmo matriz, que é medio raro. 584 00:42:16,000 --> 00:42:20,000 Non ten que ter unha matriz que só ten un tipo de elemento nel. 585 00:42:20,000 --> 00:42:26,000 Pode ter moitas cousas diferentes a suceder alí dentro. 586 00:42:26,000 --> 00:42:33,000 A outra cousa a notar é que cando ves algo como iso no seu código, 587 00:42:33,000 --> 00:42:38,000 que é PHP válido para declarar unha matriz como esta, 0, 1, 2, 3, 4, 5, 588 00:42:38,000 --> 00:42:43,000 que vai declarar un inicializar $ arr ser esta matriz. 589 00:42:43,000 --> 00:42:48,000 Pero o que está realmente comezando baixo o capo é este tipo de implícito 590 00:42:48,000 --> 00:42:55,000 xeración de chaves onde temos 0-0, 1-1, 2-2, 3-3. 591 00:42:55,000 --> 00:42:59,000 E ocorre que, mesmo se ten unha matriz como este cara aquí 592 00:42:59,000 --> 00:43:03,000 onde a, b e c como as teclas 593 00:43:03,000 --> 00:43:09,000 e despois de comezar a usar o método push matriz para comezar a usar este conxunto como unha pila, 594 00:43:09,000 --> 00:43:12,000 así podes ver que este obxecto de matriz, esta matriz é realmente quede resaltado. 595 00:43:12,000 --> 00:43:15,000 Podemos usalo como unha matriz. Podemos usalo como unha táboa de hash. 596 00:43:15,000 --> 00:43:19,000 Podemos usalo como unha pila. 597 00:43:19,000 --> 00:43:22,000 Cando comezar a empurrar as cousas para esta matriz 598 00:43:22,000 --> 00:43:30,000 a primeira cousa que empuxa para iso será o índice 0 e entón o índice 1 e índice 2. 599 00:43:30,000 --> 00:43:33,000 Pode obter este tipo de xeración implícita de claves 600 00:43:33,000 --> 00:43:38,000 a menos que especifique los explicitamente. 601 00:43:38,000 --> 00:43:43,000 A forma como se especifica claves explícitamente, por suposto, é a usar esta notación de corchetes, 602 00:43:43,000 --> 00:43:48,000 que é semellante a matrices, agás en vez de só permitir 603 00:43:48,000 --> 00:43:54,000 índices enteiros aquí, agora imos permitir que calquera cousa. 604 00:43:54,000 --> 00:43:57,000 Se queres que a clave para ser unha secuencia, que especifica-lo como este. 605 00:43:57,000 --> 00:44:06,000 Se queres que sexa un int, que especifica a int quere usar. 606 00:44:06,000 --> 00:44:13,000 >> Preguntas sobre o que ata agora? 607 00:44:13,000 --> 00:44:18,000 Unha das cousas agradables sobre esta idea 608 00:44:18,000 --> 00:44:26,000 é que só pode ter un valor almacenado cunha chave especial. 609 00:44:26,000 --> 00:44:32,000 Se volvemos ao noso aparello, deixe-me eliminar algunhas destas cousas. 610 00:44:32,000 --> 00:44:47,000 E digamos que eu arrincar un array para 0, 1, 2, feito. 611 00:44:47,000 --> 00:44:55,000 Se eu agora sei que, por exemplo, se eu echo $ arr [0] 612 00:44:55,000 --> 00:44:59,000 Eu estou indo para obter o valor 0 impresos, 613 00:44:59,000 --> 00:45:05,000 e unha vez que só pode ser sempre un valor almacenado para unha determinada clave 614 00:45:05,000 --> 00:45:11,000 se eu gardar algo en $ arr [0], digamos, un, 615 00:45:11,000 --> 00:45:16,000 entón eu sei que cando eu echo $ arr [0] de novo 616 00:45:16,000 --> 00:45:19,000 Eu non estou indo a obter 0 impresos como antes. 617 00:45:19,000 --> 00:45:24,000 Eu só estou indo a obter un. 618 00:45:24,000 --> 00:45:30,000 Polo tanto, este é basicamente dicindo que eu non podo ter $ arr [0] almacenar dous valores diferentes. 619 00:45:30,000 --> 00:45:34,000 Non pode almacenar 0 ea secuencia de un, como esta, literalmente substitúe 620 00:45:34,000 --> 00:45:38,000 o que estaba en $ arr [0] anteriormente. 621 00:45:38,000 --> 00:45:43,000 A razón de eu levar iso é executalo, ver o que acontece. 622 00:45:43,000 --> 00:45:47,000 Vexa aquí que eu teño 0 impresos e en seguida, unha. 623 00:45:47,000 --> 00:45:51,000 Non hai nova liña alí porque eu era preguiceiro e non poñer isto dentro 624 00:45:51,000 --> 00:45:54,000 O que é legal sobre iso é que pode usar isto como unha forma 625 00:45:54,000 --> 00:46:00,000 para capturar esa idea dun conxunto 626 00:46:00,000 --> 00:46:07,000 onde non podemos ter varias chaves dentro dunha matriz. 627 00:46:07,000 --> 00:46:10,000 Non podemos ter chaves idénticas dentro dunha matriz. 628 00:46:10,000 --> 00:46:17,000 Eu non podo ter tecla 0 eo valor 1, 0 chave e un valor 629 00:46:17,000 --> 00:46:21,000 ou tecla 0 e verdadeiro valor. 630 00:46:21,000 --> 00:46:27,000 As teclas son todos só hai unha chave na matriz. 631 00:46:27,000 --> 00:46:32,000 Aínda que pode ter o mesmo valor almacenado 632 00:46:32,000 --> 00:46:35,000 varias veces na matriz baixo diferentes claves 633 00:46:35,000 --> 00:46:42,000 non é posible ter chaves idénticas varias veces na súa matriz PHP. 634 00:46:42,000 --> 00:46:47,000 >> Se olharmos para este problema seguinte, unique.php, 635 00:46:47,000 --> 00:46:51,000 onde queremos abrir un ficheiro PHP 636 00:46:51,000 --> 00:46:54,000 contén unha lista de cadeas, unha cadea por liña, 637 00:46:54,000 --> 00:47:01,000 e queremos atopar todas as secuencias únicas en que o arquivo 638 00:47:01,000 --> 00:47:06,000 todo o que temos que facer é usar unha desas matrices PHP 639 00:47:06,000 --> 00:47:12,000 e utilizar as cordas no arquivo como as claves para esa matriz 640 00:47:12,000 --> 00:47:17,000 e manter a actualizar a nosa matriz como almacenar estas novas claves. 641 00:47:17,000 --> 00:47:22,000 Como podemos ler cada liña fóra do arquivo podemos almacena-lo na matriz, 642 00:47:22,000 --> 00:47:28,000 e ao final teremos como as nosas claves na nosa matriz 643 00:47:28,000 --> 00:47:34,000 todas as cordas orixinais dentro do arquivo. 644 00:47:34,000 --> 00:47:37,000 Isto ten sentido? 645 00:47:37,000 --> 00:47:41,000 Imos ver como funciona isto. 646 00:47:41,000 --> 00:47:49,000 Imos abrir, de acordo coa especificación, un novo arquivo chamado unique.php. 647 00:47:49,000 --> 00:47:58,000 Abre. Oops, desculpe, novo arquivo. 648 00:47:58,000 --> 00:48:03,000 Nós imos comezar a con as etiquetas do mesmo inicio e fin. 649 00:48:03,000 --> 00:48:17,000 Estamos indo para garda-lo na sección 9, e imos chamalo de unique.php. 650 00:48:17,000 --> 00:48:25,000 Ok, agora zoom in 651 00:48:25,000 --> 00:48:32,000 A idea aquí é abrir un ficheiro, 652 00:48:32,000 --> 00:48:38,000 ler en arquivo liña por liña. 653 00:48:38,000 --> 00:48:46,000 Para cada liña no ficheiro 654 00:48:46,000 --> 00:48:51,000 imos ter unha matriz onde temos 655 00:48:51,000 --> 00:49:03,000  a liña como a nosa clave. 656 00:49:03,000 --> 00:49:09,000 E entón, cando chegamos ao fin aquí 657 00:49:09,000 --> 00:49:17,000 Chaves $ arr son as liñas exclusivas 658 00:49:17,000 --> 00:49:25,000 a partir do ficheiro, pois sabemos que se eu poñer en liña esta matriz 659 00:49:25,000 --> 00:49:33,000 varias veces vai só manter substituíndo o valor de idade, 660 00:49:33,000 --> 00:49:46,000 e podemos realmente poñer liña matriz como si só como aquel. 661 00:49:46,000 --> 00:49:48,000 >> Isto é medio raro. 662 00:49:48,000 --> 00:49:52,000 Estamos almacenando o mesmo valor de clave par máis e máis e máis unha vez, 663 00:49:52,000 --> 00:50:00,000 pero xa que está garantido que haberá só unha tecla chamada liña 664 00:50:00,000 --> 00:50:05,000 Entón, se temos un arquivo que di un arquivo de sons de animais e au, au, 665 00:50:05,000 --> 00:50:11,000 Miau Miau, Moo, Moo, e cada vez que lemos un ruído animal para fóra 666 00:50:11,000 --> 00:50:15,000 como trama e almacena-lo na nosa matriz temos trama, e despois a segunda vez 667 00:50:15,000 --> 00:50:20,000 gardados trama que vai substituír a primeira vez que o gardou. 668 00:50:20,000 --> 00:50:25,000 Ao final, imos ter só unha entrada na matriz 669 00:50:25,000 --> 00:50:33,000 para cada un dos ruídos de animais no noso arquivo de ruídos animal. 670 00:50:33,000 --> 00:50:41,000 Vostedes senten seguros de que pode resolver a apertura dun arquivo en PHP? 671 00:50:41,000 --> 00:50:45,000 Unha forma de facelo, imos por este camiño rapidamente, de facelo 672 00:50:45,000 --> 00:50:50,000 é con fopen, como vimos anteriormente. 673 00:50:50,000 --> 00:50:55,000 Pode fopen some_file.txt. 674 00:50:55,000 --> 00:50:59,000 Podes abri-lo en modo de lectura, así como en C. 675 00:50:59,000 --> 00:51:02,000 Esta é unha maneira perfectamente boa para facelo. 676 00:51:02,000 --> 00:51:05,000 Tamén, a continuación, para lectura no ficheiro liña por liña 677 00:51:05,000 --> 00:51:12,000 teñen as mesmas funcións, moitos deles, que fixo en C. 678 00:51:12,000 --> 00:51:14,000 Tes fgets. 679 00:51:14,000 --> 00:51:17,000 Tes feof, aínda que non gusto de usar que 680 00:51:17,000 --> 00:51:22,000 porque, lembre, que non era grande na C. 681 00:51:22,000 --> 00:51:25,000 Podes facelo do mesmo xeito, 682 00:51:25,000 --> 00:51:34,000 pero aquí é unha cousa moi legal. 683 00:51:34,000 --> 00:51:41,000 Sentímolo, eu non quero facer $ ficheiro, pero non hai unha función chamada de arquivo en PHP, 684 00:51:41,000 --> 00:51:47,000 e esta función aquí é legal porque le todo o contido 685 00:51:47,000 --> 00:51:52,000 do ficheiro que se especifica, de forma some_file.txt, 686 00:51:52,000 --> 00:51:56,000 le todo o contido deste arquivo nun array 687 00:51:56,000 --> 00:52:03,000 e entón permite percorrer, o que é moi bacana. 688 00:52:03,000 --> 00:52:07,000 >> Ou tamén, por exemplo, para o noso navegador 689 00:52:07,000 --> 00:52:14,000 e miramos a Google para o arquivo PHP 690 00:52:14,000 --> 00:52:23,000 podes ver aquí que o noso guía di que le ficheiro enteiro nunha matriz, 691 00:52:23,000 --> 00:52:27,000 e podemos file_get_contents para voltar o contido dun arquivo como unha cadea, 692 00:52:27,000 --> 00:52:30,000 pero normalmente só recibindo-o como unha matriz é moi bo porque o que fai 693 00:52:30,000 --> 00:52:33,000 e rompe-lo para que cada elemento 694 00:52:33,000 --> 00:52:37,000 na matriz é unha liña do ficheiro, 695 00:52:37,000 --> 00:52:41,000 por iso, se olharmos para o ficheiro 0, que é a primeira liña do ficheiro. 696 00:52:41,000 --> 00:52:46,000 Ficheiro de unha liña, en segundo lugar, lima 2, a terceira liña, e así por diante e así por diante. 697 00:52:46,000 --> 00:52:50,000 Non sería bo se iso era todo o que tiña que facer en C? 698 00:52:50,000 --> 00:52:53,000 Moi bacana. 699 00:52:53,000 --> 00:52:59,000 David amosou iso na charla, eo idioma que mostrou foi 700 00:52:59,000 --> 00:53:03,000 que, ademais do noso patrón de loop en PHP tivemos que 701 00:53:03,000 --> 00:53:09,000 é ($ i = 0; i <10, i + +), 702 00:53:09,000 --> 00:53:16,000 e pode facelo en PHP tamén, mesmo 703 00:53:16,000 --> 00:53:27,000 Tamén temos esa construción legal chamado foreach. 704 00:53:27,000 --> 00:53:32,000 Foreach é realmente útil cando iterando arrays ou estas estruturas de datos 705 00:53:32,000 --> 00:53:36,000 porque permite que retire cada elemento da matriz 706 00:53:36,000 --> 00:53:42,000 sen ter que facer a man a indexación mesmo, 707 00:53:42,000 --> 00:53:46,000 sen ter que crear manualmente unha variable de índice, increméntase o, 708 00:53:46,000 --> 00:53:51,000 puxe o valor na matriz nese punto, porque iso é unha cousa moi común de facer. 709 00:53:51,000 --> 00:53:54,000 >> Probablemente xa fixo iso toneladas de veces en que estaba facendo cousas C 710 00:53:54,000 --> 00:54:00,000 ao longo do semestre, así con este foreach 711 00:54:00,000 --> 00:54:06,000 podemos varrer esa matriz arquivo, 712 00:54:06,000 --> 00:54:12,000 ea sintaxe é que queremos agora loop sobre esta matriz 713 00:54:12,000 --> 00:54:18,000 e especificar que a variable que imos usar para almacenar 714 00:54:18,000 --> 00:54:27,000 o elemento de matriz neste lugar, local para o ámbito deste loop foreach, 715 00:54:27,000 --> 00:54:32,000 e imos chamalo de liña. 716 00:54:32,000 --> 00:54:38,000 Se é un ficheiro de só palabras e non hai unha palabra nunha liña 717 00:54:38,000 --> 00:54:43,000 poderiamos chamalo de palabra, así como, en realidade só dar a este un nome, 718 00:54:43,000 --> 00:54:49,000 o que sexa chamalo, 719 00:54:49,000 --> 00:55:02,000 e despois dentro do loop, pode facer o que quere con esta liña variable. 720 00:55:02,000 --> 00:55:08,000 Se non é o suficiente para obter o valor da matriz e tamén quere obter 721 00:55:08,000 --> 00:55:17,000 o índice xunto con el pode especificar un nome para o índice 722 00:55:17,000 --> 00:55:22,000 así como o valor, e agora ten acceso a dúas variables. 723 00:55:22,000 --> 00:55:26,000 Ten $ i e liña 724 00:55:26,000 --> 00:55:30,000 onde $ i é o índice na matriz, 725 00:55:30,000 --> 00:55:38,000 e liña é a liña que recuperou o arquivo. 726 00:55:38,000 --> 00:55:49,000 Por exemplo, se quixésemos imprimir echo 0 liña do ficheiro coma este, 727 00:55:49,000 --> 00:55:57,000 podemos facelo só como este, "Liña $ i do ficheiro é de R $ liña", 728 00:55:57,000 --> 00:56:02,000 e aquí é algo que tampouco vin aínda quere 729 00:56:02,000 --> 00:56:13,000 onde só totalmente ignorados durante este% s% d todo negocio 730 00:56:13,000 --> 00:56:16,000 que tivemos que xestione a C, e, en vez eu fun directo para o 731 00:56:16,000 --> 00:56:19,000 escribir as variables en liña na miña cadea. 732 00:56:19,000 --> 00:56:23,000 >> Iso é chamado de interpolación de variables, string interpolación 733 00:56:23,000 --> 00:56:26,000 onde está enchendo as variables na dereita, eo intérprete PHP 734 00:56:26,000 --> 00:56:31,000 é intelixente o suficiente cando se está lendo a través dunha cadea que comeza coa dobre cita 735 00:56:31,000 --> 00:56:34,000 non comiñas simples, cunha cadea entre apóstrofos non pode facer iso- 736 00:56:34,000 --> 00:56:38,000 pero co dobre de cadeas entre comiñas como se le por el está a ollar para as variables. 737 00:56:38,000 --> 00:56:42,000 E caza-los, e se ve variables que levará o valor da variable 738 00:56:42,000 --> 00:56:47,000 e enche-lo para a cadea se pode convertelo en unha representación de cadea, 739 00:56:47,000 --> 00:56:51,000 o que é moi bacana. 740 00:56:51,000 --> 00:56:56,000 De momento, imos comentar o resto de todo, 741 00:56:56,000 --> 00:57:00,000 gardar este, eo que podemos facer agora é que podemos abrir un ficheiro 742 00:57:00,000 --> 00:57:06,000 que podemos chamar de some_file.txt-imos crear un novo arquivo 743 00:57:06,000 --> 00:57:15,000 e podemos poñer en unha morea de cousas sen sentido aquí só para probar todo para fóra, 744 00:57:15,000 --> 00:57:25,000 garda-lo, chama-lo some_file.txt, como eu estou facendo aquí enriba no cumio, 745 00:57:25,000 --> 00:57:33,000 e agora, se eu reducir só para asegurarse que todo está no mesmo directorio 746 00:57:33,000 --> 00:57:36,000 parece que eu teño unique.php e some_file.txt no mesmo directorio. 747 00:57:36,000 --> 00:57:42,000 Se eu executar unique.php php 748 00:57:42,000 --> 00:57:51,000 ver como imprime cada liña no meu arquivo e que a liña é? 749 00:57:51,000 --> 00:57:56,000 >> Isto é moi poderoso, non? 750 00:57:56,000 --> 00:58:03,000 Mira, que levou 3 liñas de código para abrir un arquivo. 751 00:58:03,000 --> 00:58:08,000 Ben, catro liñas de código. Eu non podo contar, hoxe, claramente. 752 00:58:08,000 --> 00:58:13,000 Pero realmente só dúas liñas interesantes de código, porque os outros 2 foron as claves, 753 00:58:13,000 --> 00:58:17,000 pero neste código moi fomos capaces de abrir un arquivo, percorrer-lo, 754 00:58:17,000 --> 00:58:20,000 puxe o número da liña e da propia liña 755 00:58:20,000 --> 00:58:24,000 e imprimir lo. 756 00:58:24,000 --> 00:58:26,000 Cousas legais. Charlotte. 757 00:58:26,000 --> 00:58:28,000 [Charlotte] Eu teño unha pregunta sobre a sintaxe. 758 00:58:28,000 --> 00:58:33,000 Entón foreach trata sobre cada liña do ficheiro que abrir, 759 00:58:33,000 --> 00:58:37,000 e entón, cando quere facer as cousas con cada liña que acaba de facelo como 760 00:58:37,000 --> 00:58:39,000 e, entón, asociar o valor. 761 00:58:39,000 --> 00:58:41,000 [Nate H.] O que podes facer aquí, a cuestión foi 762 00:58:41,000 --> 00:58:46,000 o foreach ten que ver coa matriz, para sintaxe foreach 763 00:58:46,000 --> 00:58:51,000 é realmente foreach, e observe que non hai espazo 764 00:58:51,000 --> 00:58:53,000 ou calquera cousa entre a ea cada. 765 00:58:53,000 --> 00:58:56,000 Eles teñen que ir cara á dereita a carón do outro, 766 00:58:56,000 --> 00:59:00,000 e iso leva a unha matriz, 767 00:59:00,000 --> 00:59:05,000 e entón ten esta outra palabra clave chamada como que ten que estar alí, 768 00:59:05,000 --> 00:59:11,000 e logo o que pode pór un nome de variable, 769 00:59:11,000 --> 00:59:14,000 caso en que vai estar retirando os valores da matriz, 770 00:59:14,000 --> 00:59:20,000 non os índices, ou se fai iso, como temos escrito embaixo 771 00:59:20,000 --> 00:59:24,000 incorporarse as claves e os valores. 772 00:59:24,000 --> 00:59:33,000 Tes elemento foreach da matriz ou par da matriz como introducido ao valor 773 00:59:33,000 --> 00:59:38,000 ou só como valor. 774 00:59:38,000 --> 00:59:40,000 Dependendo do que precisa, se non precisa de chaves, 775 00:59:40,000 --> 00:59:42,000 entón podes ir con o valor. 776 00:59:42,000 --> 00:59:45,000 Se queres as teclas que pode ir con eles tamén. 777 00:59:45,000 --> 00:59:48,000 >> [Charlotte] Eu tamén entender que nunca declarou o I ou liña. 778 00:59:48,000 --> 00:59:51,000 Como ela mesmo sabe o que son? 779 00:59:51,000 --> 00:59:53,000 [Nate H.] O que quere dicir con declarar? 780 00:59:53,000 --> 00:59:57,000 [Charlotte] Nunca dixen a eles que eu ou liña de medio. 781 00:59:57,000 --> 01:00:01,000 [Nate H.] Nunca dixo o ordenador que eu ou liña significa en termos de- 782 01:00:01,000 --> 01:00:05,000 [Charlotte] de que eles están indexadas ou que están- 783 01:00:05,000 --> 01:00:09,000 [Nate H.] Nós nunca contou que este é suposta ser o índice ou a clave eo valor, 784 01:00:09,000 --> 01:00:13,000 e iso é porque ese é o intérprete de PHP. 785 01:00:13,000 --> 01:00:17,000 Isto serve como declaración e di que está ben, a clave será 786 01:00:17,000 --> 01:00:20,000 unha variable chamada i almacenado nunha variable chamada i. 787 01:00:20,000 --> 01:00:24,000 O valor que vai ser almacenado nunha liña variable chamada, 788 01:00:24,000 --> 01:00:28,000 de xeito que este serve como declaración destas variables 789 01:00:28,000 --> 01:00:35,000 e di $ i é unha chave, e US $ liña é un valor. 790 01:00:35,000 --> 01:00:37,000 Si, Ella. 791 01:00:37,000 --> 01:00:41,000 [Ella] Se as chaves non son feitas numéricamente 792 01:00:41,000 --> 01:00:44,000 como é que decidirá cal orde que vai imprimir todo? 793 01:00:44,000 --> 01:00:47,000 É exactamente como a orde en que entrou en? 794 01:00:47,000 --> 01:00:51,000 [Nate H.] Imos darlle un intento. 795 01:00:51,000 --> 01:00:57,000 Imos crear unha variable chamada arr, 796 01:00:57,000 --> 01:01:06,000 e podemos facer un vai para o 7. 797 01:01:06,000 --> 01:01:19,000 Imos dicir que 0 vai a outra matriz con 1, 2 ou mazá. 798 01:01:19,000 --> 01:01:30,000 Digamos 7 vai 1, b vai para 2, 799 01:01:30,000 --> 01:01:39,000 e 3 vai 4. 800 01:01:39,000 --> 01:01:44,000 Este é un tipo de exemplo tolo buscando porque estamos mesturando 801 01:01:44,000 --> 01:01:47,000 cadeas e enteiros en todo o lugar. 802 01:01:47,000 --> 01:01:50,000 Non hai ningunha orde real a esa matriz. 803 01:01:50,000 --> 01:01:55,000 Quero dicir, nós pode pedir todo en orde alfabética por as chaves. 804 01:01:55,000 --> 01:01:57,000 Poderiamos pedir todo en orde alfabética polo valor. 805 01:01:57,000 --> 01:02:00,000 >> Poderiamos tentar e ter en conta que algúns son cordas, algúns son ints, 806 01:02:00,000 --> 01:02:03,000 e nós poderiamos tentar convertela los todos para o mesmo tipo e ver o que acontece, 807 01:02:03,000 --> 01:02:09,000 ou poderiamos considera-los no valor en que xa foron escritas 808 01:02:09,000 --> 01:02:14,000 onde imos poñer esa cara no primeiro, este cara na segunda, esa cara en terceiro, 809 01:02:14,000 --> 01:02:19,000 este cara na cuarta, etcétera. 810 01:02:19,000 --> 01:02:23,000 Imos ver o que acontece cando executamos este código. 811 01:02:23,000 --> 01:02:29,000 Se rolar para abaixo e facer o mesmo tipo de cousas, 812 01:02:29,000 --> 01:02:31,000 e aquí non é imprimir as novas liñas. 813 01:02:31,000 --> 01:02:35,000 Cando se le cousas fóra do ficheiro que foi incluíndo as novas liñas nos valores, 814 01:02:35,000 --> 01:02:38,000 que foi por iso que imprimiu ben, mentres aquí iso non aconteceu, 815 01:02:38,000 --> 01:02:40,000 é por iso que todo é esmagado xuntos. 816 01:02:40,000 --> 01:02:44,000 Imos engadir nesa nova liña só para facer cousas boas. 817 01:02:44,000 --> 01:02:51,000 Imos executar de novo, e entón aquí 818 01:02:51,000 --> 01:02:54,000 ollar para o que aconteceu. 819 01:02:54,000 --> 01:03:00,000 É impreso todo orde en que poñelas na matriz. 820 01:03:00,000 --> 01:03:10,000 Fai preservar a orde nese sentido. 821 01:03:10,000 --> 01:03:15,000 >> Volvendo a este problema de únicos 822 01:03:15,000 --> 01:03:20,000 onde queremos ser capaz de iterar sobre un ficheiro, 823 01:03:20,000 --> 01:03:24,000 e nós imos dar-lle some_file.txt, 824 01:03:24,000 --> 01:03:27,000 e imos iterar sobre el coma este. 825 01:03:27,000 --> 01:03:31,000 Nós dixemos que queriamos usar unha matriz para estar seguro de que temos todo o 826 01:03:31,000 --> 01:03:36,000 liñas exclusivas de alí, e nós poderiamos facelo moi facilmente 827 01:03:36,000 --> 01:03:49,000 por só almacenar nunha matriz que, por suposto, declarar fóra do ámbito dun ciclo, 828 01:03:49,000 --> 01:03:55,000 e dixo que, se usamos as liñas no ficheiro como as claves na nosa matriz 829 01:03:55,000 --> 01:03:59,000 se entramos nunha liña duplicada estariamos substituíndo o valor anterior. 830 01:03:59,000 --> 01:04:08,000 Non é sempre posible ter dúas chaves que son idénticos na mesma matriz. 831 01:04:08,000 --> 01:04:13,000 Podemos facelo. 832 01:04:13,000 --> 01:04:17,000 Nós imos nos librar desa declaración eco aquí. 833 01:04:17,000 --> 01:04:24,000 Aquí estamos almacenando a liña no ficheiro na nosa matriz 834 01:04:24,000 --> 01:04:28,000 utilizándose como a clave. 835 01:04:28,000 --> 01:04:32,000 Nada para el, e verifícase que non precisa aínda de esta chave. 836 01:04:32,000 --> 01:04:38,000 Nós non precisamos que variable. 837 01:04:38,000 --> 01:04:43,000 Neste punto, se fose facer outro lazo foreach 838 01:04:43,000 --> 01:04:48,000 e nós para loop sobre cada arr 839 01:04:48,000 --> 01:04:56,000 e liña agora eco-oops, desculpe. 840 01:04:56,000 --> 01:05:00,000 Non podemos utilizar a coma. Temos que usar isto como contrasinal. 841 01:05:00,000 --> 01:05:05,000 Agora, se nós echo liña debemos obter todas as palabras orixinais na arquivo. 842 01:05:05,000 --> 01:05:10,000 Ou tamén ata some_file.txt, 843 01:05:10,000 --> 01:05:19,000 e digamos que facemos mazá, bananas, mazá, mazá, plátano, 844 01:05:19,000 --> 01:05:22,000 se estamos a imprimir todas as palabras únicas neste arquivo que só debe comezar 845 01:05:22,000 --> 01:05:30,000 mazá e plátano para imprimir. 846 01:05:30,000 --> 01:05:36,000 Se gardar este, agora aquí imos zoom in, 847 01:05:36,000 --> 01:05:44,000 php unique.php, e ta-da. 848 01:05:44,000 --> 01:05:51,000 Nós éxito uniqued o arquivo. 849 01:05:51,000 --> 01:05:55,000 >> A parte final deste problema está lle pedindo para clasificar esta matriz antes de imprimiu 850 01:05:55,000 --> 01:05:58,000 porque neste exemplo sinxelo que acabamos de facer 851 01:05:58,000 --> 01:06:04,000 tivemos sorte no sentido de que o arquivo 852 01:06:04,000 --> 01:06:06,000 fixemos este exemplo ficticio con mazás e plátanos. 853 01:06:06,000 --> 01:06:08,000 El xa estaba clasificada. 854 01:06:08,000 --> 01:06:19,000 Pero usando a función de clasificación simple que pode clasificar unha matriz, que é moi bacana. 855 01:06:19,000 --> 01:06:24,000 A última cousa que eu quería falar con vostedes sobre realmente rápido 856 01:06:24,000 --> 01:06:31,000 é que este tipo de PHP é todo moi ben, e é super accesible 857 01:06:31,000 --> 01:06:43,000 saber como facer, se precisa de facer pequenas, cousas rápidas de programación. 858 01:06:43,000 --> 01:06:48,000 Por exemplo, se eu teño escribir un programa que, digamos, 859 01:06:48,000 --> 01:06:53,000 pon todo en seccións eu non estou indo a ir e escribir en C. 860 01:06:53,000 --> 01:06:55,000 Vai ser longa. 861 01:06:55,000 --> 01:06:57,000 Vai ser unha especie de dor, especialmente se existen ficheiros implicados, 862 01:06:57,000 --> 01:07:00,000 así como vostedes viron. 863 01:07:00,000 --> 01:07:05,000 É tan bo que con só este código moi ben aquí 864 01:07:05,000 --> 01:07:08,000 fomos capaces de rasgar a través dun arquivo, elimina todos os valores exclusivos 865 01:07:08,000 --> 01:07:11,000 e imprimir-los de volta. 866 01:07:11,000 --> 01:07:16,000 >> Con todo, para as súas atribucións, para os seus proxectos, 867 01:07:16,000 --> 01:07:20,000 se está construíndo sitios con PHP é que o poder 868 01:07:20,000 --> 01:07:25,000 estamos executando nosos arquivos PHP través deste intérprete, 869 01:07:25,000 --> 01:07:29,000 eo intérprete está procesando todo dentro das etiquetas PHP, 870 01:07:29,000 --> 01:07:34,000 deixando todo máis intocada e cuspindo os resultados. 871 01:07:34,000 --> 01:07:40,000 Podemos facelo para construír HTML programaticamente. 872 01:07:40,000 --> 01:07:46,000 Agora, se volver para a especificación, o último problema na especificación 873 01:07:46,000 --> 01:07:56,000 fala sobre esa idea de concentracións 874 01:07:56,000 --> 01:08:01,000 e creación dun menú desplegable, 875 01:08:01,000 --> 01:08:06,000 que pode ou non quere facer, dependendo do que o seu proxecto final está facendo, 876 01:08:06,000 --> 01:08:13,000 que permite ó usuario seleccionar a partir dunha lista de todos os posibles concentracións 877 01:08:13,000 --> 01:08:15,000 unha a súa concentración. 878 01:08:15,000 --> 01:08:21,000 Agora, este é un tipo de dor que escribir iso 879 01:08:21,000 --> 01:08:25,000 e ten que facer todo isto manualmente, especialmente cando está tendo para asegurarse 880 01:08:25,000 --> 01:08:28,000 que ten todos os corchetes no lugar seguro e as comiñas no lugar seguro, 881 01:08:28,000 --> 01:08:34,000 así co PHP, pode facelo programaticamente, e pode facelo moi rapidamente. 882 01:08:34,000 --> 01:08:36,000 >> Imos ver como facelo. 883 01:08:36,000 --> 01:08:42,000 Nós imos abrir un novo arquivo. 884 01:08:42,000 --> 01:08:46,000 Imos poñer nas nosas tags do PHP. 885 01:08:46,000 --> 01:08:53,000 Imos chamalo de concentrations.php, 886 01:08:53,000 --> 01:08:58,000 e agora, cando está facendo iso, unha especie de cousa boa para pensar 887 01:08:58,000 --> 01:09:02,000 cando está intentando mesturar e combinar o seu PHP e HTML 888 01:09:02,000 --> 01:09:08,000 é descubrir, ok, o que é a parte que quero xerar programaticamente? 889 01:09:08,000 --> 01:09:11,000 Cal é a parte que eu poida xerar programaticamente? 890 01:09:11,000 --> 01:09:17,000 É certo que pode facer todo o seu HTML 891 01:09:17,000 --> 01:09:19,000 dentro de bloques de PHP. 892 01:09:19,000 --> 01:09:24,000 Pode repetir todo o HTML como cadeas. 893 01:09:24,000 --> 01:09:30,000 Por exemplo, se quero comezar a facer as marcas seleccionadas dentro PHP 894 01:09:30,000 --> 01:09:46,000 Podo dicir eco, din seleccionar concentración = nome, 895 01:09:46,000 --> 01:09:49,000 e despois alí embaixo Eu podería ter outro tag eco 896 01:09:49,000 --> 01:09:57,000 ou outro eco chamado preto a selección. 897 01:09:57,000 --> 01:10:00,000 Esta é unha forma de facelo porque o que este é, literalmente, vai facer 898 01:10:00,000 --> 01:10:09,000 e imprimir esa cadea cando é executado a través do intérprete PHP, 899 01:10:09,000 --> 01:10:12,000 polo tanto, o resultado será HTML. 900 01:10:12,000 --> 01:10:18,000 Se eu gardar este ficheiro como é agora 901 01:10:18,000 --> 01:10:24,000 e eu corro concentrations.php php 902 01:10:24,000 --> 01:10:26,000 mira o que eu teño. 903 01:10:26,000 --> 01:10:30,000 Eu teño esa etiqueta pechar abrir selección. 904 01:10:30,000 --> 01:10:36,000 >> Se eu fose facer iso e eu fose para salvar este resultado para un arquivo, 905 01:10:36,000 --> 01:10:45,000 dicir, concentrations.html espera, parece que o l pasou para outro lado 906 01:10:45,000 --> 01:11:02,000 agora eu abrir aquí concentrations.html vedes que eu teño un arquivo HTML válido. 907 01:11:02,000 --> 01:11:05,000 É o tipo de raro? 908 01:11:05,000 --> 01:11:09,000 Estamos a usar PHP para crear HTML, crear HTML válido. 909 01:11:09,000 --> 01:11:13,000 A maneira que nós estamos facendo é que estamos só ter a impresión PHP 910 01:11:13,000 --> 01:11:16,000 HTML que queremos imprimir. 911 01:11:16,000 --> 01:11:20,000 Este é, literalmente, como sitios PHP están funcionando. 912 01:11:20,000 --> 01:11:24,000 Cando visita un sitio web que envía para algo como 913 01:11:24,000 --> 01:11:30,000 algo, algo, algo punto com barra index.php 914 01:11:30,000 --> 01:11:33,000 o ordenador é literalmente chamar index.php, 915 01:11:33,000 --> 01:11:38,000 executa-lo través do intérprete PHP, e calquera lixo sae 916 01:11:38,000 --> 01:11:49,000 está enviando ao seu navegador e dicindo ei, navegador, interpretar isto como HTML. 917 01:11:49,000 --> 01:11:54,000 O bo é que pode ser unha dor de escribir constantemente eco, eco, eco, eco 918 01:11:54,000 --> 01:11:59,000 e coloque todo en citas como esta, por iso, se quere escribir 919 01:11:59,000 --> 01:12:04,000 HTML que vai ser estático que se pode facelo así, 920 01:12:04,000 --> 01:12:16,000 poñelas fóra, pecha-lo, 921 01:12:16,000 --> 01:12:21,000 e aquí só poñer dentro das etiquetas PHP que coñece 922 01:12:21,000 --> 01:12:26,000 quere xerar programaticamente e, neste caso, é opción de etiquetas 923 01:12:26,000 --> 01:12:31,000 que son unha dor de xerar. 924 01:12:31,000 --> 01:12:37,000 >> Por exemplo, poderiamos xerar unha opción tags mil 925 01:12:37,000 --> 01:12:48,000 facendo algo parecido con iso, $ i <1000, i + + 926 01:12:48,000 --> 01:13:00,000 e dicindo o valor da opción de eco-= $ berros, eu non podo facer iso. 927 01:13:00,000 --> 01:13:03,000 Ben, imos tentar e ver o que acontece. 928 01:13:03,000 --> 01:13:22,000 $ I e entón dicir $ i 01:13:27,000 En vez de ter que escribir esa marca opción mil veces diferentes 930 01:13:27,000 --> 01:13:33,000 Está a usar o código PHP para xerar automaticamente por medio de programación. 931 01:13:33,000 --> 01:13:38,000 Tipo de bacana. Si 932 01:13:38,000 --> 01:13:41,000 Lembro de ser mencionado en calquera charla ou o paso a paso, 933 01:13:41,000 --> 01:13:43,000 Pero cal é a diferenza entre as comiñas, 934 01:13:43,000 --> 01:13:45,000 os normais e esas cousas simples? 935 01:13:45,000 --> 01:13:49,000 Iso é algo que eu teña feito incorrectamente aquí que eu estaba indo para amosar-lle. 936 01:13:49,000 --> 01:13:52,000 As comiñas simples non permiten calquera caracteres especiais, 937 01:13:52,000 --> 01:13:57,000 polo tanto, todo dentro dunha cadea entre comiñas simples é interpretado literalmente. 938 01:13:57,000 --> 01:14:02,000 Se eu tivese un \ n dentro comiñas simples e eu gardar este, por exemplo, 939 01:14:02,000 --> 01:14:07,000 e agora eu vou baixar aquí e executa-o- 940 01:14:07,000 --> 01:14:12,000 Oops, onde vou? 941 01:14:12,000 --> 01:14:19,000 Ah, é porque eu esquezo o $. 942 01:14:19,000 --> 01:14:25,000 >> Agora, se eu abrir, a verdade, aquí, que vai se librar do escriba-lo nun arquivo. 943 01:14:25,000 --> 01:14:27,000 Nós imos só le-lo. 944 01:14:27,000 --> 01:14:34,000 Aquí vese que eu teño esa literal \ n na secuencia, como non unha liña real novo, 945 01:14:34,000 --> 01:14:38,000 e así mesmo, en vez de realmente interpolando o valor desta variable 946 01:14:38,000 --> 01:14:42,000 me deu a $ i si, que é un tipo de dor. 947 01:14:42,000 --> 01:14:46,000 O xeito de evitar isto é utilizar as comiñas dobres, 948 01:14:46,000 --> 01:14:52,000 e entón, cando usa comiñas vai realmente 949 01:14:52,000 --> 01:14:56,000 adecuadamente interpolar os valores de todas estas variables aquí 950 01:14:56,000 --> 01:14:59,000 e tamén recoñece esta \ n ser a nova liña que é 951 01:14:59,000 --> 01:15:02,000 e non \ n. 952 01:15:02,000 --> 01:15:07,000 Usando as solteiras é bo cando ten 953 01:15:07,000 --> 01:15:10,000 caracteres que poden ser interpretados como caracteres especiais, porque entón non tes que 954 01:15:10,000 --> 01:15:15,000 escapar deles constantemente. 955 01:15:15,000 --> 01:15:18,000 As cousas poden ficar confuso, e moitas veces a forma que eu fago, 956 01:15:18,000 --> 01:15:24,000 só para facer cousas fáciles, é que se eu vou ter nada 957 01:15:24,000 --> 01:15:31,000 HTML como no meu código eu vou incluír edición dentro comiñas 958 01:15:31,000 --> 01:15:36,000 e entón usar este operador de concatenação 959 01:15:36,000 --> 01:15:43,000 para concatenar as variables dentro 960 01:15:43,000 --> 01:15:47,000 Esta é outra forma de facelo 961 01:15:47,000 --> 01:15:52,000 onde temos o punto que vai conectar esta é unha cadea 962 01:15:52,000 --> 01:15:56,000 con iso con este, con iso, 963 01:15:56,000 --> 01:15:59,000 e agora eu non teño que escapar destas comiñas. 964 01:15:59,000 --> 01:16:02,000 Eu non teño que usar esa cara escapar. 965 01:16:02,000 --> 01:16:08,000 Eles literalmente ser impresas como comiñas dobres e entón esa cara aquí. 966 01:16:08,000 --> 01:16:11,000 Esta é outra forma de se mesturar todo xunto. 967 01:16:11,000 --> 01:16:14,000 >> [Estudante] Tamén, cando eco gettype non había comiñas en todo. 968 01:16:14,000 --> 01:16:22,000 Certo, entón é unha especie de eco especial no sentido de que non precisa de parénteses. 969 01:16:22,000 --> 01:16:29,000 Non é preciso ter necesariamente as comiñas en torno de variables, 970 01:16:29,000 --> 01:16:37,000 como é válido dicir echo $ i, e que vai interpretar isto como unha cadea. 971 01:16:37,000 --> 01:16:44,000 El vai facer o reparto, para que poidamos facelo, e iso é válido tamén, pero nós non necesitamos del. 972 01:16:44,000 --> 01:16:48,000 É opcional. 973 01:16:48,000 --> 01:16:53,000 No conxunto desta semana problema ollar a unha morea de este tipo de cousas 974 01:16:53,000 --> 01:16:58,000 onde está mesturando e combinando HTML con PHP 975 01:16:58,000 --> 01:17:08,000 como esta, e agora, se rolar cara atrás e corremos este 976 01:17:08,000 --> 01:17:13,000 podemos ver que temos unha morea de valores de opción 977 01:17:13,000 --> 01:17:15,000 que acaba de ser impresa. 978 01:17:15,000 --> 01:17:20,000 Temos todo o HTML xerado este que quedou moi rápido para nós. 979 01:17:20,000 --> 01:17:22,000 Vou deixar como un exercicio. 980 01:17:22,000 --> 01:17:24,000 É moi semellante á lectura de arquivo que fixemos anteriormente. 981 01:17:24,000 --> 01:17:31,000 >> Hai un ficheiro concentrations.txt que pode puxar para abaixo a partir do CDN, 982 01:17:31,000 --> 01:17:34,000 e pode abri-lo usando o mesmo truco foreach que fixemos anteriormente, 983 01:17:34,000 --> 01:17:39,000 foreach e só tes que ecoar unha opción e conectar 984 01:17:39,000 --> 01:17:44,000 os valores adecuados, as teclas apropiadas e índices, 985 01:17:44,000 --> 01:17:49,000 e entón comeza un drop down que literalmente crea 986 01:17:49,000 --> 01:17:54,000 programaticamente para todas as diferentes concentracións en Harvard. 987 01:17:54,000 --> 01:17:57,000 Unha cousa útil para ter. 988 01:17:57,000 --> 01:18:02,000 Hai unha morea de cousas de configuración para esa concesión. 989 01:18:02,000 --> 01:18:07,000 Se non ten feito isto xa tomar a próxima media hora, hora, 990 01:18:07,000 --> 01:18:10,000 algún tempo esta noite en definitiva, con certeza, 991 01:18:10,000 --> 01:18:14,000 camiñar a través da especificación conxunto de problemas, 992 01:18:14,000 --> 01:18:20,000 ver o que está a suceder coa configuración dos vhosts, o servidor local, todas esas cousas. 993 01:18:20,000 --> 01:18:24,000 Unha cousa a resaltar neste momento é que 994 01:18:24,000 --> 01:18:30,000 na maioría dos conxuntos de problemas que temos que entrar na súa carpeta Dropbox 995 01:18:30,000 --> 01:18:34,000 e despois facer a descarga do ficheiro zip problema set e descompactá-lo. 996 01:18:34,000 --> 01:18:36,000 Por este conxunto de problemas que non quere. 997 01:18:36,000 --> 01:18:40,000 Queres ir a este directorio vhosts. 998 01:18:40,000 --> 01:18:45,000 Queres ir a vhosts e ir ao directorio do servidor local, dentro dela, 999 01:18:45,000 --> 01:18:50,000 e é aí onde vai querer tirar abaixo o arquivo zip, 1000 01:18:50,000 --> 01:18:55,000 descompactá-lo, e prepare-se para ir. 1001 01:18:55,000 --> 01:18:57,000 Terá que seguir os pasos de preto. 1002 01:18:57,000 --> 01:19:02,000 >> Se ten algunha dúbida, envíe un correo-e, post-lo no Discutir, veña para o horario de oficina. 1003 01:19:02,000 --> 01:19:08,000 Grazas rapaces. Na próxima semana imos ter unha sesión de revisión para o exame. 1004 01:19:08,000 --> 01:19:12,000 Aproveitar o seu conxunto de problemas pasado. Espero que todo vai moi ben. 1005 01:19:12,000 --> 01:19:14,000 [CS50.TV]