[Powered by Google Translate] [Sección 8] [menos cómodo]
[Nate Hardison] [Harvard University]
[Esta é CS50.] [CS50.TV]
>> Benvido ao noso segundo a última sección.
Esta semana imos falar sobre PHP e entón a próxima semana
imos facer unha pequena revisión para Quiz 1.
Nós imos comezar na páxina 3 do problema define paquete,
e imos traballar a través da sección de preguntas rapidamente.
Na páxina 3, comezan a falar sobre esa diferenza entre C e PHP
no sentido de que o PHP é unha linguaxe de tipagem dinámica,
mentres C é tipagem estática,
e alguén realmente feito rapidamente calquera codificación en algo así como PHP
ou Python ou Ruby antes JavaScript?
Totalmente novo? Okay.
>> Todas esas linguas que eu acaba de mencionar
son moi diferentes linguaxes como C e C + + e Java
no sentido de que cando declara unha variable que non ten que declarar
que tipo de variable é, polo tanto, C foron preso ter que sempre digo
iso vai ser unha variable int, ou iso vai ser unha variable char *,
mentres que con PHP, co Python, con Ruby,
con unha morea de linguas máis modernas non ten que facelo en todo.
Vostede acaba de declarar a súa variable, e, no caso de PHP
vostede declarar que é unha variable prefixando-lo con un sinal de $,
e, a continuación, o tipo de variable é determinada por calquera valor que está seguro,
que é legal.
Para xogar con iso un pouco, temos un código de exemplo PHP aquí
entre as etiquetas de inicio e fin.
Estamos a usar este tipo de como HTML no sentido de que
temos estes corchetes aquí para abrir e pechar.
Vai ver iso con HTML.
Vai ver o mesmo tipo de sintaxe con XML tamén.
>> Isto indica o inicio dun bloque PHP.
Este php? E específico para PHP.
Pechamos todo cun> tamén.
Imos abrir un arquivo no noso aparello co que desexa.
Neste paquete que di chamarse dynamic.php.
En realidade, pode chamalo de todo o que quere, pero o nome do ficheiro aparecerá
e ser importante máis tarde, entón lembre que vostede chama-lo.
Vou pasar o aparello,
e eu vou facer un directorio para
Sección 9 Eu creo que estamos agora.
E imos á sección 9,
e eu vou usar o gedit.
Imos ver, gedit, e eu vou chamar dynamic.php meu.
Boom.
Dentro dynamic.php, xa que este é un arquivo PHP
e quero facer este a través do intérprete PHP
Eu teño comezar todo coas etiquetas abertas,
entón eu vou comezar inmediatamente,
me dar un pouco de espazo entre as etiquetas,
e entón o punto deste exercicio foi de xogar con
esta función chamada gettype, así gettype, esta función aquí.
>> Teña en conta que non hai espazo ou subliñado ou guión ou algo así
separando as dúas palabras, comezar e escribir, só unha palabra completamente.
Pero o que isto vai facer é pasar unha variable para gettype,
dicir $ var ou $ x,
iso me vai dicir o tipo de nun formato de depuración
que o nome que tipo é.
Nós imos probar aquí.
En particular, se ollar cara atrás, a especificación pset
Temos algunhas liñas diferentes do código aquí.
Na primeira liña de código que arrincar esta variable, $ var,
ser igual a 7, e, a continuación, temos esta liña printf
que di hey, var printf está baleiro.
Printf é unha das moitas formas de imprimir cousas en PHP.
Moitas veces vai ver a función eco usado en vez de printf,
printf pero estamos todos familiarizado con sendo codificación en C por un tempo.
O que realmente pode facer é deixar de ver obras copiar e pegar.
Vou tentar dar un regalo.
Imos volver para o aparello.
Ok, e alí imos nós.
E paso é un pouco descolados, pero aquí imos nós.
Temos ese código aquí.
>> [Estudante] e estilo non é bo para a guía-lo?
Sentímolo?
[Estudante] e convencional para guía-lo?
Certo, entón Sam pregunta se é convenio para guía-lo ou non.
Normalmente si.
Neste caso, eu escollín non facelo.
Honesta, vai ver cousas diferentes entre os programadores diferentes.
PHP é normalmente usado moitas veces en combinación co HTML
e outras linguas, e por iso ás veces a impresión se ve un pouco descolados
se recuar no PHP inicio e etiquetas de final.
Ela realmente depende.
Neste caso, o copiar e pegar non pegar as pestanas para min,
pero definitivamente non, como dixo, facelo máis claro.
Todo ben, se gardar este código dynamic.php
entón o que podes facer é vir abaixo a súa fiestra de terminal onde estou aquí abaixo
no gedit e para facer o equivalente a compilación
con make e despois executar o código en C
todo o que ten que ver co arquivo PHP é iniciar o intérprete PHP,
que é un pequeno programa chamado PHP,
eo argumento que lle dá ao intérprete é o arquivo que quere interpretar.
Neste caso dynamic.php,.
Oops, onde foi que eu colocar-lo?
Oh, eu poñelas na sección 9, e aquí estou eu. É por isto.
>> Agora, se eu executar de novo
vemos que na miña primeira chamada función gettype
var é un enteiro.
Na var próximo é unha cadea, e despois no var terceiro é un boolean.
O que é interesante sobre iso é cambiar de volta, vemos que
estes son tipos semellantes aos que tiñamos en C.
Tivemos ints en C.
Nós medio que cordas en C,
así cordas non eran un tipo totalmente lexítimos no sentido de que
nosa cadea CS50 era realmente o que?
Sentímolo? Missy?
[Missy] char *.
Si, foi ese char * usan.
No inicio do semestre nós utilizando o tipo cadea,
pero era realmente un char * baixo o capô.
Nós só tipo definido que, mentres en PHP esas cadeas son un tipo real.
Non hai máis desas cousas do tipo char *.
>> Vai ver que podemos facer moito máis cousas con cordas
moito máis facilmente en PHP que poderiamos C,
e, finalmente, temos este tipo boolean, é a gran diferenza aquí é que
desprazarse de volta para abaixo, vemos que o nome destes tipos
agora son string, enteiro, e en vez de boolean, int e bool
e como incorporarse distintas linguaxes de programación,
asumindo que nalgún momento das súas vidas, pode poñerse en contacto con
os distintos vai notar pequenas peculiaridades como esta
onde C chámase ints enteiros.
Algúns chaman-lle números enteiros.
Existen outros termos que vai executar en.
Int grande que vimos hoxe en SQL.
Hai tamén o número e, a continuación, bool, boolean,
todo tipo de diferenzas alí.
>> Isto non é moi interesante, pero agora eu estou indo darlle un pouco de tempo
o zoom-out para traballar a través deste exercicio, na parte inferior da páxina 3
onde pide que tipo corresponden a eses valores aquí no fondo.
Temos 3.50.
Temos esta cousa aquí, o que é interesante.
Nós non vimos isto antes, pero se está seguindo ao longo de charla
probablemente xa sabe o que é.
Entón temos iso, que este é o tipo de funky.
Vostede recoñece iso.
¿Que é iso en C?
Sam? O que isto lle dar en C?
Sería abrir un ficheiro chamado dynamic.php e facelo lexible.
Si, e cal sería o tipo de variable que sería asignar isto? Estrela do arquivo. >>
Exactamente, sería asignar iso a unha estrela de arquivo.
Este é PHP lexítimo tamén.
Executar iso. Mira o que acontece cando pasar iso para gettype.
E tamén comprobar o que é nula, o que podería ser en PHP.
Eu vou te dar un par de minutos.
Pode literalmente copiar e pegar estes valores,
e entón imos facer unha chamada pouco ao chou en ti
e ver o que ten.
>> [Estudante] Eu teño unha pregunta. << Yeah.
Nunha das charlas David dixo que hai algo que pode pór na parte superior do seu arquivo
de xeito que non precisa escribir o PHP cada vez.
O que foi iso?
El foi, probablemente, a falar sobre o estrondo libra, o estrondo de hash.
É unha directiva que se marcar o ficheiro como executábel
entón o que fai é cando executar o arquivo
vai dicir ao programa shell
para usar o intérprete PHP para interpretar o contido do arquivo.
A cuestión de ser o que era esta liña especial
que poderiamos incluír na parte superior dos nosos arquivos PHP para non ter que incluír
esta liña PHP ou PHP este comando en calquera momento realizar o ficheiro?
E pode realmente facer iso con unha morea de arquivos diferentes.
Eu creo que depende de onde o binario do PHP é almacenado,
pero moitas veces usr / bin / php é un bo lugar para comezar.
Pode descubrir iso exactamente, indo de volta para o seu dispositivo
e escribindo que php.
O comando que calcula cando está executando binario
ou un comando de onde o arquivo correspondente.
Tanto me di que o PHP é realmente aliasing este ficheiro binario
que está almacenado usr / bin, que é onde moitos dos binarios do sistema están instaladas.
Por exemplo, se eu rolar ata o cumio, agora que eu coloque esa #! liña aquí
Eu podo rolar para abaixo, e podo tentar executar
dynamic.php, pero eu recibín este erro sobre o permiso que está a ser negado,
eo que iso significa que este ficheiro non está dando os permisos de execución.
Non está marcado como un arquivo que alguén poida ser executado.
>> Cando executou facer ou Clang e ten un executable a partir del
o compilador foi intelixente abondo para saber que, ei, eu estou construíndo un executable.
Probablemente vai querer executa-lo, de modo que sería configurar automaticamente
os permisos para ti.
Este non é o caso, porén, cando se crea un ficheiro normal a partir de cero,
A razón é normalmente non quere ter calquera arquivo no seu sistema sexa executábel,
para que realmente ten que ir e facelo manualmente.
O xeito máis doado de facelo é coa orde chmod,
e chmod + x di engadir o bit executable
porque non é o pouco de lectura, o bit de gravación eo pouco executable,
r, w e X,
e dicindo chmod + x ha conectar o bit executable
para, a continuación, o ficheiro que especificamos, que neste caso será dynamic.php.
>> [Estudante] é que ligado para todos?
Imos comprobar iso, así como eu comproba os permisos?
Vostede sabe como eu comproba os permisos dun ficheiro?
[Resposta do alumno inaudível]
Sentímolo? >> [Estudante] XSD.
XSD dános o ficheiro en hacks.
Listado todos os arquivos,-L, me vai amosar os arquivos no meu directorio
tipo de na súa longa lista detallada, e así por aquí vemos que
este ficheiro dynamic.php
modificouse por última vez o 05 de novembro 04:21 AM.
O propietario deste arquivo é jharvard.
Ese é o usuario que está rexistrado Pol
Ese é o usuario que eu estou a traballar como,
e tamén está no aparello que está a traballar tamén como jharvard usuario.
Está no grupo de alumnos,
e estas son as cousas que vai ver moitas veces o suficiente.
>> Podemos entrar en moitos detalles aquí,
pero na maior parte o que quere ollar para cando está olhando para ver
ou non un arquivo executable é primariamente
o usuario que posúe o ficheiro, o propietario,
así jharvard iso, e entón temos
os bits de permisos por aquí á esquerda,
e da forma de ler esta é que o último bit
tipicamente se usa para a reserva ou polo menos non menos neste caso
esta última, moitas veces, ser definido para anuncio para indicar
que o ficheiro é un directorio, e non só un arquivo normal.
Entón, os seguintes 3 bits aquí mesmo
determinar os permisos que o propietario do ficheiro ten,
polo tanto, neste caso jharvard, como o propietario do ficheiro, pode ler e escribir neste ficheiro,
pero hai un trazo dicindo que jharvard non pode executar este ficheiro.
Os próximos tres bits son para o grupo, de xeito que este é o grupo de alumnos,
por iso, se había varios usuarios no meu dispositivo,
e tivemos varios usuarios como parte do grupo de alumnos,
entón poden ler este ficheiro, pero non pode escribir,
e tamén calquera outra persoa, o mundo
só pode ler este ficheiro tamén.
Hai un writeup, bo tempo sobre isto,
así podes ler en liña.
Na especificación do conxunto de problemas que van para iso con máis detalle.
>> [Estudante] é o 218 referíndose ao mundo?
O 218 é-por riba da miña cabeza, eu estou esquecendo,
pero non.
Imos ver. Estou cega niso agora.
Volta para o que estabamos a piques de facer con este chmod + x
onde queriamos dar permisos de execución dynamic.php,
ea pregunta era se iso ía dar permisos de execución para todos
ou só jharvard, e podemos ver iso
executar os comandos e escribindo ls-l,
e agora vemos que é marcada como executable.
Vostede ve que houbo un cambio de cor.
Agora dynamic.php está listada de verde,
e parece que a resposta á pregunta é que, Charlotte?
[Charlotte] Só jharvard. >> Jharvard Só, si.
>> Se quería virar a pouco executable en para todos
como podemos facelo?
Calquera pensamentos? >> A + x?
Si, exactamente.
Charlotte dixo que podemos facer chmod + x dun dos dynamic.php,
e agora, executar ls-l, vemos que os bits de execución
son de feito conectado para todos.
E pode realmente facer o inverso deste, de modo que pode desactiva-lo para todos
usando menos.
Agora está desconectado, e agora podemos ligalo novo para jharvard
para que poidamos realmente executa-lo agora
e agora ve cando fai o código agasallo especial #! liña na parte superior,
#! liña, dixo o shell,
dixo o noso terminal hey, cando ese ficheiro é executado,
usar / usr / bin / php para interpretar este ficheiro
e, a continuación, imprimir a saída.
[Pregunta estudante inaudível]
Por suposto, deixe-me ir para arriba. Así como este.
Vai ver todas esas directivas comezar con este libra e, a continuación, o punto de exclamación,
ás veces chamado de un estrondo, shebang hash.
>> [Estudante] Como podemos executa-lo con dynamic.php php antes de facelo executable?
A cuestión era como podemos facer iso usando o binario de PHP
mentres dynamic.php non é executable?
Isto é super importante, porque é exactamente como
está indo para o traballo cando escribe conxunto de problemas 7.
A maioría dos arquivos de tempo de PHP non son directamente executable.
O xeito que funciona é porque é o binario PHP que é executable.
O intérprete é a cousa que está a ser executado,
e así o que está facendo é, literalmente, chupando en todo o contido
do noso arquivo dynamic.php e liña por liña vai
e executar os comandos, polo que é usando o noso arquivo PHP
como unha lista de instrucións.
Non está directamente executalo.
É aí onde dicimos que eses arquivos son interpretados en tempo de execución.
É unha linguaxe tempo de execución, en vez de algo que é determinado en tempo de compilación,
non unha linguaxe compilada como C.
>> Existe unha maneira de obter unha linguaxe tempo de execución de actuar como se fose unha linguaxe tempo de compilación,
Como se ten todo o corredor feito no servidor
en vez de, vostede sabe o que quero dicir?
Si, entón a pregunta é
hai unha forma de obter linguas tempo de execución para actuar máis como os tipos de tempo de compilación de linguaxes?
E alí están, é dicir, que é unha área activa de investigación para moitas destas empresas.
Creo que Facebook ten feito un gran traballo con PHP
e recompila-lo para abaixo, tornándose o máis rápido, optimizando o
desde o seu sitio está construído en PHP.
Se seguindo Node.js en todo,
que é unha especie de intérprete de JavaScript
para ser capaz de executar JavaScript fóra do navegador, fóra do seu navegador,
porque tradicionalmente JavaScript sería só correr dentro do Firefox ou Chrome,
e sería usado para facer animacións legais ocorrer nunha páxina web
e facer a súa páxina web dinámica.
Que foi construída sobre unha chea de traballo que Google fixo
que ter Javascript e C + +
se unen, entón non hai moita investigación activa para
obter esas linguas para interactuar e optimiza-los,
sobre todo porque moitas persoas poden codificar en PHP e JavaScript
porque é moito máis fácil.
É moito máis agradable. Non ten punteiros.
Non ten tipos flotando.
Eles querían gañar os beneficios de linguas en tempo de compilación
con todo tipo de control é a velocidade e uso de memoria baixo e todo iso
mantendo aínda a flexibilidade e facilidade de uso destas novas.
>> De volta ao noso plan orixinal de ataque.
Temos algunhas destas preguntas aquí na nosa especificación conxunto de problemas.
Imos pasar por eles moi rapidamente, e nós imos dar a volta ao cuarto.
Charlotte, que tipo é 3,50?
[Charlotte] Isto é un dobre. >> É unha dobre.
Jimmy, que é ese próximo? >> Unha matriz.
Unha matriz, impresionante, e Jared, o que é o fopen?
[Jared] É un recurso. >> É un recurso.
Este é un tipo de un novo, non unha estrela de ficheiro, non un arquivo.
É un recurso é o tipo en PHP,
e eu sinto moito, Ella, o nulo último é o que?
Nulo.
Nulo, como está escrito en PHP? >> A mesma forma.
Do mesmo xeito, capitais? >> Si
Si, todo ben.
Aquí imos nós, temos un dobre, temos unha matriz,
temos un recurso, e logo temos nulo.
Imos ver agora viuse
Imos ver, entón agora eu creo que eu tamén quero facer é puxar arriba
Esta páxina web aquí, este php.net / manual,
por iso, se vostedes que copiar e abrir un navegador.
Vou tirar o Chrome, que puxo dentro
Quero demostrar que iso non só porque
podemos falar todos os días sobre os tipos e todas as cousas que a diversión
senón porque este é o guía do PHP,
e hai unha morea de programadores PHP alí fora.
Hai unha morea de sitios PHP alí fóra,
e, como resultado, hai unha gran cantidade de documentación en PHP,
e do manual, este php.net, é un bo lugar para ir
sempre que está con dúbidas sobre o que é a mellor forma de facer X en PHP
ou o que é que unha función se parece?
Só o tipo de familiarizarse co que iso parece, porque
vai vir aquí moitas veces, un pouco de conxunto de problemas 7.
>> Se acaba facendo un proxecto final que usa PHP
este será un lugar que vai tornar-se moi ben familiarizado.
Moitas veces, o xeito no que as persoas facer iso é que eles usan Google para buscar o lugar,
e non usar a caixa de busca que está aquí enriba na esquina superior dereita, que é unha especie de pequeno.
Se está buscando en torno a algo para facer con PHP e ve
un dos enlaces manuais aparecer normalmente pode confiar en que
como un recurso moi bo.
Incribles, polo tanto, fóra destes tipos, só por curiosidade,
que non vimos?
Calquera cousa que non vimos aquí?
[Estudante] >> Recursos. Vimos de recursos coa chamada fopen.
[Estudante] obxectos. >> Obxectos que non vimos, con certeza.
Callbacks non vimos.
Hai algúns deses pseudo-clase.
Nós sempre só vin enteiro e de parella.
Non ver algúns dos outros, polo que se preme en números enteiros
podemos ver hai outros enteiros que teñen aquí?
Son todos tan completo, enteiro, completo.
Algunhas linguas teñen maiores tipos enteiros,
como vimos no MySQL hoxe houbo int e int grande.
Cool.
>> Entón, manual de PHP.
Imos volver para a nosa especificación conxunto de problemas, e agora imos rodar a páxina 4.
Unha das cousas que acontece cando comeza linguas
que non teñen esta tipagem estática, polo tanto, estas linguas, onde ten que declarar
tipo dunha variable de fronte para arriba
é que comeza casos en que pode comezar a ter variables de tipos diferentes
interactuar uns cos outros,
e PHP fai esa cousa que tenta facer
o que considera a cousa máis sensata a facer
cando ten dous tipos interactúan uns cos outros.
Por exemplo, se olharmos para estas liñas de código aquí
ve que temos o que ocorre cando
Tentamos e engadir a secuencia 1 ao número enteiro 2.
Qué acontece se tentar e engadir unha secuencia que non é un valor numérico
senón personaxes reais, CS co número 50?
Entón imos ver hai algo diferente que acontece cando
en vez de engadir unha cadea para un número que está engadindo un número a unha cadea,
e así por diante e así por diante ata o punto en que estamos recibindo
algún tipo de cousas estrañas aquí, onde temos 7 + verdade.
O que diaños significa isto?
>> Se vostedes van adiante e pegar algúns este código no seu dispositivo.
Pode mantelo en dynamic.php.
Imos ver o que acontece.
[Estudante] necesitará empregar impresión non, printf?
Si, entón podes ver que de impresión tamén é unha función válida para a impresión en PHP.
Hai moitas formas diferentes de facer iso.
Imos ver un par de exemplos máis tarde, unha vez que comeza a falar
sobre o único problema que nós estamos indo para escribir
e entón o problema concentracións que imos escribir
que aínda que temos fopen e fclose
que moitas veces non é o xeito máis sinxelo de ler o contido dun arquivo.
PHP ten unha morea deses remanentes C-like.
[Estudante] Cando engada en todas as 6 desas cousas que eu só obter un número como unha saída.
[Nate H.] Cando se pon en todas as 6 destas cousas.
Imos ver o que é, porque é posiblemente-
unha cousa é que esas chamadas de impresión non están rematados a finais con novas liñas.
Non hai como nova liña que separa cada unha desas chamadas de impresión,
quizais por iso que está a recibir un gran número,
e é realmente só amálgama de novos carácteres de liña.
[Estudante] Ok, como podo estar seguro de-
Así, hai unha morea de maneiras diferentes.
Vostede podería poñer a man nunha copia dun carácter de nova liña,
un eco dun carácter de nova liña,
imprimir de nova liña.
[Estudante] Entón eco é a mesma cousa que printf?
>> Printf é como C printf
onde está imprimindo unha secuencia formatada.
Vostede está dando-lle a secuencia de formato e as variables de espazo reservado.
É algo que moitas veces non se usa-
imos ver, como un aviso,
Estou menos familiarizado con PHP que eu con linguaxes web,
e cando ten programado en PHP eu normalmente non usan printf
porque creo que é máis rápido para usar os recursos de interpolación de cadeas que ten,
que nós imos entrar e eu vou lle amosar en só un segundo,
mentres que en C nós medio que temos para facer esta cousa hacky para obtelo para imprimir correctamente.
Realmente pode pór variables directamente cadeas en PHP.
Printf é unha especie de excesivamente longo para o que eu costume facer. Si, Ella.
[Ella] Xeralmente, se conseguir un erro de interpretación é que iso significa-
como en C non dicir exactamente onde está o erro e que é,
Entón, isto significa ollar a través do seu código completo e descubrir iso?
É tipicamente máis segmentado que iso.
Eu creo que nese caso foi un pouco fóra,
entón eu creo que, nese caso, que estaba falta un punto e coma.
El estaba tentando facer sentido de todo,
así como esas linguaxes interpretadas, o intérprete vai
e facer o mellor para que todo funcione correctamente.
>> Vai ver, por exemplo, en JavaScript
Vostede moitas veces liña de declaracións finais con un punto e coma como o fan en PHP,
así como fan en C.
En JavaScript algúns dos intérpretes de JavaScript
en moitos dos navegadores pode pór en punto e coma para
Se ocorrer de estar falta eles.
Eles van tentar acomodar por algún desleixo da súa parte.
É onde pode estar intentando e intentando e intentando facer as cousas de traballo,
e, finalmente, vai chegar a un punto onde el di que está ben,
Eu non podo facer as cousas funcionen en fiando, e é aí onde vai ter un número de liña
que pode parecer un pouco fóra do lugar exacto.
Ok, entón imos pasar por iso moi rapidamente.
Paramos con ella, entón imos pasar Missy,
e Missy, o que fai impresión de corda 1 máis o número 2 darlle?
[Missy] 3. >> 3.
Isto ten sentido? Máis ou menos?
Dálle un número? Dá-lle unha corda?
[Missy] Un número. >> É un número.
Pero é imprimir lo, polo que vai dar-lle algún tipo de corda.
>> Unha cousa que podemos facer para comprobar iso
é se facemos $ var = 1 + 2
e entón dicimos eco de gettype,
por iso estamos a usar un terceiro tipo de impresión aquí.
Agora podemos ver o que pasa aquí.
Aquí o que temos é que temos un número enteiro fóra diso.
Aínda que estaban engadindo este string a un número,
nós non conseguimos unha secuencia de fóra, así como Missy dixo.
Estabamos a recibir un número enteiro.
Ok, entón imos ver, xunto a, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H.] 50. Isto ten sentido?
[Kevin] Yeah.
[Nate H.] Por que? Por que ten sentido para ti?
[Kevin], porque é só ter a corda, tendo valor cero número.
Si, xenial.
Tipo de situacións ambiguas, pero é bo saber que pasa.
Stella, o que pasa co número 1 + secuencia 2?
[Stella] 3. >> 3 novo.
E, neste caso, podemos obter unha cadea ou un número?
>> Imos tentar dar un regalo.
Alguén máis rápido que obter a resposta? Charlotte?
Ah, eu didn't-todo ben, imos ver, imos facer o mesmo tipo de cousas
onde temos un número de unha cadea, e nós estamos indo a ecoar o tipo,
ver o que temos.
Tamén obter un número enteiro.
Non importa cal é a cadea, que é o número un.
Nós aínda estamos indo para obter un número enteiro.
El aínda vai facer o que poderiamos esperar.
Todo ben, entón Sam, que preto de 90 + 9 botellas de cervexa na parede?
[Sam] 99. >> 99.
Non botellas de cervexa na parede, no entanto.
Iso dános un pouco máis información sobre o que está a suceder.
[Sam] Se tivese escrito en letras 9
entón tería 90, non?
[Nate H.] Yeah.
A cuestión era se tivésemos escrito 9 como N-I-N-E
teriamos obtido 99 ou 90?
Teriamos 90.
É literalmente mirando só para personaxes de dous díxitos.
Non é suficientemente intelixente para recoñecer palabras para números e esas cousas. Si
>> [Estudante] Existe tal cousa como typecasting en PHP?
Non hai, e é exactamente do xeito que faría en C.
O que preto de 10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H.] Si, entón o que pode ser sorprendente sobre iso?
O que sucedería se fixo ese mesmo tipo de cousas en C,
se fixo 10/7 en C?
[Charlotte] É só dar-lle dependendo de como typecasted eu creo
que lle daría só un número limitado de díxitos despois da coma.
Si, entón un número limitado de díxitos despois da coma.
O que máis podería ser se podería que lle dar calquera díxitos despois da coma?
Moitas veces, non tan novo, dependendo de como está typecasting
pode ou non pode convertelo en un número de punto flotante.
Aquí era unha especie de bo que fixo.
Se tivésemos mostra que está de volta cando comezamos a facer este tipo de cousas en C
probablemente tería feito sentido un pouco máis
que non só tes que ir a un.
E entón, finalmente, Jamie, o que dicir de 7 + verdade?
[Jamie] 8. >> 8.
O que significa isto?
Coido que só dá certo o valor de 1.
Si Qué acontece se cambiar isto para false?
[Estudante] 7.
Si, para lembrar onde falamos sobre estes valores binarios,
Sendo 1 en diante, sendo 0 fóra?
Agora temos certo é 1, 0 é falso,
e non pode ver iso nos exemplos C que fixemos neste semestre pasado,
pero históricamente tipo bool en C non foi un tipo de real,
para que as persoas teñen usado 0 e 1 no lugar de verdadeiro e falso.
Esta é unha manifestación diso.
>> Ok, entón por unha banda importante de todo isto
é que temos estes tipos diferentes.
Eles poden interactuar uns cos outros.
Moitas veces poden interactuar uns cos outros de formas que son agradables, como vimos aquí.
É bo ser capaz de ter unha corda eo número 2, engadila los xuntos e obter 3.
Isto ten sentido.
Con todo, cando está escribindo sitios, e especialmente cando se está procesando
entrada do usuario, para dicir que teña escrito un formulario web
que recolle información do usuario e, a continuación, vai para proceso-lo
no extremo traseira, na parte do servidor no seu código PHP
se está esperando que o valor que o usuario introduciu e sometidos
ao seu formulario para ser un enteiro ou ser un número de punto flotante, ou algo así
precisa explícitamente lanzalo
e despois facer algunha comprobación de tipo.
>> Non quere só contar con este sistema de malabarismo tipo para facer as cousas funcionan,
especialmente por razóns de seguridade e só para a robustez do seu sitio.
Só algo para manter presente que cando está lidando con datos do formulario,
calquera cousa que ven na mensaxe ou superglobais get
asegúrese de que sempre válida-lo e convertela-lo e typecast-lo.
E, así como nós estabamos falando sobre un momento atrás que typecasting
en PHP é exactamente o mesmo que no C, onde ten os parénteses
e, a continuación, o tipo.
Teña isto en mente.
Unha función que vai vir a cadra cando está facendo iso
é que estamos usando e este é o tipo de como un aparte-
Estamos a usar esta función gettype aquí
para descubrir o tipo dunha variable,
e mentres tanto é útil para depuración e para ver que tipo dunha variable é
non quere usar iso, por exemplo, nunha condición en que
está comprobando para ver se gettype de $ var = enteiro facer algo.
Isto é malo, malo, malo.
En vez diso, son esas funcións chamadas é enteiro, é string,
é matriz que quere empregar no lugar, polo tanto, neste caso
o que me gustaría facer, en vez de este cara aquí
utilizar o var é número enteiro.
E son moitas veces referido é * is_ no sentido de que podería substituír o * con número enteiro,
cadea, etcétera, e só para estar seguro realmente rápido
E iso é int php.
Parece que pode facer ou é int ou se existe enteiro tamén?
Si, de feito, tan int aliases enteiros.
Cool.
>> Como estamos indo?
Imos incorporarse o ritmo un pouco.
Agora imos falar sobre matrices, así como se pode ver
na seguinte parte da especificación falamos sobre como arrays en PHP
son un pouco diferentes do que son na C.
En realidade, son unha especie de amalgama de
as matrices que xa coñece e ama na C
onde todo é do mesmo tipo
almacenadas consecutivamente e de forma contigua na memoria,
e ten eses índices numéricos.
Tes índice 0, o índice 1, índice 2,
e almacenar valores neses índices.
Tamén en C, cando escribiu Speller, unha morea de ti
fixo o achegamento táboa hash, e viu que non tivemos
outro tipo de almacenamento onde estabamos mapeando
unha clave para un valor, por iso, cando intentou gardar algo en táboa hash
tivo que especificar que quería gardalo cunha clave específica,
e que a clave determinada a localización do valor e onde sería almacenado.
Tes tipo de ambos os conceptos ocorrer ao mesmo tempo nun array PHP,
e, como resultado, moitas veces chamamos estas matrices asociativas
onde estamos asociando unha clave nun valor.
Nesta próxima parte falamos dunha matriz PHP simple
onde temos teclas a, b, c,
todas as cordas, o mapeamento para os enteiros 1, 2 e 3.
E pode ter chaves de diferentes tipos.
>> Pode ter que algunhas claves que son cordas, algunhas claves que son enteiros.
Pode ter valores de diferentes tipos.
Pode ter un valor que é unha cadea, un valor que é un número enteiro,
un valor que é un obxecto ou outro array, por exemplo,
todo no obxecto mesmo matriz, que é medio raro.
Non ten que ter unha matriz que só ten un tipo de elemento nel.
Pode ter moitas cousas diferentes a suceder alí dentro.
A outra cousa a notar é que cando ves algo como iso no seu código,
que é PHP válido para declarar unha matriz como esta, 0, 1, 2, 3, 4, 5,
que vai declarar un inicializar $ arr ser esta matriz.
Pero o que está realmente comezando baixo o capo é este tipo de implícito
xeración de chaves onde temos 0-0, 1-1, 2-2, 3-3.
E ocorre que, mesmo se ten unha matriz como este cara aquí
onde a, b e c como as teclas
e despois de comezar a usar o método push matriz para comezar a usar este conxunto como unha pila,
así podes ver que este obxecto de matriz, esta matriz é realmente quede resaltado.
Podemos usalo como unha matriz. Podemos usalo como unha táboa de hash.
Podemos usalo como unha pila.
Cando comezar a empurrar as cousas para esta matriz
a primeira cousa que empuxa para iso será o índice 0 e entón o índice 1 e índice 2.
Pode obter este tipo de xeración implícita de claves
a menos que especifique los explicitamente.
A forma como se especifica claves explícitamente, por suposto, é a usar esta notación de corchetes,
que é semellante a matrices, agás en vez de só permitir
índices enteiros aquí, agora imos permitir que calquera cousa.
Se queres que a clave para ser unha secuencia, que especifica-lo como este.
Se queres que sexa un int, que especifica a int quere usar.
>> Preguntas sobre o que ata agora?
Unha das cousas agradables sobre esta idea
é que só pode ter un valor almacenado cunha chave especial.
Se volvemos ao noso aparello, deixe-me eliminar algunhas destas cousas.
E digamos que eu arrincar un array para 0, 1, 2, feito.
Se eu agora sei que, por exemplo, se eu echo $ arr [0]
Eu estou indo para obter o valor 0 impresos,
e unha vez que só pode ser sempre un valor almacenado para unha determinada clave
se eu gardar algo en $ arr [0], digamos, un,
entón eu sei que cando eu echo $ arr [0] de novo
Eu non estou indo a obter 0 impresos como antes.
Eu só estou indo a obter un.
Polo tanto, este é basicamente dicindo que eu non podo ter $ arr [0] almacenar dous valores diferentes.
Non pode almacenar 0 ea secuencia de un, como esta, literalmente substitúe
o que estaba en $ arr [0] anteriormente.
A razón de eu levar iso é executalo, ver o que acontece.
Vexa aquí que eu teño 0 impresos e en seguida, unha.
Non hai nova liña alí porque eu era preguiceiro e non poñer isto dentro
O que é legal sobre iso é que pode usar isto como unha forma
para capturar esa idea dun conxunto
onde non podemos ter varias chaves dentro dunha matriz.
Non podemos ter chaves idénticas dentro dunha matriz.
Eu non podo ter tecla 0 eo valor 1, 0 chave e un valor
ou tecla 0 e verdadeiro valor.
As teclas son todos só hai unha chave na matriz.
Aínda que pode ter o mesmo valor almacenado
varias veces na matriz baixo diferentes claves
non é posible ter chaves idénticas varias veces na súa matriz PHP.
>> Se olharmos para este problema seguinte, unique.php,
onde queremos abrir un ficheiro PHP
contén unha lista de cadeas, unha cadea por liña,
e queremos atopar todas as secuencias únicas en que o arquivo
todo o que temos que facer é usar unha desas matrices PHP
e utilizar as cordas no arquivo como as claves para esa matriz
e manter a actualizar a nosa matriz como almacenar estas novas claves.
Como podemos ler cada liña fóra do arquivo podemos almacena-lo na matriz,
e ao final teremos como as nosas claves na nosa matriz
todas as cordas orixinais dentro do arquivo.
Isto ten sentido?
Imos ver como funciona isto.
Imos abrir, de acordo coa especificación, un novo arquivo chamado unique.php.
Abre. Oops, desculpe, novo arquivo.
Nós imos comezar a con as etiquetas do mesmo inicio e fin.
Estamos indo para garda-lo na sección 9, e imos chamalo de unique.php.
Ok, agora zoom in
A idea aquí é abrir un ficheiro,
ler en arquivo liña por liña.
Para cada liña no ficheiro
imos ter unha matriz onde temos
a liña como a nosa clave.
E entón, cando chegamos ao fin aquí
Chaves $ arr son as liñas exclusivas
a partir do ficheiro, pois sabemos que se eu poñer en liña esta matriz
varias veces vai só manter substituíndo o valor de idade,
e podemos realmente poñer liña matriz como si só como aquel.
>> Isto é medio raro.
Estamos almacenando o mesmo valor de clave par máis e máis e máis unha vez,
pero xa que está garantido que haberá só unha tecla chamada liña
Entón, se temos un arquivo que di un arquivo de sons de animais e au, au,
Miau Miau, Moo, Moo, e cada vez que lemos un ruído animal para fóra
como trama e almacena-lo na nosa matriz temos trama, e despois a segunda vez
gardados trama que vai substituír a primeira vez que o gardou.
Ao final, imos ter só unha entrada na matriz
para cada un dos ruídos de animais no noso arquivo de ruídos animal.
Vostedes senten seguros de que pode resolver a apertura dun arquivo en PHP?
Unha forma de facelo, imos por este camiño rapidamente, de facelo
é con fopen, como vimos anteriormente.
Pode fopen some_file.txt.
Podes abri-lo en modo de lectura, así como en C.
Esta é unha maneira perfectamente boa para facelo.
Tamén, a continuación, para lectura no ficheiro liña por liña
teñen as mesmas funcións, moitos deles, que fixo en C.
Tes fgets.
Tes feof, aínda que non gusto de usar que
porque, lembre, que non era grande na C.
Podes facelo do mesmo xeito,
pero aquí é unha cousa moi legal.
Sentímolo, eu non quero facer $ ficheiro, pero non hai unha función chamada de arquivo en PHP,
e esta función aquí é legal porque le todo o contido
do ficheiro que se especifica, de forma some_file.txt,
le todo o contido deste arquivo nun array
e entón permite percorrer, o que é moi bacana.
>> Ou tamén, por exemplo, para o noso navegador
e miramos a Google para o arquivo PHP
podes ver aquí que o noso guía di que le ficheiro enteiro nunha matriz,
e podemos file_get_contents para voltar o contido dun arquivo como unha cadea,
pero normalmente só recibindo-o como unha matriz é moi bo porque o que fai
e rompe-lo para que cada elemento
na matriz é unha liña do ficheiro,
por iso, se olharmos para o ficheiro 0, que é a primeira liña do ficheiro.
Ficheiro de unha liña, en segundo lugar, lima 2, a terceira liña, e así por diante e así por diante.
Non sería bo se iso era todo o que tiña que facer en C?
Moi bacana.
David amosou iso na charla, eo idioma que mostrou foi
que, ademais do noso patrón de loop en PHP tivemos que
é ($ i = 0; i <10, i + +),
e pode facelo en PHP tamén, mesmo
Tamén temos esa construción legal chamado foreach.
Foreach é realmente útil cando iterando arrays ou estas estruturas de datos
porque permite que retire cada elemento da matriz
sen ter que facer a man a indexación mesmo,
sen ter que crear manualmente unha variable de índice, increméntase o,
puxe o valor na matriz nese punto, porque iso é unha cousa moi común de facer.
>> Probablemente xa fixo iso toneladas de veces en que estaba facendo cousas C
ao longo do semestre, así con este foreach
podemos varrer esa matriz arquivo,
ea sintaxe é que queremos agora loop sobre esta matriz
e especificar que a variable que imos usar para almacenar
o elemento de matriz neste lugar, local para o ámbito deste loop foreach,
e imos chamalo de liña.
Se é un ficheiro de só palabras e non hai unha palabra nunha liña
poderiamos chamalo de palabra, así como, en realidade só dar a este un nome,
o que sexa chamalo,
e despois dentro do loop, pode facer o que quere con esta liña variable.
Se non é o suficiente para obter o valor da matriz e tamén quere obter
o índice xunto con el pode especificar un nome para o índice
así como o valor, e agora ten acceso a dúas variables.
Ten $ i e liña
onde $ i é o índice na matriz,
e liña é a liña que recuperou o arquivo.
Por exemplo, se quixésemos imprimir echo 0 liña do ficheiro coma este,
podemos facelo só como este, "Liña $ i do ficheiro é de R $ liña",
e aquí é algo que tampouco vin aínda quere
onde só totalmente ignorados durante este% s% d todo negocio
que tivemos que xestione a C, e, en vez eu fun directo para o
escribir as variables en liña na miña cadea.
>> Iso é chamado de interpolación de variables, string interpolación
onde está enchendo as variables na dereita, eo intérprete PHP
é intelixente o suficiente cando se está lendo a través dunha cadea que comeza coa dobre cita
non comiñas simples, cunha cadea entre apóstrofos non pode facer iso-
pero co dobre de cadeas entre comiñas como se le por el está a ollar para as variables.
E caza-los, e se ve variables que levará o valor da variable
e enche-lo para a cadea se pode convertelo en unha representación de cadea,
o que é moi bacana.
De momento, imos comentar o resto de todo,
gardar este, eo que podemos facer agora é que podemos abrir un ficheiro
que podemos chamar de some_file.txt-imos crear un novo arquivo
e podemos poñer en unha morea de cousas sen sentido aquí só para probar todo para fóra,
garda-lo, chama-lo some_file.txt, como eu estou facendo aquí enriba no cumio,
e agora, se eu reducir só para asegurarse que todo está no mesmo directorio
parece que eu teño unique.php e some_file.txt no mesmo directorio.
Se eu executar unique.php php
ver como imprime cada liña no meu arquivo e que a liña é?
>> Isto é moi poderoso, non?
Mira, que levou 3 liñas de código para abrir un arquivo.
Ben, catro liñas de código. Eu non podo contar, hoxe, claramente.
Pero realmente só dúas liñas interesantes de código, porque os outros 2 foron as claves,
pero neste código moi fomos capaces de abrir un arquivo, percorrer-lo,
puxe o número da liña e da propia liña
e imprimir lo.
Cousas legais. Charlotte.
[Charlotte] Eu teño unha pregunta sobre a sintaxe.
Entón foreach trata sobre cada liña do ficheiro que abrir,
e entón, cando quere facer as cousas con cada liña que acaba de facelo como
e, entón, asociar o valor.
[Nate H.] O que podes facer aquí, a cuestión foi
o foreach ten que ver coa matriz, para sintaxe foreach
é realmente foreach, e observe que non hai espazo
ou calquera cousa entre a ea cada.
Eles teñen que ir cara á dereita a carón do outro,
e iso leva a unha matriz,
e entón ten esta outra palabra clave chamada como que ten que estar alí,
e logo o que pode pór un nome de variable,
caso en que vai estar retirando os valores da matriz,
non os índices, ou se fai iso, como temos escrito embaixo
incorporarse as claves e os valores.
Tes elemento foreach da matriz ou par da matriz como introducido ao valor
ou só como valor.
Dependendo do que precisa, se non precisa de chaves,
entón podes ir con o valor.
Se queres as teclas que pode ir con eles tamén.
>> [Charlotte] Eu tamén entender que nunca declarou o I ou liña.
Como ela mesmo sabe o que son?
[Nate H.] O que quere dicir con declarar?
[Charlotte] Nunca dixen a eles que eu ou liña de medio.
[Nate H.] Nunca dixo o ordenador que eu ou liña significa en termos de-
[Charlotte] de que eles están indexadas ou que están-
[Nate H.] Nós nunca contou que este é suposta ser o índice ou a clave eo valor,
e iso é porque ese é o intérprete de PHP.
Isto serve como declaración e di que está ben, a clave será
unha variable chamada i almacenado nunha variable chamada i.
O valor que vai ser almacenado nunha liña variable chamada,
de xeito que este serve como declaración destas variables
e di $ i é unha chave, e US $ liña é un valor.
Si, Ella.
[Ella] Se as chaves non son feitas numéricamente
como é que decidirá cal orde que vai imprimir todo?
É exactamente como a orde en que entrou en?
[Nate H.] Imos darlle un intento.
Imos crear unha variable chamada arr,
e podemos facer un vai para o 7.
Imos dicir que 0 vai a outra matriz con 1, 2 ou mazá.
Digamos 7 vai 1, b vai para 2,
e 3 vai 4.
Este é un tipo de exemplo tolo buscando porque estamos mesturando
cadeas e enteiros en todo o lugar.
Non hai ningunha orde real a esa matriz.
Quero dicir, nós pode pedir todo en orde alfabética por as chaves.
Poderiamos pedir todo en orde alfabética polo valor.
>> Poderiamos tentar e ter en conta que algúns son cordas, algúns son ints,
e nós poderiamos tentar convertela los todos para o mesmo tipo e ver o que acontece,
ou poderiamos considera-los no valor en que xa foron escritas
onde imos poñer esa cara no primeiro, este cara na segunda, esa cara en terceiro,
este cara na cuarta, etcétera.
Imos ver o que acontece cando executamos este código.
Se rolar para abaixo e facer o mesmo tipo de cousas,
e aquí non é imprimir as novas liñas.
Cando se le cousas fóra do ficheiro que foi incluíndo as novas liñas nos valores,
que foi por iso que imprimiu ben, mentres aquí iso non aconteceu,
é por iso que todo é esmagado xuntos.
Imos engadir nesa nova liña só para facer cousas boas.
Imos executar de novo, e entón aquí
ollar para o que aconteceu.
É impreso todo orde en que poñelas na matriz.
Fai preservar a orde nese sentido.
>> Volvendo a este problema de únicos
onde queremos ser capaz de iterar sobre un ficheiro,
e nós imos dar-lle some_file.txt,
e imos iterar sobre el coma este.
Nós dixemos que queriamos usar unha matriz para estar seguro de que temos todo o
liñas exclusivas de alí, e nós poderiamos facelo moi facilmente
por só almacenar nunha matriz que, por suposto, declarar fóra do ámbito dun ciclo,
e dixo que, se usamos as liñas no ficheiro como as claves na nosa matriz
se entramos nunha liña duplicada estariamos substituíndo o valor anterior.
Non é sempre posible ter dúas chaves que son idénticos na mesma matriz.
Podemos facelo.
Nós imos nos librar desa declaración eco aquí.
Aquí estamos almacenando a liña no ficheiro na nosa matriz
utilizándose como a clave.
Nada para el, e verifícase que non precisa aínda de esta chave.
Nós non precisamos que variable.
Neste punto, se fose facer outro lazo foreach
e nós para loop sobre cada arr
e liña agora eco-oops, desculpe.
Non podemos utilizar a coma. Temos que usar isto como contrasinal.
Agora, se nós echo liña debemos obter todas as palabras orixinais na arquivo.
Ou tamén ata some_file.txt,
e digamos que facemos mazá, bananas, mazá, mazá, plátano,
se estamos a imprimir todas as palabras únicas neste arquivo que só debe comezar
mazá e plátano para imprimir.
Se gardar este, agora aquí imos zoom in,
php unique.php, e ta-da.
Nós éxito uniqued o arquivo.
>> A parte final deste problema está lle pedindo para clasificar esta matriz antes de imprimiu
porque neste exemplo sinxelo que acabamos de facer
tivemos sorte no sentido de que o arquivo
fixemos este exemplo ficticio con mazás e plátanos.
El xa estaba clasificada.
Pero usando a función de clasificación simple que pode clasificar unha matriz, que é moi bacana.
A última cousa que eu quería falar con vostedes sobre realmente rápido
é que este tipo de PHP é todo moi ben, e é super accesible
saber como facer, se precisa de facer pequenas, cousas rápidas de programación.
Por exemplo, se eu teño escribir un programa que, digamos,
pon todo en seccións eu non estou indo a ir e escribir en C.
Vai ser longa.
Vai ser unha especie de dor, especialmente se existen ficheiros implicados,
así como vostedes viron.
É tan bo que con só este código moi ben aquí
fomos capaces de rasgar a través dun arquivo, elimina todos os valores exclusivos
e imprimir-los de volta.
>> Con todo, para as súas atribucións, para os seus proxectos,
se está construíndo sitios con PHP é que o poder
estamos executando nosos arquivos PHP través deste intérprete,
eo intérprete está procesando todo dentro das etiquetas PHP,
deixando todo máis intocada e cuspindo os resultados.
Podemos facelo para construír HTML programaticamente.
Agora, se volver para a especificación, o último problema na especificación
fala sobre esa idea de concentracións
e creación dun menú desplegable,
que pode ou non quere facer, dependendo do que o seu proxecto final está facendo,
que permite ó usuario seleccionar a partir dunha lista de todos os posibles concentracións
unha a súa concentración.
Agora, este é un tipo de dor que escribir iso
e ten que facer todo isto manualmente, especialmente cando está tendo para asegurarse
que ten todos os corchetes no lugar seguro e as comiñas no lugar seguro,
así co PHP, pode facelo programaticamente, e pode facelo moi rapidamente.
>> Imos ver como facelo.
Nós imos abrir un novo arquivo.
Imos poñer nas nosas tags do PHP.
Imos chamalo de concentrations.php,
e agora, cando está facendo iso, unha especie de cousa boa para pensar
cando está intentando mesturar e combinar o seu PHP e HTML
é descubrir, ok, o que é a parte que quero xerar programaticamente?
Cal é a parte que eu poida xerar programaticamente?
É certo que pode facer todo o seu HTML
dentro de bloques de PHP.
Pode repetir todo o HTML como cadeas.
Por exemplo, se quero comezar a facer as marcas seleccionadas dentro PHP
Podo dicir eco, din seleccionar concentración = nome,
e despois alí embaixo Eu podería ter outro tag eco
ou outro eco chamado preto a selección.
Esta é unha forma de facelo porque o que este é, literalmente, vai facer
e imprimir esa cadea cando é executado a través do intérprete PHP,
polo tanto, o resultado será HTML.
Se eu gardar este ficheiro como é agora
e eu corro concentrations.php php
mira o que eu teño.
Eu teño esa etiqueta pechar abrir selección.
>> Se eu fose facer iso e eu fose para salvar este resultado para un arquivo,
dicir, concentrations.html espera, parece que o l pasou para outro lado
agora eu abrir aquí concentrations.html vedes que eu teño un arquivo HTML válido.
É o tipo de raro?
Estamos a usar PHP para crear HTML, crear HTML válido.
A maneira que nós estamos facendo é que estamos só ter a impresión PHP
HTML que queremos imprimir.
Este é, literalmente, como sitios PHP están funcionando.
Cando visita un sitio web que envía para algo como
algo, algo, algo punto com barra index.php
o ordenador é literalmente chamar index.php,
executa-lo través do intérprete PHP, e calquera lixo sae
está enviando ao seu navegador e dicindo ei, navegador, interpretar isto como HTML.
O bo é que pode ser unha dor de escribir constantemente eco, eco, eco, eco
e coloque todo en citas como esta, por iso, se quere escribir
HTML que vai ser estático que se pode facelo así,
poñelas fóra, pecha-lo,
e aquí só poñer dentro das etiquetas PHP que coñece
quere xerar programaticamente e, neste caso, é opción de etiquetas
que son unha dor de xerar.
>> Por exemplo, poderiamos xerar unha opción tags mil
facendo algo parecido con iso, $ i <1000, i + +
e dicindo o valor da opción de eco-= $ berros, eu non podo facer iso.
Ben, imos tentar e ver o que acontece.
$ I e entón dicir $ i </ opción.
En vez de ter que escribir esa marca opción mil veces diferentes
Está a usar o código PHP para xerar automaticamente por medio de programación.
Tipo de bacana. Si
Lembro de ser mencionado en calquera charla ou o paso a paso,
Pero cal é a diferenza entre as comiñas,
os normais e esas cousas simples?
Iso é algo que eu teña feito incorrectamente aquí que eu estaba indo para amosar-lle.
As comiñas simples non permiten calquera caracteres especiais,
polo tanto, todo dentro dunha cadea entre comiñas simples é interpretado literalmente.
Se eu tivese un \ n dentro comiñas simples e eu gardar este, por exemplo,
e agora eu vou baixar aquí e executa-o-
Oops, onde vou?
Ah, é porque eu esquezo o $.
>> Agora, se eu abrir, a verdade, aquí, que vai se librar do escriba-lo nun arquivo.
Nós imos só le-lo.
Aquí vese que eu teño esa literal \ n na secuencia, como non unha liña real novo,
e así mesmo, en vez de realmente interpolando o valor desta variable
me deu a $ i si, que é un tipo de dor.
O xeito de evitar isto é utilizar as comiñas dobres,
e entón, cando usa comiñas vai realmente
adecuadamente interpolar os valores de todas estas variables aquí
e tamén recoñece esta \ n ser a nova liña que é
e non \ n.
Usando as solteiras é bo cando ten
caracteres que poden ser interpretados como caracteres especiais, porque entón non tes que
escapar deles constantemente.
As cousas poden ficar confuso, e moitas veces a forma que eu fago,
só para facer cousas fáciles, é que se eu vou ter nada
HTML como no meu código eu vou incluír edición dentro comiñas
e entón usar este operador de concatenação
para concatenar as variables dentro
Esta é outra forma de facelo
onde temos o punto que vai conectar esta é unha cadea
con iso con este, con iso,
e agora eu non teño que escapar destas comiñas.
Eu non teño que usar esa cara escapar.
Eles literalmente ser impresas como comiñas dobres e entón esa cara aquí.
Esta é outra forma de se mesturar todo xunto.
>> [Estudante] Tamén, cando eco gettype non había comiñas en todo.
Certo, entón é unha especie de eco especial no sentido de que non precisa de parénteses.
Non é preciso ter necesariamente as comiñas en torno de variables,
como é válido dicir echo $ i, e que vai interpretar isto como unha cadea.
El vai facer o reparto, para que poidamos facelo, e iso é válido tamén, pero nós non necesitamos del.
É opcional.
No conxunto desta semana problema ollar a unha morea de este tipo de cousas
onde está mesturando e combinando HTML con PHP
como esta, e agora, se rolar cara atrás e corremos este
podemos ver que temos unha morea de valores de opción
que acaba de ser impresa.
Temos todo o HTML xerado este que quedou moi rápido para nós.
Vou deixar como un exercicio.
É moi semellante á lectura de arquivo que fixemos anteriormente.
>> Hai un ficheiro concentrations.txt que pode puxar para abaixo a partir do CDN,
e pode abri-lo usando o mesmo truco foreach que fixemos anteriormente,
foreach e só tes que ecoar unha opción e conectar
os valores adecuados, as teclas apropiadas e índices,
e entón comeza un drop down que literalmente crea
programaticamente para todas as diferentes concentracións en Harvard.
Unha cousa útil para ter.
Hai unha morea de cousas de configuración para esa concesión.
Se non ten feito isto xa tomar a próxima media hora, hora,
algún tempo esta noite en definitiva, con certeza,
camiñar a través da especificación conxunto de problemas,
ver o que está a suceder coa configuración dos vhosts, o servidor local, todas esas cousas.
Unha cousa a resaltar neste momento é que
na maioría dos conxuntos de problemas que temos que entrar na súa carpeta Dropbox
e despois facer a descarga do ficheiro zip problema set e descompactá-lo.
Por este conxunto de problemas que non quere.
Queres ir a este directorio vhosts.
Queres ir a vhosts e ir ao directorio do servidor local, dentro dela,
e é aí onde vai querer tirar abaixo o arquivo zip,
descompactá-lo, e prepare-se para ir.
Terá que seguir os pasos de preto.
>> Se ten algunha dúbida, envíe un correo-e, post-lo no Discutir, veña para o horario de oficina.
Grazas rapaces. Na próxima semana imos ter unha sesión de revisión para o exame.
Aproveitar o seu conxunto de problemas pasado. Espero que todo vai moi ben.
[CS50.TV]