[Powered by Google Translate] [Artículo 8] [Menos Cómodo] [Nate Hardison] [Harvard University] [Esta es CS50.] [CS50.TV] Bienvenidos a nuestra segunda a última sección. En esta semana vamos a hablar de PHP, y luego la próxima semana vamos a hacer un pequeño repaso para la prueba 1. Vamos a partir de la página 3 del problema establece pack, y vamos a trabajar a través de la sección de preguntas con bastante rapidez. En la página 3, empezamos a hablar de la diferencia entre C y PHP en el sentido de que PHP es un lenguaje de tipos dinámicos, mientras que C es estático de tipos, y nadie ha hecho muy rápido ninguna codificación en algo como PHP o Python o Ruby antes, JavaScript? Totalmente nuevo? Bien. Todos estos lenguajes que acabo de mencionar son muy diferentes de lenguajes como C y C + + y Java en el sentido de que cuando se declara una variable que no tiene que declarar ¿qué tipo de variable es, por lo que en C que estaban atrapados tener que decir siempre esto va a ser una variable int, o esto va a ser una variable char *, mientras que con PHP, con Python, con Ruby, con una gran cantidad de idiomas más modernas que no tienen que hacer eso en absoluto. Usted acaba de declarar la variable, y en el caso de PHP usted declara que es una variable con el prefijo con un signo $, y luego el tipo de la variable se determina por cualquier valor que está sosteniendo, que es una especie de fresco. Para jugar con esto un poco, tenemos ejemplo de código PHP aquí entre las etiquetas de inicio y fin. Estamos utilizando este tipo de como HTML en el sentido de que tenemos estas escuadras aquí para abrir y cerrar. Verás esto con HTML. Verá la misma clase de sintaxis de XML también. Esto indica el comienzo de un bloque de PHP. Esta php? Es específico de PHP. Cerramos todo con un> también. Vamos a abrir un archivo en nuestro dispositivo mediante lo que usted desea. En este paquete se dice llamar dynamic.php. En verdad, se le puede llamar lo que quieras, pero el nombre del archivo subido y será importante más adelante, por lo que sólo recuerda como se llame. Voy a cambiar al aparato, y yo voy a hacer un directorio para sección 9 Yo creo que estamos en este momento. Y vamos a entrar en la sección 9, y yo voy a usar gedit. Vamos a ver, gedit, y yo voy a llamar dynamic.php mío. Boom. Dentro dynamic.php, ya que este es un archivo PHP y quiero ejecutar este a través del intérprete PHP Tengo que empezar todo de aquellos con etiquetas abiertas, así que voy a empezar a aquellos de inmediato, darme un poco de espacio entre las etiquetas, y entonces el objetivo de este ejercicio era jugar con esta función se llama gettype, por lo gettype, esta función aquí. Observe que no hay ningún guión o un espacio o un guión ni nada de eso que separa las dos palabras, obtener y escribir, sólo una palabra del todo. Pero lo que esto va a hacer es si paso en una variable para gettype, digamos $ o $ var x, esto me va a decir en una especie de formato de depuración lo que el nombre de ese tipo es. Vamos a experimentar aquí. En particular, si uno mira hacia atrás en la especificación del conjunto de procesadores tenemos unas pocas líneas de código diferentes aquí. En la primera línea de código que inicializa esta variable, $ var, que es igual a 7, y luego tenemos esta línea printf que dice: hey, var printf está en blanco. Printf es una de las muchas formas en que puedes imprimir cosas en PHP. A menudo, usted verá la función de eco en lugar de printf, printf pero todos estamos familiarizados con haber estado programando en C por un tiempo. Lo que en realidad se puede hacer es que vamos a ver si funciona copiar y pegar. Voy a darle una oportunidad. Vamos a ir de nuevo hacia el aparato. Bueno, y ahí vamos. Y el espacio es un poco raro, pero aquí vamos. Tenemos el código aquí. [Estudiante] ¿Es estilo no es bueno a la pestaña él? ¿Cómo dice? [Estudiante] ¿Es convencional a la pestaña de ello? Bien, así que Sam le pregunta si es convención a la ficha o no. Por lo general sí. En este caso he optado por no hacerlo. Honestamente, usted verá cosas diferentes entre los distintos programadores. PHP se suele utilizar con frecuencia en combinación con HTML y otros idiomas, por lo que a veces la impresión se verá un poco raro si guión en PHP inicio y fin. Realmente depende. En este caso, la copia y pegar no pega las pestañas para mí, pero sin duda es, como usted ha dicho, hacerlo más claro. Muy bien, si guarda este código en dynamic.php entonces lo que se puede hacer es bajar a la ventana de terminal donde estoy por aquí en gedit, y para hacer el equivalente de compilación usando make y luego ejecutar el código en C todo lo que tiene que ver con el archivo PHP es poner en marcha el intérprete PHP, que es un pequeño programa llamado PHP, y el argumento que da al intérprete es el archivo que desea interpretar. En este caso, dynamic.php. ¡Vaya, ¿dónde lo pongo? Oh, me lo puse en la sección 9, y aquí estoy. Por eso. Ahora si me quedo otra vez vemos que en mi primera llamada función gettype var es un número entero. En la siguiente var es una cadena, y luego en el tercero var es un boolean. Lo interesante de esto es que si nos desplazamos de nuevo vemos que estos son los tipos similares a los que teníamos en C. Tuvimos ints en C. Hemos tenido suerte de cadenas en C, así cadenas no eran un tipo totalmente de fiar en el sentido de que nuestra cadena CS50 era realmente qué? ¿Cómo dice? Missy? [Missy] Char *. Sí, fue este char * que utilizamos. En el comienzo del semestre de que estábamos usando el tipo de cadena, pero en realidad era un char * bajo el capó. Acabamos de tipo definido, mientras que en PHP estas cadenas son un tipo real. No hay nada más de esto tipo char *. Vas a ver que podemos hacer muchas más cosas con las cadenas mucho más fácilmente en PHP que pudimos en C, y, por último, tenemos este tipo boolean, y la gran diferencia aquí es que si se desplaza hacia abajo, vemos que el nombre de este tipo Ahora string entero, booleano y en lugar de, int y bool y como se recogen diferentes lenguajes de programación, suponiendo que en algún momento de sus vidas que usted entre en contacto con los diferentes te darás cuenta de pequeños caprichos como este donde C llama enteros enteros. Algunos lo llaman enteros. Hay otros términos que usted encuentre. Int grande que hemos visto hoy en SQL. También hay número y luego bool, boolean, todo tipo de diferencias allí. Esto no es muy interesante, pero ahora me voy a dar un poco de tiempo- si se amplía fuera a trabajar a través de este ejercicio en la parte inferior de la página 3 donde se le pregunta qué tipos corresponden a estos valores aquí en la parte inferior. Contamos con 3,50. Tenemos esta cosa aquí, que es interesante. No hemos visto eso antes, aunque si usted ha estado siguiendo a lo largo de conferencia usted probablemente ya sabe lo que es eso. Luego tenemos esto, que esto es una especie de funky. Usted reconoce esto. ¿Qué es esto en C? Sam? ¿Qué le ofrecemos en este C? Abriría un archivo llamado dynamic.php y hacerlo legible. Sí, y ¿cuál sería el tipo de variable que queremos asignar a este? Estrella del archivo. >> Exactamente, queremos asignar a un archivo de estrella. Esto es legítimo PHP también. Ejecute eso. Vea lo que sucede cuando se pasa eso en gettype. Y luego también echa un vistazo a lo que es nulo, lo que podría ser en PHP. Te voy a dar un par de minutos. Usted, literalmente, puede copiar y pegar estos valores en, y luego vamos a hacer una llamada al azar poco sobre usted y ver lo que tienes. [Estudiante] Tengo una pregunta. << Yeah. En una de las conferencias David dijo que hay algo que usted puede poner en la parte superior de su archivo de modo que usted no tiene que escribir en PHP cada vez. ¿Qué ha sido eso? Probablemente estaba hablando de la explosión libra, la explosión hash. Es una directiva que si marca el archivo como ejecutable entonces lo que hace es cuando se ejecuta el archivo que le dirá al programa de shell para utilizar el intérprete de PHP para interpretar los contenidos del archivo. La pregunta es ¿cuál fue la línea especial que podríamos incluir en la parte superior de nuestros archivos PHP para no tener que incluir esta línea de PHP o PHP este comando cada vez que desee ejecutar el archivo? Y usted puede hacer esto con un montón de archivos diferentes. Creo que depende de la ubicación del binario PHP se almacena, pero a menudo usr / bin / php es un buen lugar para comenzar. Puede resolver esto exactamente por volver a su aparato y escribiendo cuál php. El comando que se da cuenta de cuando estás ejecutando binario o un comando en el archivo correspondiente. Esto me dice que el PHP es realmente aliasing este archivo binario que se almacena en usr / bin, que es donde muchos de los binarios del sistema están instalados. Por ejemplo, si me desplazo hasta la cima, ahora que he puesto este #! en línea aquí Me puede desplazarse hacia abajo, y puedo tratar de ejecutar dynamic.php, pero me sale este error sobre el permiso que se les niega, y lo que eso significa es que este archivo no está dando permisos de ejecución. No está marcado como un archivo que alguien puede correr. Al hacer make o Clang y tienes un archivo ejecutable de la misma el compilador fue lo suficientemente inteligente como para saber que hey, estoy construyendo un ejecutable. Es posible que desee para su ejecución, por lo que sería configurar automáticamente los permisos para usted. Este no es el caso, sin embargo, cuando se crea un archivo normal de cero, La razón es por lo general no desea tener ningún archivo en su sistema sea ejecutable, por lo que en realidad tienen que ir y hacerlo manualmente. La manera más fácil de hacerlo es con el comando chmod, y chmod + x dice agregar el bit ejecutable porque no es la parte de lectura, el bit de escritura y el bit ejecutable, r, w y x, y diciendo: chmod + x se enciende el bit ejecutable para entonces el archivo que especifica, que en este caso será dynamic.php. [Estudiante] es que enciende por todo el mundo? Vamos a ver esto, así que ¿cómo puedo comprobar para ver los permisos? ¿Sabes cómo me gustaría comprobar los permisos de un archivo? [Respuesta de los estudiantes inaudible] ¿Cómo? >> [Estudiante] XSD. XSD nos da el archivo en hacks. Listado de todos los archivos,-l, se me muestre todos los archivos en mi directorio un poco en su listado largo, detallado, y aquí vemos que este archivo dynamic.php fue modificada por última vez 5 de noviembre a 4:21 PM. El propietario de este archivo se jharvard. Ese es el usuario que ha iniciado la sesión Ese es el usuario estoy trabajando como, y si usted está también en el aparato que está también trabajando como jharvard usuario. Usted está en el grupo de estudiantes, y estas son las cosas que se ven a menudo. Podemos entrar en mucho detalle aquí, pero en su mayor parte lo que quieres ver cuando usted está mirando para ver si o no un archivo es ejecutable es principalmente el usuario que posee el archivo, el propietario, por lo que este jharvard, y entonces tenemos los bits de permisos de aquí a la izquierda, y la manera de leer esto es que el último bit típicamente se utiliza para marcar o al menos no en-en este caso esto último a menudo se ajustará al anuncio que indique que el archivo es un directorio y no un archivo normal. Entonces los siguientes 3 bits a la derecha aquí determinar los permisos que el propietario del archivo tiene, por lo que en este caso jharvard, como propietario del archivo, puede leer y escribir en este archivo, pero no hay un guión diciendo que jharvard no puede ejecutar este archivo. Los próximos 3 bits son para el grupo, por lo que este es el grupo de estudiantes, así que si hay varios usuarios en mi aparato, y que tenía múltiples usuarios como parte del grupo de estudiantes, entonces todos pueden leer el archivo, pero no puede escribir, y del mismo modo los demás, el mundo sólo puede leer el archivo también. Hay una valoración crítica buena y larga sobre esto, así que usted puede leer en línea. En la especificación del conjunto de problemas de entrar en esto con más detalle. [Estudiante] ¿El 218 se refiere al mundo? El 218 es-off de la parte superior de mi cabeza me estoy olvidando, pero no. Vamos a ver. Estoy ciega en eso ahora mismo. Volver a lo que íbamos a hacer con este chmod + x donde queríamos dar permisos dynamic.php ejecutables, y la pregunta era si esto daría permisos de ejecución para todo el mundo o sólo jharvard, y podemos ver esto de ejecutar los comandos y escribiendo ls-l, y ahora vemos que está marcada como ejecutable. Se ve que hubo un cambio de color. Ahora dynamic.php aparece en verde, y parece que la respuesta a la pregunta es qué, Charlotte? [Charlotte] Sólo jharvard. >> Sólo jharvard, sí. Si queremos convertir el bit de ejecución en todo el mundo para ¿cómo podemos hacer esto? ¿Alguna idea? >> A + x? Sí, exactamente. Charlotte dijo que podemos hacer chmod + x de una de dynamic.php, y ahora si corremos ls-l vemos que los bits de ejecución son, en efecto encendido para todos. Y en realidad se puede hacer lo contrario de esto, lo que se puede apagar para todos con menos. Ahora se ha apagado, y ahora podemos volver a encenderlo para jharvard por lo que en realidad podemos ejecutar ahora, y ahora que se ve cuando se ejecuta el código de este especial #! línea en la parte superior, #! línea, dijo a la cáscara, dijo a nuestro terminal hey, cuando el archivo se ejecuta, usar / usr / bin / php para interpretar este archivo y luego imprimir el resultado. [Pregunta estudiante inaudible] Claro, déjame pasar de regreso. Al igual que este. Usted verá todas estas directivas comenzar con este libra y luego el signo de exclamación, a veces llamado un golpe shebang, hash. [Estudiante] ¿Cómo podemos correr con dynamic.php php antes de que sea ejecutable? La pregunta era: ¿cómo podemos ejecutar esta usando el binario de PHP mientras dynamic.php no es ejecutable? Esto es súper importante porque así es exactamente como que va a trabajar cuando se escribe conjunto de problemas 7. La mayoría de los archivos de tiempo de PHP no son directamente ejecutables. La forma en que funciona es porque es el binario PHP que es ejecutable. El intérprete es lo que está siendo ejecutado, y por lo tanto lo que está haciendo es, literalmente, sorbiendo en todo el contenido de nuestro archivo y dynamic.php línea que va por la línea y ejecutar esos comandos, así que usando nuestro archivo PHP como una lista de instrucciones. No es directamente ejecutora. Ahí es donde decimos que estos archivos se interpretan en tiempo de ejecución. Es un lenguaje de tiempo de ejecución en lugar de algo que se determina en tiempo de compilación, no es un lenguaje compilado como C ¿Hay una manera de conseguir un lenguaje de tiempo de ejecución para actuar como si fuera un lenguaje de tiempo de compilación, como si usted tiene todo el rodaje realizado en el servidor en lugar de, ya sabes lo que quiero decir? Sí, así que la pregunta es ¿hay alguna manera de conseguir ejecutar idiomas momento de actuar más como los tipos en tiempo de compilación de idiomas? Y ahí están, quiero decir, que es un área activa de investigación para muchas de estas empresas. Creo que Facebook ha hecho un gran trabajo con PHP y la compilación de abajo, por lo que es más rápido, optimizando su ya que su sitio está construido en PHP. Si usted ha estado siguiendo Node.js en absoluto, que es una especie de intérprete de JavaScript para ser capaz de ejecutar JavaScript fuera del navegador, en las afueras de su navegador web, porque tradicionalmente JavaScript acaba de funcionar dentro de Firefox o Chrome, y que se utiliza para hacer animaciones fresco suceder en una página web y hacer que su página web dinámica. Eso ha sido construido sobre una gran cantidad de trabajo que ha hecho Google de que JavaScript y C + + unen, así que hay un montón de investigación activa para obtener estos lenguajes para interactuar y optimizarlos, principalmente porque mucha gente puede codificar en PHP y JavaScript porque es mucho más fácil. Es mucho más agradable. Usted no tiene punteros. Usted no tiene tipos que flotan a su alrededor. Querían obtener los beneficios de estos idiomas en tiempo de compilación con toda la comprobación del tipo y la velocidad y el uso de memoria más baja y de que todo mientras que todavía mantiene la flexibilidad y la facilidad de uso de estos los más nuevos. De vuelta a nuestro plan original de ataque. Tenemos algunas de estas preguntas aquí en nuestra especificación de problemas. Vamos a ir a través de ellos muy rápidamente, y vamos a ir por la habitación. Charlotte, ¿qué tipo es de 3,50? [Charlotte] Eso es un doble. >> Es un doble. Jimmy, ¿qué es este próximo? >> Una matriz. Una matriz, impresionante, y Jared, ¿cuál es la función fopen? [Jared] Es un recurso. >> Es un recurso. Eso es un poco de un ser nuevo, no una estrella del archivo, no un archivo. Es un recurso es el tipo en PHP, y lo siento, Ella, la hipótesis nula es lo último? Null. Null, ¿cómo se escribe en PHP? >> La misma forma. De la misma forma, capitales? >> Yeah. Sí, está bien. Aquí vamos, tenemos un doble, tenemos una matriz, tenemos un recurso, y entonces tenemos nulo. Vamos a ver ahora si la has visto- vamos a ver, por lo que ahora creo que lo que yo también quiero hacer es levantar esta página web aquí, este php.net / manual, así que si ustedes que copiar y abrir un navegador web. Voy a levantar Chrome, puesto que in Quiero mostrar que esto no sólo porque podemos hablar todo el día sobre los tipos y todas esas cosas divertidas sino porque este es el manual de PHP, y hay una gran cantidad de programadores de PHP que hay. Hay un montón de sitios web PHP por ahí, y como resultado, hay una gran cantidad de documentación sobre PHP, y el manual, este php.net, es un muy buen lugar para ir cuando tienes preguntas sobre cuál es la mejor manera de hacer X en PHP o lo que es una función parece? Sólo tipo de familiarizarse con el aspecto que tiene, porque se le viene aquí a menudo, un poco para ajustar problema 7. Si usted termina encima de hacer un proyecto final que utiliza PHP este será un lugar que se convertirá muy bien informado. A menudo, la forma de hacer esto es que utilizan Google para buscar el sitio, y no utilizar el cuadro de búsqueda que pasa aquí en la parte superior derecha, que es una especie de pequeño. Si usted está buscando en Google alrededor buscando algo que hacer con PHP y nos vemos uno de los enlaces manuales aparecer normalmente se puede confiar en que como un recurso bastante bueno. Impresionante, tan fuera de este tipo, sólo por curiosidad, cuáles no lo hemos visto? Cualquier cosa que no hemos visto aquí? [Estudiante] Recursos. >> Vimos recurso a la llamada fopen. [Estudiante] Objetos. >> Objetos que no hemos visto con seguridad. Devoluciones de llamada que no hemos visto. Hay algunos de estos pseudo-tipos. Sin duda, sólo vi entero y doble. No llegamos a ver algunos de los otros, así que si hacemos clic sobre los números enteros podemos ver hay enteros cualesquiera otros que tienen aquí? ¿Son todos tan entero, número entero, número entero. Algunos idiomas tienen grandes tipos enteros, como vimos en MySQL hoy hubo int y luego int grande. Cool. Así, PHP manual. Volvamos a nuestra especificaciones conjunto de problemas, y ahora voy a desplazarse hacia abajo en la página 4. Una de las cosas que sucede cuando recibe estos idiomas que no tienen este tipos estáticos, por lo que estos idiomas en los que tiene que declarar el tipo de variable de hasta un frente es que te dan casos en los que podría empezar a tener variables de diferentes tipos interactuar unos con otros, y PHP hace esto cuando trata de hacer lo que considera que es lo más sensato cuando se tiene 2 tipos diferentes interactúan unos con otros. Por ejemplo, si nos fijamos en estas líneas de código aquí ves que tenemos lo que sucede cuando tratamos de añadir la cadena 1 hasta el número entero 2. ¿Qué sucede si tratamos de añadir una cadena que no es un valor numérico sino más bien personajes reales, CS con el número 50? Entonces vamos a ver, ¿hay algo diferente que lo que sucede con en lugar de añadir una cadena a un número que va a añadir un número a una cadena, y así sucesivamente y así sucesivamente hasta el punto en que estamos recibiendo algún tipo de cosas raras aquí donde tenemos 7 + verdad. ¿Qué diablos significa eso? Si ustedes van por delante y pegar algo de este código en el aparato. Usted puede mantenerlo en dynamic.php. Vamos a ver qué pasa. [Estudiante] Sólo tiene que utilizar la impresión no, printf? Sí, ¿y usted encontrará que la impresión es también una función válida para imprimir en PHP. Hay muchas maneras diferentes de hacerlo. Vamos a ver con un par de los ejemplos más adelante, una vez que empieza a hablar sobre el único problema que vamos a escribir y luego la concentración problema que vamos a escribir que a pesar de que tenemos fopen y fclose que no es a menudo la forma más sencilla de leer en el contenido de un archivo. PHP tiene un montón de estos remanentes C-like. [Estudiante] Cuando pongo en todos los 6 de esas cosas que sólo te dan un número como una salida. [Nate H.] Cuando se pone en todos los 6 de estas cosas. Vamos a ver que es porque es posible- una cosa es que estas llamadas de impresión no se terminan al final con nuevas líneas. No hay nueva línea que separa cada una de estas llamadas de impresión, así que tal vez usted está recibiendo un gran número, y no deja de ser amalgama de caracteres de nueva línea. [Estudiante] Bueno, ¿cómo puedo estar seguro- Bueno, hay un montón de maneras diferentes. Manualmente, puede poner en una impresión de un carácter de nueva línea, un eco de un carácter de nueva línea, imprimir de nueva línea. [Estudiante] Así que echo es lo mismo que printf? Printf es como printf donde se está imprimiendo una cadena con formato. Lo estás suministro de la cadena de formato y, a continuación todas las variables de marcador de posición. A menudo es algo que no se utiliza- vamos a ver, como un descargo de responsabilidad, Estoy menos familiarizado con PHP que yo con los idiomas de sitios web, y cuando he programado en PHP que no suelen usar printf porque me resulta más rápido usar las funciones de interpolación de cadenas que tiene, que vamos a entrar y te voy a mostrar en un segundo, mientras que en C que tipo de tener que hacer esto hacky para conseguir que se imprima correctamente. En realidad se puede poner directamente en las variables de las cadenas en PHP. Printf es un poco demasiado largo para lo que suelo hacer. Sí, Ella. [Ella] En general, si usted consigue error de análisis significa eso- al igual que en C no le dirá exactamente dónde está el error y lo que es, ¿Eso significa mirar a través de su código completo y la figura hacia fuera? Es típicamente más específico que eso. Creo que en ese caso era un poco apagado, así que creo que en este caso nos faltaba un punto y coma. Se trataba de dar sentido a todo, así como los lenguajes interpretados, el intérprete se va a tratar y hacer todo lo posible para que todo funcione correctamente. Vas a ver, por ejemplo, en JavaScript Vas a menudo-line declaraciones finales con un punto y coma al igual que lo hacen en PHP, tal como lo hacen en C. En JavaScript algunos de los intérpretes de JavaScript en muchos de los navegadores pondrá en punto y coma para usted si le sucede que se les falta. Van a tratar de dar cabida a algunos descuido de su parte. Ahí es donde podría estar tratando y tratando y tratando de hacer que las cosas funcionen, y, finalmente, se llega a un punto donde dice bien, No puedo hacer las cosas en el rescate, y ahí es donde usted obtendrá un número de línea que puede parecer un poco fuera del lugar exacto. Está bien, así que vamos a ir a través de este muy rápido. Nos dejó con Ella, así que vamos a ir a Missy, y Missy, ¿qué impresión de la cadena 1 más el número 2 le dar? [Missy] 3. >> 3. ¿Eso tiene sentido? Algo así? ¿Te da un número? ¿Te da una cadena? [Missy] Varios. >> Se trata de un número. Pero vale la impresión, por lo que te va a dar algún tipo de cadena. Una de las cosas que podemos hacer para comprobar esto es si lo hacemos $ var = 1 + 2 y entonces decimos eco de gettype, así que estamos utilizando un tercer tipo de impresión aquí. Ahora podemos ver lo que sucede aquí. Aquí lo que tenemos es que tenemos un número entero de esto. A pesar de que se fueron sumando esta cadena en un número, que no te den una cadena a partir de la misma, al igual que Missy dijo. Estábamos preparando un entero. Está bien, así que vamos a ver, al lado de arriba, Kevin. CS + 50? >> [Kevin] 50. [Nate H.] 50. ¿Eso tiene sentido? [Kevin] Yeah. [Nate H.] ¿Por qué? ¿Por qué tiene sentido para ti? [Kevin] Porque es sólo tener la cadena, con número cero valor. Sí, muy bien. Tipo de situaciones ambiguas, pero es bueno saber lo que pasa. Stella, ¿qué pasa después con el número 1 + cadena 2? [Stella] 3. >> 3 de nuevo. Y en este caso, no obtenemos una cadena o un número? Vamos a darle una oportunidad. ¿Alguien más rápido que yo obtener la respuesta? Charlotte? Oh, no lo hizo-bien, vamos a ver, vamos a hacer el mismo tipo de cosas donde tenemos un número más una cadena, y que vamos a repetir el tipo, ver lo que tenemos. También recibimos un número entero. No importa cuál es la cadena, que uno es el número. Todavía vamos a obtener un número entero. Es todavía va a hacer lo que se podría esperar. De acuerdo, Sam, ¿qué pasa con 90 + 9 botellas de cerveza en la pared? [Sam] 99. >> 99. No había botellas de cerveza en la pared, sin embargo. Nos da un poco más de información sobre lo que está pasando. [Sam] Si hubieras escrito con letras 9 entonces tendría 90, ¿no? [Nate H.] Yeah. La pregunta era si nos hubiéramos escrito 9 sobre como N-I-N-E habríamos conseguido 99 o 90? Nos gustaría obtener 90. Es, literalmente, sólo en busca de caracteres de dos dígitos. No es lo suficientemente inteligente como para reconocer las palabras de números y esas cosas. Sí. [Estudiante] ¿Existe tal cosa como el encasillamiento en PHP? Existe, y es exactamente la forma en que lo haría en C. ¿Qué hay de 10/7, Charlotte? [Charlotte] 1,4285. [Nate H.] Sí, ¿y qué podría ser sorprendente acerca de esto? ¿Qué pasaría si lo hicieras este mismo tipo de cosas en C, si lo has hecho 10/7 en C? [Charlotte] Solo le daría usted, dependiendo de cómo se typecasted supongo sería darle sólo un número limitado de dígitos después del punto decimal. Sí, por lo que un número limitado de dígitos después del punto decimal. ¿Qué otra cosa podría ser, ¿le dará ningún dígito después del decimal? A menudo, no tan nuevo, dependiendo de cómo lo está typecasting que puede o no puede convertir en un número de coma flotante. Aquí era un poco agradable que lo hizo. Si hubiéramos mostrado esto cuando empezamos a hacer este tipo de cosas en C probablemente habría tenido sentido un poco más que no sólo tiene que ir a 1. Y, por último, Jamie, ¿qué hay de 7 + verdad? [Jamie] 8. >> 8. ¿Qué significa eso? Supongo que solo da el verdadero valor de 1. Si. ¿Qué sucede si cambiamos eso a falso? [Estudiante] 7. Sí, así que recuerda donde se habla de estos valores binarios, 1 es activado, 0 es apagado? Ahora tenemos cierto es 1, 0 es falso, y es posible que no hemos visto en los ejemplos C que hemos hecho este semestre pasado, pero históricamente el tipo bool en C no ha sido un tipo real, así que la gente ha utilizado 0 y 1 en el lugar de verdadero y falso. Esta es una manifestación de eso. Bien, así que una parte importante de todo esto es que tenemos estos tipos. Ellos pueden interactuar unos con otros. A menudo pueden interactuar entre sí de manera que sean agradables, como hemos visto aquí. Es agradable ser capaz de tener una cadena y el número 2, sumarlos y obtener 3. Eso tiene sentido. Sin embargo, cuando usted está escribiendo páginas web, y especialmente cuando usted está procesando entrada del usuario, por lo que dicen que ha escrito un formulario web que recoge la información del usuario y luego se va a procesar en la parte trasera, en el lado del servidor en el código PHP si estás esperando que el valor que el usuario escribió y presentó a su forma de ser un entero o como un número de punto flotante o algo por el estilo debe emitir explícitamente y luego hacer un poco de comprobación de tipos. Usted no quiere depender sólo de este sistema de manipulación de tipos para hacer las cosas funcionan, sobre todo por razones de seguridad y sólo por la solidez de su sitio web. Sólo es algo a tener en cuenta que cada vez que usted está manejando los datos del formulario, todo lo que viene en el correo o las superglobales get asegúrese de que siempre validar y convertirlo y encasillar a ella. Y al igual que hablábamos hace un momento que encasillamiento en PHP es exactamente el mismo que en C, donde tiene los paréntesis y luego el tipo. Tenga esto en cuenta. Una de las funciones que le será útil cuando usted está haciendo esto es que hemos estado utilizando, y esto es un poco como un aparte- hemos estado usando esta función gettype aquí para averiguar el tipo de una variable, y si bien esto es útil para la depuración y para ver qué tipo de una variable es no desea utilizar esto, por ejemplo, en una condición donde usted está comprobando para ver si gettype de $ var = entero hacer algo. Esto es malo, malo, malo. En su lugar hay estas funciones llamadas es entero, es una cadena, es array que desea utilizar en su lugar, por lo que en este caso lo que me gustaría hacer en lugar de este tipo aquí Se utiliza el número entero es var. Y están a menudo planteada * is_ en el sentido de que podría reemplazar el * con número entero, cadena, etcétera, y sólo para asegurarse de que realmente rápida Se trata int php. Parece que puede hacer cualquiera es int o se haya entero también? Sí, alias, apodos tan enteros int. Cool. ¿Cómo lo estamos haciendo? Vamos a coger el ritmo un poco. Ahora vamos a hablar acerca de las matrices, así como se puede ver en la siguiente parte de la especificación se habla de cómo las matrices en PHP son ligeramente diferentes de lo que son en C. En verdad, son una especie de amalgama de las matrices que hemos llegado a conocer y amar en C donde todo es del mismo tipo almacenan consecutivamente y de forma contigua en la memoria, y usted tiene estos índices numéricos. Usted tiene el índice 0, el índice 1, índice 2, y guarda los valores en los índices. También en C, cuando escribió Speller, que muchos de ustedes hizo el enfoque de la tabla hash, y vio que no teníamos un tipo diferente de almacenamiento en el que se cartografía la clave de un valor, por lo que al intentar guardar algo en la tabla hash había que especificar que quería guardarlo con una clave específica, y que la clave determina la ubicación del valor y donde sería almacenado. Usted tiene clase de estos dos conceptos sucediendo al mismo tiempo en una matriz de PHP, y, como resultado, a menudo nos llaman a estas matrices asociativas donde se asocia una clave en un valor. En la siguiente parte se habla de un array PHP simple donde tenemos teclas a, b, y c, todas las cadenas, la asignación a los números enteros 1, 2, y 3. Y usted puede tener llaves de diferentes tipos. Usted puede tener algunas claves que son cadenas, algunas claves que son números enteros. Puede tener valores de diferentes tipos. Usted puede tener un valor que es una cadena, un valor que es un número entero, un valor que es un objeto u otra matriz, por ejemplo, todos en el mismo objeto de matriz, que es un poco extraño. Usted no tiene que tener una matriz que se acaba de conseguir un tipo de elemento en el mismo. Usted puede tener muchas cosas diferentes pasando ahí. La otra cosa a tener en cuenta es que cuando usted ve algo como esto en su código, que es PHP válido para declarar una matriz como ésta, 0, 1, 2, 3, 4, 5, que se declara un arreglo de $ inicializado a ser esta matriz. Pero lo que en realidad estás recibiendo bajo el capó es este tipo de implícito generación de claves donde tenemos 0 a 0, 1 a 1, 2 a 2, 3 a 3. Y resulta que, incluso si usted tiene un arreglo como este chico aquí donde tiene a, b y c como las teclas de y después de empezar a usar el método push matriz para empezar a usar esta matriz como una pila, así que usted puede ver que este objeto de matriz, esta matriz es en realidad se sobrecargue. Podemos utilizarlo como una matriz. Podemos utilizarlo como una tabla hash. Podemos utilizarlo como una pila. Al empezar a empujar las cosas en esta serie la primera cosa que empujar a éste será el índice 0 y el índice 1 y el índice 2. Usted puede obtener este tipo de generación implícita de teclas a menos que se especifique de forma explícita. La forma en que se especifique explícitamente teclas, por supuesto, es mediante el uso de esta notación soporte, que es similar a las matrices excepto que en lugar de permitir que únicamente índices enteros de aquí, ahora permitimos que nada. Si desea que su clave sea una cadena, que te lo especifica así. Si usted quiere que sea un int, hay que identificarlo con el int que desea utilizar. Preguntas sobre los que hasta ahora? Una de las cosas buenas acerca de esta idea es que se puede sólo tenga un valor almacenado con una clave particular. Si volvemos a nuestro aparato-me deja borrar algunas de estas cosas. Y digamos que inicializar una matriz a ser 0, 1, 2, hecho. Si yo ahora sé que, por ejemplo, si yo echo $ arr [0] Me voy a poner el valor 0 imprimirse, y puesto que no tan sólo puede ser un valor almacenado de una clave particular si guardo algo en $ arr [0], digamos a, entonces sé que cuando me echo $ arr [0] otra vez Yo no voy a obtener 0 imprimirse como antes. Yo sólo voy a conseguir una. Así que esto es básicamente diciendo que no puedo tener $ arr [0] almacenar 2 valores diferentes. No se puede almacenar tanto en 0 y la cadena, como esto literalmente reemplaza lo que estaba en $ arr [0] previamente. La razón Traigo esto a colación es correr, a ver qué pasa. Mira que tengo 0 imprimirse y luego aquí abajo. No hay una nueva línea allí porque era perezoso y no poner ese pulg Lo bueno de esto es que podemos utilizar esto como una manera para captar esta idea de un conjunto donde no podemos tener varias claves dentro de una matriz. No podemos tener llaves idénticas dentro de una matriz. No puedo permitir que la tecla 0 y el valor 1 y la tecla 0 y un valor o la tecla 0 y el valor verdadero. Las claves son todo sólo hay una llave en la matriz. A pesar de que puede tener el mismo valor almacenado varias veces en la matriz en virtud de diferentes claves que no es posible contar con claves idénticas varias veces en la matriz de PHP. Si nos fijamos en el problema siguiente, unique.php, donde queremos abrir un archivo PHP que contiene una lista de cadenas, una cadena por línea, y queremos encontrar todas las cadenas únicas en ese archivo todo lo que tenemos que hacer es utilizar una de estas matrices de PHP y el uso de las cadenas en el archivo como las claves de este array y mantener la actualización de nuestra matriz como almacenamos estas nuevas claves. Al leer cada línea del archivo que puede almacenar en la matriz, y al final tendremos como nuestras llaves en nuestro array todas las cadenas únicas dentro del archivo. ¿Eso tiene sentido? Vamos a ver cómo funciona esto. Vamos a abrir, de acuerdo a la especificación, un nuevo archivo llamado unique.php. Abra. Oops, lo siento, nuevo archivo. Vamos a empezar con las etiquetas del inicio y el final mismo. Vamos a guardarlo en la sección 9, y vamos a llamarlo unique.php. Bien, ahora zoom in La idea es abrir un archivo, leer en archivo línea por línea. Para cada línea en el archivo vamos a tener una matriz en donde tenemos  la línea como la llave. Y luego, cuando llegamos a la final aquí Teclas $ arr son las únicas líneas de los autos, ya que sabemos que si pongo la línea en el array muchas veces se acaba de mantener reemplazando el valor anterior, y que en realidad se puede poner como line array en sí mismo así como así. Esto es un poco raro. Estamos almacenando el mismo valor de clave par una y otra y otra vez, pero ya que se garantiza que no habrá sólo una clave llamada línea por lo que si tenemos un archivo que dice-un archivo de sonidos de animales y tiene guau, guau, miau, miau, mu, mu, y cada vez que leemos un ruido animal fuera como trama y la almacenamos en nuestra matriz obtenemos trama, y ​​luego la segunda vez almacenamos trama se sobrescribirá la primera vez que lo almacena. Al final, sólo tendrá una entrada en la matriz para cada uno de los ruidos de los animales en nuestro animal archivo de ruidos. ¿Ustedes se sienten seguros de que usted puede hacer frente a la apertura de un archivo en PHP? Una forma de hacerlo-vamos a repasar esta manera rápidamente, que lo haga es con fopen, como hemos visto anteriormente. Puede fopen some_file.txt. Puede abrirlo en modo de lectura, al igual que en C. Esa es una forma perfectamente válida para hacerlo. También después de la lectura en el archivo línea por línea tienen las mismas funciones, muchas de ellas, que lo hizo en el C. Usted tiene fgets. Usted tiene feof, aunque no nos gusta usar esa porque, recuerde, que no era mucha en C. Puede hacerlo de la misma manera, pero aquí es una cosa realmente genial. Lo siento, no quiero hacer $ archivo, pero hay una función llamada archivo en PHP, y esta función aquí es genial, porque lo lee todo el contenido del archivo que usted especifique, por lo some_file.txt, lee todo el contenido de este archivo en una matriz y luego le permite iterar sobre ella, lo cual es bastante ingenioso. Si nos vamos, por ejemplo, a nuestro navegador web y nos fijamos en Google para el archivo PHP usted puede ver aquí que el manual dice que el archivo se lee un archivo entero en una matriz, y podemos file_get_contents para devolver el contenido de un archivo como una cadena, pero por lo general sólo lo recibe como un conjunto es muy bonito porque lo que hace se lo rompe de modo que cada elemento de la matriz es una línea del archivo, por lo que si nos fijamos en el archivo 0, que es la primera línea del archivo. Archivo 1, segunda línea, el archivo 2, tercera línea, y así sucesivamente y así sucesivamente. ¿No sería agradable si eso era todo lo que tenía que hacer en C? Bastante ingenioso. David mostró en esta conferencia, y fue el idioma que mostró que, además de nuestro estándar de bucle en PHP que teníamos que for ($ i = 0; i <10, i + +), y usted puede hacer esto en PHP también, lo mismo: también tenemos esta construcción fresco llamado foreach. Foreach es realmente útil cuando iterar sobre matrices o las estructuras de datos ya que le permite sacar cada elemento de la matriz sin tener que hacerlo manualmente la indexación de ti mismo, sin tener que crear manualmente una variable índice, incrementarlo, sacar el valor de la matriz en ese momento, porque eso es una cosa muy común que hacer. Usted probablemente ha hecho un montón de veces cuando estaba haciendo cosas C lo largo del semestre, por lo que con esta foreach podemos iterar sobre este conjunto de archivos, y la sintaxis es que queremos ahora lazo sobre esta matriz y especificar que la variable que vamos a utilizar para almacenar el elemento de esta matriz local, local para el ámbito de aplicación de este bucle foreach, es que vamos a llamarlo línea. Si se trata de un archivo de sólo palabras y no hay una sola palabra en una línea que podríamos llamar palabra, así, en realidad sólo le doy un nombre, lo que quieras llamarlo, y luego dentro del bucle que puede hacer lo que quieras con esta línea variable. Si no es suficiente para obtener el valor de la matriz y también desea obtener el índice junto con él se puede especificar un nombre para el índice así como el valor, y ahora usted tiene acceso a 2 variables. Tienes $ i y la línea donde $ i es el índice en el array, y la línea es la línea que recupera del archivo. Por ejemplo, si queremos imprimir echo 0 línea del archivo de este tipo, podríamos hacerlo al igual que este, "Línea $ i del fichero es $ line" y aquí es algo que también no han visto todavía ni donde acabo totalmente saltado% este negocio entero% s d que hemos tenido que enfrentar en C, y en su lugar me he ido directamente a escribiendo las variables en línea en mi cadena. Esto se llama interpolación variable, cadena de interpolación donde está relleno de las variables en el derecho, y el intérprete de PHP es lo suficientemente inteligente cuando está leyendo a través de una cadena que comienza con comillas dobles- No comillas simples, con cadenas entre comillas sencillas que usted no puede hacer esto- pero con dobles cadenas entre comillas como se lee a través de ella está buscando para las variables. Está cazando, y si ve las variables se tomará el valor de la variable y meterlo en la cadena si se puede convertir en una representación de cadena, que es bastante ingenioso. Por ahora, vamos a comentar el resto de todo, salvar esto, y lo que podemos hacer ahora es que podemos abrir un archivo que podemos llamar some_file.txt-let 's crear un nuevo archivo- y nos puede poner en un montón de cosas sin sentido en aquí sólo para probar todo lo que fuera, lo guarda, lo llaman some_file.txt, como estoy haciendo aquí arriba en la parte superior, y ahora si el zoom sólo para asegurarse de que todo está en el mismo directorio parece que tengo unique.php y some_file.txt en el mismo directorio. Si me quedo unique.php php ver cómo se imprime cada línea de mi archivo y cuál es el límite? Eso es muy poderoso, ¿no? Mira, nos tomó 3 líneas de código para abrir un archivo. Bueno, 4 líneas de código. No puedo contar hoy, claramente. Pero en realidad sólo 2 líneas interesantes de código, porque los otros 2 fueron las llaves, pero en este código mucho hemos sido capaces de abrir un archivo, iterar a través de él, saque el número de línea y la línea en sí y se imprima. Cool stuff. Charlotte. [Charlotte] Tengo una pregunta acerca de la sintaxis. Así foreach acuerdos con cada línea del archivo que se abre, y luego, cuando queremos hacer las cosas con cada línea que acaba de hacerlo como y luego asociar el valor. [Nate H.] Lo que puede hacer aquí mismo-la pregunta era el foreach tiene que ver con la matriz, por lo que la sintaxis foreach es realmente foreach y observe que no hay espacio o cualquier cosa entre el y para cada uno el. Ellos tienen que ir a la derecha junto a la otra, y entonces se toma en una matriz, y luego tienes esta otra palabra clave se llama como lo que tiene que estar ahí, y luego, después de la que usted puede poner un nombre de variable, en cuyo caso usted va a estar tirando de los valores de la matriz, no de los índices, o si lo hace como lo he escrito abajo obtener las claves y los valores. Usted tiene foreach elemento de la matriz o el par de la matriz como la forma adecuada para el valor o como el valor justo. Dependiendo de lo que necesite, si usted no necesita las llaves, entonces usted puede ir con el valor. Si desea que las teclas que puede ir con ellos. [Charlotte] También me di cuenta de que nunca declaró la i o línea. ¿Cómo siquiera saben lo que son? [Nate H.] ¿Qué entiende usted por declarar? [Charlotte] Nunca les dije lo que o la línea de medios. [Nate H.] nunca Nos dijeron que la computadora lo que significa o la línea en términos de- [Charlotte] Que están indexadas o que-son [Nate H.] Nunca hemos dicho que esto se supone que es el índice o la clave y el valor, y eso es porque ese es el intérprete PHP. Esto sirve como la declaración y dice bien, la clave va a ser una variable llamada i almacena en una variable llamada i. El valor se va a almacenar en una variable llamada línea, así que esto sirve como declaración de esas variables y dice que $ i es una clave, y $ line es un valor. Sí, Ella. [Ella] Si las llaves no se hacen numéricamente ¿cómo decidir qué orden va a imprimir todo? Es igual que el orden en que entraron en? [Nate H.] Vamos a darle una oportunidad. Vamos a crear una variable llamada arr, y podemos hacer una va a 7. Digamos que 0 va a otra matriz con 1, 2 o manzana. Digamos 7 pasa a 1, b pasa a 2, y 3 pasa a 4. Esto es un poco loco buscando un ejemplo porque estamos mezclando cadenas y enteros por todo el lugar. No hay una orden real a esta matriz. Quiero decir, todo lo que podíamos pedir por orden alfabético de las claves. Podríamos pedir todo en orden alfabético por el valor. Podríamos tratar de tener en cuenta que algunas son cadenas, algunos son enteros, y que se podía tratar de convertir a todos en el mismo tipo y ver qué pasa, o podríamos considerarlos en el valor en el que ya entraron donde ponemos a este tipo en primer lugar, a este tipo en segundo lugar, a este tipo en tercer lugar, este tipo en el cuarto, etcétera. Vamos a ver lo que sucede cuando nos encontramos este código. Si nos desplazamos hacia abajo y hacer el mismo tipo de cosas, y aquí no se está imprimiendo las nuevas líneas. Cuando lo leí cosas del fichero, fue incluido las nuevas líneas en los valores, que fue por eso que imprime muy bien, mientras que aquí no lo hizo, así que por eso todo está aplastado juntos. Vamos a añadir en la nueva línea para hacer las cosas bien. Vamos a volver a ejecutarlo, y aquí lo mira lo que pasó. Se imprimirá todo en el orden en que ponemos en la matriz. Sin preservar el orden en ese sentido. Volviendo al problema de visitantes únicos donde queremos ser capaces de repetir un archivo, y vamos a dar some_file.txt, y vamos a iterar sobre ella de esta manera. Dijimos que queríamos utilizar una matriz para asegurarse de que nos dieron todo el líneas únicas de allí, y podríamos hacerlo muy fácilmente con sólo almacenar en una matriz que, por supuesto, declarar fuera del ámbito de un bucle, y nos dijo que si usamos las líneas en el archivo como las claves en nuestra gama si entramos en una línea duplicada estaríamos anulando el valor anterior. No es siempre posible tener dos llaves que son idénticos en la misma matriz. Podemos hacer precisamente eso. Nos desharemos de esta declaración eco aquí. Aquí está guardando la línea en el archivo en nuestro arsenal utilizando sí mismo como la clave. No hay nada a ella, y resulta que ni siquiera necesita esta clave. No hace falta que me variable. En este punto, si tuviéramos que hacer otro bucle foreach y estábamos a un bucle sobre cada arr y la línea de ahora, si nos hacemos eco-oops, lo siento. No podemos usar la coma. Tenemos que usar esto como palabra clave. Ahora bien, si nos hacemos eco de la línea que debemos obtener todas las palabras únicas en el archivo. Si subimos a some_file.txt, y digamos que hacemos manzana, plátano, manzana, manzana, plátano, si vamos a imprimir todas las palabras únicas en este archivo sólo debe recibir manzana y plátano para imprimir. Si ahorramos esto, ahora aquí vamos a volver a aumentar, php unique.php, y ta-da. Hemos uniqued con éxito el archivo. La última parte de este problema se le pide que ordenar esta matriz antes de imprimir porque en este sencillo ejemplo que acabamos de hacer tuvimos la suerte en el sentido de que el archivo que hicimos este ejemplo inventado con manzanas y plátanos. Fue ordenado ya. Pero el uso de la función de clasificación simple que usted puede ordenar una matriz, que es bastante ingenioso. La última cosa que quería hablar con ustedes acerca muy rápido es que este tipo de PHP está muy bien, y es super útil saber que hacer si alguna vez tiene que hacer cosas pequeñas, rápidas programación. Por ejemplo, si tengo que escribir un programa que, por ejemplo, pone a todo el mundo en secciones que no voy a ir y escribir en C. Esto va a ser largo. Va a ser una especie de dolor, especialmente si hay archivos involucrados, como ustedes han visto. Es tan bonito que sólo con esto mucho código aquí hemos sido capaces de extraer a través de un archivo, extraiga todos los valores únicos y los imprime de vuelta. Sin embargo, para sus trabajos, de sus proyectos, si usted está construyendo sitios web con PHP es que el poder nos estamos quedando nuestros archivos PHP a través de este intérprete, y el intérprete está procesando todo dentro de las etiquetas PHP, dejando todo lo demás intacto y escupiendo los resultados. Podemos hacer esto para construir HTML mediante programación. Ahora bien, si nos remontamos a la especificación, el último problema en la especificación habla de esta idea de las concentraciones y la creación de un menú desplegable, que puede o no quiere hacer, dependiendo de lo que el proyecto final está haciendo, que permite al usuario seleccionar de una lista de todas las concentraciones posibles su única concentración. Ahora, este es un tipo de dolor que escribir esto y tenemos que hacer todo esto de forma manual, especialmente cuando usted está teniendo para asegurarse que tiene todos los soportes angulares en el lugar correcto y todas las citas en el lugar correcto, así que con PHP se puede hacer esto mediante programación, y usted puede hacer esto muy rápidamente. Vamos a ver cómo se hace esto. Vamos a abrir un nuevo archivo. Vamos a poner en nuestras etiquetas PHP. Vamos a llamarlo concentrations.php, y ahora, cuando usted está haciendo esto, un poco de algo bueno para pensar cuando usted está tratando de mezclar y combinar su PHP y el HTML es determinar, de acuerdo, ¿cuál es la parte que quiero generar mediante programación? ¿Cuál es la parte que puede generar mediante programación? Es cierto que se puede hacer todo de su HTML dentro de los bloques de PHP. Usted puede repetir todo el HTML como cadenas. Por ejemplo, si quiero empezar a hacer las etiquetas seleccionadas dentro de PHP Lo que puedo decir de eco, por ejemplo seleccionar el nombre = concentración, y luego por debajo que podría tener otra etiqueta eco o otro eco llamado cerrar la selección. Esta es una manera de hacerlo, porque lo que esto es, literalmente, va a hacer es imprimir esta cadena cuando se ejecuta a través del intérprete PHP, por lo que el resultado será HTML. Si guarda este archivo, ya que es en estos momentos y corro concentrations.php php mira lo que tengo. Tengo esta etiqueta de selección abierto cerca. Si tuviera que hacer esto y yo íbamos a salvar este resultado a un archivo, decir, concentrations.html-espera, parece que el l ha pasado al otro lado- ahora si me abro aquí concentrations.html veis que yo tengo un archivo HTML válido. ¿Eso es un poco raro? Estamos usando PHP para crear HTML, crear HTML válido. La forma en que lo estamos haciendo es que estamos sólo tener la impresión de PHP el código HTML que queremos imprimir. Esto es literalmente cómo los sitios web de PHP están funcionando. Cuando usted visita un sitio web que le envía a algo así como algo, algo, algo dot com slash index.php el equipo está literalmente llamar index.php, ejecutarlo a través del intérprete PHP, y todo lo que sale basura que está enviando de vuelta al navegador y decir hey, navegador, interpretar esto como HTML. Lo bueno es que puede ser un dolor de escribir constantemente eco, eco, eco, eco y encerrar todo en citas como esta, así que si quieres escribir el código HTML que va a ser estático usted mismo lo puede hacer de esta manera, poner fuera de ella, lo cierra, y aquí sólo se coloca dentro de las etiquetas PHP que usted conoce desea generar mediante programación, y en este caso se trata de las etiquetas de opción que son un dolor de generar. Por ejemplo, se podría generar un millar de etiquetas de opción haciendo algo como esto, $ i <1000, i + + y diciendo valor eco-option = $ gritos, no puedo hacer eso. Bueno, vamos a darle una oportunidad y ver qué pasa. $ I y luego decir $ i