DOUG LLOYD: Así que hemos hecho un montón de trabajo en C, y C es una muy cool idioma porque te da la capacidad de sumergirse realmente bajo nivel en sus programas. Tenemos la oportunidad de hacer las cosas como Realmente minutos como manipular bytes individuales de la memoria. Recordemos que realmente punteros nos permitirá que la flexibilidad. Pero es lo que siempre hay que tener ese nivel de grano fino de los detalles en nuestros programas? Probablemente no, ¿verdad? Y si vamos a tener un equilibrio entre ser capaz de hacer muy, muy cosas y promociones, realmente, realmente grandes cosas que nosotros no tenemos que pensar aproximadamente, que no tenemos que poner en práctica estos realmente grandes ideas si que ya están construidas en para nosotros, en general, para la construcción de grandes programas o proyectos grandes, probablemente vamos a errar por el lado de haber más cosas lenguaje construido en para nosotros, en lugar de tener las cosas de bajo nivel. Y ahí es donde realmente viene en PHP. Ahora, una de las razones que enseñamos PHP en CS50 es que está fuertemente inspirado en C. Y, de hecho, en mi opinión, Realmente hay dos idiomas progenitoras que son muy comunes hoy en día. C y LISP. Y son lenguas progenitoras porque todos los demás de programación moderno lenguaje que se ha desarrollado desde entonces se inspira por uno u otro sintácticamente. PHP es muy similar sintácticamente a C, mientras que lenguas como el Esquema, por ejemplo, que usted puede haber oído hablar, está fuertemente inspirado en una lengua llamado LISP, que es una lengua más antigua. Así que la razón por la que enseñamos PHP en CS50 es que, conociendo C como fundamentalmente como lo hace en este punto, recogiendo PHP, lo que le da la capacidad de hacer las cosas mucho más altos de nivel que C lo hace, no es que gran parte de un obstáculo, porque ya tiene la idea básica de la sintaxis. C ha existido por casi 45 años en este punto. PHP ha sido de alrededor de unos 20 años. Y el hecho de que 25 años En el medio, los programadores determinado que lo harían mucho más Prefiero tener habilidades de nivel superior, y los errores y luchas de los 20 años en el medio llevado a PHP y otros lenguajes modernos. De PHP una gran variedad de idioma para software que allow-- para software que-- donde necesita hacer cosas que en C son realmente complicado. Así, por ejemplo, trabajando con cadenas en C es muy complicado, porque como sabemos, las cadenas en C son en realidad conjuntos de caracteres. No es un tipo de datos incorporado. O tal vez es más importante, algo que ni siquiera cubrimos en C, ¿y si lo que necesitas hacer algunas redes de computadoras? ¿Correcto? C tiene la capacidad de hacerlo, pero es tan arcano y tan difícil de hacer realidad. ¿No sería bueno si el lengua tenía una manera fácil incorporado para implementar redes? Y PHP es un lenguaje que hace que, o facilita que, un poco más. Como ya he dicho, PHP es muy fuertemente inspirado de C. La sintaxis es muy similar. Y por lo que debe de esperar que el transición de una a la otra un poco más suave que algunos otros idiomas podrían ser. Para empezar a escribir PHP, simplemente abrir un archivo con la extensión de archivo .php. Técnicamente esto no es en realidad es necesario, pero si quieres cosas como la sintaxis destacando en el IDE, por lo que ese tipo nombres o nombres de variables, funciones, usted sabe, las palabras clave del lenguaje se destacan en un color específico, por lo general, querer nombrar sus archivos con una extensión de archivo en particular. Así que hemos llamado a nuestra archivo con un .php extensión, pero luego también con PHP, todo el código PHP que escribimos en ese archivo tiene que estar encerrado en estos PHP delimitadores que vemos aquí en la pantalla. Soporte angular? Php para empezar. Entonces escribimos todo nuestro PHP código que queremos en el medio. Y entonces ? soporte en ángulo para cerrar. Si no hacemos esto, entonces ¿Qué va a pasar? No va a estrellarse. No va a realmente arruinar nuestro programa. Pero no va a tener el efecto que queremos. ¿Qué va a pasar, en realidad, es que cuando tratamos de ejecutar este programa, todo lo que no entre estos delimitadores va a ser impreso textualmente. No va a en realidad ejecutar el código, que va a acaba imprimirlo textualmente. Ahora ¿por qué es así? Así C es lo que se conoce como un lenguaje compilado. Probablemente usted está familiarizado con el paso de hacer sus programas, convertir los archivos .c y archivos .h en un solo ejecutable con maquillaje, en particular, el uso de Clang como nuestro compilador. PHP, sin embargo, ¿no tener esta equivalente. PHP es lo que se llama un lenguaje interpretado. ¿Y qué significa eso? Bueno, eso significa que no tenemos que convertir nuestro código fuente de ceros y unos antemano. Más bien, hay un programa, que también se llama PHP, que entiende PHP y puede especie de hacerlo sobre la marcha. Eso no es realmente exactamente precisa, pero es una muy buena analogía de lo que está pasando. Es la interpretación de los ceros y unos sobre la marcha. Y por lo que si no lo sabe cómo procesar algo, si no sabe cómo PHP proceso, es probable que querido poner ese texto en allí, ¿verdad? Probablemente quería poner el código allí, incluso si no es entre PHP-- los delimitadores de PHP. Pero- por lo que no va eliminar por usted, que sólo va a básicamente descartarlo. Así que va a imprimir fuera de la pantalla. Esto parece que es una mala cosa, pero en realidad es va a ser una realidad bueno, como veremos ver cuando hablamos de Desarrollo web PHP, porque significa que podemos intercalar PHP y HTML. Podemos utilizarlos juntos para crear una página web más dinámica. Pero más sobre esto en el video en el desarrollo web PHP. Entonces, ¿cuál es la sintaxis de PHP? Eso es lo que este video se trata. Hablemos de eso. Así que para empezar, las variables. Existen variables de PHP. Hay sólo dos grandes diferencias de C. La primera es que no hay sin especificador tipo. No tenemos que decir int, char, float, todas esas cosas. No tenemos que hacer eso. PHP es un lenguaje moderno. Se puede averiguar lo que eres tratando de hacer o hacer una mejor Supongo que lo que estamos tratando de hacer. Así que eso es bastante agradable. La otra cosa es que toda la variable nombres deben comenzar con un signo de dólar. Eso es algo que acostumbrarse. Es un poco raro, porque es para que PHP puede entender lo que es una variable y lo que no lo es. Así que cada nombre de variable comienza con un signo de dólar. Así que en C podríamos decir algo así, int x = 54. No tenemos que hacer eso en PHP. Sólo podemos decir que $ x = 54. Y podríamos decir, por ejemplo, en C, si hubiéramos incluido por libra el .h CS50 archivo de cabecera, podríamos decir frase cadena = "Esta es CS50." No tenemos que hacer eso en PHP, sin embargo. Sólo podemos decir $ frase = "Esta es CS50." Y de hecho, es ahora string un tipo de datos incorporado en PHP, o más bien PHP entiende lo que una cadena es. Es separado de una matriz de personajes como es en C. Todo su favorito sentencias condicionales de C todavía están disponibles para su uso. Así que no es gran transición allí. Podemos decir-- podemos tener si las declaraciones de este tipo. si $ y 43, o $ z = 15. Así que eso es bastante sencillo. Podemos tener if y else. Podemos tener if y else if. Y notar algo muy agradable aquí, y esto es una especie de uno de los ventajas de PHP frente a C, previo aviso qué función no estamos usando aquí? Estamos usando == para comparar un variable $ nombre, en una cadena. No podíamos hacer que en C, ¿verdad? Tuvimos que usar una función llamada StrComp o StrEndComp o cualquier de sus primos relacionados. Y así ya vemos estas ventajas. No tenemos que hacer algo tan tonto o quizás poco intuitivo como llamar a una función llamada StrComp si sólo quiero probar si un valor es igual a una cadena. Yo sólo podía usar iguales iguales, como si pudiera hacer nada más. Así que hay una ventaja. A veces, por cierto, es posible que ver más si como una sola palabra, elseif. Y eso está bien en PHP también. Así que a veces es posible que vea eso. No es un error tipográfico. PHP realmente entiende elseif. No sé por qué decidido implementar que, pero como hemos visto muchas veces a través de nuestra vídeos hasta el momento, que los programadores encanta si que podemos hacer las cosas rápidamente, así que deshacerse de ese espacio aparentemente es una gran ventaja. Así que eso es siempre y elseif. También contamos con el operador ternario, recuerdo signo de interrogación de colon, de forma muy breve, si otra cosa o ramificación condicional. Y al parecer, en este, lo que estamos tratando de hacer aquí se asignar la variable $ carta ya sea verdadera o falsa, dependiendo de si $ var es un carácter alfabético. Así que esto es bastante similar a isalpha que estamos familiarizados con de C. Esta es una especie de equivalente en PHP. La función es aparentemente llamada ctype_alpha, pero así es como lo hacemos en PHP. Así que todo esto va a ser es, si $ var es una carta, $ carta es cierto. Si $ var no es una carta, $ carta es falsa. También tenemos sentencias switch todavía. Recordamos los de C también. En la parte superior hay, eso es lo que hacemos algo así como conseguir int o conseguir cadena. Así que PHP tiene que construyó en. No necesitamos la biblioteca CS50 más. Sólo podemos utilizar la función readline. Lo que va a hacer es imprimir el mensaje: "Su estado, por favor ", y luego parpadea rápida esperando a que el usuario introduzca alguna información. Ahora fíjense qué más que podemos hacer con interruptor. Si usted ha utilizado antes, se recordará que el interruptor se limita prácticamente a enteros y personajes, pero ahora podemos utilizar cadenas. Y de hecho, la sentencia switch en PHP es un poco más flexible que su primo de C. Bucles. Al igual que los condicionales, todos sus viejos favoritos siguen ahí. Tenemos mientras bucles que cuentan a partir de 1 a 100 en este caso. Hemos hacer mientras bucles que cuentan de 1 a 100, y tenemos los bucles que cuentan de 1 a 100. Así que no es gran salto allí. La sintaxis es bastante mucho exactamente lo mismo, excepto que ahora estamos utilizando variable de signo de dólar en vez de declarar variables enteras o algo así para nuestros contadores. Aquí es donde las cosas se ponen un mucho mejor que C, sin embargo. Arrays. Así recordamos cuando éramos hablando de C, con el fin para crecer y encogerse conjuntos de información, que necesitábamos para ordenar de forma predeterminada a esta idea de una lista enlazada, porque las matrices C se fijaron en tamaño. No hemos podido reducir su tamaño. No hemos podido crecer. Tuvimos que reasignar la memoria y harás toda esta locura o utilizar listas enlazadas, que tomar un buen espacio de poco más. Pero en PHP, las matrices son no se fija en el tamaño más. Pueden crecer y pueden encogerse. Así que de nuevo, estos 20 años que existía entre la primera versión de C y la primera versión de PHP, hemos decidido que, ya sabes, sería realmente grande si pudiéramos hacer esto. Y así hemos implementado esto. Así arrays PHP no son fijos en tamaño, y porque PHP en realidad no tener programador que daba al frente nociones de tipos, podemos mezclar tipos de datos en nuestros arrays, también. Así que ni siquiera tenemos que usar toda enteros o todos los puntos flotantes, podemos tener una mezcla de todo diferentes tipos en una sola matriz. Declarando una matriz es muy claro. Es como cualquier otra variable. nums $ = array (1, 2, 3, 4), siendo una función array que se construye en PHP que creará una matriz para usted. Esto crea una matriz de cuatro valores, números en este caso, llamaron $ nums. Y hay más de una manera de hacerlo. Y vamos a ver esto mucho en PHP. PHP ha sido desarrollado por muchos diferentes personas y crece y crece y crece. Por lo general hay no sólo dos o tres maneras de hacer algo en PHP, por lo general hay como 10 o 20. Esto es sólo otro común forma de declarar una matriz. $ nums = cuadrados del soporte 1, 2, 3, 4. Así que esto es una especie de parecido al ángulo de C br-- notación corchete, más bien. $ - o sería int nums cuadrado corchetes es igual llave de 1, 2, 3, 4. En PHP es $ nums = cuadrado soportes 1, 2, 3, 4. Pero estos dos ejemplos aquí me dan una matriz de cuatro en este caso los números enteros. ¿Qué pasa si quiero virar algo ahora? Bueno, yo sólo puedo decir $ nums 4, que de nuevo, todavía estamos contando desde 0 aquí en PHP, sería el quinto elemento de la matriz. Yo sólo puedo decir eso. Yo no voy a sufrir un seg quejar, porque mi matriz es simplemente va a crecer para dar cabida a eso. Eso es muy bonito, ¿verdad? Y, de hecho, yo ni siquiera necesito especificar donde quiero ponerlo. Yo sólo puedo decir esto y justo virar a la derecha en el final, O podría incluso sólo decir $ nums 20 o 1000. En realidad no importa. Está siendo sólo va a virar a la derecha en el final. Así que puedo crecer, y como-- estamos no va a cubrir aquí, pero puedo empalmar o tira elementos fuera de la matriz, así, y el conjunto se reducirá para acomodar que ahora falta o el espacio vacío. Hay otra manera de virar algo en una matriz, que es una función llamada array_push. Así que de nuevo, sólo por esta idea de ser capaz de hacer cosas de muchas maneras diferentes. Así que hemos visto tres maneras diferentes ahora para virar otro elemento en una matriz. Así que esto añade otro elemento hasta el final de la matriz $ nums. Y podemos mezclar nuestros tipos de datos. Así que podría tener una matriz de no 1, 2, 3, 4, pero 1, es cierto, 3, 4, donde la verdadera es un booleano, y luego si quiero añadir otro elemento a esa matriz, tal vez una cadena, la cadena "cinco" Yo podría hacer eso. Y ahora mi arsenal haría ser 1, verdadera, 3, 4, cinco. La palabra de cinco, no el número entero 5. Así que mucha flexibilidad allí. La flexibilidad consigue mejor aún, sin embargo, debido a que PHP tiene soporte para algo llamada una matriz asociativa. Y una especie de vaga hablado matrices sobre asociativas en C en el contexto de las tablas hash, porque lo matrices asociativas son realmente todo acerca están haciendo clave par de valores asignaciones. Y en este caso, la keys-- si estamos familiarizados con los arrays de C, las teclas son números de índice. 0, 1, 2, 3. Y los valores son lo que nos encontramos con que array 0, array 1, array 2, y así sucesivamente. Así que las claves son índices, y los valores son lo que está en esa ubicación matriz, especificado por dicho índice. Pero en PHP, no tenemos que hacer esto noción de matriz 0, array 1, serie 2 nunca más. Ahora podemos usar palabras reales para asignar claves a los valores. Y para que yo pudiera decir algo como esto. Yo podría crear una matriz usando el plaza sintaxis soporte de la siguiente manera. $ pizzas = corchete "queso" y después este tipo de notación de doble flecha, 8.99 ", pepperoni," flecha 10.99-- 9,99, etcétera. Y así, ¿qué está pasando aquí? ¿Qué estoy haciendo en realidad? Estoy creando Las asignaciones de pares de valor. Así que en lugar de decir, por ejemplo, pizzas 0, piezas 1, 2 pizzas, Ahora puedo decir pizzas queso, pizzas de pepperoni, y se refieren a los valores asociado con ellos. Así que aquí están las llaves en verde. Queso, pepperoni, verduras, pollo búfalo. Aquí está la flecha que hace esta clave de asignación par de valores. Y entonces aquí son los valores en esa ubicación array. Así que es como decir gama 0 es igual a 8.99. La clave es 0. El valor es 8,99. Ahora puedo decir queso matriz, o en este caso pizzas de queso, el queso es la clave, y lo que encuentro en queso pizzas es 8,99. Ese es el valor que encuentro allí. Así que puedo decir cosas como. queso de pizza $ = 7,99. Digamos que estoy teniendo una venta. Quiero dis-- quiero caer el precio de la pizza de queso. O puedo usar el vegetal pizza como parte de una condición, o puedo añadir un nuevo elemento a mi matriz, al igual que yo podía hacer antes. Puedo añadir un nuevo elemento a este matriz asociativa con el "tocino" clave y el valor de 13.49. Pero este tipo de introduce un problema, si usted piensa en esto por un segundo. ¿Cómo podríamos iterar a través de esta serie? ¿Correcto? En C, nos acaba de tener un para el bucle, por lo general, que iría desde 0 hasta el tamaño de la matriz menos 1. La matriz tiene n elementos en el índices válidos son del 0 al n menos 1. Así que podríamos usar un bucle for para paso a través de cada elemento individual. Pero eso no es realmente el caso más, ¿no? Ahora donde tenemos par de valores clave asignaciones donde las claves son las palabras, ¿cómo podemos iterar sobre todas las palabras? Bueno, afortunadamente, PHP tiene una manera de lidiar con esto también, y lo que vamos a saltar de nuevo a los bucles para un segundo introducir un cuarto tipo de bucle que existe en PHP llamado un bucle foreach. Y lo que es un bucle foreach hace es es básicamente la misma idea. Se puede utilizar para cualquier tipo de arreglo. Pero es básicamente el misma idea que un bucle for, excepto que en lugar de utilizar números índices, sólo tiene esta sintaxis extraña, donde se llama a cada elemento un nombre para los fines de este bucle. Así pues, en este caso, foreach ($ array como $ clave). Básicamente, lo que las notas de comentario, dentro de ese bucle foreach, que va a ir sobre cada elemento del array $, que es típicamente va a ser un array asociativo, pero en realidad puede ser cualquier tipo de matriz que desea en PHP. Y cada vez que, en un bucle for que podría han dicho corchetes $ array $ i, sólo pude decir $ clave. Así que $ clave se convierte en un alias para cada índice de su PHP matriz asociativa, y para que pueda usarlo así. Así, por ejemplo, tenemos Ahora conseguimos nuestra gama pizzas. He tipo de metí en la esquina hay por lo que podemos usarlo para hacer un ejemplo rápido. Si digo foreach ($ pizzas como $ pizza), bueno, ¿qué está pasando? Bueno, voy a recorrer todos los solo elemento de la matriz $ pizzas, y al hacerlo, voy a llamar a cada elemento, cuando estoy en el interior del cuerpo de ese bucle, $ pizza. Así que eso es una especie de suplente, recordar, que la pizza $ es un sustituto para decir $ pizzas corchetes $ i si estábamos usando un bucle for, donde podría ir desde $ i = 0 a, en este caso, $ i = 3. Si no tuviéramos pares de valores clave aquí, esto sería elemento 0, 1, 2, 3, y nos gustaría utilizar un bucle para ir $ 0 pizzas, pizzas $ 1, $ 2 pizzas, $ 3 pizzas. Así que ahora sólo $ pizzas está sustituyendo para esa tecla individual. Entonces, ¿qué es esto va a imprimir? Estoy imprimiendo $ pizza. ¿Qué voy a encontrar at-- si imprimo $ pizzas, $ i? ¿Correcto? Si voy a imprimir el elemento i de pizzas, lo voy a imprimir? Voy a imprimir el valores en ese lugar, ¿verdad? Al igual que si hacíamos esto en el contexto de C, no solemos usar nuestro iterador variable int i = 0, i es menor que 3, i ++, para imprimir 0, 1, 2, 3. Estamos imprimiendo serie 0, matriz 1, matriz 2, serie 3. Y así lo que esto imprime es esto. Es el listado de precios. 8.99, 9.99, 10.99, 11.99. Ahora una nota rápida aquí. Un bucle foreach no necesariamente imprimir las cosas en orden. No está garantizado. Por lo general lo hace. Por lo general, está basado en el orden en elementos que se añaden a la matriz, así que tener esto en cuenta. Puede que no sea el fin. Pero un bucle foreach iterará a través de cada elemento de la matriz en cuestión. En este caso, de nuevo, esa matriz es de $ pizzas. Puedo cambiar la sintaxis, sin embargo, si Quiero la clave y el valor. En lugar de decir $ pizzas como $ pizza, puedo decir esto. Y si nos fijamos en lo que he resaltado en verde aquí, se ve como una asignación de teclas par de valores. Y por lo que si usted-- incluso si usted no está todo seguro de lo que va a hacer, Probablemente se puede adivinar que $ relleno va a ser la clave en este caso y $ precio va a ser el valor. Así que estoy sustituyendo ahora cada elemento de $ pizzas como un par de valores clave, y ahora puedo hacer referencia a la clave y el valor, que podría muy bien, por ejemplo, como sigue. "Un conjunto" - se trata de una gran cantidad de impresión pasando aquí-- "en su conjunto" superando "pizza cuesta $" precio, y luego Imprimo un período y una barra invertida n. Así que ahora, el aviso de nuevo me tiene acceso a una clave, $ topping, y un valor, $ precio. Así que se puede adivinar lo que esto se va a imprimir? Hay una gran cantidad de declaraciones de impresión, pero sólo hay una barra invertida n, así que va a imprimir algo en un entire-- en una sola línea de código. Si puedo hacer referencia a la clave y el valor, entonces ahora, en lugar de sólo ser capaz para imprimir los precios, Puedo imprimir algo como esto. "Toda una pizza de queso cuesta $ 8,99." Y ahora que estoy usando todo el keys-- queso, pepperoni, vegetal, búfalo chicken-- y los valores. 8.99, 9.99, 10.99, 11.99 Así eso es sólo una manera diferente hacer un bucle foreach que en lugar de simplemente le da acceso a los valores, sólo da usted-- te da el acceso a las claves y los valores. Así imprimir información. Yo ya he hecho un par de diferentes maneras, te habrás dado cuenta. Las dos funciones que hemos principalmente visto son de impresión y eco. Y para prácticamente todos los intentos y propósitos, son exactamente lo mismo. They're-- hay una muy sutil diferencia que no es siquiera vale la pena metiendo, pero básicamente todas partes puede utilizar la impresión es probable que pueda utilizar eco también. Y eso no es el único dos. PHP tiene una gran cantidad de diferentes formas de imprimir las cosas, y también tiene formas de integrar variables en el medio de la cadena. Así que recuerde de C, ¿verdad recordar lo que la función que podemos utilizar para sustituir las variables en las cosas que queremos imprimir? Es probable que utilice este funcionar bastante. printf, ¿verdad? Así que esto es lo que teníamos antes en el interior del contexto de nuestro bucle foreach. Tuvimos estos cinco declaraciones de impresión independientes, porque esa era la única manera que realmente sabía en el momento cómo imprimir mensajes. Yo no sabía cómo integrar la variable $ superando en mi código PHP. Bueno, si me acaba de tomar una conjetura salvaje, printf, que en realidad habría funcionado. printf es una función que pueda utilizar en PHP, al igual que lo puedo usar en C. Y así algo como esto, printf, de nuevo, estamos familiarizados con eso. El primero% s se sustituye con el valor de $ topping. El segundo% s se sustituye con el valor de $ precio. Y por lo que estoy interpelando, que es sólo una forma elegante de decir que estoy pegando el variables en ese lugar. Así que estoy enchufando $ superando donde el roja% s es y $ precio donde el% s azul es, y luego me iba a conseguir el mensaje, "Toda una pizza de queso cuesta $ 8,99." No es la única manera que puedo hacerlo, sin embargo. Tal vez me gustaría utilizar este método. Esto es en realidad lo que es más comúnmente llamada interpelación variable. Puedo usar un eco. Me vendría bien una impresión también, como veremos. Pero, ¿qué está pasando aquí? En primer lugar, tengo que escapar de la muestra de dólar. Porque recuerde, cuando estábamos en realidad impresión de los precios de las pizzas, Yo estaba en realidad darles formato como cifras monetarias con un signo de dólar. Pero estamos usando signos de dólar también para representar los nombres de variables en PHP, y en particular cuando estoy el uso de este método de la rizado variable de refuerzo método de la interpelación, necesito para escapar de mi signo del dólar en lo que no lo hace Creo que estoy hablando de una variable. Va a realidad, literalmente imprimir un signo de dólar. Así especie de analogize a lo que se ve al final allí. No lo hace realidad print barra invertida n, ¿verdad? Se imprime un carácter de nueva línea. Esta es-- no va a print signo de dólar barra invertida, que va a imprimir solo un carácter de signo de dólar. La misma idea. Las secuencias de escape, lo que estas cosas se llaman. Pero noto que no estoy haciendo cualquier tipo de sustituciones% s, Estoy literalmente enchufar en estas variables. Y así, en esto-- lo que sucedería aquí es que el valor de $ topping-- de nuevo, sólo mantener con lo que hemos estado hablando de queso tan far-- obtendría enchufado allí. Y $ precio sería cualquier valor es en pizzas, entre corchetes, el queso, que era 8,99. Y así esto también imprimir "Toda una pizza de queso cuesta $ 8,99." Y como he dicho, me vendría bien imprimir aquí en vez de eco, y la funcionalidad sea casi exactamente el mismo. Sería imprimir la misma cosa. Hay otra manera de hacerlo, y esto es otra ventaja de PHP trabajar con cadenas. Podemos hacer la concatenación de cadenas. Podríamos hacer esto en C, también, usando una función llamada strcat, pero una vez más, tuvimos que llamar a funciones separadas. Fue todo este lío que hacer. Tuvimos que libra incluir string.h. Fue una producción, ¿no? Pero ahora puedo simplemente usar este operador punto para concatenar cadenas juntos. Así que estoy concatenando "en su conjunto" y a continuación, cualquiera que sea el valor de $ desmoche es, y luego otro cadena, "pizza cuesta $" y luego concatenando lo el valor de $ precio es, y luego al final estoy viradas en periodo barra invertida n. Y lo que también haría imprimir "en su conjunto" - de nuevo, si estamos hablando de la primera elemento de esa array-- pizzas "Toda una pizza de queso cuesta $ 8,99." Período, barra invertida n, otra vez, con el desmoche $ y $ precio sustitución por lo que habíamos especificado en nuestra foreach bucle como la clave de asignación par de valores. PHP puede manejar funciones. Funciones eran una especie de integrante de C, como hemos visto. Al igual que las variables, no necesitamos a especifique el tipo de retorno de la función, porque en realidad no importa. Y no especificamos la tipos de datos de los parámetros, porque en realidad no materia, como hemos visto en PHP. Cada función se introduce con la palabra clave función. Así es como lo indicamos a PHP que lo que estamos hablando es de una función. Y nosotros no tenemos que frente a principal en absoluto, debido a que el intérprete, el PHP intérprete, funciona de arriba a abajo, independientemente. Si ve usted puede hacer una llamada de función, que va a ir a buscar a la llamada de función, incluso si se trata más adelante. Pero va a leer de arriba parte inferior, por lo que no necesitamos especificar, aquí es donde usted comienza. Usted comienza en la línea 1 de su PHP y trabajar desde allí. Así que aquí es cómo crearíamos una función llamada hard_square. Al parecer, se necesita un parámetro, que estoy llamando $ x. Esta función se complica solo para ilustrar varias cosas. Todavía tenemos valores de retorno. Estoy usando un bucle for aquí. Pero es básicamente, lo que esto asciende a está a sólo $ x $ x veces. Lo que en realidad estoy haciendo es simplemente añadiendo x 0 x veces o $ X a cero $ x veces. Pero es efectivamente exactamente el mismo que multiplicar $ x veces $ x. Todavía puedo devolver un valor, en este caso $ resultado, y he hecho una función en PHP. He aquí cómo usted puede utilizarlo en su contexto. Así que tal vez estoy dentro de algún archivo PHP. Fíjese en azul hay que He usado mis delimitadores PHP, corchete angular signo de interrogación php. Entre los que se encuentran todos el PHP que quiero escribir. Así que estoy al parecer va a get-- Voy a pedir al usuario que me diera un número, tienda que variables, tienda en la variable $ x, lo que me dieron. Entonces me voy a repetir hard_square de ese valor, y al parecer va para virar en una nueva línea también, y más tarde voy a definir la función de modo hard_square que cuando hago la llamar a hard_square, que sabe de lo que estoy hablando. Ahora, yo también podía hacer algo como esto. Esta cifra es ligeramente diferente. Es casi exactamente el mismo que lo que vimos antes, excepto que en lugar de decir simplemente $ x allí como el parámetro para hard_square, Estoy diciendo $ x = 10. Así que este es un ejemplo de programación defensiva, guarda tus programas contra los usuarios maliciosos. Esta es una manera de hacer un poco de error la comprobación de que no hemos hecho realmente tienen como opción en C. Nunca pude especificar el valor por defecto de algo. Siempre teníamos que comprobar si el, por ejemplo, si hacemos una llamada a GetString, era más adecuada si inmediatamente después de que comprobado que, nos registramos si la cadena que el usuario nos dio no es igual a null, porque no queremos empezar trabajar con una cadena nula. Aquí, esta es una manera para protegerse contra eso. Si el usuario no nos proporciona algo de alguna manera, ¿qué vamos a hacer? Bueno, sólo tendremos que decir lo que sea que no nos proporcionan, sólo vamos a conectar 10 en su lugar. Así que si no nos dan un valor, sólo tiene que utilizar 10 por defecto. Así que aquí, Noto que estoy haciendo Una llamada a hard_square, pero no hay pronta para el usuario, ¿verdad? Sólo estoy haciendo una llamada vacía. Pero mi función hard_square se espera un parámetro. ¿Qué es esto va a imprimir? Se va a imprimir 100, ¿verdad? Debido a que el usuario no lo hizo darme nada. Y así que sólo voy a asumir que 10-- 10 es el valor predeterminado. Y por lo que este sería imprimir el 100 en su propia línea. Archivos PHP no tienen que ser sólo un único archivo. Se pueden combinar varios archivos juntos, al igual que se puede en C. La forma lo hicimos en C era típicamente para hacer un #include para obtener archivos de cabecera tirados en. Nosotros no hacemos eso en PHP. Hacemos algo llamado require_once. Y luego está este todo cosa, ¿qué es esto __dir__? Eso es sólo un especial variable o constante especial, realmente, que especifica lo su directorio actual. Y por lo que va a ver en el directorio actual un archivo llamado cs50.php en este ejemplo aquí, y que va a seguir ese archivo en la parte superior de su programa PHP, asumiendo que usted pone la requieren una vez que la línea en la parte superior de su archivo PHP. Así que PHP se utiliza principalmente, pero no de uso exclusivo, como un lenguaje para la programación basada en la web. Eso es realmente la forma en que llegó a ser. Pero es un completo idioma, como hemos visto. Hemos visto casi todas las cosas que puede hacer que son similares a C, y se puede hacer una diablos de mucho más que eso. Pero porque es un lenguaje completo y nos puede hacer la programación de línea de comandos en el mismo. Podemos ejecutar programas de línea de comandos. Todo lo que se requiere para ejecutar un comando programa de línea que está escrito en PHP es que usted tiene un intérprete de PHP. Así que es una especie de análogo a tener un compilador en su sistema si quieres compilar el código C para convertirlo en archivos ejecutables. Usted necesita tener un intérprete de PHP lo que existe en su sistema para que pueda interpretar los archivos PHP. Suponiendo que usted hace, y por lo general este intérprete se llama PHP, y es por lo general incluye con la mayoría descarga o instalación de PHP que se puede obtener en línea, y, ciertamente, el nombre del intérprete PHP tenemos en CS50, IDE. Todo lo que hacemos es archivo php tipo. Y lo que su programa de vamos a hacer es que es va a ejecutar a través de el intérprete, es va a ignorar todo lo que es no en cuestión entre mark-- o, ángulo del soporte signo de interrogación php, los delimitadores PHP, e imprimirlo, y va a interpretar y ejecutar el código dentro de sus delimitadores PHP. Así que vamos a pop a IDE CS50 y echar un vistazo a un par de archivos de PHP, corriendo un par de archivos de PHP, en interfaz de línea de comandos de CS50 IDE. Así que aquí estamos en IDE CS50, y me he tomado la libertad de abrir un archivo llamado hello1.php. Y al parecer, el contenido de este archivos son sólo los delimitadores PHP allí, y en el medio, echo ("hola, mundo"). Este es un programa PHP bastante simple. Yo sólo voy a desplazarse hacia abajo a mi ventana de terminal aquí, y yo voy a escribir php hello1.php, pulsa enter. Hola mundo. Eso es probablemente lo que fuimos esperando que lo haga, ¿verdad? Vamos a subir y tomar Otra mirada a un programa. hello2.php. Más o menos lo mismo, No hay mucho que hacer aquí. Esta vez, sin embargo, voy a incitar el usuario para darme sus nombres. Estoy usando esa función readline nuevo. $ name = readline. Ese es el mensaje "¿Cuál es su nombre?" Al parecer soy la impresión que en su propia línea. Y entonces, por lo que la línea de abajo que será el símbolo donde el usuario puede introducir su nombre. Y entonces yo estoy usando un poco de interpelación variable de aquí en la línea 3 imprimir "Hola" y cualquiera que sea el usuario. Así que esto es análogo a decir, Hola, coma,% s si estábamos usando printf en C. Así que vamos a ir e interpretar este programa. Así que de nuevo, voy a desplácese hacia abajo a mi ventana de terminal. hello2.php php. ¿Cuál es tu nombre? Doug. Hola, Doug. También tengo otro archivo llamado hello3.php. Voy a limpiar mi pantalla con control L, y yo voy a ejecutar esa. ¿Cuál es tu nombre? Doug. Hola, Doug. Así que el comportamiento es idéntico al hello2.php, pero ¿por qué es hello3.php? Bueno, aquí está la diferencia. En este caso, el aviso que en la línea 1 aquí, Tengo algo que no es entre los delimitadores de PHP. Sólo estoy imprimiendo fuera-- o yo acaba de escribir, "¿Cuál es su nombre?" Cuando el intérprete PHP ve esto, no tiene idea de cómo interpretarlo como PHP, y así que en vez de fallar, que sólo va a escupir. Así que notar en la línea 3, mi llamada a readline, no hay símbolo más. Estoy realmente va a-- cuando el intérprete PHP ve esto, que va a imprimir "¿Cuál es tu nombre?" Entonces se ve, oh, bien, here's-- todo lo demás va a ser interpretado como PHP, por lo que es por eso que esto funciona. Yo no tengo que pedirá necesariamente el a-- usuario dentro de readline, Yo sólo puedo tener fuera de los delimitadores de PHP y permitir que el intérprete simplemente imprimirlo para mí. Así que en realidad no es suficiente tener un conjunto de delimitadores de PHP en su programa. En realidad puede tener varios de ellos, abrir y cerrar según sea necesario. Así que vamos a echar un vistazo en un par de programas en IDE CS50 donde ilustrar esta idea de tener varios conjuntos de PHP delimitado. OK, así que me he abierto un archivo aquí se llama add1.php. Y darse cuenta de lo que está pasando aquí. Al igual que antes, tengo un solo PHP conjunto de delimitadores. Voy a imprimir el mensaje: "Por favor, dame un número." Entonces me voy a leer una línea y almacenarlo en el $ num1 variable. Entonces me voy a imprimir de nuevo. Dame un segundo número. Leer una línea desde el usuario, almacenar lo que escriben en en $ num2. Añadir juntos y almacenar esa resultar en una variable llamada $ suma, y luego imprimir, "El suma de estos dos números es, "y luego interpelar allí la suma $ variable. Así que vamos a ejecutar este a través del intérprete para confirmar que esto es lo que esperamos. add1.php php. Por favor, dame un número, 3. Por favor, dame un segundo número, 4. La suma de estos dos números es 7. Eso es 3 más 4. ¿De acuerdo? Así que nada terriblemente lujoso allí. Y ahora vamos a abrir add2.php. Aquí, tengo un par de PHP delimitado conjuntos allí, ¿verdad? Líneas 1, 3-- líneas 1 y 3 no tienen delimitadores de PHP. Así que cuando el intérprete los ve, es sólo va a escupir exactamente lo que he escrito allí. Así que ahí es donde estoy haciendo toda mi preguntar. En las líneas 2 y 4, vemos el mismo $ familiar? php tipo de delimitadores, por lo que esas dos líneas son va a ejecutar como PHP. Y luego en la línea 5, tengo este Lo extraño aquí, ¿verdad? Este soporte angular signo de interrogación signo igual. Yo incluso el zoom un poco más lejos. Se puede ver que esto es lo que soy hablando de ahí, estos $? =. Resulta que es tan común que la razón por la que abrimos un conjunto de PHP delimitadores es imprimir un valor. Y eso es todo lo que vamos a hacer. Pero hay incluso taquigrafía para eso. $? = Es la taquigrafía PHP por decir algo así como $? php echo la suma de num1 y num2. Así que esto es sólo otra taquigrafía para eso. Así que si ejecuto este programa, php add2.php. Voy zoom hacia abajo un poco. Por favor, dame un número, 4. Por favor, dame un segundo número. Y como yo no me preocupo por tipos de datos en PHP, puedo decir 4.8. La suma de estos dos números es 8,8. Esa función se comporta más o menos exactamente la misma que se esperaría, así como. Y yo tengo uno más abierto aquí llamado dice.php. Prueba este nuevo. Tengo uno más llamado aquí dice1.php, que también, ver, tiene esa pregunta paréntesis angular marcar la notación signo igual en ese país, pero noto que en este caso estoy llamando a la función rand, que como ustedes podría esperar que genera un número aleatorio. "Usted rodar una", y que va a calcular un número aleatorio, mod 6 + 1. Así que me dará el número en el rango de 1 a 6. Recuerde que mod 6 me daría un número en el intervalo de 0 a 5, pero si estoy simulando tiradas de dados, que es lo que estoy haciendo aquí, No quiero que estos dados para pasar de 0 a 5, quiero dados que van de 1 a 6. Y lo que esta es una manera de conseguir me en el rango de 1 a 6. Estoy haciendo esto dos veces. Así que al parecer estoy rodando dos dados en este programa. Así que voy a borrar mi pantalla, y haré php dice1.php. Usted rodó un 4 y un 2. Y si se me acaba el programa de nuevo, usted rodó un 5 y un 5. Así que cada vez que ejecute el programa, Me estoy poniendo diferentes números, porque cada vez que lo hago Así que es empezar de nuevo. Se va a generar una nueva un conjunto de números aleatorios para mí. Así que si estamos acostumbrados a ejecutar programas de C, estamos acostumbrados a escribir ./ la nombre de un programa, ¿no? Eso es lo que hemos hecho todo de nuestros programas en C hasta el momento. Podemos hacer esto en PHP, así mediante la adición de algo que se llama un tinglado a la cima de nuestro archivo PHP. Sé que es un poco una palabra tonta. Es la abreviatura de explosión hash. Esos son los dos primeros caracteres allí. Recuerde que llamamos signo de exclamación con frecuencia una explosión en la informática. También podría ser de explosión agudo. Hay un par de maneras de interpretar la misma. Pero es básicamente un tipo especial de ordenar que el intérprete PHP entiende como, oh, quiero que permite ejecutar este programa, que aparentemente es / user / bin / php, que es en realidad donde el intérprete PHP vive específicamente en nuestro sistema. Así es-- lo que sucede aquí es el intérprete entiende, oh, Al parecer, se supone que debo utilizar en este programa se ejecute este archivo. Y por lo que le permite saltarse el paso de tener que decir php something.php. Hay otra captura aquí, que es que si queremos que nuestros programas a funcionará como se espera, se hay que hacer algo que se llama un cambio de permisos de ficheros. Y vamos a vaya-- y hablamos un poco poco más cambios de permisos sobre archivos en nuestro video en MVC, pero basta con decir que esto es lo que hay que hacer con el fin de hacer su archivos .php ejecutable. Así que echemos un vistazo a esto como nuestro último ejemplo más en CS50 IDE. Así que aquí en IDE Tengo dos archivos de esta Directorio de PHP que no parece ser llamada .php. Tengo una función llamada add-- Tengo un archivo llamado add3 y un archivo llamado dice2. Así que echemos un rápido buscar y abrir add3. Y como se puede ver, al principio de mi archivo tengo este tinglado, ¿verdad? Este punto de hash signo de exclamación. Ahora, usted también puede que notar que por alguna razón, Yo no tengo ninguna sintaxis destacando más, y esto es lo que he aludido antes, que era que si no nombro mi archivo .php, no tengo el beneficio de resaltado de sintaxis ya. Este archivo solo se llama add3. Para que yo pueda ejecutarlo más tarde con ./ add3 y no ./ add3.php. Así que la reason-- todavía bien, sigue siendo válida PHP, pero no es la sintaxis resaltada, porque este archivo no se llama something.php. Esa es la única diferencia real aquí, más el tinglado. Así que vamos a ver lo que sucede cuando Trato de ejecutar este programa. ./ Add3, al igual que lo haría con C. Bash. ./ Permiso add3 negó. Esto es lo que vas para ver si se olvida utilizar el comando chmod para cambiar los permisos del archivo. Pues resulta que, PHP regulares archivos no pueden simplemente ser ejecutados. Ellos pueden ser interpretados, pero estamos hacer algo un poco diferente aquí. Estamos ejecutarlo. Y así que tengo que agregar el permiso de la ejecución, chmod a + x para add3. Entonces puedo decir ./ add3. Por favor, dame un número. 5, 6. La suma de estos dos números es 11. Del mismo modo, ya he chmod dice2, por lo que sólo puede escribir ./ dice2, usted rodó un 1 y un 1, que laminado en un 5 y un 4, y así sucesivamente. Así que eso es más o menos la idea de una sintaxis de PHP, ¿verdad? Hay mucho para conseguir a través, lo sé. Pero es de esperar que haya visto ahora que PHP en realidad no es tan diferente de C y realmente nos da la capacidad tomar las cosas a un nivel superior o dos. Nosotros realmente no tenemos que preocuparnos demasiado sobre-- no lo hacemos de verdad tiene que preocuparse demasiado acerca de los detalles de bajo nivel que nosotros tenía que preocuparse con C, ¿verdad? Podemos centrarnos en la más alta cosas de nivel que PHP nos permite hacer y damos por sentado que va a trabajar para nosotros. Por lo que nos da la posibilidad ahora, la transición de C a PHP, para que los programas que son mucho más compleja y tal vez mucho más robusto. Así que espero que se diviertan de trabajo con PHP, y estoy Doug Lloyd. Esto es CS50.