1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Artículo 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 es CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:11,000 >> Bienvenidos a nuestra segunda a última sección. 5 00:00:11,000 --> 00:00:13,000 En esta semana vamos a hablar de PHP, y luego la próxima semana 6 00:00:13,000 --> 00:00:17,000 vamos a hacer un pequeño repaso para la prueba 1. 7 00:00:17,000 --> 00:00:20,000 Vamos a partir de la página 3 del problema establece pack, 8 00:00:20,000 --> 00:00:28,000 y vamos a trabajar a través de la sección de preguntas con bastante rapidez. 9 00:00:28,000 --> 00:00:34,000 En la página 3, empezamos a hablar de la diferencia entre C y PHP 10 00:00:34,000 --> 00:00:38,000 en el sentido de que PHP es un lenguaje de tipos dinámicos, 11 00:00:38,000 --> 00:00:42,000 mientras que C es estático de tipos, 12 00:00:42,000 --> 00:00:46,000 y nadie ha hecho muy rápido ninguna codificación en algo como PHP 13 00:00:46,000 --> 00:00:51,000 o Python o Ruby antes, JavaScript? 14 00:00:51,000 --> 00:00:53,000 Totalmente nuevo? Bien. 15 00:00:53,000 --> 00:00:56,000 >> Todos estos lenguajes que acabo de mencionar 16 00:00:56,000 --> 00:01:01,000 son muy diferentes de lenguajes como C y C + + y Java 17 00:01:01,000 --> 00:01:04,000 en el sentido de que cuando se declara una variable que no tiene que declarar 18 00:01:04,000 --> 00:01:09,000 ¿qué tipo de variable es, por lo que en C que estaban atrapados tener que decir siempre 19 00:01:09,000 --> 00:01:13,000 esto va a ser una variable int, o esto va a ser una variable char *, 20 00:01:13,000 --> 00:01:16,000 mientras que con PHP, con Python, con Ruby, 21 00:01:16,000 --> 00:01:20,000 con una gran cantidad de idiomas más modernas que no tienen que hacer eso en absoluto. 22 00:01:20,000 --> 00:01:24,000 Usted acaba de declarar la variable, y en el caso de PHP 23 00:01:24,000 --> 00:01:28,000 usted declara que es una variable con el prefijo con un signo $, 24 00:01:28,000 --> 00:01:35,000 y luego el tipo de la variable se determina por cualquier valor que está sosteniendo, 25 00:01:35,000 --> 00:01:38,000 que es una especie de fresco. 26 00:01:38,000 --> 00:01:44,000 Para jugar con esto un poco, tenemos ejemplo de código PHP aquí 27 00:01:44,000 --> 00:01:47,000 entre las etiquetas de inicio y fin. 28 00:01:47,000 --> 00:01:53,000 Estamos utilizando este tipo de como HTML en el sentido de que 29 00:01:53,000 --> 00:01:56,000 tenemos estas escuadras aquí para abrir y cerrar. 30 00:01:56,000 --> 00:01:58,000 Verás esto con HTML. 31 00:01:58,000 --> 00:02:03,000 Verá la misma clase de sintaxis de XML también. 32 00:02:03,000 --> 00:02:06,000 >> Esto indica el comienzo de un bloque de PHP. 33 00:02:06,000 --> 00:02:09,000 Esta php? Es específico de PHP. 34 00:02:09,000 --> 00:02:16,000 Cerramos todo con un> también. 35 00:02:16,000 --> 00:02:22,000 Vamos a abrir un archivo en nuestro dispositivo mediante lo que usted desea. 36 00:02:22,000 --> 00:02:25,000 En este paquete se dice llamar dynamic.php. 37 00:02:25,000 --> 00:02:29,000 En verdad, se le puede llamar lo que quieras, pero el nombre del archivo subido 38 00:02:29,000 --> 00:02:34,000 y será importante más adelante, por lo que sólo recuerda como se llame. 39 00:02:34,000 --> 00:02:36,000 Voy a cambiar al aparato, 40 00:02:36,000 --> 00:02:43,000 y yo voy a hacer un directorio para 41 00:02:43,000 --> 00:02:48,000 sección 9 Yo creo que estamos en este momento. 42 00:02:48,000 --> 00:02:51,000 Y vamos a entrar en la sección 9, 43 00:02:51,000 --> 00:02:54,000 y yo voy a usar gedit. 44 00:02:54,000 --> 00:02:59,000 Vamos a ver, gedit, y yo voy a llamar dynamic.php mío. 45 00:02:59,000 --> 00:03:03,000 Boom. 46 00:03:03,000 --> 00:03:06,000 Dentro dynamic.php, ya que este es un archivo PHP 47 00:03:06,000 --> 00:03:09,000 y quiero ejecutar este a través del intérprete PHP 48 00:03:09,000 --> 00:03:12,000 Tengo que empezar todo de aquellos con etiquetas abiertas, 49 00:03:12,000 --> 00:03:17,000 así que voy a empezar a aquellos de inmediato, 50 00:03:17,000 --> 00:03:23,000 darme un poco de espacio entre las etiquetas, 51 00:03:23,000 --> 00:03:26,000 y entonces el objetivo de este ejercicio era jugar con 52 00:03:26,000 --> 00:03:34,000 esta función se llama gettype, por lo gettype, esta función aquí. 53 00:03:34,000 --> 00:03:38,000 >> Observe que no hay ningún guión o un espacio o un guión ni nada de eso 54 00:03:38,000 --> 00:03:42,000 que separa las dos palabras, obtener y escribir, sólo una palabra del todo. 55 00:03:42,000 --> 00:03:46,000 Pero lo que esto va a hacer es si paso en una variable para gettype, 56 00:03:46,000 --> 00:03:51,000 digamos $ o $ var x, 57 00:03:51,000 --> 00:03:55,000 esto me va a decir en una especie de formato de depuración 58 00:03:55,000 --> 00:03:59,000 lo que el nombre de ese tipo es. 59 00:03:59,000 --> 00:04:03,000 Vamos a experimentar aquí. 60 00:04:03,000 --> 00:04:07,000 En particular, si uno mira hacia atrás en la especificación del conjunto de procesadores 61 00:04:07,000 --> 00:04:11,000 tenemos unas pocas líneas de código diferentes aquí. 62 00:04:11,000 --> 00:04:16,000 En la primera línea de código que inicializa esta variable, $ var, 63 00:04:16,000 --> 00:04:21,000 que es igual a 7, y luego tenemos esta línea printf 64 00:04:21,000 --> 00:04:25,000 que dice: hey, var printf está en blanco. 65 00:04:25,000 --> 00:04:29,000 Printf es una de las muchas formas en que puedes imprimir cosas en PHP. 66 00:04:29,000 --> 00:04:33,000 A menudo, usted verá la función de eco en lugar de printf, 67 00:04:33,000 --> 00:04:40,000 printf pero todos estamos familiarizados con haber estado programando en C por un tiempo. 68 00:04:40,000 --> 00:04:42,000 Lo que en realidad se puede hacer es que vamos a ver si funciona copiar y pegar. 69 00:04:42,000 --> 00:04:46,000 Voy a darle una oportunidad. 70 00:04:46,000 --> 00:04:52,000 Vamos a ir de nuevo hacia el aparato. 71 00:04:52,000 --> 00:05:00,000 Bueno, y ahí vamos. 72 00:05:00,000 --> 00:05:05,000 Y el espacio es un poco raro, pero aquí vamos. 73 00:05:05,000 --> 00:05:08,000 Tenemos el código aquí. 74 00:05:08,000 --> 00:05:11,000 >> [Estudiante] ¿Es estilo no es bueno a la pestaña él? 75 00:05:11,000 --> 00:05:13,000 ¿Cómo dice? 76 00:05:13,000 --> 00:05:15,000 [Estudiante] ¿Es convencional a la pestaña de ello? 77 00:05:15,000 --> 00:05:21,000 Bien, así que Sam le pregunta si es convención a la ficha o no. 78 00:05:21,000 --> 00:05:23,000 Por lo general sí. 79 00:05:23,000 --> 00:05:26,000 En este caso he optado por no hacerlo. 80 00:05:26,000 --> 00:05:33,000 Honestamente, usted verá cosas diferentes entre los distintos programadores. 81 00:05:33,000 --> 00:05:40,000 PHP se suele utilizar con frecuencia en combinación con HTML 82 00:05:40,000 --> 00:05:45,000 y otros idiomas, por lo que a veces la impresión se verá un poco raro 83 00:05:45,000 --> 00:05:50,000 si guión en PHP inicio y fin. 84 00:05:50,000 --> 00:05:53,000 Realmente depende. 85 00:05:53,000 --> 00:05:56,000 En este caso, la copia y pegar no pega las pestañas para mí, 86 00:05:56,000 --> 00:06:02,000 pero sin duda es, como usted ha dicho, hacerlo más claro. 87 00:06:02,000 --> 00:06:06,000 Muy bien, si guarda este código en dynamic.php 88 00:06:06,000 --> 00:06:10,000 entonces lo que se puede hacer es bajar a la ventana de terminal donde estoy por aquí 89 00:06:10,000 --> 00:06:17,000 en gedit, y para hacer el equivalente de compilación 90 00:06:17,000 --> 00:06:20,000 usando make y luego ejecutar el código en C 91 00:06:20,000 --> 00:06:25,000 todo lo que tiene que ver con el archivo PHP es poner en marcha el intérprete PHP, 92 00:06:25,000 --> 00:06:30,000 que es un pequeño programa llamado PHP, 93 00:06:30,000 --> 00:06:35,000 y el argumento que da al intérprete es el archivo que desea interpretar. 94 00:06:35,000 --> 00:06:40,000 En este caso, dynamic.php. 95 00:06:40,000 --> 00:06:43,000 ¡Vaya, ¿dónde lo pongo? 96 00:06:43,000 --> 00:06:52,000 Oh, me lo puse en la sección 9, y aquí estoy. Por eso. 97 00:06:52,000 --> 00:06:57,000 >> Ahora si me quedo otra vez 98 00:06:57,000 --> 00:07:02,000 vemos que en mi primera llamada función gettype 99 00:07:02,000 --> 00:07:04,000 var es un número entero. 100 00:07:04,000 --> 00:07:12,000 En la siguiente var es una cadena, y luego en el tercero var es un boolean. 101 00:07:12,000 --> 00:07:15,000 Lo interesante de esto es que si nos desplazamos de nuevo vemos que 102 00:07:15,000 --> 00:07:18,000 estos son los tipos similares a los que teníamos en C. 103 00:07:18,000 --> 00:07:22,000 Tuvimos ints en C. 104 00:07:22,000 --> 00:07:26,000 Hemos tenido suerte de cadenas en C, 105 00:07:26,000 --> 00:07:31,000 así cadenas no eran un tipo totalmente de fiar en el sentido de que 106 00:07:31,000 --> 00:07:37,000 nuestra cadena CS50 era realmente qué? 107 00:07:37,000 --> 00:07:39,000 ¿Cómo dice? Missy? 108 00:07:39,000 --> 00:07:41,000 [Missy] Char *. 109 00:07:41,000 --> 00:07:43,000 Sí, fue este char * que utilizamos. 110 00:07:43,000 --> 00:07:47,000 En el comienzo del semestre de que estábamos usando el tipo de cadena, 111 00:07:47,000 --> 00:07:52,000 pero en realidad era un char * bajo el capó. 112 00:07:52,000 --> 00:07:58,000 Acabamos de tipo definido, mientras que en PHP estas cadenas son un tipo real. 113 00:07:58,000 --> 00:08:07,000 No hay nada más de esto tipo char *. 114 00:08:07,000 --> 00:08:10,000 >> Vas a ver que podemos hacer muchas más cosas con las cadenas 115 00:08:10,000 --> 00:08:14,000 mucho más fácilmente en PHP que pudimos en C, 116 00:08:14,000 --> 00:08:17,000 y, por último, tenemos este tipo boolean, y la gran diferencia aquí es que 117 00:08:17,000 --> 00:08:21,000 si se desplaza hacia abajo, vemos que el nombre de este tipo 118 00:08:21,000 --> 00:08:28,000 Ahora string entero, booleano y en lugar de, int y bool 119 00:08:28,000 --> 00:08:31,000 y como se recogen diferentes lenguajes de programación, 120 00:08:31,000 --> 00:08:36,000 suponiendo que en algún momento de sus vidas que usted entre en contacto con 121 00:08:36,000 --> 00:08:40,000 los diferentes te darás cuenta de pequeños caprichos como este 122 00:08:40,000 --> 00:08:44,000 donde C llama enteros enteros. 123 00:08:44,000 --> 00:08:46,000 Algunos lo llaman enteros. 124 00:08:46,000 --> 00:08:51,000 Hay otros términos que usted encuentre. 125 00:08:51,000 --> 00:08:55,000 Int grande que hemos visto hoy en SQL. 126 00:08:55,000 --> 00:08:59,000 También hay número y luego bool, boolean, 127 00:08:59,000 --> 00:09:03,000 todo tipo de diferencias allí. 128 00:09:03,000 --> 00:09:07,000 >> Esto no es muy interesante, pero ahora me voy a dar un poco de tiempo- 129 00:09:07,000 --> 00:09:13,000 si se amplía fuera a trabajar a través de este ejercicio en la parte inferior de la página 3 130 00:09:13,000 --> 00:09:20,000 donde se le pregunta qué tipos corresponden a estos valores aquí en la parte inferior. 131 00:09:20,000 --> 00:09:24,000 Contamos con 3,50. 132 00:09:24,000 --> 00:09:28,000 Tenemos esta cosa aquí, que es interesante. 133 00:09:28,000 --> 00:09:32,000 No hemos visto eso antes, aunque si usted ha estado siguiendo a lo largo de conferencia 134 00:09:32,000 --> 00:09:35,000 usted probablemente ya sabe lo que es eso. 135 00:09:35,000 --> 00:09:40,000 Luego tenemos esto, que esto es una especie de funky. 136 00:09:40,000 --> 00:09:42,000 Usted reconoce esto. 137 00:09:42,000 --> 00:09:46,000 ¿Qué es esto en C? 138 00:09:46,000 --> 00:09:50,000 Sam? ¿Qué le ofrecemos en este C? 139 00:09:50,000 --> 00:09:54,000 Abriría un archivo llamado dynamic.php y hacerlo legible. 140 00:09:54,000 --> 00:09:58,000 Sí, y ¿cuál sería el tipo de variable que queremos asignar a este? Estrella del archivo. >> 141 00:09:58,000 --> 00:10:02,000 Exactamente, queremos asignar a un archivo de estrella. 142 00:10:02,000 --> 00:10:08,000 Esto es legítimo PHP también. 143 00:10:08,000 --> 00:10:12,000 Ejecute eso. Vea lo que sucede cuando se pasa eso en gettype. 144 00:10:12,000 --> 00:10:19,000 Y luego también echa un vistazo a lo que es nulo, lo que podría ser en PHP. 145 00:10:19,000 --> 00:10:21,000 Te voy a dar un par de minutos. 146 00:10:21,000 --> 00:10:24,000 Usted, literalmente, puede copiar y pegar estos valores en, 147 00:10:24,000 --> 00:10:29,000 y luego vamos a hacer una llamada al azar poco sobre usted 148 00:10:29,000 --> 00:10:34,000 y ver lo que tienes. 149 00:10:34,000 --> 00:10:36,000 >> [Estudiante] Tengo una pregunta. << Yeah. 150 00:10:36,000 --> 00:10:40,000 En una de las conferencias David dijo que hay algo que usted puede poner en la parte superior de su archivo 151 00:10:40,000 --> 00:10:43,000 de modo que usted no tiene que escribir en PHP cada vez. 152 00:10:43,000 --> 00:10:45,000 ¿Qué ha sido eso? 153 00:10:45,000 --> 00:10:50,000 Probablemente estaba hablando de la explosión libra, la explosión hash. 154 00:10:50,000 --> 00:10:57,000 Es una directiva que si marca el archivo como ejecutable 155 00:10:57,000 --> 00:11:01,000 entonces lo que hace es cuando se ejecuta el archivo 156 00:11:01,000 --> 00:11:06,000 que le dirá al programa de shell 157 00:11:06,000 --> 00:11:12,000 para utilizar el intérprete de PHP para interpretar los contenidos del archivo. 158 00:11:12,000 --> 00:11:16,000 La pregunta es ¿cuál fue la línea especial 159 00:11:16,000 --> 00:11:20,000 que podríamos incluir en la parte superior de nuestros archivos PHP para no tener que incluir 160 00:11:20,000 --> 00:11:26,000 esta línea de PHP o PHP este comando cada vez que desee ejecutar el archivo? 161 00:11:26,000 --> 00:11:31,000 Y usted puede hacer esto con un montón de archivos diferentes. 162 00:11:31,000 --> 00:11:37,000 Creo que depende de la ubicación del binario PHP se almacena, 163 00:11:37,000 --> 00:11:43,000 pero a menudo usr / bin / php es un buen lugar para comenzar. 164 00:11:43,000 --> 00:11:45,000 Puede resolver esto exactamente por volver a su aparato 165 00:11:45,000 --> 00:11:50,000 y escribiendo cuál php. 166 00:11:50,000 --> 00:11:55,000 El comando que se da cuenta de cuando estás ejecutando binario 167 00:11:55,000 --> 00:12:01,000 o un comando en el archivo correspondiente. 168 00:12:01,000 --> 00:12:06,000 Esto me dice que el PHP es realmente aliasing este archivo binario 169 00:12:06,000 --> 00:12:13,000 que se almacena en usr / bin, que es donde muchos de los binarios del sistema están instalados. 170 00:12:13,000 --> 00:12:21,000 Por ejemplo, si me desplazo hasta la cima, ahora que he puesto este #! en línea aquí 171 00:12:21,000 --> 00:12:27,000 Me puede desplazarse hacia abajo, y puedo tratar de ejecutar 172 00:12:27,000 --> 00:12:35,000 dynamic.php, pero me sale este error sobre el permiso que se les niega, 173 00:12:35,000 --> 00:12:42,000 y lo que eso significa es que este archivo no está dando permisos de ejecución. 174 00:12:42,000 --> 00:12:46,000 No está marcado como un archivo que alguien puede correr. 175 00:12:46,000 --> 00:12:52,000 >> Al hacer make o Clang y tienes un archivo ejecutable de la misma 176 00:12:52,000 --> 00:12:56,000 el compilador fue lo suficientemente inteligente como para saber que hey, estoy construyendo un ejecutable. 177 00:12:56,000 --> 00:13:00,000 Es posible que desee para su ejecución, por lo que sería configurar automáticamente 178 00:13:00,000 --> 00:13:02,000 los permisos para usted. 179 00:13:02,000 --> 00:13:06,000 Este no es el caso, sin embargo, cuando se crea un archivo normal de cero, 180 00:13:06,000 --> 00:13:13,000 La razón es por lo general no desea tener ningún archivo en su sistema sea ejecutable, 181 00:13:13,000 --> 00:13:15,000 por lo que en realidad tienen que ir y hacerlo manualmente. 182 00:13:15,000 --> 00:13:22,000 La manera más fácil de hacerlo es con el comando chmod, 183 00:13:22,000 --> 00:13:28,000 y chmod + x dice agregar el bit ejecutable 184 00:13:28,000 --> 00:13:31,000 porque no es la parte de lectura, el bit de escritura y el bit ejecutable, 185 00:13:31,000 --> 00:13:35,000 r, w y x, 186 00:13:35,000 --> 00:13:39,000 y diciendo: chmod + x se enciende el bit ejecutable 187 00:13:39,000 --> 00:13:46,000 para entonces el archivo que especifica, que en este caso será dynamic.php. 188 00:13:46,000 --> 00:13:49,000 >> [Estudiante] es que enciende por todo el mundo? 189 00:13:49,000 --> 00:13:52,000 Vamos a ver esto, así que ¿cómo puedo comprobar para ver los permisos? 190 00:13:52,000 --> 00:13:54,000 ¿Sabes cómo me gustaría comprobar los permisos de un archivo? 191 00:13:54,000 --> 00:13:56,000 [Respuesta de los estudiantes inaudible] 192 00:13:56,000 --> 00:13:58,000 ¿Cómo? >> [Estudiante] XSD. 193 00:13:58,000 --> 00:14:03,000 XSD nos da el archivo en hacks. 194 00:14:03,000 --> 00:14:09,000 Listado de todos los archivos,-l, se me muestre todos los archivos en mi directorio 195 00:14:09,000 --> 00:14:13,000 un poco en su listado largo, detallado, y aquí vemos que 196 00:14:13,000 --> 00:14:17,000 este archivo dynamic.php 197 00:14:17,000 --> 00:14:23,000 fue modificada por última vez 5 de noviembre a 4:21 PM. 198 00:14:23,000 --> 00:14:26,000 El propietario de este archivo se jharvard. 199 00:14:26,000 --> 00:14:28,000 Ese es el usuario que ha iniciado la sesión 200 00:14:28,000 --> 00:14:31,000 Ese es el usuario estoy trabajando como, 201 00:14:31,000 --> 00:14:36,000 y si usted está también en el aparato que está también trabajando como jharvard usuario. 202 00:14:36,000 --> 00:14:38,000 Usted está en el grupo de estudiantes, 203 00:14:38,000 --> 00:14:44,000 y estas son las cosas que se ven a menudo. 204 00:14:44,000 --> 00:14:47,000 >> Podemos entrar en mucho detalle aquí, 205 00:14:47,000 --> 00:14:50,000 pero en su mayor parte lo que quieres ver cuando usted está mirando para ver 206 00:14:50,000 --> 00:14:55,000 si o no un archivo es ejecutable es principalmente 207 00:14:55,000 --> 00:14:58,000 el usuario que posee el archivo, el propietario, 208 00:14:58,000 --> 00:15:03,000 por lo que este jharvard, y entonces tenemos 209 00:15:03,000 --> 00:15:07,000 los bits de permisos de aquí a la izquierda, 210 00:15:07,000 --> 00:15:13,000 y la manera de leer esto es que el último bit 211 00:15:13,000 --> 00:15:18,000 típicamente se utiliza para marcar o al menos no en-en este caso 212 00:15:18,000 --> 00:15:21,000 esto último a menudo se ajustará al anuncio que indique 213 00:15:21,000 --> 00:15:24,000 que el archivo es un directorio y no un archivo normal. 214 00:15:24,000 --> 00:15:28,000 Entonces los siguientes 3 bits a la derecha aquí 215 00:15:28,000 --> 00:15:34,000 determinar los permisos que el propietario del archivo tiene, 216 00:15:34,000 --> 00:15:38,000 por lo que en este caso jharvard, como propietario del archivo, puede leer y escribir en este archivo, 217 00:15:38,000 --> 00:15:42,000 pero no hay un guión diciendo que jharvard no puede ejecutar este archivo. 218 00:15:42,000 --> 00:15:46,000 Los próximos 3 bits son para el grupo, por lo que este es el grupo de estudiantes, 219 00:15:46,000 --> 00:15:49,000 así que si hay varios usuarios en mi aparato, 220 00:15:49,000 --> 00:15:52,000 y que tenía múltiples usuarios como parte del grupo de estudiantes, 221 00:15:52,000 --> 00:15:55,000 entonces todos pueden leer el archivo, pero no puede escribir, 222 00:15:55,000 --> 00:15:59,000 y del mismo modo los demás, el mundo 223 00:15:59,000 --> 00:16:01,000 sólo puede leer el archivo también. 224 00:16:01,000 --> 00:16:03,000 Hay una valoración crítica buena y larga sobre esto, 225 00:16:03,000 --> 00:16:05,000 así que usted puede leer en línea. 226 00:16:05,000 --> 00:16:10,000 En la especificación del conjunto de problemas de entrar en esto con más detalle. 227 00:16:10,000 --> 00:16:12,000 >> [Estudiante] ¿El 218 se refiere al mundo? 228 00:16:12,000 --> 00:16:17,000 El 218 es-off de la parte superior de mi cabeza me estoy olvidando, 229 00:16:17,000 --> 00:16:20,000 pero no. 230 00:16:20,000 --> 00:16:29,000 Vamos a ver. Estoy ciega en eso ahora mismo. 231 00:16:29,000 --> 00:16:32,000 Volver a lo que íbamos a hacer con este chmod + x 232 00:16:32,000 --> 00:16:37,000 donde queríamos dar permisos dynamic.php ejecutables, 233 00:16:37,000 --> 00:16:40,000 y la pregunta era si esto daría permisos de ejecución para todo el mundo 234 00:16:40,000 --> 00:16:44,000 o sólo jharvard, y podemos ver esto 235 00:16:44,000 --> 00:16:48,000 de ejecutar los comandos y escribiendo ls-l, 236 00:16:48,000 --> 00:16:51,000 y ahora vemos que está marcada como ejecutable. 237 00:16:51,000 --> 00:16:54,000 Se ve que hubo un cambio de color. 238 00:16:54,000 --> 00:16:57,000 Ahora dynamic.php aparece en verde, 239 00:16:57,000 --> 00:17:01,000 y parece que la respuesta a la pregunta es qué, Charlotte? 240 00:17:01,000 --> 00:17:04,000 [Charlotte] Sólo jharvard. >> Sólo jharvard, sí. 241 00:17:04,000 --> 00:17:08,000 >> Si queremos convertir el bit de ejecución en todo el mundo para 242 00:17:08,000 --> 00:17:10,000 ¿cómo podemos hacer esto? 243 00:17:10,000 --> 00:17:13,000 ¿Alguna idea? >> A + x? 244 00:17:13,000 --> 00:17:15,000 Sí, exactamente. 245 00:17:15,000 --> 00:17:23,000 Charlotte dijo que podemos hacer chmod + x de una de dynamic.php, 246 00:17:23,000 --> 00:17:26,000 y ahora si corremos ls-l vemos que los bits de ejecución 247 00:17:26,000 --> 00:17:30,000 son, en efecto encendido para todos. 248 00:17:30,000 --> 00:17:37,000 Y en realidad se puede hacer lo contrario de esto, lo que se puede apagar para todos 249 00:17:37,000 --> 00:17:41,000 con menos. 250 00:17:41,000 --> 00:17:46,000 Ahora se ha apagado, y ahora podemos volver a encenderlo para jharvard 251 00:17:46,000 --> 00:17:52,000 por lo que en realidad podemos ejecutar ahora, 252 00:17:52,000 --> 00:17:58,000 y ahora que se ve cuando se ejecuta el código de este especial #! línea en la parte superior, 253 00:17:58,000 --> 00:18:04,000 #! línea, dijo a la cáscara, 254 00:18:04,000 --> 00:18:08,000 dijo a nuestro terminal hey, cuando el archivo se ejecuta, 255 00:18:08,000 --> 00:18:14,000 usar / usr / bin / php para interpretar este archivo 256 00:18:14,000 --> 00:18:20,000 y luego imprimir el resultado. 257 00:18:20,000 --> 00:18:22,000 [Pregunta estudiante inaudible] 258 00:18:22,000 --> 00:18:25,000 Claro, déjame pasar de regreso. Al igual que este. 259 00:18:25,000 --> 00:18:36,000 Usted verá todas estas directivas comenzar con este libra y luego el signo de exclamación, 260 00:18:36,000 --> 00:18:39,000 a veces llamado un golpe shebang, hash. 261 00:18:39,000 --> 00:18:48,000 >> [Estudiante] ¿Cómo podemos correr con dynamic.php php antes de que sea ejecutable? 262 00:18:48,000 --> 00:18:55,000 La pregunta era: ¿cómo podemos ejecutar esta usando el binario de PHP 263 00:18:55,000 --> 00:18:58,000 mientras dynamic.php no es ejecutable? 264 00:18:58,000 --> 00:19:01,000 Esto es súper importante porque así es exactamente como 265 00:19:01,000 --> 00:19:06,000 que va a trabajar cuando se escribe conjunto de problemas 7. 266 00:19:06,000 --> 00:19:09,000 La mayoría de los archivos de tiempo de PHP no son directamente ejecutables. 267 00:19:09,000 --> 00:19:14,000 La forma en que funciona es porque es el binario PHP que es ejecutable. 268 00:19:14,000 --> 00:19:16,000 El intérprete es lo que está siendo ejecutado, 269 00:19:16,000 --> 00:19:20,000 y por lo tanto lo que está haciendo es, literalmente, sorbiendo en todo el contenido 270 00:19:20,000 --> 00:19:25,000 de nuestro archivo y dynamic.php línea que va por la línea 271 00:19:25,000 --> 00:19:29,000 y ejecutar esos comandos, así que usando nuestro archivo PHP 272 00:19:29,000 --> 00:19:31,000 como una lista de instrucciones. 273 00:19:31,000 --> 00:19:36,000 No es directamente ejecutora. 274 00:19:36,000 --> 00:19:40,000 Ahí es donde decimos que estos archivos se interpretan en tiempo de ejecución. 275 00:19:40,000 --> 00:19:46,000 Es un lenguaje de tiempo de ejecución en lugar de algo que se determina en tiempo de compilación, 276 00:19:46,000 --> 00:19:49,000 no es un lenguaje compilado como C 277 00:19:49,000 --> 00:19:54,000 >> ¿Hay una manera de conseguir un lenguaje de tiempo de ejecución para actuar como si fuera un lenguaje de tiempo de compilación, 278 00:19:54,000 --> 00:19:58,000 como si usted tiene todo el rodaje realizado en el servidor 279 00:19:58,000 --> 00:20:00,000 en lugar de, ya sabes lo que quiero decir? 280 00:20:00,000 --> 00:20:04,000 Sí, así que la pregunta es 281 00:20:04,000 --> 00:20:11,000 ¿hay alguna manera de conseguir ejecutar idiomas momento de actuar más como los tipos en tiempo de compilación de idiomas? 282 00:20:11,000 --> 00:20:18,000 Y ahí están, quiero decir, que es un área activa de investigación para muchas de estas empresas. 283 00:20:18,000 --> 00:20:22,000 Creo que Facebook ha hecho un gran trabajo con PHP 284 00:20:22,000 --> 00:20:25,000 y la compilación de abajo, por lo que es más rápido, optimizando su 285 00:20:25,000 --> 00:20:29,000 ya que su sitio está construido en PHP. 286 00:20:29,000 --> 00:20:34,000 Si usted ha estado siguiendo Node.js en absoluto, 287 00:20:34,000 --> 00:20:40,000 que es una especie de intérprete de JavaScript 288 00:20:40,000 --> 00:20:44,000 para ser capaz de ejecutar JavaScript fuera del navegador, en las afueras de su navegador web, 289 00:20:44,000 --> 00:20:47,000 porque tradicionalmente JavaScript acaba de funcionar dentro de Firefox o Chrome, 290 00:20:47,000 --> 00:20:52,000 y que se utiliza para hacer animaciones fresco suceder en una página web 291 00:20:52,000 --> 00:20:55,000 y hacer que su página web dinámica. 292 00:20:55,000 --> 00:20:59,000 Eso ha sido construido sobre una gran cantidad de trabajo que ha hecho Google 293 00:20:59,000 --> 00:21:03,000 de que JavaScript y C + + 294 00:21:03,000 --> 00:21:09,000 unen, así que hay un montón de investigación activa para 295 00:21:09,000 --> 00:21:13,000 obtener estos lenguajes para interactuar y optimizarlos, 296 00:21:13,000 --> 00:21:17,000 principalmente porque mucha gente puede codificar en PHP y JavaScript 297 00:21:17,000 --> 00:21:19,000 porque es mucho más fácil. 298 00:21:19,000 --> 00:21:21,000 Es mucho más agradable. Usted no tiene punteros. 299 00:21:21,000 --> 00:21:27,000 Usted no tiene tipos que flotan a su alrededor. 300 00:21:27,000 --> 00:21:31,000 Querían obtener los beneficios de estos idiomas en tiempo de compilación 301 00:21:31,000 --> 00:21:36,000 con toda la comprobación del tipo y la velocidad y el uso de memoria más baja y de que todo 302 00:21:36,000 --> 00:21:42,000 mientras que todavía mantiene la flexibilidad y la facilidad de uso de estos los más nuevos. 303 00:21:42,000 --> 00:21:46,000 >> De vuelta a nuestro plan original de ataque. 304 00:21:46,000 --> 00:21:50,000 Tenemos algunas de estas preguntas aquí en nuestra especificación de problemas. 305 00:21:50,000 --> 00:21:54,000 Vamos a ir a través de ellos muy rápidamente, y vamos a ir por la habitación. 306 00:21:54,000 --> 00:21:59,000 Charlotte, ¿qué tipo es de 3,50? 307 00:21:59,000 --> 00:22:01,000 [Charlotte] Eso es un doble. >> Es un doble. 308 00:22:01,000 --> 00:22:03,000 Jimmy, ¿qué es este próximo? >> Una matriz. 309 00:22:03,000 --> 00:22:09,000 Una matriz, impresionante, y Jared, ¿cuál es la función fopen? 310 00:22:09,000 --> 00:22:11,000 [Jared] Es un recurso. >> Es un recurso. 311 00:22:11,000 --> 00:22:15,000 Eso es un poco de un ser nuevo, no una estrella del archivo, no un archivo. 312 00:22:15,000 --> 00:22:19,000 Es un recurso es el tipo en PHP, 313 00:22:19,000 --> 00:22:24,000 y lo siento, Ella, la hipótesis nula es lo último? 314 00:22:24,000 --> 00:22:26,000 Null. 315 00:22:26,000 --> 00:22:28,000 Null, ¿cómo se escribe en PHP? >> La misma forma. 316 00:22:28,000 --> 00:22:30,000 De la misma forma, capitales? >> Yeah. 317 00:22:30,000 --> 00:22:33,000 Sí, está bien. 318 00:22:33,000 --> 00:22:35,000 Aquí vamos, tenemos un doble, tenemos una matriz, 319 00:22:35,000 --> 00:22:41,000 tenemos un recurso, y entonces tenemos nulo. 320 00:22:41,000 --> 00:22:48,000 Vamos a ver ahora si la has visto- 321 00:22:48,000 --> 00:22:51,000 vamos a ver, por lo que ahora creo que lo que yo también quiero hacer es levantar 322 00:22:51,000 --> 00:22:56,000 esta página web aquí, este php.net / manual, 323 00:22:56,000 --> 00:23:01,000 así que si ustedes que copiar y abrir un navegador web. 324 00:23:01,000 --> 00:23:07,000 Voy a levantar Chrome, puesto que in 325 00:23:07,000 --> 00:23:10,000 Quiero mostrar que esto no sólo porque 326 00:23:10,000 --> 00:23:13,000 podemos hablar todo el día sobre los tipos y todas esas cosas divertidas 327 00:23:13,000 --> 00:23:19,000 sino porque este es el manual de PHP, 328 00:23:19,000 --> 00:23:23,000 y hay una gran cantidad de programadores de PHP que hay. 329 00:23:23,000 --> 00:23:26,000 Hay un montón de sitios web PHP por ahí, 330 00:23:26,000 --> 00:23:31,000 y como resultado, hay una gran cantidad de documentación sobre PHP, 331 00:23:31,000 --> 00:23:36,000 y el manual, este php.net, es un muy buen lugar para ir 332 00:23:36,000 --> 00:23:43,000 cuando tienes preguntas sobre cuál es la mejor manera de hacer X en PHP 333 00:23:43,000 --> 00:23:45,000 o lo que es una función parece? 334 00:23:45,000 --> 00:23:49,000 Sólo tipo de familiarizarse con el aspecto que tiene, porque 335 00:23:49,000 --> 00:23:54,000 se le viene aquí a menudo, un poco para ajustar problema 7. 336 00:23:54,000 --> 00:23:57,000 >> Si usted termina encima de hacer un proyecto final que utiliza PHP 337 00:23:57,000 --> 00:24:04,000 este será un lugar que se convertirá muy bien informado. 338 00:24:04,000 --> 00:24:09,000 A menudo, la forma de hacer esto es que utilizan Google para buscar el sitio, 339 00:24:09,000 --> 00:24:16,000 y no utilizar el cuadro de búsqueda que pasa aquí en la parte superior derecha, que es una especie de pequeño. 340 00:24:16,000 --> 00:24:19,000 Si usted está buscando en Google alrededor buscando algo que hacer con PHP y nos vemos 341 00:24:19,000 --> 00:24:24,000 uno de los enlaces manuales aparecer normalmente se puede confiar en que 342 00:24:24,000 --> 00:24:31,000 como un recurso bastante bueno. 343 00:24:31,000 --> 00:24:34,000 Impresionante, tan fuera de este tipo, sólo por curiosidad, 344 00:24:34,000 --> 00:24:37,000 cuáles no lo hemos visto? 345 00:24:37,000 --> 00:24:40,000 Cualquier cosa que no hemos visto aquí? 346 00:24:40,000 --> 00:24:44,000 [Estudiante] Recursos. >> Vimos recurso a la llamada fopen. 347 00:24:44,000 --> 00:24:48,000 [Estudiante] Objetos. >> Objetos que no hemos visto con seguridad. 348 00:24:48,000 --> 00:24:51,000 Devoluciones de llamada que no hemos visto. 349 00:24:51,000 --> 00:24:54,000 Hay algunos de estos pseudo-tipos. 350 00:24:54,000 --> 00:24:57,000 Sin duda, sólo vi entero y doble. 351 00:24:57,000 --> 00:25:01,000 No llegamos a ver algunos de los otros, así que si hacemos clic sobre los números enteros 352 00:25:01,000 --> 00:25:08,000 podemos ver hay enteros cualesquiera otros que tienen aquí? 353 00:25:08,000 --> 00:25:11,000 ¿Son todos tan entero, número entero, número entero. 354 00:25:11,000 --> 00:25:14,000 Algunos idiomas tienen grandes tipos enteros, 355 00:25:14,000 --> 00:25:23,000 como vimos en MySQL hoy hubo int y luego int grande. 356 00:25:23,000 --> 00:25:25,000 Cool. 357 00:25:25,000 --> 00:25:28,000 >> Así, PHP manual. 358 00:25:28,000 --> 00:25:37,000 Volvamos a nuestra especificaciones conjunto de problemas, y ahora voy a desplazarse hacia abajo en la página 4. 359 00:25:37,000 --> 00:25:41,000 Una de las cosas que sucede cuando recibe estos idiomas 360 00:25:41,000 --> 00:25:49,000 que no tienen este tipos estáticos, por lo que estos idiomas en los que tiene que declarar 361 00:25:49,000 --> 00:25:52,000 el tipo de variable de hasta un frente 362 00:25:52,000 --> 00:26:00,000 es que te dan casos en los que podría empezar a tener variables de diferentes tipos 363 00:26:00,000 --> 00:26:04,000 interactuar unos con otros, 364 00:26:04,000 --> 00:26:09,000 y PHP hace esto cuando trata de hacer 365 00:26:09,000 --> 00:26:13,000 lo que considera que es lo más sensato 366 00:26:13,000 --> 00:26:18,000 cuando se tiene 2 tipos diferentes interactúan unos con otros. 367 00:26:18,000 --> 00:26:24,000 Por ejemplo, si nos fijamos en estas líneas de código aquí 368 00:26:24,000 --> 00:26:29,000 ves que tenemos lo que sucede cuando 369 00:26:29,000 --> 00:26:38,000 tratamos de añadir la cadena 1 hasta el número entero 2. 370 00:26:38,000 --> 00:26:41,000 ¿Qué sucede si tratamos de añadir una cadena que no es un valor numérico 371 00:26:41,000 --> 00:26:48,000 sino más bien personajes reales, CS con el número 50? 372 00:26:48,000 --> 00:26:51,000 Entonces vamos a ver, ¿hay algo diferente que lo que sucede con 373 00:26:51,000 --> 00:26:56,000 en lugar de añadir una cadena a un número que va a añadir un número a una cadena, 374 00:26:56,000 --> 00:27:00,000 y así sucesivamente y así sucesivamente hasta el punto en que estamos recibiendo 375 00:27:00,000 --> 00:27:05,000 algún tipo de cosas raras aquí donde tenemos 7 + verdad. 376 00:27:05,000 --> 00:27:09,000 ¿Qué diablos significa eso? 377 00:27:09,000 --> 00:27:19,000 >> Si ustedes van por delante y pegar algo de este código en el aparato. 378 00:27:19,000 --> 00:27:27,000 Usted puede mantenerlo en dynamic.php. 379 00:27:27,000 --> 00:27:30,000 Vamos a ver qué pasa. 380 00:27:41,000 --> 00:27:43,000 [Estudiante] Sólo tiene que utilizar la impresión no, printf? 381 00:27:43,000 --> 00:27:52,000 Sí, ¿y usted encontrará que la impresión es también una función válida para imprimir en PHP. 382 00:27:52,000 --> 00:27:54,000 Hay muchas maneras diferentes de hacerlo. 383 00:27:54,000 --> 00:27:58,000 Vamos a ver con un par de los ejemplos más adelante, una vez que empieza a hablar 384 00:27:58,000 --> 00:28:02,000 sobre el único problema que vamos a escribir 385 00:28:02,000 --> 00:28:06,000 y luego la concentración problema que vamos a escribir 386 00:28:06,000 --> 00:28:09,000 que a pesar de que tenemos fopen y fclose 387 00:28:09,000 --> 00:28:15,000 que no es a menudo la forma más sencilla de leer en el contenido de un archivo. 388 00:28:15,000 --> 00:28:21,000 PHP tiene un montón de estos remanentes C-like. 389 00:28:21,000 --> 00:28:28,000 [Estudiante] Cuando pongo en todos los 6 de esas cosas que sólo te dan un número como una salida. 390 00:28:28,000 --> 00:28:36,000 [Nate H.] Cuando se pone en todos los 6 de estas cosas. 391 00:28:36,000 --> 00:28:39,000 Vamos a ver que es porque es posible- 392 00:28:39,000 --> 00:28:46,000 una cosa es que estas llamadas de impresión no se terminan al final con nuevas líneas. 393 00:28:46,000 --> 00:28:49,000 No hay nueva línea que separa cada una de estas llamadas de impresión, 394 00:28:49,000 --> 00:28:51,000 así que tal vez usted está recibiendo un gran número, 395 00:28:51,000 --> 00:28:58,000 y no deja de ser amalgama de caracteres de nueva línea. 396 00:28:58,000 --> 00:29:00,000 [Estudiante] Bueno, ¿cómo puedo estar seguro- 397 00:29:00,000 --> 00:29:03,000 Bueno, hay un montón de maneras diferentes. 398 00:29:03,000 --> 00:29:06,000 Manualmente, puede poner en una impresión de un carácter de nueva línea, 399 00:29:06,000 --> 00:29:09,000 un eco de un carácter de nueva línea, 400 00:29:09,000 --> 00:29:12,000 imprimir de nueva línea. 401 00:29:12,000 --> 00:29:16,000 [Estudiante] Así que echo es lo mismo que printf? 402 00:29:16,000 --> 00:29:21,000 >> Printf es como printf 403 00:29:21,000 --> 00:29:24,000 donde se está imprimiendo una cadena con formato. 404 00:29:24,000 --> 00:29:32,000 Lo estás suministro de la cadena de formato y, a continuación todas las variables de marcador de posición. 405 00:29:32,000 --> 00:29:39,000 A menudo es algo que no se utiliza- 406 00:29:39,000 --> 00:29:42,000 vamos a ver, como un descargo de responsabilidad, 407 00:29:42,000 --> 00:29:48,000 Estoy menos familiarizado con PHP que yo con los idiomas de sitios web, 408 00:29:48,000 --> 00:29:53,000 y cuando he programado en PHP que no suelen usar printf 409 00:29:53,000 --> 00:29:59,000 porque me resulta más rápido usar las funciones de interpolación de cadenas que tiene, 410 00:29:59,000 --> 00:30:04,000 que vamos a entrar y te voy a mostrar en un segundo, 411 00:30:04,000 --> 00:30:08,000 mientras que en C que tipo de tener que hacer esto hacky para conseguir que se imprima correctamente. 412 00:30:08,000 --> 00:30:16,000 En realidad se puede poner directamente en las variables de las cadenas en PHP. 413 00:30:16,000 --> 00:30:22,000 Printf es un poco demasiado largo para lo que suelo hacer. Sí, Ella. 414 00:30:22,000 --> 00:30:25,000 [Ella] En general, si usted consigue error de análisis significa eso- 415 00:30:25,000 --> 00:30:30,000 al igual que en C no le dirá exactamente dónde está el error y lo que es, 416 00:30:30,000 --> 00:30:34,000 ¿Eso significa mirar a través de su código completo y la figura hacia fuera? 417 00:30:34,000 --> 00:30:39,000 Es típicamente más específico que eso. 418 00:30:39,000 --> 00:30:48,000 Creo que en ese caso era un poco apagado, 419 00:30:48,000 --> 00:30:51,000 así que creo que en este caso nos faltaba un punto y coma. 420 00:30:51,000 --> 00:30:54,000 Se trataba de dar sentido a todo, 421 00:30:54,000 --> 00:30:57,000 así como los lenguajes interpretados, el intérprete se va a tratar 422 00:30:57,000 --> 00:31:01,000 y hacer todo lo posible para que todo funcione correctamente. 423 00:31:01,000 --> 00:31:04,000 >> Vas a ver, por ejemplo, en JavaScript 424 00:31:04,000 --> 00:31:10,000 Vas a menudo-line declaraciones finales con un punto y coma al igual que lo hacen en PHP, 425 00:31:10,000 --> 00:31:13,000 tal como lo hacen en C. 426 00:31:13,000 --> 00:31:15,000 En JavaScript algunos de los intérpretes de JavaScript 427 00:31:15,000 --> 00:31:20,000 en muchos de los navegadores pondrá en punto y coma para usted 428 00:31:20,000 --> 00:31:23,000 si le sucede que se les falta. 429 00:31:23,000 --> 00:31:29,000 Van a tratar de dar cabida a algunos descuido de su parte. 430 00:31:29,000 --> 00:31:34,000 Ahí es donde podría estar tratando y tratando y tratando de hacer que las cosas funcionen, 431 00:31:34,000 --> 00:31:36,000 y, finalmente, se llega a un punto donde dice bien, 432 00:31:36,000 --> 00:31:38,000 No puedo hacer las cosas en el rescate, y ahí es donde usted obtendrá un número de línea 433 00:31:38,000 --> 00:31:44,000 que puede parecer un poco fuera del lugar exacto. 434 00:31:44,000 --> 00:31:47,000 Está bien, así que vamos a ir a través de este muy rápido. 435 00:31:47,000 --> 00:31:50,000 Nos dejó con Ella, así que vamos a ir a Missy, 436 00:31:50,000 --> 00:31:54,000 y Missy, ¿qué impresión de la cadena 1 más el número 2 le dar? 437 00:31:54,000 --> 00:31:56,000 [Missy] 3. >> 3. 438 00:31:56,000 --> 00:31:59,000 ¿Eso tiene sentido? Algo así? 439 00:31:59,000 --> 00:32:02,000 ¿Te da un número? ¿Te da una cadena? 440 00:32:02,000 --> 00:32:05,000 [Missy] Varios. >> Se trata de un número. 441 00:32:05,000 --> 00:32:09,000 Pero vale la impresión, por lo que te va a dar algún tipo de cadena. 442 00:32:09,000 --> 00:32:12,000 >> Una de las cosas que podemos hacer para comprobar esto 443 00:32:12,000 --> 00:32:21,000 es si lo hacemos $ var = 1 + 2 444 00:32:21,000 --> 00:32:28,000 y entonces decimos eco de gettype, 445 00:32:28,000 --> 00:32:33,000 así que estamos utilizando un tercer tipo de impresión aquí. 446 00:32:33,000 --> 00:32:39,000 Ahora podemos ver lo que sucede aquí. 447 00:32:39,000 --> 00:32:42,000 Aquí lo que tenemos es que tenemos un número entero de esto. 448 00:32:42,000 --> 00:32:45,000 A pesar de que se fueron sumando esta cadena en un número, 449 00:32:45,000 --> 00:32:48,000 que no te den una cadena a partir de la misma, al igual que Missy dijo. 450 00:32:48,000 --> 00:32:52,000 Estábamos preparando un entero. 451 00:32:52,000 --> 00:32:57,000 Está bien, así que vamos a ver, al lado de arriba, 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. ¿Eso tiene sentido? 454 00:33:02,000 --> 00:33:04,000 [Kevin] Yeah. 455 00:33:04,000 --> 00:33:06,000 [Nate H.] ¿Por qué? ¿Por qué tiene sentido para ti? 456 00:33:06,000 --> 00:33:11,000 [Kevin] Porque es sólo tener la cadena, con número cero valor. 457 00:33:11,000 --> 00:33:16,000 Sí, muy bien. 458 00:33:16,000 --> 00:33:20,000 Tipo de situaciones ambiguas, pero es bueno saber lo que pasa. 459 00:33:20,000 --> 00:33:25,000 Stella, ¿qué pasa después con el número 1 + cadena 2? 460 00:33:25,000 --> 00:33:27,000 [Stella] 3. >> 3 de nuevo. 461 00:33:27,000 --> 00:33:30,000 Y en este caso, no obtenemos una cadena o un número? 462 00:33:30,000 --> 00:33:36,000 >> Vamos a darle una oportunidad. 463 00:33:36,000 --> 00:33:43,000 ¿Alguien más rápido que yo obtener la respuesta? Charlotte? 464 00:33:43,000 --> 00:33:46,000 Oh, no lo hizo-bien, vamos a ver, vamos a hacer el mismo tipo de cosas 465 00:33:46,000 --> 00:33:49,000 donde tenemos un número más una cadena, y que vamos a repetir el tipo, 466 00:33:49,000 --> 00:33:51,000 ver lo que tenemos. 467 00:33:51,000 --> 00:33:55,000 También recibimos un número entero. 468 00:33:55,000 --> 00:33:58,000 No importa cuál es la cadena, que uno es el número. 469 00:33:58,000 --> 00:34:00,000 Todavía vamos a obtener un número entero. 470 00:34:00,000 --> 00:34:04,000 Es todavía va a hacer lo que se podría esperar. 471 00:34:04,000 --> 00:34:09,000 De acuerdo, Sam, ¿qué pasa con 90 + 9 botellas de cerveza en la pared? 472 00:34:09,000 --> 00:34:12,000 [Sam] 99. >> 99. 473 00:34:12,000 --> 00:34:15,000 No había botellas de cerveza en la pared, sin embargo. 474 00:34:15,000 --> 00:34:17,000 Nos da un poco más de información sobre lo que está pasando. 475 00:34:17,000 --> 00:34:21,000 [Sam] Si hubieras escrito con letras 9 476 00:34:21,000 --> 00:34:23,000 entonces tendría 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 nos hubiéramos escrito 9 sobre como N-I-N-E 479 00:34:30,000 --> 00:34:34,000 habríamos conseguido 99 o 90? 480 00:34:34,000 --> 00:34:38,000 Nos gustaría obtener 90. 481 00:34:38,000 --> 00:34:42,000 Es, literalmente, sólo en busca de caracteres de dos dígitos. 482 00:34:42,000 --> 00:34:46,000 No es lo suficientemente inteligente como para reconocer las palabras de números y esas cosas. Sí. 483 00:34:46,000 --> 00:34:48,000 >> [Estudiante] ¿Existe tal cosa como el encasillamiento en PHP? 484 00:34:48,000 --> 00:34:54,000 Existe, y es exactamente la forma en que lo haría en C. 485 00:34:54,000 --> 00:34:56,000 ¿Qué hay 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í, ¿y qué podría ser sorprendente acerca de esto? 488 00:35:01,000 --> 00:35:04,000 ¿Qué pasaría si lo hicieras este mismo tipo de cosas en C, 489 00:35:04,000 --> 00:35:06,000 si lo has hecho 10/7 en C? 490 00:35:06,000 --> 00:35:08,000 [Charlotte] Solo le daría usted, dependiendo de cómo se typecasted supongo 491 00:35:08,000 --> 00:35:12,000 sería darle sólo un número limitado de dígitos después del punto decimal. 492 00:35:12,000 --> 00:35:16,000 Sí, por lo que un número limitado de dígitos después del punto decimal. 493 00:35:16,000 --> 00:35:21,000 ¿Qué otra cosa podría ser, ¿le dará ningún dígito después del decimal? 494 00:35:21,000 --> 00:35:28,000 A menudo, no tan nuevo, dependiendo de cómo lo está typecasting 495 00:35:28,000 --> 00:35:31,000 que puede o no puede convertir en un número de coma flotante. 496 00:35:31,000 --> 00:35:35,000 Aquí era un poco agradable que lo hizo. 497 00:35:35,000 --> 00:35:40,000 Si hubiéramos mostrado esto cuando empezamos a hacer este tipo de cosas en C 498 00:35:40,000 --> 00:35:44,000 probablemente habría tenido sentido un poco más 499 00:35:44,000 --> 00:35:48,000 que no sólo tiene que ir a 1. 500 00:35:48,000 --> 00:35:51,000 Y, por último, Jamie, ¿qué hay de 7 + verdad? 501 00:35:51,000 --> 00:35:53,000 [Jamie] 8. >> 8. 502 00:35:53,000 --> 00:35:56,000 ¿Qué significa eso? 503 00:35:56,000 --> 00:35:58,000 Supongo que solo da el verdadero valor de 1. 504 00:35:58,000 --> 00:36:01,000 Si. ¿Qué sucede si cambiamos eso a falso? 505 00:36:01,000 --> 00:36:04,000 [Estudiante] 7. 506 00:36:04,000 --> 00:36:09,000 Sí, así que recuerda donde se habla de estos valores binarios, 507 00:36:09,000 --> 00:36:12,000 1 es activado, 0 es apagado? 508 00:36:12,000 --> 00:36:17,000 Ahora tenemos cierto es 1, 0 es falso, 509 00:36:17,000 --> 00:36:21,000 y es posible que no hemos visto en los ejemplos C que hemos hecho este semestre pasado, 510 00:36:21,000 --> 00:36:27,000 pero históricamente el tipo bool en C no ha sido un tipo real, 511 00:36:27,000 --> 00:36:32,000 así que la gente ha utilizado 0 y 1 en el lugar de verdadero y falso. 512 00:36:32,000 --> 00:36:35,000 Esta es una manifestación de eso. 513 00:36:35,000 --> 00:36:39,000 >> Bien, así que una parte importante de todo esto 514 00:36:39,000 --> 00:36:41,000 es que tenemos estos tipos. 515 00:36:41,000 --> 00:36:43,000 Ellos pueden interactuar unos con otros. 516 00:36:43,000 --> 00:36:49,000 A menudo pueden interactuar entre sí de manera que sean agradables, como hemos visto aquí. 517 00:36:49,000 --> 00:36:53,000 Es agradable ser capaz de tener una cadena y el número 2, sumarlos y obtener 3. 518 00:36:53,000 --> 00:36:55,000 Eso tiene sentido. 519 00:36:55,000 --> 00:36:59,000 Sin embargo, cuando usted está escribiendo páginas web, y especialmente cuando usted está procesando 520 00:36:59,000 --> 00:37:04,000 entrada del usuario, por lo que dicen que ha escrito un formulario web 521 00:37:04,000 --> 00:37:09,000 que recoge la información del usuario y luego se va a procesar 522 00:37:09,000 --> 00:37:13,000 en la parte trasera, en el lado del servidor en el código PHP 523 00:37:13,000 --> 00:37:18,000 si estás esperando que el valor que el usuario escribió y presentó 524 00:37:18,000 --> 00:37:23,000 a su forma de ser un entero o como un número de punto flotante o algo por el estilo 525 00:37:23,000 --> 00:37:29,000 debe emitir explícitamente 526 00:37:29,000 --> 00:37:34,000 y luego hacer un poco de comprobación de tipos. 527 00:37:34,000 --> 00:37:41,000 >> Usted no quiere depender sólo de este sistema de manipulación de tipos para hacer las cosas funcionan, 528 00:37:41,000 --> 00:37:48,000 sobre todo por razones de seguridad y sólo por la solidez de su sitio web. 529 00:37:48,000 --> 00:37:51,000 Sólo es algo a tener en cuenta que cada vez que usted está manejando los datos del formulario, 530 00:37:51,000 --> 00:37:57,000 todo lo que viene en el correo o las superglobales get 531 00:37:57,000 --> 00:38:01,000 asegúrese de que siempre validar y convertirlo y encasillar a ella. 532 00:38:01,000 --> 00:38:04,000 Y al igual que hablábamos hace un momento que encasillamiento 533 00:38:04,000 --> 00:38:08,000 en PHP es exactamente el mismo que en C, donde tiene los paréntesis 534 00:38:08,000 --> 00:38:14,000 y luego el tipo. 535 00:38:14,000 --> 00:38:16,000 Tenga esto en cuenta. 536 00:38:16,000 --> 00:38:19,000 Una de las funciones que le será útil cuando usted está haciendo esto 537 00:38:19,000 --> 00:38:22,000 es que hemos estado utilizando, y esto es un poco como un aparte- 538 00:38:22,000 --> 00:38:27,000 hemos estado usando esta función gettype aquí 539 00:38:27,000 --> 00:38:30,000 para averiguar el tipo de una variable, 540 00:38:30,000 --> 00:38:37,000 y si bien esto es útil para la depuración y para ver qué tipo de una variable es 541 00:38:37,000 --> 00:38:42,000 no desea utilizar esto, por ejemplo, en una condición donde 542 00:38:42,000 --> 00:38:57,000 usted está comprobando para ver si gettype de $ var = entero hacer algo. 543 00:38:57,000 --> 00:39:01,000 Esto es malo, malo, malo. 544 00:39:01,000 --> 00:39:09,000 En su lugar hay estas funciones llamadas es entero, es una cadena, 545 00:39:09,000 --> 00:39:14,000 es array que desea utilizar en su lugar, por lo que en este caso 546 00:39:14,000 --> 00:39:18,000 lo que me gustaría hacer en lugar de este tipo aquí 547 00:39:18,000 --> 00:39:31,000 Se utiliza el número entero es var. 548 00:39:31,000 --> 00:39:37,000 Y están a menudo planteada * is_ en el sentido de que podría reemplazar el * con número entero, 549 00:39:37,000 --> 00:39:43,000 cadena, etcétera, y sólo para asegurarse de que realmente rápida 550 00:39:43,000 --> 00:39:50,000 Se trata int php. 551 00:39:50,000 --> 00:39:59,000 Parece que puede hacer cualquiera es int o se haya entero también? 552 00:39:59,000 --> 00:40:06,000 Sí, alias, apodos tan enteros int. 553 00:40:06,000 --> 00:40:08,000 Cool. 554 00:40:14,000 --> 00:40:17,000 >> ¿Cómo lo estamos haciendo? 555 00:40:17,000 --> 00:40:20,000 Vamos a coger el ritmo un poco. 556 00:40:20,000 --> 00:40:24,000 Ahora vamos a hablar acerca de las matrices, así como se puede ver 557 00:40:24,000 --> 00:40:28,000 en la siguiente parte de la especificación se habla de cómo las matrices en PHP 558 00:40:28,000 --> 00:40:31,000 son ligeramente diferentes de lo que son en C. 559 00:40:31,000 --> 00:40:34,000 En verdad, son una especie de amalgama de 560 00:40:34,000 --> 00:40:36,000 las matrices que hemos llegado a conocer y amar en C 561 00:40:36,000 --> 00:40:40,000 donde todo es del mismo tipo 562 00:40:40,000 --> 00:40:43,000 almacenan consecutivamente y de forma contigua en la memoria, 563 00:40:43,000 --> 00:40:46,000 y usted tiene estos índices numéricos. 564 00:40:46,000 --> 00:40:49,000 Usted tiene el índice 0, el índice 1, índice 2, 565 00:40:49,000 --> 00:40:53,000 y guarda los valores en los índices. 566 00:40:53,000 --> 00:40:57,000 También en C, cuando escribió Speller, que muchos de ustedes 567 00:40:57,000 --> 00:41:00,000 hizo el enfoque de la tabla hash, y vio que no teníamos 568 00:41:00,000 --> 00:41:03,000 un tipo diferente de almacenamiento en el que se cartografía 569 00:41:03,000 --> 00:41:07,000 la clave de un valor, por lo que al intentar guardar algo en la tabla hash 570 00:41:07,000 --> 00:41:11,000 había que especificar que quería guardarlo con una clave específica, 571 00:41:11,000 --> 00:41:17,000 y que la clave determina la ubicación del valor y donde sería almacenado. 572 00:41:17,000 --> 00:41:22,000 Usted tiene clase de estos dos conceptos sucediendo al mismo tiempo en una matriz de PHP, 573 00:41:22,000 --> 00:41:27,000 y, como resultado, a menudo nos llaman a estas matrices asociativas 574 00:41:27,000 --> 00:41:33,000 donde se asocia una clave en un valor. 575 00:41:33,000 --> 00:41:39,000 En la siguiente parte se habla de un array PHP simple 576 00:41:39,000 --> 00:41:45,000 donde tenemos teclas a, b, y c, 577 00:41:45,000 --> 00:41:53,000 todas las cadenas, la asignación a los números enteros 1, 2, y 3. 578 00:41:53,000 --> 00:41:57,000 Y usted puede tener llaves de diferentes tipos. 579 00:41:57,000 --> 00:42:00,000 >> Usted puede tener algunas claves que son cadenas, algunas claves que son números enteros. 580 00:42:00,000 --> 00:42:03,000 Puede tener valores de diferentes tipos. 581 00:42:03,000 --> 00:42:06,000 Usted puede tener un valor que es una cadena, un valor que es un número entero, 582 00:42:06,000 --> 00:42:11,000 un valor que es un objeto u otra matriz, por ejemplo, 583 00:42:11,000 --> 00:42:16,000 todos en el mismo objeto de matriz, que es un poco extraño. 584 00:42:16,000 --> 00:42:20,000 Usted no tiene que tener una matriz que se acaba de conseguir un tipo de elemento en el mismo. 585 00:42:20,000 --> 00:42:26,000 Usted puede tener muchas cosas diferentes pasando ahí. 586 00:42:26,000 --> 00:42:33,000 La otra cosa a tener en cuenta es que cuando usted ve algo como esto en su código, 587 00:42:33,000 --> 00:42:38,000 que es PHP válido para declarar una matriz como ésta, 0, 1, 2, 3, 4, 5, 588 00:42:38,000 --> 00:42:43,000 que se declara un arreglo de $ inicializado a ser esta matriz. 589 00:42:43,000 --> 00:42:48,000 Pero lo que en realidad estás recibiendo bajo el capó es este tipo de implícito 590 00:42:48,000 --> 00:42:55,000 generación de claves donde tenemos 0 a 0, 1 a 1, 2 a 2, 3 a 3. 591 00:42:55,000 --> 00:42:59,000 Y resulta que, incluso si usted tiene un arreglo como este chico aquí 592 00:42:59,000 --> 00:43:03,000 donde tiene a, b y c como las teclas de 593 00:43:03,000 --> 00:43:09,000 y después de empezar a usar el método push matriz para empezar a usar esta matriz como una pila, 594 00:43:09,000 --> 00:43:12,000 así que usted puede ver que este objeto de matriz, esta matriz es en realidad se sobrecargue. 595 00:43:12,000 --> 00:43:15,000 Podemos utilizarlo como una matriz. Podemos utilizarlo como una tabla hash. 596 00:43:15,000 --> 00:43:19,000 Podemos utilizarlo como una pila. 597 00:43:19,000 --> 00:43:22,000 Al empezar a empujar las cosas en esta serie 598 00:43:22,000 --> 00:43:30,000 la primera cosa que empujar a éste será el índice 0 y el índice 1 y el índice 2. 599 00:43:30,000 --> 00:43:33,000 Usted puede obtener este tipo de generación implícita de teclas 600 00:43:33,000 --> 00:43:38,000 a menos que se especifique de forma explícita. 601 00:43:38,000 --> 00:43:43,000 La forma en que se especifique explícitamente teclas, por supuesto, es mediante el uso de esta notación soporte, 602 00:43:43,000 --> 00:43:48,000 que es similar a las matrices excepto que en lugar de permitir que únicamente 603 00:43:48,000 --> 00:43:54,000 índices enteros de aquí, ahora permitimos que nada. 604 00:43:54,000 --> 00:43:57,000 Si desea que su clave sea una cadena, que te lo especifica así. 605 00:43:57,000 --> 00:44:06,000 Si usted quiere que sea un int, hay que identificarlo con el int que desea utilizar. 606 00:44:06,000 --> 00:44:13,000 >> Preguntas sobre los que hasta ahora? 607 00:44:13,000 --> 00:44:18,000 Una de las cosas buenas acerca de esta idea 608 00:44:18,000 --> 00:44:26,000 es que se puede sólo tenga un valor almacenado con una clave particular. 609 00:44:26,000 --> 00:44:32,000 Si volvemos a nuestro aparato-me deja borrar algunas de estas cosas. 610 00:44:32,000 --> 00:44:47,000 Y digamos que inicializar una matriz a ser 0, 1, 2, hecho. 611 00:44:47,000 --> 00:44:55,000 Si yo ahora sé que, por ejemplo, si yo echo $ arr [0] 612 00:44:55,000 --> 00:44:59,000 Me voy a poner el valor 0 imprimirse, 613 00:44:59,000 --> 00:45:05,000 y puesto que no tan sólo puede ser un valor almacenado de una clave particular 614 00:45:05,000 --> 00:45:11,000 si guardo algo en $ arr [0], digamos a, 615 00:45:11,000 --> 00:45:16,000 entonces sé que cuando me echo $ arr [0] otra vez 616 00:45:16,000 --> 00:45:19,000 Yo no voy a obtener 0 imprimirse como antes. 617 00:45:19,000 --> 00:45:24,000 Yo sólo voy a conseguir una. 618 00:45:24,000 --> 00:45:30,000 Así que esto es básicamente diciendo que no puedo tener $ arr [0] almacenar 2 valores diferentes. 619 00:45:30,000 --> 00:45:34,000 No se puede almacenar tanto en 0 y la cadena, como esto literalmente reemplaza 620 00:45:34,000 --> 00:45:38,000 lo que estaba en $ arr [0] previamente. 621 00:45:38,000 --> 00:45:43,000 La razón Traigo esto a colación es correr, a ver qué pasa. 622 00:45:43,000 --> 00:45:47,000 Mira que tengo 0 imprimirse y luego aquí abajo. 623 00:45:47,000 --> 00:45:51,000 No hay una nueva línea allí porque era perezoso y no poner ese pulg 624 00:45:51,000 --> 00:45:54,000 Lo bueno de esto es que podemos utilizar esto como una manera 625 00:45:54,000 --> 00:46:00,000 para captar esta idea de un conjunto 626 00:46:00,000 --> 00:46:07,000 donde no podemos tener varias claves dentro de una matriz. 627 00:46:07,000 --> 00:46:10,000 No podemos tener llaves idénticas dentro de una matriz. 628 00:46:10,000 --> 00:46:17,000 No puedo permitir que la tecla 0 y el valor 1 y la tecla 0 y un valor 629 00:46:17,000 --> 00:46:21,000 o la tecla 0 y el valor verdadero. 630 00:46:21,000 --> 00:46:27,000 Las claves son todo sólo hay una llave en la matriz. 631 00:46:27,000 --> 00:46:32,000 A pesar de que puede tener el mismo valor almacenado 632 00:46:32,000 --> 00:46:35,000 varias veces en la matriz en virtud de diferentes claves 633 00:46:35,000 --> 00:46:42,000 que no es posible contar con claves idénticas varias veces en la matriz de PHP. 634 00:46:42,000 --> 00:46:47,000 >> Si nos fijamos en el problema siguiente, unique.php, 635 00:46:47,000 --> 00:46:51,000 donde queremos abrir un archivo PHP 636 00:46:51,000 --> 00:46:54,000 que contiene una lista de cadenas, una cadena por línea, 637 00:46:54,000 --> 00:47:01,000 y queremos encontrar todas las cadenas únicas en ese archivo 638 00:47:01,000 --> 00:47:06,000 todo lo que tenemos que hacer es utilizar una de estas matrices de PHP 639 00:47:06,000 --> 00:47:12,000 y el uso de las cadenas en el archivo como las claves de este array 640 00:47:12,000 --> 00:47:17,000 y mantener la actualización de nuestra matriz como almacenamos estas nuevas claves. 641 00:47:17,000 --> 00:47:22,000 Al leer cada línea del archivo que puede almacenar en la matriz, 642 00:47:22,000 --> 00:47:28,000 y al final tendremos como nuestras llaves en nuestro array 643 00:47:28,000 --> 00:47:34,000 todas las cadenas únicas dentro del archivo. 644 00:47:34,000 --> 00:47:37,000 ¿Eso tiene sentido? 645 00:47:37,000 --> 00:47:41,000 Vamos a ver cómo funciona esto. 646 00:47:41,000 --> 00:47:49,000 Vamos a abrir, de acuerdo a la especificación, un nuevo archivo llamado unique.php. 647 00:47:49,000 --> 00:47:58,000 Abra. Oops, lo siento, nuevo archivo. 648 00:47:58,000 --> 00:48:03,000 Vamos a empezar con las etiquetas del inicio y el final mismo. 649 00:48:03,000 --> 00:48:17,000 Vamos a guardarlo en la sección 9, y vamos a llamarlo unique.php. 650 00:48:17,000 --> 00:48:25,000 Bien, ahora zoom in 651 00:48:25,000 --> 00:48:32,000 La idea es abrir un archivo, 652 00:48:32,000 --> 00:48:38,000 leer en archivo línea por línea. 653 00:48:38,000 --> 00:48:46,000 Para cada línea en el archivo 654 00:48:46,000 --> 00:48:51,000 vamos a tener una matriz en donde tenemos 655 00:48:51,000 --> 00:49:03,000  la línea como la llave. 656 00:49:03,000 --> 00:49:09,000 Y luego, cuando llegamos a la final aquí 657 00:49:09,000 --> 00:49:17,000 Teclas $ arr son las únicas líneas 658 00:49:17,000 --> 00:49:25,000 de los autos, ya que sabemos que si pongo la línea en el array 659 00:49:25,000 --> 00:49:33,000 muchas veces se acaba de mantener reemplazando el valor anterior, 660 00:49:33,000 --> 00:49:46,000 y que en realidad se puede poner como line array en sí mismo así como así. 661 00:49:46,000 --> 00:49:48,000 >> Esto es un poco raro. 662 00:49:48,000 --> 00:49:52,000 Estamos almacenando el mismo valor de clave par una y otra y otra vez, 663 00:49:52,000 --> 00:50:00,000 pero ya que se garantiza que no habrá sólo una clave llamada línea 664 00:50:00,000 --> 00:50:05,000 por lo que si tenemos un archivo que dice-un archivo de sonidos de animales y tiene guau, guau, 665 00:50:05,000 --> 00:50:11,000 miau, miau, mu, mu, y cada vez que leemos un ruido animal fuera 666 00:50:11,000 --> 00:50:15,000 como trama y la almacenamos en nuestra matriz obtenemos trama, y ​​luego la segunda vez 667 00:50:15,000 --> 00:50:20,000 almacenamos trama se sobrescribirá la primera vez que lo almacena. 668 00:50:20,000 --> 00:50:25,000 Al final, sólo tendrá una entrada en la matriz 669 00:50:25,000 --> 00:50:33,000 para cada uno de los ruidos de los animales en nuestro animal archivo de ruidos. 670 00:50:33,000 --> 00:50:41,000 ¿Ustedes se sienten seguros de que usted puede hacer frente a la apertura de un archivo en PHP? 671 00:50:41,000 --> 00:50:45,000 Una forma de hacerlo-vamos a repasar esta manera rápidamente, que lo haga 672 00:50:45,000 --> 00:50:50,000 es con fopen, como hemos visto anteriormente. 673 00:50:50,000 --> 00:50:55,000 Puede fopen some_file.txt. 674 00:50:55,000 --> 00:50:59,000 Puede abrirlo en modo de lectura, al igual que en C. 675 00:50:59,000 --> 00:51:02,000 Esa es una forma perfectamente válida para hacerlo. 676 00:51:02,000 --> 00:51:05,000 También después de la lectura en el archivo línea por línea 677 00:51:05,000 --> 00:51:12,000 tienen las mismas funciones, muchas de ellas, que lo hizo en el C. 678 00:51:12,000 --> 00:51:14,000 Usted tiene fgets. 679 00:51:14,000 --> 00:51:17,000 Usted tiene feof, aunque no nos gusta usar esa 680 00:51:17,000 --> 00:51:22,000 porque, recuerde, que no era mucha en C. 681 00:51:22,000 --> 00:51:25,000 Puede hacerlo de la misma manera, 682 00:51:25,000 --> 00:51:34,000 pero aquí es una cosa realmente genial. 683 00:51:34,000 --> 00:51:41,000 Lo siento, no quiero hacer $ archivo, pero hay una función llamada archivo en PHP, 684 00:51:41,000 --> 00:51:47,000 y esta función aquí es genial, porque lo lee todo el contenido 685 00:51:47,000 --> 00:51:52,000 del archivo que usted especifique, por lo some_file.txt, 686 00:51:52,000 --> 00:51:56,000 lee todo el contenido de este archivo en una matriz 687 00:51:56,000 --> 00:52:03,000 y luego le permite iterar sobre ella, lo cual es bastante ingenioso. 688 00:52:03,000 --> 00:52:07,000 >> Si nos vamos, por ejemplo, a nuestro navegador web 689 00:52:07,000 --> 00:52:14,000 y nos fijamos en Google para el archivo PHP 690 00:52:14,000 --> 00:52:23,000 usted puede ver aquí que el manual dice que el archivo se lee un archivo entero en una matriz, 691 00:52:23,000 --> 00:52:27,000 y podemos file_get_contents para devolver el contenido de un archivo como una cadena, 692 00:52:27,000 --> 00:52:30,000 pero por lo general sólo lo recibe como un conjunto es muy bonito porque lo que hace 693 00:52:30,000 --> 00:52:33,000 se lo rompe de modo que cada elemento 694 00:52:33,000 --> 00:52:37,000 de la matriz es una línea del archivo, 695 00:52:37,000 --> 00:52:41,000 por lo que si nos fijamos en el archivo 0, que es la primera línea del archivo. 696 00:52:41,000 --> 00:52:46,000 Archivo 1, segunda línea, el archivo 2, tercera línea, y así sucesivamente y así sucesivamente. 697 00:52:46,000 --> 00:52:50,000 ¿No sería agradable si eso era todo lo que tenía que hacer en C? 698 00:52:50,000 --> 00:52:53,000 Bastante ingenioso. 699 00:52:53,000 --> 00:52:59,000 David mostró en esta conferencia, y fue el idioma que mostró 700 00:52:59,000 --> 00:53:03,000 que, además de nuestro estándar de bucle en PHP que teníamos que 701 00:53:03,000 --> 00:53:09,000 for ($ i = 0; i <10, i + +), 702 00:53:09,000 --> 00:53:16,000 y usted puede hacer esto en PHP también, lo mismo: 703 00:53:16,000 --> 00:53:27,000 también tenemos esta construcción fresco llamado foreach. 704 00:53:27,000 --> 00:53:32,000 Foreach es realmente útil cuando iterar sobre matrices o las estructuras de datos 705 00:53:32,000 --> 00:53:36,000 ya que le permite sacar cada elemento de la matriz 706 00:53:36,000 --> 00:53:42,000 sin tener que hacerlo manualmente la indexación de ti mismo, 707 00:53:42,000 --> 00:53:46,000 sin tener que crear manualmente una variable índice, incrementarlo, 708 00:53:46,000 --> 00:53:51,000 sacar el valor de la matriz en ese momento, porque eso es una cosa muy común que hacer. 709 00:53:51,000 --> 00:53:54,000 >> Usted probablemente ha hecho un montón de veces cuando estaba haciendo cosas C 710 00:53:54,000 --> 00:54:00,000 lo largo del semestre, por lo que con esta foreach 711 00:54:00,000 --> 00:54:06,000 podemos iterar sobre este conjunto de archivos, 712 00:54:06,000 --> 00:54:12,000 y la sintaxis es que queremos ahora lazo sobre esta matriz 713 00:54:12,000 --> 00:54:18,000 y especificar que la variable que vamos a utilizar para almacenar 714 00:54:18,000 --> 00:54:27,000 el elemento de esta matriz local, local para el ámbito de aplicación de este bucle foreach, 715 00:54:27,000 --> 00:54:32,000 es que vamos a llamarlo línea. 716 00:54:32,000 --> 00:54:38,000 Si se trata de un archivo de sólo palabras y no hay una sola palabra en una línea 717 00:54:38,000 --> 00:54:43,000 que podríamos llamar palabra, así, en realidad sólo le doy un nombre, 718 00:54:43,000 --> 00:54:49,000 lo que quieras llamarlo, 719 00:54:49,000 --> 00:55:02,000 y luego dentro del bucle que puede hacer lo que quieras con esta línea variable. 720 00:55:02,000 --> 00:55:08,000 Si no es suficiente para obtener el valor de la matriz y también desea obtener 721 00:55:08,000 --> 00:55:17,000 el índice junto con él se puede especificar un nombre para el índice 722 00:55:17,000 --> 00:55:22,000 así como el valor, y ahora usted tiene acceso a 2 variables. 723 00:55:22,000 --> 00:55:26,000 Tienes $ i y la línea 724 00:55:26,000 --> 00:55:30,000 donde $ i es el índice en el array, 725 00:55:30,000 --> 00:55:38,000 y la línea es la línea que recupera del archivo. 726 00:55:38,000 --> 00:55:49,000 Por ejemplo, si queremos imprimir echo 0 línea del archivo de este tipo, 727 00:55:49,000 --> 00:55:57,000 podríamos hacerlo al igual que este, "Línea $ i del fichero es $ line" 728 00:55:57,000 --> 00:56:02,000 y aquí es algo que también no han visto todavía ni 729 00:56:02,000 --> 00:56:13,000 donde acabo totalmente saltado% este negocio entero% s d 730 00:56:13,000 --> 00:56:16,000 que hemos tenido que enfrentar en C, y en su lugar me he ido directamente a 731 00:56:16,000 --> 00:56:19,000 escribiendo las variables en línea en mi cadena. 732 00:56:19,000 --> 00:56:23,000 >> Esto se llama interpolación variable, cadena de interpolación 733 00:56:23,000 --> 00:56:26,000 donde está relleno de las variables en el derecho, y el intérprete de PHP 734 00:56:26,000 --> 00:56:31,000 es lo suficientemente inteligente cuando está leyendo a través de una cadena que comienza con comillas dobles- 735 00:56:31,000 --> 00:56:34,000 No comillas simples, con cadenas entre comillas sencillas que usted no puede hacer esto- 736 00:56:34,000 --> 00:56:38,000 pero con dobles cadenas entre comillas como se lee a través de ella está buscando para las variables. 737 00:56:38,000 --> 00:56:42,000 Está cazando, y si ve las variables se tomará el valor de la variable 738 00:56:42,000 --> 00:56:47,000 y meterlo en la cadena si se puede convertir en una representación de cadena, 739 00:56:47,000 --> 00:56:51,000 que es bastante ingenioso. 740 00:56:51,000 --> 00:56:56,000 Por ahora, vamos a comentar el resto de todo, 741 00:56:56,000 --> 00:57:00,000 salvar esto, y lo que podemos hacer ahora es que podemos abrir un archivo 742 00:57:00,000 --> 00:57:06,000 que podemos llamar some_file.txt-let 's crear un nuevo archivo- 743 00:57:06,000 --> 00:57:15,000 y nos puede poner en un montón de cosas sin sentido en aquí sólo para probar todo lo que fuera, 744 00:57:15,000 --> 00:57:25,000 lo guarda, lo llaman some_file.txt, como estoy haciendo aquí arriba en la parte superior, 745 00:57:25,000 --> 00:57:33,000 y ahora si el zoom sólo para asegurarse de que todo está en el mismo directorio 746 00:57:33,000 --> 00:57:36,000 parece que tengo unique.php y some_file.txt en el mismo directorio. 747 00:57:36,000 --> 00:57:42,000 Si me quedo unique.php php 748 00:57:42,000 --> 00:57:51,000 ver cómo se imprime cada línea de mi archivo y cuál es el límite? 749 00:57:51,000 --> 00:57:56,000 >> Eso es muy poderoso, ¿no? 750 00:57:56,000 --> 00:58:03,000 Mira, nos tomó 3 líneas de código para abrir un archivo. 751 00:58:03,000 --> 00:58:08,000 Bueno, 4 líneas de código. No puedo contar hoy, claramente. 752 00:58:08,000 --> 00:58:13,000 Pero en realidad sólo 2 líneas interesantes de código, porque los otros 2 fueron las llaves, 753 00:58:13,000 --> 00:58:17,000 pero en este código mucho hemos sido capaces de abrir un archivo, iterar a través de él, 754 00:58:17,000 --> 00:58:20,000 saque el número de línea y la línea en sí 755 00:58:20,000 --> 00:58:24,000 y se imprima. 756 00:58:24,000 --> 00:58:26,000 Cool stuff. Charlotte. 757 00:58:26,000 --> 00:58:28,000 [Charlotte] Tengo una pregunta acerca de la sintaxis. 758 00:58:28,000 --> 00:58:33,000 Así foreach acuerdos con cada línea del archivo que se abre, 759 00:58:33,000 --> 00:58:37,000 y luego, cuando queremos hacer las cosas con cada línea que acaba de hacerlo como 760 00:58:37,000 --> 00:58:39,000 y luego asociar el valor. 761 00:58:39,000 --> 00:58:41,000 [Nate H.] Lo que puede hacer aquí mismo-la pregunta era 762 00:58:41,000 --> 00:58:46,000 el foreach tiene que ver con la matriz, por lo que la sintaxis foreach 763 00:58:46,000 --> 00:58:51,000 es realmente foreach y observe que no hay espacio 764 00:58:51,000 --> 00:58:53,000 o cualquier cosa entre el y para cada uno el. 765 00:58:53,000 --> 00:58:56,000 Ellos tienen que ir a la derecha junto a la otra, 766 00:58:56,000 --> 00:59:00,000 y entonces se toma en una matriz, 767 00:59:00,000 --> 00:59:05,000 y luego tienes esta otra palabra clave se llama como lo que tiene que estar ahí, 768 00:59:05,000 --> 00:59:11,000 y luego, después de la que usted puede poner un nombre de variable, 769 00:59:11,000 --> 00:59:14,000 en cuyo caso usted va a estar tirando de los valores de la matriz, 770 00:59:14,000 --> 00:59:20,000 no de los índices, o si lo hace como lo he escrito abajo 771 00:59:20,000 --> 00:59:24,000 obtener las claves y los valores. 772 00:59:24,000 --> 00:59:33,000 Usted tiene foreach elemento de la matriz o el par de la matriz como la forma adecuada para el valor 773 00:59:33,000 --> 00:59:38,000 o como el valor justo. 774 00:59:38,000 --> 00:59:40,000 Dependiendo de lo que necesite, si usted no necesita las llaves, 775 00:59:40,000 --> 00:59:42,000 entonces usted puede ir con el valor. 776 00:59:42,000 --> 00:59:45,000 Si desea que las teclas que puede ir con ellos. 777 00:59:45,000 --> 00:59:48,000 >> [Charlotte] También me di cuenta de que nunca declaró la i o línea. 778 00:59:48,000 --> 00:59:51,000 ¿Cómo siquiera saben lo que son? 779 00:59:51,000 --> 00:59:53,000 [Nate H.] ¿Qué entiende usted por declarar? 780 00:59:53,000 --> 00:59:57,000 [Charlotte] Nunca les dije lo que o la línea de medios. 781 00:59:57,000 --> 01:00:01,000 [Nate H.] nunca Nos dijeron que la computadora lo que significa o la línea en términos de- 782 01:00:01,000 --> 01:00:05,000 [Charlotte] Que están indexadas o que-son 783 01:00:05,000 --> 01:00:09,000 [Nate H.] Nunca hemos dicho que esto se supone que es el índice o la clave y el valor, 784 01:00:09,000 --> 01:00:13,000 y eso es porque ese es el intérprete PHP. 785 01:00:13,000 --> 01:00:17,000 Esto sirve como la declaración y dice bien, la clave va a ser 786 01:00:17,000 --> 01:00:20,000 una variable llamada i almacena en una variable llamada i. 787 01:00:20,000 --> 01:00:24,000 El valor se va a almacenar en una variable llamada línea, 788 01:00:24,000 --> 01:00:28,000 así que esto sirve como declaración de esas variables 789 01:00:28,000 --> 01:00:35,000 y dice que $ i es una clave, y $ line es un valor. 790 01:00:35,000 --> 01:00:37,000 Sí, Ella. 791 01:00:37,000 --> 01:00:41,000 [Ella] Si las llaves no se hacen numéricamente 792 01:00:41,000 --> 01:00:44,000 ¿cómo decidir qué orden va a imprimir todo? 793 01:00:44,000 --> 01:00:47,000 Es igual que el orden en que entraron en? 794 01:00:47,000 --> 01:00:51,000 [Nate H.] Vamos a darle una oportunidad. 795 01:00:51,000 --> 01:00:57,000 Vamos a crear una variable llamada arr, 796 01:00:57,000 --> 01:01:06,000 y podemos hacer una va a 7. 797 01:01:06,000 --> 01:01:19,000 Digamos que 0 va a otra matriz con 1, 2 o manzana. 798 01:01:19,000 --> 01:01:30,000 Digamos 7 pasa a 1, b pasa a 2, 799 01:01:30,000 --> 01:01:39,000 y 3 pasa a 4. 800 01:01:39,000 --> 01:01:44,000 Esto es un poco loco buscando un ejemplo porque estamos mezclando 801 01:01:44,000 --> 01:01:47,000 cadenas y enteros por todo el lugar. 802 01:01:47,000 --> 01:01:50,000 No hay una orden real a esta matriz. 803 01:01:50,000 --> 01:01:55,000 Quiero decir, todo lo que podíamos pedir por orden alfabético de las claves. 804 01:01:55,000 --> 01:01:57,000 Podríamos pedir todo en orden alfabético por el valor. 805 01:01:57,000 --> 01:02:00,000 >> Podríamos tratar de tener en cuenta que algunas son cadenas, algunos son enteros, 806 01:02:00,000 --> 01:02:03,000 y que se podía tratar de convertir a todos en el mismo tipo y ver qué pasa, 807 01:02:03,000 --> 01:02:09,000 o podríamos considerarlos en el valor en el que ya entraron 808 01:02:09,000 --> 01:02:14,000 donde ponemos a este tipo en primer lugar, a este tipo en segundo lugar, a este tipo en tercer lugar, 809 01:02:14,000 --> 01:02:19,000 este tipo en el cuarto, etcétera. 810 01:02:19,000 --> 01:02:23,000 Vamos a ver lo que sucede cuando nos encontramos este código. 811 01:02:23,000 --> 01:02:29,000 Si nos desplazamos hacia abajo y hacer el mismo tipo de cosas, 812 01:02:29,000 --> 01:02:31,000 y aquí no se está imprimiendo las nuevas líneas. 813 01:02:31,000 --> 01:02:35,000 Cuando lo leí cosas del fichero, fue incluido las nuevas líneas en los valores, 814 01:02:35,000 --> 01:02:38,000 que fue por eso que imprime muy bien, mientras que aquí no lo hizo, 815 01:02:38,000 --> 01:02:40,000 así que por eso todo está aplastado juntos. 816 01:02:40,000 --> 01:02:44,000 Vamos a añadir en la nueva línea para hacer las cosas bien. 817 01:02:44,000 --> 01:02:51,000 Vamos a volver a ejecutarlo, y aquí lo 818 01:02:51,000 --> 01:02:54,000 mira lo que pasó. 819 01:02:54,000 --> 01:03:00,000 Se imprimirá todo en el orden en que ponemos en la matriz. 820 01:03:00,000 --> 01:03:10,000 Sin preservar el orden en ese sentido. 821 01:03:10,000 --> 01:03:15,000 >> Volviendo al problema de visitantes únicos 822 01:03:15,000 --> 01:03:20,000 donde queremos ser capaces de repetir un archivo, 823 01:03:20,000 --> 01:03:24,000 y vamos a dar some_file.txt, 824 01:03:24,000 --> 01:03:27,000 y vamos a iterar sobre ella de esta manera. 825 01:03:27,000 --> 01:03:31,000 Dijimos que queríamos utilizar una matriz para asegurarse de que nos dieron todo el 826 01:03:31,000 --> 01:03:36,000 líneas únicas de allí, y podríamos hacerlo muy fácilmente 827 01:03:36,000 --> 01:03:49,000 con sólo almacenar en una matriz que, por supuesto, declarar fuera del ámbito de un bucle, 828 01:03:49,000 --> 01:03:55,000 y nos dijo que si usamos las líneas en el archivo como las claves en nuestra gama 829 01:03:55,000 --> 01:03:59,000 si entramos en una línea duplicada estaríamos anulando el valor anterior. 830 01:03:59,000 --> 01:04:08,000 No es siempre posible tener dos llaves que son idénticos en la misma matriz. 831 01:04:08,000 --> 01:04:13,000 Podemos hacer precisamente eso. 832 01:04:13,000 --> 01:04:17,000 Nos desharemos de esta declaración eco aquí. 833 01:04:17,000 --> 01:04:24,000 Aquí está guardando la línea en el archivo en nuestro arsenal 834 01:04:24,000 --> 01:04:28,000 utilizando sí mismo como la clave. 835 01:04:28,000 --> 01:04:32,000 No hay nada a ella, y resulta que ni siquiera necesita esta clave. 836 01:04:32,000 --> 01:04:38,000 No hace falta que me variable. 837 01:04:38,000 --> 01:04:43,000 En este punto, si tuviéramos que hacer otro bucle foreach 838 01:04:43,000 --> 01:04:48,000 y estábamos a un bucle sobre cada arr 839 01:04:48,000 --> 01:04:56,000 y la línea de ahora, si nos hacemos eco-oops, lo siento. 840 01:04:56,000 --> 01:05:00,000 No podemos usar la coma. Tenemos que usar esto como palabra clave. 841 01:05:00,000 --> 01:05:05,000 Ahora bien, si nos hacemos eco de la línea que debemos obtener todas las palabras únicas en el archivo. 842 01:05:05,000 --> 01:05:10,000 Si subimos a some_file.txt, 843 01:05:10,000 --> 01:05:19,000 y digamos que hacemos manzana, plátano, manzana, manzana, plátano, 844 01:05:19,000 --> 01:05:22,000 si vamos a imprimir todas las palabras únicas en este archivo sólo debe recibir 845 01:05:22,000 --> 01:05:30,000 manzana y plátano para imprimir. 846 01:05:30,000 --> 01:05:36,000 Si ahorramos esto, ahora aquí vamos a volver a aumentar, 847 01:05:36,000 --> 01:05:44,000 php unique.php, y ta-da. 848 01:05:44,000 --> 01:05:51,000 Hemos uniqued con éxito el archivo. 849 01:05:51,000 --> 01:05:55,000 >> La última parte de este problema se le pide que ordenar esta matriz antes de imprimir 850 01:05:55,000 --> 01:05:58,000 porque en este sencillo ejemplo que acabamos de hacer 851 01:05:58,000 --> 01:06:04,000 tuvimos la suerte en el sentido de que el archivo 852 01:06:04,000 --> 01:06:06,000 que hicimos este ejemplo inventado con manzanas y plátanos. 853 01:06:06,000 --> 01:06:08,000 Fue ordenado ya. 854 01:06:08,000 --> 01:06:19,000 Pero el uso de la función de clasificación simple que usted puede ordenar una matriz, que es bastante ingenioso. 855 01:06:19,000 --> 01:06:24,000 La última cosa que quería hablar con ustedes acerca muy rápido 856 01:06:24,000 --> 01:06:31,000 es que este tipo de PHP está muy bien, y es super útil 857 01:06:31,000 --> 01:06:43,000 saber que hacer si alguna vez tiene que hacer cosas pequeñas, rápidas programación. 858 01:06:43,000 --> 01:06:48,000 Por ejemplo, si tengo que escribir un programa que, por ejemplo, 859 01:06:48,000 --> 01:06:53,000 pone a todo el mundo en secciones que no voy a ir y escribir en C. 860 01:06:53,000 --> 01:06:55,000 Esto va a ser largo. 861 01:06:55,000 --> 01:06:57,000 Va a ser una especie de dolor, especialmente si hay archivos involucrados, 862 01:06:57,000 --> 01:07:00,000 como ustedes han visto. 863 01:07:00,000 --> 01:07:05,000 Es tan bonito que sólo con esto mucho código aquí 864 01:07:05,000 --> 01:07:08,000 hemos sido capaces de extraer a través de un archivo, extraiga todos los valores únicos 865 01:07:08,000 --> 01:07:11,000 y los imprime de vuelta. 866 01:07:11,000 --> 01:07:16,000 >> Sin embargo, para sus trabajos, de sus proyectos, 867 01:07:16,000 --> 01:07:20,000 si usted está construyendo sitios web con PHP es que el poder 868 01:07:20,000 --> 01:07:25,000 nos estamos quedando nuestros archivos PHP a través de este intérprete, 869 01:07:25,000 --> 01:07:29,000 y el intérprete está procesando todo dentro de las etiquetas PHP, 870 01:07:29,000 --> 01:07:34,000 dejando todo lo demás intacto y escupiendo los resultados. 871 01:07:34,000 --> 01:07:40,000 Podemos hacer esto para construir HTML mediante programación. 872 01:07:40,000 --> 01:07:46,000 Ahora bien, si nos remontamos a la especificación, el último problema en la especificación 873 01:07:46,000 --> 01:07:56,000 habla de esta idea de las concentraciones 874 01:07:56,000 --> 01:08:01,000 y la creación de un menú desplegable, 875 01:08:01,000 --> 01:08:06,000 que puede o no quiere hacer, dependiendo de lo que el proyecto final está haciendo, 876 01:08:06,000 --> 01:08:13,000 que permite al usuario seleccionar de una lista de todas las concentraciones posibles 877 01:08:13,000 --> 01:08:15,000 su única concentración. 878 01:08:15,000 --> 01:08:21,000 Ahora, este es un tipo de dolor que escribir esto 879 01:08:21,000 --> 01:08:25,000 y tenemos que hacer todo esto de forma manual, especialmente cuando usted está teniendo para asegurarse 880 01:08:25,000 --> 01:08:28,000 que tiene todos los soportes angulares en el lugar correcto y todas las citas en el lugar correcto, 881 01:08:28,000 --> 01:08:34,000 así que con PHP se puede hacer esto mediante programación, y usted puede hacer esto muy rápidamente. 882 01:08:34,000 --> 01:08:36,000 >> Vamos a ver cómo se hace esto. 883 01:08:36,000 --> 01:08:42,000 Vamos a abrir un nuevo archivo. 884 01:08:42,000 --> 01:08:46,000 Vamos a poner en nuestras etiquetas PHP. 885 01:08:46,000 --> 01:08:53,000 Vamos a llamarlo concentrations.php, 886 01:08:53,000 --> 01:08:58,000 y ahora, cuando usted está haciendo esto, un poco de algo bueno para pensar 887 01:08:58,000 --> 01:09:02,000 cuando usted está tratando de mezclar y combinar su PHP y el HTML 888 01:09:02,000 --> 01:09:08,000 es determinar, de acuerdo, ¿cuál es la parte que quiero generar mediante programación? 889 01:09:08,000 --> 01:09:11,000 ¿Cuál es la parte que puede generar mediante programación? 890 01:09:11,000 --> 01:09:17,000 Es cierto que se puede hacer todo de su HTML 891 01:09:17,000 --> 01:09:19,000 dentro de los bloques de PHP. 892 01:09:19,000 --> 01:09:24,000 Usted puede repetir todo el HTML como cadenas. 893 01:09:24,000 --> 01:09:30,000 Por ejemplo, si quiero empezar a hacer las etiquetas seleccionadas dentro de PHP 894 01:09:30,000 --> 01:09:46,000 Lo que puedo decir de eco, por ejemplo seleccionar el nombre = concentración, 895 01:09:46,000 --> 01:09:49,000 y luego por debajo que podría tener otra etiqueta eco 896 01:09:49,000 --> 01:09:57,000 o otro eco llamado cerrar la selección. 897 01:09:57,000 --> 01:10:00,000 Esta es una manera de hacerlo, porque lo que esto es, literalmente, va a hacer 898 01:10:00,000 --> 01:10:09,000 es imprimir esta cadena cuando se ejecuta a través del intérprete PHP, 899 01:10:09,000 --> 01:10:12,000 por lo que el resultado será HTML. 900 01:10:12,000 --> 01:10:18,000 Si guarda este archivo, ya que es en estos momentos 901 01:10:18,000 --> 01:10:24,000 y corro concentrations.php php 902 01:10:24,000 --> 01:10:26,000 mira lo que tengo. 903 01:10:26,000 --> 01:10:30,000 Tengo esta etiqueta de selección abierto cerca. 904 01:10:30,000 --> 01:10:36,000 >> Si tuviera que hacer esto y yo íbamos a salvar este resultado a un archivo, 905 01:10:36,000 --> 01:10:45,000 decir, concentrations.html-espera, parece que el l ha pasado al otro lado- 906 01:10:45,000 --> 01:11:02,000 ahora si me abro aquí concentrations.html veis que yo tengo un archivo HTML válido. 907 01:11:02,000 --> 01:11:05,000 ¿Eso es un poco raro? 908 01:11:05,000 --> 01:11:09,000 Estamos usando PHP para crear HTML, crear HTML válido. 909 01:11:09,000 --> 01:11:13,000 La forma en que lo estamos haciendo es que estamos sólo tener la impresión de PHP 910 01:11:13,000 --> 01:11:16,000 el código HTML que queremos imprimir. 911 01:11:16,000 --> 01:11:20,000 Esto es literalmente cómo los sitios web de PHP están funcionando. 912 01:11:20,000 --> 01:11:24,000 Cuando usted visita un sitio web que le envía a algo así como 913 01:11:24,000 --> 01:11:30,000 algo, algo, algo dot com slash index.php 914 01:11:30,000 --> 01:11:33,000 el equipo está literalmente llamar index.php, 915 01:11:33,000 --> 01:11:38,000 ejecutarlo a través del intérprete PHP, y todo lo que sale basura 916 01:11:38,000 --> 01:11:49,000 que está enviando de vuelta al navegador y decir hey, navegador, interpretar esto como HTML. 917 01:11:49,000 --> 01:11:54,000 Lo bueno es que puede ser un dolor de escribir constantemente eco, eco, eco, eco 918 01:11:54,000 --> 01:11:59,000 y encerrar todo en citas como esta, así que si quieres escribir 919 01:11:59,000 --> 01:12:04,000 el código HTML que va a ser estático usted mismo lo puede hacer de esta manera, 920 01:12:04,000 --> 01:12:16,000 poner fuera de ella, lo cierra, 921 01:12:16,000 --> 01:12:21,000 y aquí sólo se coloca dentro de las etiquetas PHP que usted conoce 922 01:12:21,000 --> 01:12:26,000 desea generar mediante programación, y en este caso se trata de las etiquetas de opción 923 01:12:26,000 --> 01:12:31,000 que son un dolor de generar. 924 01:12:31,000 --> 01:12:37,000 >> Por ejemplo, se podría generar un millar de etiquetas de opción 925 01:12:37,000 --> 01:12:48,000 haciendo algo como esto, $ i <1000, i + + 926 01:12:48,000 --> 01:13:00,000 y diciendo valor eco-option = $ gritos, no puedo hacer eso. 927 01:13:00,000 --> 01:13:03,000 Bueno, vamos a darle una oportunidad y ver qué pasa. 928 01:13:03,000 --> 01:13:22,000 $ I y luego decir $ i 01:13:27,000 En lugar de tener que escribir esa etiqueta opción mil veces diferentes 930 01:13:27,000 --> 01:13:33,000 Estoy utilizando el código PHP para generar de forma automática, mediante programación. 931 01:13:33,000 --> 01:13:38,000 Un poco ingenioso. Si. 932 01:13:38,000 --> 01:13:41,000 Recuerdo que esto se menciona ni en la conferencia o el tutorial, 933 01:13:41,000 --> 01:13:43,000 pero ¿cuál es la diferencia entre las comillas, 934 01:13:43,000 --> 01:13:45,000 las normales y estas cosas simples? 935 01:13:45,000 --> 01:13:49,000 Eso es realmente algo que he hecho mal aquí que yo iba a mostrar. 936 01:13:49,000 --> 01:13:52,000 Las comillas simples no permiten los caracteres especiales, 937 01:13:52,000 --> 01:13:57,000 así que todo el interior de una sola cadena entre comillas se interpreta literalmente. 938 01:13:57,000 --> 01:14:02,000 Si yo tuviera un \ n dentro de comillas simples y salvo esto, por ejemplo, 939 01:14:02,000 --> 01:14:07,000 y ahora voy por aquí y ejecutarlo- 940 01:14:07,000 --> 01:14:12,000 oops, ¿dónde voy? 941 01:14:12,000 --> 01:14:19,000 Oh, es porque se me olvidó el $. 942 01:14:19,000 --> 01:14:25,000 >> Ahora bien, si abro-en realidad, aquí, vamos a deshacernos de la que escribe a un archivo. 943 01:14:25,000 --> 01:14:27,000 Vamos a leerlo. 944 01:14:27,000 --> 01:14:34,000 Aquí puede ver que tengo este literal \ n en la cadena, como no es una nueva línea actual, 945 01:14:34,000 --> 01:14:38,000 y del mismo modo, en lugar de realmente interpolando el valor de esta variable 946 01:14:38,000 --> 01:14:42,000 me dio la $ i en sí, que es una especie de dolor. 947 01:14:42,000 --> 01:14:46,000 La forma de evitar esto es utilizar las comillas dobles, 948 01:14:46,000 --> 01:14:52,000 y luego, cuando se utiliza comillas dobles que en realidad se 949 01:14:52,000 --> 01:14:56,000 adecuadamente interpolar los valores de todas estas variables en aquí 950 01:14:56,000 --> 01:14:59,000 y también reconocen esta \ n para ser la nueva línea que es 951 01:14:59,000 --> 01:15:02,000 y no \ n. 952 01:15:02,000 --> 01:15:07,000 Con los solos es agradable cuando tienes 953 01:15:07,000 --> 01:15:10,000 personajes que podrían ser interpretados como caracteres especiales, porque entonces usted no tiene que 954 01:15:10,000 --> 01:15:15,000 escapar de ellos constantemente. 955 01:15:15,000 --> 01:15:18,000 Las cosas pueden causar problemas, y muchas veces la forma en que lo hacen, 956 01:15:18,000 --> 01:15:24,000 sólo para hacer las cosas fáciles, es que si voy a tener nada 957 01:15:24,000 --> 01:15:31,000 HTML como en mi código voy a incluir dentro de comillas simples de edición 958 01:15:31,000 --> 01:15:36,000 y luego utilizar este operador de concatenación 959 01:15:36,000 --> 01:15:43,000 para concatenar las variables pulg 960 01:15:43,000 --> 01:15:47,000 Esta es otra manera de hacerlo 961 01:15:47,000 --> 01:15:52,000 donde tenemos el punto que va a conectar esta es una cadena 962 01:15:52,000 --> 01:15:56,000 con esto con esto con esto, 963 01:15:56,000 --> 01:15:59,000 y ahora no tiene que escapar de estas comillas dobles. 964 01:15:59,000 --> 01:16:02,000 No es necesario que utilice este tipo de escapar. 965 01:16:02,000 --> 01:16:08,000 Ellos literalmente va a imprimir como comillas y luego este chico aquí. 966 01:16:08,000 --> 01:16:11,000 Esta es otra manera de mezclar todo junto. 967 01:16:11,000 --> 01:16:14,000 >> [Estudiante] Además, cuando se hizo eco de gettype no hay comillas en absoluto. 968 01:16:14,000 --> 01:16:22,000 Bien, así que es una especie de eco especial en el sentido de que no es necesario paréntesis. 969 01:16:22,000 --> 01:16:29,000 Usted no tiene que tener necesariamente las comillas alrededor de las variables, 970 01:16:29,000 --> 01:16:37,000 como que es válido decir echo $ i, y que va a interpretar esto como una cadena. 971 01:16:37,000 --> 01:16:44,000 Se va a hacer el reparto, así que pudimos hacer esto, y eso es válido también, pero nosotros no lo necesitamos. 972 01:16:44,000 --> 01:16:48,000 Es opcional. 973 01:16:48,000 --> 01:16:53,000 En conjunto de problemas de esta semana mirar hacia fuera para una gran cantidad de este tipo de cosas 974 01:16:53,000 --> 01:16:58,000 donde usted está mezclando y combinando HTML con PHP 975 01:16:58,000 --> 01:17:08,000 al igual que este, y ahora si que desplazarse hacia atrás y corremos este 976 01:17:08,000 --> 01:17:13,000 podemos ver que tenemos un montón de valores de opción 977 01:17:13,000 --> 01:17:15,000 que acaba de imprimir. 978 01:17:15,000 --> 01:17:20,000 Tenemos todo esto que he HTML generado muy rápido para nosotros. 979 01:17:20,000 --> 01:17:22,000 Lo dejo como ejercicio. 980 01:17:22,000 --> 01:17:24,000 Es muy similar a la lectura de archivos que hicimos anteriormente. 981 01:17:24,000 --> 01:17:31,000 >> Hay un archivo concentrations.txt que se puede bajar de la CDN, 982 01:17:31,000 --> 01:17:34,000 y se puede abrir utilizando el mismo truco foreach que hicimos antes, 983 01:17:34,000 --> 01:17:39,000 foreach y sólo hay que hacerse eco de una opción y enchufe 984 01:17:39,000 --> 01:17:44,000 los valores adecuados, las teclas apropiadas e índices, 985 01:17:44,000 --> 01:17:49,000 y luego te dan un menú desplegable que literalmente crea 986 01:17:49,000 --> 01:17:54,000 programación para todos ustedes de las diferentes concentraciones de Harvard. 987 01:17:54,000 --> 01:17:57,000 Una cosa muy útil a tener. 988 01:17:57,000 --> 01:18:02,000 Hay un montón de cosas de configuración para esta tarea. 989 01:18:02,000 --> 01:18:07,000 Si no lo ha hecho ya tomar la siguiente media hora, una hora, 990 01:18:07,000 --> 01:18:10,000 algún tiempo esta noche definitivamente con seguridad, 991 01:18:10,000 --> 01:18:14,000 caminar a través de la especificación de conjunto de problemas, 992 01:18:14,000 --> 01:18:20,000 ver lo que está pasando con la creación de los vhosts, el anfitrión local, todas esas cosas. 993 01:18:20,000 --> 01:18:24,000 Una cosa a destacar es que en estos momentos 994 01:18:24,000 --> 01:18:30,000 en la mayoría de los conjuntos de problemas que hemos estado yendo a la carpeta de Dropbox 995 01:18:30,000 --> 01:18:34,000 y luego descargar el boletín de problemas zip y descomprimirlo. 996 01:18:34,000 --> 01:18:36,000 Para este conjunto de problemas que usted no desea. 997 01:18:36,000 --> 01:18:40,000 ¿Quieres ir a este directorio vhosts. 998 01:18:40,000 --> 01:18:45,000 Te quiero entrar en vhosts y entrar en el directorio del servidor local dentro de ella, 999 01:18:45,000 --> 01:18:50,000 y aquí es donde usted desea bajar el archivo zip, 1000 01:18:50,000 --> 01:18:55,000 descomprimir, y estar listo para ir. 1001 01:18:55,000 --> 01:18:57,000 Vas a tener que seguir los pasos de cerca. 1002 01:18:57,000 --> 01:19:02,000 >> Si usted tiene alguna pregunta, envíe un correo electrónico, publicarlos en discutir, llegar a horario de oficina. 1003 01:19:02,000 --> 01:19:08,000 Gracias chicos. La semana que viene vamos a tener una sesión de revisión de la prueba. 1004 01:19:08,000 --> 01:19:12,000 Disfrute de su conjunto de problemas último. Espero que todo va muy bien. 1005 01:19:12,000 --> 01:19:14,000 [CS50.TV]