1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seção 8] [menos confortável] 2 00:00:02,000 --> 00:00:04,000 [Nate Hardison] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Esta é CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:11,000 >> Bem-vindo ao nosso segundo a última seção. 5 00:00:11,000 --> 00:00:13,000 Nesta semana vamos falar sobre PHP, e então na próxima semana 6 00:00:13,000 --> 00:00:17,000 vamos fazer uma pequena revisão para Quiz 1. 7 00:00:17,000 --> 00:00:20,000 Nós vamos começar na página 3 do problema define pacote, 8 00:00:20,000 --> 00:00:28,000 e vamos trabalhar através da seção de perguntas rapidamente. 9 00:00:28,000 --> 00:00:34,000 Na página 3, nós começamos a falar sobre essa diferença entre C e PHP 10 00:00:34,000 --> 00:00:38,000 no sentido de que o PHP é uma linguagem de tipagem dinâmica, 11 00:00:38,000 --> 00:00:42,000 enquanto C é tipagem estática, 12 00:00:42,000 --> 00:00:46,000 e tem alguém realmente feito rapidamente qualquer codificação em algo como PHP 13 00:00:46,000 --> 00:00:51,000 ou Python ou Ruby antes, JavaScript? 14 00:00:51,000 --> 00:00:53,000 Totalmente novo? Okay. 15 00:00:53,000 --> 00:00:56,000 >> Todas essas línguas que eu acabei de mencionar 16 00:00:56,000 --> 00:01:01,000 são muito diferentes linguagens como C e C + + e Java 17 00:01:01,000 --> 00:01:04,000 no sentido de que quando você declara uma variável que você não tem que declarar 18 00:01:04,000 --> 00:01:09,000 que tipo de variável é, por isso, C foram preso ter que sempre digo 19 00:01:09,000 --> 00:01:13,000 isso vai ser uma variável int, ou isso vai ser uma variável char *, 20 00:01:13,000 --> 00:01:16,000 enquanto que com PHP, com o Python, com Ruby, 21 00:01:16,000 --> 00:01:20,000 com um monte de línguas mais modernas você não tem que fazer isso em tudo. 22 00:01:20,000 --> 00:01:24,000 Você acabou de declarar sua variável, e, no caso do PHP 23 00:01:24,000 --> 00:01:28,000 você declarar que é uma variável prefixando-lo com um sinal de $, 24 00:01:28,000 --> 00:01:35,000 e, em seguida, o tipo da variável é determinada por qualquer valor que está segurando, 25 00:01:35,000 --> 00:01:38,000 que é legal. 26 00:01:38,000 --> 00:01:44,000 Para brincar com isso um pouco, temos código de exemplo PHP aqui 27 00:01:44,000 --> 00:01:47,000 entre as tags de início e fim. 28 00:01:47,000 --> 00:01:53,000 Estamos usando este tipo de como HTML no sentido de que 29 00:01:53,000 --> 00:01:56,000 temos estes colchetes aqui para abrir e fechar. 30 00:01:56,000 --> 00:01:58,000 Você vai ver isso com HTML. 31 00:01:58,000 --> 00:02:03,000 Você vai ver o mesmo tipo de sintaxe com XML também. 32 00:02:03,000 --> 00:02:06,000 >> Isto indica o início de um bloco PHP. 33 00:02:06,000 --> 00:02:09,000 Este php? É específico para PHP. 34 00:02:09,000 --> 00:02:16,000 Fechamos tudo com um> também. 35 00:02:16,000 --> 00:02:22,000 Vamos abrir um arquivo no nosso aparelho com o que você gostaria. 36 00:02:22,000 --> 00:02:25,000 Neste pacote que diz chamar dynamic.php. 37 00:02:25,000 --> 00:02:29,000 Na verdade, você pode chamá-lo de tudo o que gostaria, mas o nome do arquivo vai aparecer 38 00:02:29,000 --> 00:02:34,000 e ser importante mais tarde, então lembre-se que você chamá-lo. 39 00:02:34,000 --> 00:02:36,000 Eu vou passar para o aparelho, 40 00:02:36,000 --> 00:02:43,000 e eu vou fazer um diretório para 41 00:02:43,000 --> 00:02:48,000 secção 9 Eu creio que estamos agora. 42 00:02:48,000 --> 00:02:51,000 E vamos para a secção 9, 43 00:02:51,000 --> 00:02:54,000 e eu vou usar o gedit. 44 00:02:54,000 --> 00:02:59,000 Vamos ver, gedit, e eu vou chamar dynamic.php meu. 45 00:02:59,000 --> 00:03:03,000 Boom. 46 00:03:03,000 --> 00:03:06,000 Dentro dynamic.php, já que este é um arquivo PHP 47 00:03:06,000 --> 00:03:09,000 e eu quero executar este através do intérprete PHP 48 00:03:09,000 --> 00:03:12,000 Eu preciso começar tudo com as tags abertas, 49 00:03:12,000 --> 00:03:17,000 então eu vou começar os imediatamente, 50 00:03:17,000 --> 00:03:23,000 me dar um pouco de espaço entre as tags, 51 00:03:23,000 --> 00:03:26,000 e então o ponto deste exercício foi de brincar com 52 00:03:26,000 --> 00:03:34,000 esta função chamada gettype, assim gettype, esta função aqui. 53 00:03:34,000 --> 00:03:38,000 >> Observe que não há espaço ou sublinhado ou hífen ou qualquer coisa assim 54 00:03:38,000 --> 00:03:42,000 separando as duas palavras, começar e escrever, apenas uma palavra completamente. 55 00:03:42,000 --> 00:03:46,000 Mas o que isto vai fazer é se eu passar em uma variável para gettype, 56 00:03:46,000 --> 00:03:51,000 dizer $ var ou $ x, 57 00:03:51,000 --> 00:03:55,000 isso vai me dizer o tipo de em um formato de depuração 58 00:03:55,000 --> 00:03:59,000 que o nome de que tipo é. 59 00:03:59,000 --> 00:04:03,000 Nós vamos experimentar aqui. 60 00:04:03,000 --> 00:04:07,000 Em particular, se você olhar para trás, a especificação pset 61 00:04:07,000 --> 00:04:11,000 temos algumas linhas diferentes do código aqui. 62 00:04:11,000 --> 00:04:16,000 Na primeira linha de código que inicializar esta variável, $ var, 63 00:04:16,000 --> 00:04:21,000 ser igual a 7, e, em seguida, temos esta linha printf 64 00:04:21,000 --> 00:04:25,000 que diz hey, var printf está em branco. 65 00:04:25,000 --> 00:04:29,000 Printf é uma das muitas maneiras de imprimir coisas em PHP. 66 00:04:29,000 --> 00:04:33,000 Muitas vezes você vai ver a função eco usado em vez de printf, 67 00:04:33,000 --> 00:04:40,000 printf mas estamos todos familiarizados com tendo sido codificação em C por um tempo. 68 00:04:40,000 --> 00:04:42,000 O que você pode realmente fazer é deixar de ver obras se copiar e colar. 69 00:04:42,000 --> 00:04:46,000 Eu vou dar a este uma tentativa. 70 00:04:46,000 --> 00:04:52,000 Vamos voltar para o aparelho. 71 00:04:52,000 --> 00:05:00,000 Ok, e lá vamos nós. 72 00:05:00,000 --> 00:05:05,000 E espaçamento é um pouco descolados, mas aqui vamos nós. 73 00:05:05,000 --> 00:05:08,000 Temos esse código aqui. 74 00:05:08,000 --> 00:05:11,000 >> [Estudante] É estilo não é bom para a guia-lo? 75 00:05:11,000 --> 00:05:13,000 Desculpe? 76 00:05:13,000 --> 00:05:15,000 [Estudante] É convencional para guia-lo? 77 00:05:15,000 --> 00:05:21,000 Certo, então Sam pergunta se é convenção para guia-lo ou não. 78 00:05:21,000 --> 00:05:23,000 Normalmente sim. 79 00:05:23,000 --> 00:05:26,000 Neste caso, eu escolhi não fazer isso. 80 00:05:26,000 --> 00:05:33,000 Honestamente, você vai ver coisas diferentes entre os programadores diferentes. 81 00:05:33,000 --> 00:05:40,000 PHP é normalmente usado muitas vezes em combinação com HTML 82 00:05:40,000 --> 00:05:45,000 e outras línguas, e por isso às vezes a impressão vai ficar um pouco descolados 83 00:05:45,000 --> 00:05:50,000 se você recuar no PHP início e tags de fim. 84 00:05:50,000 --> 00:05:53,000 Ela realmente depende. 85 00:05:53,000 --> 00:05:56,000 Neste caso, o copiar e colar não colar as abas para mim, 86 00:05:56,000 --> 00:06:02,000 mas definitivamente não, como você disse, torná-lo mais claro. 87 00:06:02,000 --> 00:06:06,000 Tudo bem, se você salvar este código em dynamic.php 88 00:06:06,000 --> 00:06:10,000 então o que você pode fazer é vir para baixo a sua janela de terminal onde estou aqui em baixo 89 00:06:10,000 --> 00:06:17,000 no gedit, e para fazer o equivalente a compilação 90 00:06:17,000 --> 00:06:20,000 com make e depois executar o código em C 91 00:06:20,000 --> 00:06:25,000 tudo que você tem a ver com o arquivo PHP é iniciar o interpretador PHP, 92 00:06:25,000 --> 00:06:30,000 que é um pequeno programa chamado PHP, 93 00:06:30,000 --> 00:06:35,000 eo argumento que você dá para o intérprete é o arquivo que você deseja interpretar. 94 00:06:35,000 --> 00:06:40,000 Neste caso dynamic.php,. 95 00:06:40,000 --> 00:06:43,000 Opa, onde foi que eu colocá-lo? 96 00:06:43,000 --> 00:06:52,000 Oh, eu colocá-lo na seção 9, e aqui estou eu. É por isso. 97 00:06:52,000 --> 00:06:57,000 >> Agora, se eu correr de novo 98 00:06:57,000 --> 00:07:02,000 vemos que em minha primeira chamada função gettype 99 00:07:02,000 --> 00:07:04,000 var é um inteiro. 100 00:07:04,000 --> 00:07:12,000 Na var próximo é uma string, e depois no var terceiro é um boolean. 101 00:07:12,000 --> 00:07:15,000 O que é interessante sobre isso é se deslocar de volta, vemos que 102 00:07:15,000 --> 00:07:18,000 estes são tipos semelhantes aos que tínhamos em C. 103 00:07:18,000 --> 00:07:22,000 Tivemos ints em C. 104 00:07:22,000 --> 00:07:26,000 Nós meio que tinha cordas em C, 105 00:07:26,000 --> 00:07:31,000 assim cordas não eram um tipo totalmente legit no sentido de que 106 00:07:31,000 --> 00:07:37,000 nossa string CS50 era realmente o que? 107 00:07:37,000 --> 00:07:39,000 Desculpe? Missy? 108 00:07:39,000 --> 00:07:41,000 [Missy] Char *. 109 00:07:41,000 --> 00:07:43,000 Sim, foi esse char * usamos. 110 00:07:43,000 --> 00:07:47,000 No início do semestre nós utilizando o tipo string, 111 00:07:47,000 --> 00:07:52,000 mas era realmente um char * sob o capô. 112 00:07:52,000 --> 00:07:58,000 Nós só tipo definido que, enquanto em PHP essas cadeias são um tipo real. 113 00:07:58,000 --> 00:08:07,000 Não há mais dessas coisas do tipo char *. 114 00:08:07,000 --> 00:08:10,000 >> Você vai ver que nós podemos fazer muito mais coisas com cordas 115 00:08:10,000 --> 00:08:14,000 muito mais facilmente em PHP do que poderíamos em C, 116 00:08:14,000 --> 00:08:17,000 e, finalmente, temos este tipo boolean, e a grande diferença aqui é que 117 00:08:17,000 --> 00:08:21,000 se deslocar de volta para baixo, vemos que o nome desses tipos 118 00:08:21,000 --> 00:08:28,000 agora são string, inteiro, e ao invés de boolean, int e bool 119 00:08:28,000 --> 00:08:31,000 e como você pegar diferentes linguagens de programação, 120 00:08:31,000 --> 00:08:36,000 assumindo que em algum momento de suas vidas, irá entrar em contato com 121 00:08:36,000 --> 00:08:40,000 os diferentes você vai notar pequenas peculiaridades como esta 122 00:08:40,000 --> 00:08:44,000 onde C chama ints inteiros. 123 00:08:44,000 --> 00:08:46,000 Alguns chamam-lhe números inteiros. 124 00:08:46,000 --> 00:08:51,000 Existem outros termos que você vai correr em. 125 00:08:51,000 --> 00:08:55,000 Int grande que vimos hoje em SQL. 126 00:08:55,000 --> 00:08:59,000 Há também o número e, em seguida, bool, boolean, 127 00:08:59,000 --> 00:09:03,000 todos os tipos de diferenças lá. 128 00:09:03,000 --> 00:09:07,000 >> Isso não é muito interessante, mas agora eu estou indo dar-lhe um pouco de tempo 129 00:09:07,000 --> 00:09:13,000 se o zoom-out para trabalhar através deste exercício, na parte inferior da página 3 130 00:09:13,000 --> 00:09:20,000 onde ele pede que tipos correspondem a esses valores aqui no fundo. 131 00:09:20,000 --> 00:09:24,000 Temos 3.50. 132 00:09:24,000 --> 00:09:28,000 Nós temos esta coisa aqui, o que é interessante. 133 00:09:28,000 --> 00:09:32,000 Nós não vimos isso antes, mas se você estiver seguindo ao longo de palestra 134 00:09:32,000 --> 00:09:35,000 você provavelmente já sabe o que é. 135 00:09:35,000 --> 00:09:40,000 Então nós temos isso, que este é o tipo de funky. 136 00:09:40,000 --> 00:09:42,000 Você reconhece isso. 137 00:09:42,000 --> 00:09:46,000 O que é isso em C? 138 00:09:46,000 --> 00:09:50,000 Sam? O que isso lhe dar em C? 139 00:09:50,000 --> 00:09:54,000 Seria abrir um arquivo chamado dynamic.php e torná-lo legível. 140 00:09:54,000 --> 00:09:58,000 Sim, e qual seria o tipo de variável que seria atribuir isso? Estrela do arquivo. >> 141 00:09:58,000 --> 00:10:02,000 Exatamente, seria atribuir isso a uma estrela de arquivo. 142 00:10:02,000 --> 00:10:08,000 Este é PHP legítimo também. 143 00:10:08,000 --> 00:10:12,000 Executar isso. Veja o que acontece quando você passar isso para gettype. 144 00:10:12,000 --> 00:10:19,000 E também verificar o que é nula, o que poderia ser em PHP. 145 00:10:19,000 --> 00:10:21,000 Eu vou te dar um par de minutos. 146 00:10:21,000 --> 00:10:24,000 Você pode literalmente copiar e colar esses valores, 147 00:10:24,000 --> 00:10:29,000 e então vamos fazer uma chamada pouco aleatório em você 148 00:10:29,000 --> 00:10:34,000 e ver o que você tem. 149 00:10:34,000 --> 00:10:36,000 >> [Estudante] Eu tenho uma pergunta. << Yeah. 150 00:10:36,000 --> 00:10:40,000 Em uma das palestras David disse que há algo que você pode colocar no topo de seu arquivo 151 00:10:40,000 --> 00:10:43,000 de modo que você não precisa digitar no PHP cada vez. 152 00:10:43,000 --> 00:10:45,000 O que foi isso? 153 00:10:45,000 --> 00:10:50,000 Ele foi, provavelmente, a falar sobre o estrondo libra, o estrondo de hash. 154 00:10:50,000 --> 00:10:57,000 É uma directiva que se você marcar o arquivo como executável 155 00:10:57,000 --> 00:11:01,000 então o que ele faz é quando você executar o arquivo 156 00:11:01,000 --> 00:11:06,000 ele vai dizer o programa shell 157 00:11:06,000 --> 00:11:12,000 para usar o intérprete PHP para interpretar o conteúdo do arquivo. 158 00:11:12,000 --> 00:11:16,000 A questão de ser o que era esta linha especial 159 00:11:16,000 --> 00:11:20,000 que poderíamos incluir no topo de nossos arquivos PHP para não ter de incluir 160 00:11:20,000 --> 00:11:26,000 esta linha PHP ou PHP este comando sempre que quiser executar o arquivo? 161 00:11:26,000 --> 00:11:31,000 E você pode realmente fazer isso com um monte de arquivos diferentes. 162 00:11:31,000 --> 00:11:37,000 Eu acredito que depende de onde o binário do PHP é armazenado, 163 00:11:37,000 --> 00:11:43,000 mas muitas vezes usr / bin / php é um bom lugar para começar. 164 00:11:43,000 --> 00:11:45,000 Você pode descobrir isso exatamente, indo de volta para o seu aparelho 165 00:11:45,000 --> 00:11:50,000 e digitando que php. 166 00:11:50,000 --> 00:11:55,000 O comando que calcula quando você está executando binário 167 00:11:55,000 --> 00:12:01,000 ou um comando de onde o arquivo correspondente. 168 00:12:01,000 --> 00:12:06,000 Isso me diz que o PHP é realmente aliasing este arquivo binário 169 00:12:06,000 --> 00:12:13,000 que está armazenado em usr / bin, que é onde muitos dos binários do sistema estão instaladas. 170 00:12:13,000 --> 00:12:21,000 Por exemplo, se eu rolar até o topo, agora que eu coloquei essa #! linha aqui 171 00:12:21,000 --> 00:12:27,000 Eu posso rolar para baixo, e eu posso tentar executar 172 00:12:27,000 --> 00:12:35,000 dynamic.php, mas eu recebo este erro sobre a permissão que está sendo negado, 173 00:12:35,000 --> 00:12:42,000 eo que isso significa é que este arquivo não está dando permissões executáveis. 174 00:12:42,000 --> 00:12:46,000 Não é marcado como um arquivo que alguém possa ser executado. 175 00:12:46,000 --> 00:12:52,000 >> Quando você executou fazer ou Clang e você tem um executável a partir dele 176 00:12:52,000 --> 00:12:56,000 o compilador foi inteligente o suficiente para saber que, ei, eu estou construindo um executável. 177 00:12:56,000 --> 00:13:00,000 Você provavelmente vai querer executá-lo, de modo que seria configurar automaticamente 178 00:13:00,000 --> 00:13:02,000 as permissões para você. 179 00:13:02,000 --> 00:13:06,000 Este não é o caso, porém, quando você cria um arquivo normal a partir do zero, 180 00:13:06,000 --> 00:13:13,000 A razão é normalmente você não quer ter qualquer arquivo no seu sistema seja executável, 181 00:13:13,000 --> 00:13:15,000 para que você realmente tem que ir e fazê-lo manualmente. 182 00:13:15,000 --> 00:13:22,000 A maneira mais fácil de fazer isso é com o comando chmod, 183 00:13:22,000 --> 00:13:28,000 e chmod + x diz adicionar o bit executável 184 00:13:28,000 --> 00:13:31,000 porque não é o pouco de leitura, o bit de gravação eo pouco executável, 185 00:13:31,000 --> 00:13:35,000 r, w e x, 186 00:13:35,000 --> 00:13:39,000 e dizendo chmod + x irá ligar o bit executável 187 00:13:39,000 --> 00:13:46,000 para, em seguida, o arquivo que nós especificamos, que neste caso será dynamic.php. 188 00:13:46,000 --> 00:13:49,000 >> [Estudante] é que ligado para todos? 189 00:13:49,000 --> 00:13:52,000 Vamos verificar isso, assim como eu verifique as permissões? 190 00:13:52,000 --> 00:13:54,000 Você sabe como eu verifique as permissões de um arquivo? 191 00:13:54,000 --> 00:13:56,000 [Resposta do aluno inaudível] 192 00:13:56,000 --> 00:13:58,000 Desculpe? >> [Estudante] XSD. 193 00:13:58,000 --> 00:14:03,000 XSD dá-nos o arquivo em hacks. 194 00:14:03,000 --> 00:14:09,000 Listando todos os arquivos,-L, vai me mostrar todos os arquivos no meu diretório 195 00:14:09,000 --> 00:14:13,000 tipo de em sua longa lista detalhada, e assim por aqui vemos que 196 00:14:13,000 --> 00:14:17,000 este arquivo dynamic.php 197 00:14:17,000 --> 00:14:23,000 foi modificada pela última vez em 05 de novembro 04:21 PM. 198 00:14:23,000 --> 00:14:26,000 O proprietário deste arquivo é jharvard. 199 00:14:26,000 --> 00:14:28,000 Esse é o usuário que está logado pol 200 00:14:28,000 --> 00:14:31,000 Esse é o usuário que eu estou trabalhando como, 201 00:14:31,000 --> 00:14:36,000 e se você também está no aparelho que você está trabalhando também como jharvard usuário. 202 00:14:36,000 --> 00:14:38,000 Você está no grupo de alunos, 203 00:14:38,000 --> 00:14:44,000 e estas são as coisas que você vai ver muitas vezes o suficiente. 204 00:14:44,000 --> 00:14:47,000 >> Podemos entrar em muitos detalhes aqui, 205 00:14:47,000 --> 00:14:50,000 mas na maior parte o que você quer olhar para quando você está olhando para ver 206 00:14:50,000 --> 00:14:55,000 se ou não um arquivo é executável é primariamente 207 00:14:55,000 --> 00:14:58,000 o usuário que possui o arquivo, o proprietário, 208 00:14:58,000 --> 00:15:03,000 assim jharvard isso, e então nós temos 209 00:15:03,000 --> 00:15:07,000 os bits de permissões por aqui à esquerda, 210 00:15:07,000 --> 00:15:13,000 e da forma de ler esta é que o último bit 211 00:15:13,000 --> 00:15:18,000 tipicamente é usado para a marcação ou pelo menos não-menos neste caso 212 00:15:18,000 --> 00:15:21,000 essa última, muitas vezes, ser definido para anúncio para indicar 213 00:15:21,000 --> 00:15:24,000 que o arquivo é um diretório e não apenas um arquivo normal. 214 00:15:24,000 --> 00:15:28,000 Então, os seguintes 3 bits aqui mesmo 215 00:15:28,000 --> 00:15:34,000 determinar as permissões que o proprietário do arquivo tem, 216 00:15:34,000 --> 00:15:38,000 portanto, neste caso jharvard, como o proprietário do arquivo, pode ler e escrever neste arquivo, 217 00:15:38,000 --> 00:15:42,000 mas há um traço dizendo que jharvard não pode executar esse arquivo. 218 00:15:42,000 --> 00:15:46,000 Os próximos três bits são para o grupo, de modo que este é o grupo de alunos, 219 00:15:46,000 --> 00:15:49,000 por isso, se havia vários usuários no meu aparelho, 220 00:15:49,000 --> 00:15:52,000 e tivemos vários usuários como parte do grupo de alunos, 221 00:15:52,000 --> 00:15:55,000 então eles podem ler este arquivo, mas não pode escrever, 222 00:15:55,000 --> 00:15:59,000 e também qualquer outra pessoa, o mundo 223 00:15:59,000 --> 00:16:01,000 só pode ler este arquivo também. 224 00:16:01,000 --> 00:16:03,000 Há um writeup, bom tempo sobre isso, 225 00:16:03,000 --> 00:16:05,000 assim você pode ler online. 226 00:16:05,000 --> 00:16:10,000 Na especificação do conjunto de problemas que vão para isso com mais detalhe. 227 00:16:10,000 --> 00:16:12,000 >> [Estudante] é o 218 referindo-se ao mundo? 228 00:16:12,000 --> 00:16:17,000 O 218 é-em cima da minha cabeça, eu estou esquecendo, 229 00:16:17,000 --> 00:16:20,000 mas não. 230 00:16:20,000 --> 00:16:29,000 Vamos ver. Estou cega nisso agora. 231 00:16:29,000 --> 00:16:32,000 Volta para o que estávamos prestes a fazer com este chmod + x 232 00:16:32,000 --> 00:16:37,000 onde queríamos dar permissões executáveis ​​dynamic.php, 233 00:16:37,000 --> 00:16:40,000 ea pergunta era se isso iria dar permissões executáveis ​​para todos 234 00:16:40,000 --> 00:16:44,000 ou apenas jharvard, e podemos ver isso 235 00:16:44,000 --> 00:16:48,000 executar os comandos e digitando ls-l, 236 00:16:48,000 --> 00:16:51,000 e agora vemos que ela é marcada como executável. 237 00:16:51,000 --> 00:16:54,000 Você vê que houve uma mudança de cor. 238 00:16:54,000 --> 00:16:57,000 Agora dynamic.php está listada de verde, 239 00:16:57,000 --> 00:17:01,000 e parece que a resposta para a questão é que, Charlotte? 240 00:17:01,000 --> 00:17:04,000 [Charlotte] Só jharvard. >> Jharvard Apenas, sim. 241 00:17:04,000 --> 00:17:08,000 >> Se queria virar a pouco executável em para todos 242 00:17:08,000 --> 00:17:10,000 como podemos fazer isso? 243 00:17:10,000 --> 00:17:13,000 Quaisquer pensamentos? >> A + x? 244 00:17:13,000 --> 00:17:15,000 Sim, exatamente. 245 00:17:15,000 --> 00:17:23,000 Charlotte disse que podemos fazer chmod + x de um dos dynamic.php, 246 00:17:23,000 --> 00:17:26,000 e agora, se executar ls-l, vemos que os bits executáveis 247 00:17:26,000 --> 00:17:30,000 são de fato ligado para todos. 248 00:17:30,000 --> 00:17:37,000 E você pode realmente fazer o inverso deste, de modo que você pode desligá-lo para todos 249 00:17:37,000 --> 00:17:41,000 usando menos. 250 00:17:41,000 --> 00:17:46,000 Agora ele está desligado, e agora podemos ligá-lo novamente para jharvard 251 00:17:46,000 --> 00:17:52,000 para que possamos realmente executá-lo agora, 252 00:17:52,000 --> 00:17:58,000 e agora você vê quando executa o código presente especial #! linha na parte superior, 253 00:17:58,000 --> 00:18:04,000 #! linha, disse o shell, 254 00:18:04,000 --> 00:18:08,000 disse o nosso terminal hey, quando esse arquivo é executado, 255 00:18:08,000 --> 00:18:14,000 usar / usr / bin / php para interpretar este arquivo 256 00:18:14,000 --> 00:18:20,000 e, em seguida, imprimir a saída. 257 00:18:20,000 --> 00:18:22,000 [Pergunta estudante inaudível] 258 00:18:22,000 --> 00:18:25,000 Claro, deixe-me ir para cima. Assim como este. 259 00:18:25,000 --> 00:18:36,000 Você vai ver todas essas directivas começar com este libra e, em seguida, o ponto de exclamação, 260 00:18:36,000 --> 00:18:39,000 às vezes chamado de um estrondo, shebang hash. 261 00:18:39,000 --> 00:18:48,000 >> [Estudante] Como podemos executá-lo com dynamic.php php antes de torná-lo executável? 262 00:18:48,000 --> 00:18:55,000 A questão era como podemos executar isso usando o binário do PHP 263 00:18:55,000 --> 00:18:58,000 enquanto dynamic.php não é executável? 264 00:18:58,000 --> 00:19:01,000 Isso é super importante, porque é exatamente como 265 00:19:01,000 --> 00:19:06,000 ele está indo para o trabalho quando você escreve conjunto de problemas 7. 266 00:19:06,000 --> 00:19:09,000 A maioria dos arquivos de tempo do PHP não são diretamente executável. 267 00:19:09,000 --> 00:19:14,000 A maneira que funciona é porque é o binário PHP que é executável. 268 00:19:14,000 --> 00:19:16,000 O intérprete é a coisa que está sendo executado, 269 00:19:16,000 --> 00:19:20,000 e assim o que está fazendo é, literalmente, chupando em todo o conteúdo 270 00:19:20,000 --> 00:19:25,000 do nosso arquivo dynamic.php e linha por linha vai 271 00:19:25,000 --> 00:19:29,000 e executar os comandos, por isso é usando o nosso arquivo PHP 272 00:19:29,000 --> 00:19:31,000 como uma lista de instruções. 273 00:19:31,000 --> 00:19:36,000 Não está diretamente executá-lo. 274 00:19:36,000 --> 00:19:40,000 É aí que dizemos que esses arquivos são interpretados em tempo de execução. 275 00:19:40,000 --> 00:19:46,000 É uma linguagem tempo de execução, em vez de algo que é determinado em tempo de compilação, 276 00:19:46,000 --> 00:19:49,000 não uma linguagem compilada como C. 277 00:19:49,000 --> 00:19:54,000 >> Existe uma maneira de obter uma linguagem tempo de execução de agir como se fosse uma linguagem tempo de compilação, 278 00:19:54,000 --> 00:19:58,000 Como se você tiver todo o corredor feito no servidor 279 00:19:58,000 --> 00:20:00,000 em vez de, você sabe o que quero dizer? 280 00:20:00,000 --> 00:20:04,000 Sim, então a questão é 281 00:20:04,000 --> 00:20:11,000 há uma maneira de obter línguas tempo de execução para agir mais como os tipos de tempo de compilação de linguagens? 282 00:20:11,000 --> 00:20:18,000 E lá estão, quer dizer, que é uma área ativa de pesquisa para muitas dessas empresas. 283 00:20:18,000 --> 00:20:22,000 Acredito que o Facebook tem feito um grande trabalho com PHP 284 00:20:22,000 --> 00:20:25,000 e compilá-lo para baixo, tornando-o mais rápido, otimizando-o 285 00:20:25,000 --> 00:20:29,000 desde o seu site é construído em PHP. 286 00:20:29,000 --> 00:20:34,000 Se você estiver seguindo Node.js em tudo, 287 00:20:34,000 --> 00:20:40,000 que é uma espécie de um interpretador de JavaScript 288 00:20:40,000 --> 00:20:44,000 para ser capaz de executar JavaScript fora do navegador, fora de seu navegador, 289 00:20:44,000 --> 00:20:47,000 porque tradicionalmente JavaScript seria apenas correr dentro do Firefox ou Chrome, 290 00:20:47,000 --> 00:20:52,000 e seria usado para fazer animações legais acontecer em uma página da Web 291 00:20:52,000 --> 00:20:55,000 e fazer a sua página web dinâmica. 292 00:20:55,000 --> 00:20:59,000 Que foi construída sobre um monte de trabalho que o Google fez 293 00:20:59,000 --> 00:21:03,000 que ter o JavaScript e C + + 294 00:21:03,000 --> 00:21:09,000 se unem, então não há muita pesquisa ativa para 295 00:21:09,000 --> 00:21:13,000 obter essas línguas para interagir e otimizá-los, 296 00:21:13,000 --> 00:21:17,000 principalmente porque muitas pessoas podem codificar em PHP e JavaScript 297 00:21:17,000 --> 00:21:19,000 porque é muito mais fácil. 298 00:21:19,000 --> 00:21:21,000 É muito mais agradável. Você não tem ponteiros. 299 00:21:21,000 --> 00:21:27,000 Você não tem tipos flutuando. 300 00:21:27,000 --> 00:21:31,000 Eles queriam ganhar os benefícios de línguas em tempo de compilação 301 00:21:31,000 --> 00:21:36,000 com todo o tipo de controlo e a velocidade e o uso de memória inferior e tudo isso 302 00:21:36,000 --> 00:21:42,000 mantendo ainda a flexibilidade e a facilidade de utilização destas novas. 303 00:21:42,000 --> 00:21:46,000 >> De volta ao nosso plano original de ataque. 304 00:21:46,000 --> 00:21:50,000 Temos algumas dessas perguntas aqui na nossa especificação conjunto de problemas. 305 00:21:50,000 --> 00:21:54,000 Vamos passar por eles muito rapidamente, e nós vamos dar a volta ao quarto. 306 00:21:54,000 --> 00:21:59,000 Charlotte, que tipo é 3,50? 307 00:21:59,000 --> 00:22:01,000 [Charlotte] Isso é um duplo. >> É uma dupla. 308 00:22:01,000 --> 00:22:03,000 Jimmy, o que é esse próximo? >> Uma matriz. 309 00:22:03,000 --> 00:22:09,000 Uma matriz, impressionante, e Jared, o que é o fopen? 310 00:22:09,000 --> 00:22:11,000 [Jared] É um recurso. >> É um recurso. 311 00:22:11,000 --> 00:22:15,000 Esse é um tipo de um novo, não uma estrela de arquivo, não um arquivo. 312 00:22:15,000 --> 00:22:19,000 É um recurso é o tipo em PHP, 313 00:22:19,000 --> 00:22:24,000 e eu sinto muito, Ella, o nulo último é o que? 314 00:22:24,000 --> 00:22:26,000 Nulo. 315 00:22:26,000 --> 00:22:28,000 Nulo, como é escrito em PHP? >> A mesma forma. 316 00:22:28,000 --> 00:22:30,000 Da mesma forma, capitais? >> Sim. 317 00:22:30,000 --> 00:22:33,000 Sim, tudo bem. 318 00:22:33,000 --> 00:22:35,000 Aqui vamos nós, temos um duplo, temos uma matriz, 319 00:22:35,000 --> 00:22:41,000 temos um recurso, e depois temos nulo. 320 00:22:41,000 --> 00:22:48,000 Vamos ver agora você viu- 321 00:22:48,000 --> 00:22:51,000 Vamos ver, então agora eu acho que eu também quero fazer é puxar para cima 322 00:22:51,000 --> 00:22:56,000 esta página web aqui, este php.net / manual, 323 00:22:56,000 --> 00:23:01,000 por isso, se vocês que copiar e abrir um navegador. 324 00:23:01,000 --> 00:23:07,000 Eu vou puxar o Chrome, que colocou dentro 325 00:23:07,000 --> 00:23:10,000 Quero mostrar que isso não só porque 326 00:23:10,000 --> 00:23:13,000 podemos falar todos os dias sobre os tipos e todas as coisas que a diversão 327 00:23:13,000 --> 00:23:19,000 mas porque este é o manual do PHP, 328 00:23:19,000 --> 00:23:23,000 e há um monte de programadores PHP lá fora. 329 00:23:23,000 --> 00:23:26,000 Há um monte de sites PHP lá fora, 330 00:23:26,000 --> 00:23:31,000 e, como resultado, há uma grande quantidade de documentação em PHP, 331 00:23:31,000 --> 00:23:36,000 e do manual, este php.net, é um bom lugar para ir 332 00:23:36,000 --> 00:23:43,000 sempre que você estiver com dúvidas sobre o que é a melhor maneira de fazê-X em PHP 333 00:23:43,000 --> 00:23:45,000 ou o que é que uma função se parece? 334 00:23:45,000 --> 00:23:49,000 Apenas o tipo de se familiarizar com o que isso parece porque 335 00:23:49,000 --> 00:23:54,000 você vai vir aqui muitas vezes, um pouco de conjunto de problemas 7. 336 00:23:54,000 --> 00:23:57,000 >> Se você acaba fazendo um projeto final que usa PHP 337 00:23:57,000 --> 00:24:04,000 este será um lugar que você vai tornar-se muito bem familiarizado. 338 00:24:04,000 --> 00:24:09,000 Muitas vezes, a forma como as pessoas fazer isso é que eles usam o Google para pesquisar o local, 339 00:24:09,000 --> 00:24:16,000 e não usar a caixa de pesquisa que está aqui em cima no canto superior direito, que é uma espécie de minúsculo. 340 00:24:16,000 --> 00:24:19,000 Se você está pesquisando em torno de algo para fazer com PHP e você vê 341 00:24:19,000 --> 00:24:24,000 um dos links manuais aparecer normalmente você pode confiar em que 342 00:24:24,000 --> 00:24:31,000 como um recurso bastante bom. 343 00:24:31,000 --> 00:24:34,000 Incríveis, portanto, fora desses tipos, só por curiosidade, 344 00:24:34,000 --> 00:24:37,000 quais não temos visto? 345 00:24:37,000 --> 00:24:40,000 Qualquer coisa que nós não vimos aqui? 346 00:24:40,000 --> 00:24:44,000 [Estudante] >> Recursos. Vimos de recursos com a chamada fopen. 347 00:24:44,000 --> 00:24:48,000 [Estudante] objetos. >> Objetos que não temos visto, com certeza. 348 00:24:48,000 --> 00:24:51,000 Callbacks não vimos. 349 00:24:51,000 --> 00:24:54,000 Há alguns desses pseudo-tipos. 350 00:24:54,000 --> 00:24:57,000 Nós definitivamente só vi inteiro e de casal. 351 00:24:57,000 --> 00:25:01,000 Nós não ver alguns dos outros, por isso, se clicar em números inteiros 352 00:25:01,000 --> 00:25:08,000 podemos ver existem quaisquer outros inteiros que eles têm aqui? 353 00:25:08,000 --> 00:25:11,000 São todos tão inteiro, inteiro, inteiro. 354 00:25:11,000 --> 00:25:14,000 Algumas línguas têm maiores tipos inteiros, 355 00:25:14,000 --> 00:25:23,000 como vimos no MySQL hoje houve int e int grande. 356 00:25:23,000 --> 00:25:25,000 Cool. 357 00:25:25,000 --> 00:25:28,000 >> Então, manual do PHP. 358 00:25:28,000 --> 00:25:37,000 Vamos voltar para a nossa especificação conjunto de problemas, e agora vamos rolar a página 4. 359 00:25:37,000 --> 00:25:41,000 Uma das coisas que acontece quando você começa línguas 360 00:25:41,000 --> 00:25:49,000 que não têm esta tipagem estática, portanto, essas línguas, onde você tem de declarar 361 00:25:49,000 --> 00:25:52,000 o tipo de uma variável de frente para cima 362 00:25:52,000 --> 00:26:00,000 é que você começa casos em que você pode começar a ter variáveis ​​de tipos diferentes 363 00:26:00,000 --> 00:26:04,000 interagindo uns com os outros, 364 00:26:04,000 --> 00:26:09,000 e PHP faz essa coisa que ele tenta fazer 365 00:26:09,000 --> 00:26:13,000 o que considera ser a coisa mais sensata a fazer 366 00:26:13,000 --> 00:26:18,000 quando você tem dois tipos diferentes interagem uns com os outros. 367 00:26:18,000 --> 00:26:24,000 Por exemplo, se olharmos para estas linhas de código aqui 368 00:26:24,000 --> 00:26:29,000 você vê que nós temos o que acontece quando 369 00:26:29,000 --> 00:26:38,000 nós tentamos e adicionar a seqüência 1 para o número inteiro 2. 370 00:26:38,000 --> 00:26:41,000 O que acontece se tentar e adicionar uma seqüência que não é um valor numérico 371 00:26:41,000 --> 00:26:48,000 mas sim personagens reais, CS com o número 50? 372 00:26:48,000 --> 00:26:51,000 Então vamos ver há alguma coisa diferente que acontece quando 373 00:26:51,000 --> 00:26:56,000 em vez de adicionar uma string para um número que está adicionando um número a uma string, 374 00:26:56,000 --> 00:27:00,000 e assim por diante e assim por diante até o ponto em que estamos recebendo 375 00:27:00,000 --> 00:27:05,000 algum tipo de coisas estranhas aqui, onde temos 7 + verdade. 376 00:27:05,000 --> 00:27:09,000 O que diabos isso significa? 377 00:27:09,000 --> 00:27:19,000 >> Se vocês vão em frente e colar alguns este código em seu aparelho. 378 00:27:19,000 --> 00:27:27,000 Você pode mantê-lo em dynamic.php. 379 00:27:27,000 --> 00:27:30,000 Vamos ver o que acontece. 380 00:27:41,000 --> 00:27:43,000 [Estudante] Basta usar impressão não, printf? 381 00:27:43,000 --> 00:27:52,000 Sim, então você verá que de impressão também é uma função válida para a impressão em PHP. 382 00:27:52,000 --> 00:27:54,000 Há muitas maneiras diferentes de fazer isso. 383 00:27:54,000 --> 00:27:58,000 Vamos ver com um par dos exemplos mais tarde, uma vez que começa a falar 384 00:27:58,000 --> 00:28:02,000 sobre o único problema que nós estamos indo para escrever 385 00:28:02,000 --> 00:28:06,000 e então o problema concentrações que vamos escrever 386 00:28:06,000 --> 00:28:09,000 que mesmo que temos fopen e fclose 387 00:28:09,000 --> 00:28:15,000 que muitas vezes não é a maneira mais simples de ler o conteúdo de um arquivo. 388 00:28:15,000 --> 00:28:21,000 O PHP tem um monte desses remanescentes C-like. 389 00:28:21,000 --> 00:28:28,000 [Estudante] Quando eu coloquei em todas as 6 daquelas coisas que eu só obter um número como uma saída. 390 00:28:28,000 --> 00:28:36,000 [Nate H.] Quando você coloca em todas as 6 dessas coisas. 391 00:28:36,000 --> 00:28:39,000 Vamos ver o que é, porque é possivelmente- 392 00:28:39,000 --> 00:28:46,000 uma coisa é que essas chamadas de impressão não estão terminados no final com novas linhas. 393 00:28:46,000 --> 00:28:49,000 Não há como nova linha que separa cada uma dessas chamadas de impressão, 394 00:28:49,000 --> 00:28:51,000 talvez por isso que você está recebendo um grande número, 395 00:28:51,000 --> 00:28:58,000 e ele é realmente apenas amálgama de novos caracteres de linha. 396 00:28:58,000 --> 00:29:00,000 [Estudante] Ok, como posso ter certeza de- 397 00:29:00,000 --> 00:29:03,000 Bem, há um monte de maneiras diferentes. 398 00:29:03,000 --> 00:29:06,000 Você poderia colocar manualmente em uma cópia de um caractere de nova linha, 399 00:29:06,000 --> 00:29:09,000 um eco de um caractere de nova linha, 400 00:29:09,000 --> 00:29:12,000 imprimir de nova linha. 401 00:29:12,000 --> 00:29:16,000 [Estudante] Então eco é a mesma coisa que printf? 402 00:29:16,000 --> 00:29:21,000 >> Printf é como C printf 403 00:29:21,000 --> 00:29:24,000 onde você estiver imprimindo uma seqüência formatada. 404 00:29:24,000 --> 00:29:32,000 Você está fornecendo-lhe a seqüência de formato e todas as variáveis ​​de espaço reservado. 405 00:29:32,000 --> 00:29:39,000 É algo que muitas vezes não é utilizado- 406 00:29:39,000 --> 00:29:42,000 vamos ver, como um aviso, 407 00:29:42,000 --> 00:29:48,000 Estou menos familiarizado com PHP do que eu com linguagens da web, 408 00:29:48,000 --> 00:29:53,000 e quando eu tiver programado em PHP eu normalmente não usam printf 409 00:29:53,000 --> 00:29:59,000 porque acho que é mais rápido para usar os recursos de interpolação de strings que tem, 410 00:29:59,000 --> 00:30:04,000 que nós vamos entrar e eu vou lhe mostrar em apenas um segundo, 411 00:30:04,000 --> 00:30:08,000 enquanto que em C nós meio que temos para fazer esta coisa hacky para obtê-lo para imprimir corretamente. 412 00:30:08,000 --> 00:30:16,000 Você realmente pode colocar variáveis ​​diretamente em strings em PHP. 413 00:30:16,000 --> 00:30:22,000 Printf é uma espécie de excessivamente longo para o que eu costumo fazer. Sim, Ella. 414 00:30:22,000 --> 00:30:25,000 [Ella] Geralmente, se você conseguir um erro de interpretação é que isso significa- 415 00:30:25,000 --> 00:30:30,000 como em C não dizer exatamente onde está o erro e que é, 416 00:30:30,000 --> 00:30:34,000 Então, isso significa olhar através de seu código inteiro e descobrir isso? 417 00:30:34,000 --> 00:30:39,000 É tipicamente mais segmentado do que isso. 418 00:30:39,000 --> 00:30:48,000 Eu acho que nesse caso foi um pouco fora, 419 00:30:48,000 --> 00:30:51,000 então eu acho que, nesse caso, que estava faltando um ponto e vírgula. 420 00:30:51,000 --> 00:30:54,000 Ele estava tentando fazer sentido de tudo, 421 00:30:54,000 --> 00:30:57,000 assim como essas linguagens interpretadas, o intérprete vai tentar 422 00:30:57,000 --> 00:31:01,000 e fazer o seu melhor para que tudo funcione adequadamente. 423 00:31:01,000 --> 00:31:04,000 >> Você vai ver, por exemplo, em JavaScript 424 00:31:04,000 --> 00:31:10,000 Você muitas vezes linha de declarações finais com um ponto e vírgula como o fazem em PHP, 425 00:31:10,000 --> 00:31:13,000 assim como fazem em C. 426 00:31:13,000 --> 00:31:15,000 Em JavaScript alguns dos intérpretes de JavaScript 427 00:31:15,000 --> 00:31:20,000 em muitos dos navegadores irá colocar em ponto e vírgula para você 428 00:31:20,000 --> 00:31:23,000 se acontecer de você estar faltando eles. 429 00:31:23,000 --> 00:31:29,000 Eles vão tentar acomodar por algum desleixo de sua parte. 430 00:31:29,000 --> 00:31:34,000 É onde ele pode estar tentando e tentando e tentando fazer as coisas de trabalho, 431 00:31:34,000 --> 00:31:36,000 e, finalmente, vai chegar a um ponto onde ele diz que está bem, 432 00:31:36,000 --> 00:31:38,000 Eu não posso fazer as coisas funcionarem em fiando, e é aí que você vai ter um número de linha 433 00:31:38,000 --> 00:31:44,000 que pode parecer um pouco fora do lugar exato. 434 00:31:44,000 --> 00:31:47,000 Ok, então vamos passar por isso muito rapidamente. 435 00:31:47,000 --> 00:31:50,000 Paramos com Ella, então vamos passar para Missy, 436 00:31:50,000 --> 00:31:54,000 e Missy, o que faz impressão de corda 1 mais o número 2 lhe dar? 437 00:31:54,000 --> 00:31:56,000 [Missy] 3. >> 3. 438 00:31:56,000 --> 00:31:59,000 Isso faz sentido? Mais ou menos? 439 00:31:59,000 --> 00:32:02,000 Dá-lhe um número? Dá-lhe uma corda? 440 00:32:02,000 --> 00:32:05,000 [Missy] Um número. >> É um número. 441 00:32:05,000 --> 00:32:09,000 Mas é imprimi-lo, por isso vai dar-lhe algum tipo de corda. 442 00:32:09,000 --> 00:32:12,000 >> Uma coisa que podemos fazer para verificar isso 443 00:32:12,000 --> 00:32:21,000 é se fizermos $ var = 1 + 2 444 00:32:21,000 --> 00:32:28,000 e então dizemos eco de gettype, 445 00:32:28,000 --> 00:32:33,000 por isso estamos usando um terceiro tipo de impressão aqui. 446 00:32:33,000 --> 00:32:39,000 Agora podemos ver o que acontece aqui. 447 00:32:39,000 --> 00:32:42,000 Aqui o que temos é que temos um número inteiro fora disso. 448 00:32:42,000 --> 00:32:45,000 Mesmo que estavam adicionando esta string para um número, 449 00:32:45,000 --> 00:32:48,000 nós não conseguimos uma seqüência de fora, assim como Missy disse. 450 00:32:48,000 --> 00:32:52,000 Estávamos recebendo um número inteiro. 451 00:32:52,000 --> 00:32:57,000 Ok, então vamos ver, junto-se, Kevin. 452 00:32:57,000 --> 00:32:59,000 CS + 50? >> [Kevin] 50. 453 00:32:59,000 --> 00:33:02,000 [Nate H.] 50. Isso faz sentido? 454 00:33:02,000 --> 00:33:04,000 [Kevin] Yeah. 455 00:33:04,000 --> 00:33:06,000 [Nate H.] Por quê? Por que faz sentido para você? 456 00:33:06,000 --> 00:33:11,000 [Kevin], porque é só ter a corda, tendo valor zero número. 457 00:33:11,000 --> 00:33:16,000 Sim, ótimo. 458 00:33:16,000 --> 00:33:20,000 Tipo de situações ambíguas, mas é bom saber o que acontece. 459 00:33:20,000 --> 00:33:25,000 Stella, o que acontece com o número 1 + seqüência 2? 460 00:33:25,000 --> 00:33:27,000 [Stella] 3. >> 3 novamente. 461 00:33:27,000 --> 00:33:30,000 E, neste caso, podemos obter uma string ou um número? 462 00:33:30,000 --> 00:33:36,000 >> Vamos tentar dar um presente. 463 00:33:36,000 --> 00:33:43,000 Alguém mais rápido que eu obter a resposta? Charlotte? 464 00:33:43,000 --> 00:33:46,000 Ah, eu didn't-tudo bem, vamos ver, vamos fazer o mesmo tipo de coisa 465 00:33:46,000 --> 00:33:49,000 onde nós temos um número de mais uma cadeia, e nós estamos indo para ecoar o tipo, 466 00:33:49,000 --> 00:33:51,000 ver o que temos. 467 00:33:51,000 --> 00:33:55,000 Nós também obter um número inteiro. 468 00:33:55,000 --> 00:33:58,000 Não importa qual é a cadeia, que é o número um. 469 00:33:58,000 --> 00:34:00,000 Nós ainda estamos indo para obter um número inteiro. 470 00:34:00,000 --> 00:34:04,000 Ele ainda vai fazer o que poderíamos esperar. 471 00:34:04,000 --> 00:34:09,000 Tudo bem, então Sam, que cerca de 90 + 9 garrafas de cerveja na parede? 472 00:34:09,000 --> 00:34:12,000 [Sam] 99. >> 99. 473 00:34:12,000 --> 00:34:15,000 Não garrafas de cerveja na parede, no entanto. 474 00:34:15,000 --> 00:34:17,000 Isso nos dá um pouco mais informações sobre o que está acontecendo. 475 00:34:17,000 --> 00:34:21,000 [Sam] Se você tivesse escrito em letras 9 476 00:34:21,000 --> 00:34:23,000 então você teria 90, certo? 477 00:34:23,000 --> 00:34:26,000 [Nate H.] Yeah. 478 00:34:26,000 --> 00:34:30,000 A questão era se tivéssemos escrito 9 como N-I-N-E 479 00:34:30,000 --> 00:34:34,000 teríamos obtido 99 ou 90? 480 00:34:34,000 --> 00:34:38,000 Teríamos 90. 481 00:34:38,000 --> 00:34:42,000 É literalmente olhando apenas para personagens de dois dígitos. 482 00:34:42,000 --> 00:34:46,000 Não é suficientemente inteligente para reconhecer palavras para números e essas coisas. Sim. 483 00:34:46,000 --> 00:34:48,000 >> [Estudante] Existe tal coisa como typecasting em PHP? 484 00:34:48,000 --> 00:34:54,000 Não há, e é exatamente do jeito que você faria em C. 485 00:34:54,000 --> 00:34:56,000 O que cerca de 10/7, Charlotte? 486 00:34:56,000 --> 00:34:58,000 [Charlotte] 1,4285. 487 00:34:58,000 --> 00:35:01,000 [Nate H.] Sim, então o que pode ser surpreendente sobre isso? 488 00:35:01,000 --> 00:35:04,000 O que aconteceria se você fez esse mesmo tipo de coisa em C, 489 00:35:04,000 --> 00:35:06,000 se você fez 10/7 em C? 490 00:35:06,000 --> 00:35:08,000 [Charlotte] É só dar-lhe-dependendo de como você typecasted eu acho 491 00:35:08,000 --> 00:35:12,000 que lhe daria apenas um número limitado de dígitos depois da vírgula. 492 00:35:12,000 --> 00:35:16,000 Sim, então um número limitado de dígitos depois da vírgula. 493 00:35:16,000 --> 00:35:21,000 O que mais poderia ser-se-ia que lhe dar quaisquer dígitos depois da vírgula? 494 00:35:21,000 --> 00:35:28,000 Muitas vezes, não tão novo, dependendo de como você está se typecasting 495 00:35:28,000 --> 00:35:31,000 ele pode ou não pode convertê-lo em um número de ponto flutuante. 496 00:35:31,000 --> 00:35:35,000 Aqui era uma espécie de bom que ele fez. 497 00:35:35,000 --> 00:35:40,000 Se tivéssemos mostrado que você esta de volta quando começamos a fazer esse tipo de coisa em C 498 00:35:40,000 --> 00:35:44,000 ele provavelmente teria feito sentido um pouco mais 499 00:35:44,000 --> 00:35:48,000 que não basta ir a um. 500 00:35:48,000 --> 00:35:51,000 E então, finalmente, Jamie, o que dizer de 7 + verdade? 501 00:35:51,000 --> 00:35:53,000 [Jamie] 8. >> 8. 502 00:35:53,000 --> 00:35:56,000 O que significa isso? 503 00:35:56,000 --> 00:35:58,000 Eu acho que só dá certo o valor de 1. 504 00:35:58,000 --> 00:36:01,000 Sim. O que acontece se mudar isso para false? 505 00:36:01,000 --> 00:36:04,000 [Estudante] 7. 506 00:36:04,000 --> 00:36:09,000 Sim, para lembrar onde falamos sobre esses valores binários, 507 00:36:09,000 --> 00:36:12,000 Sendo 1 em diante, sendo 0 fora? 508 00:36:12,000 --> 00:36:17,000 Agora temos verdadeiro é 1, 0 é falso, 509 00:36:17,000 --> 00:36:21,000 e você não pode ter visto isso nos exemplos C que fizemos neste semestre passado, 510 00:36:21,000 --> 00:36:27,000 mas historicamente o tipo bool em C não tem sido um tipo de real, 511 00:36:27,000 --> 00:36:32,000 para que as pessoas têm usado 0 e 1 no lugar de verdadeiro e falso. 512 00:36:32,000 --> 00:36:35,000 Esta é uma manifestação disso. 513 00:36:35,000 --> 00:36:39,000 >> Ok, então por um lado importante de tudo isso 514 00:36:39,000 --> 00:36:41,000 é que temos estes tipos diferentes. 515 00:36:41,000 --> 00:36:43,000 Eles podem interagir uns com os outros. 516 00:36:43,000 --> 00:36:49,000 Muitas vezes podem interagir uns com os outros de maneiras que são agradáveis, como vimos aqui. 517 00:36:49,000 --> 00:36:53,000 É bom ser capaz de ter uma corda eo número 2, adicioná-los juntos e obter 3. 518 00:36:53,000 --> 00:36:55,000 Isso faz sentido. 519 00:36:55,000 --> 00:36:59,000 No entanto, quando você está escrevendo sites, e especialmente quando você está processando 520 00:36:59,000 --> 00:37:04,000 entrada do usuário, para dizer que você tenha escrito um formulário web 521 00:37:04,000 --> 00:37:09,000 que coleta informações do usuário e, em seguida, vai para processá-lo 522 00:37:09,000 --> 00:37:13,000 na extremidade traseira, no lado do servidor em seu código PHP 523 00:37:13,000 --> 00:37:18,000 se você está esperando que o valor que o usuário digitou e submetidos 524 00:37:18,000 --> 00:37:23,000 ao seu formulário para ser um inteiro ou ser um número de ponto flutuante, ou algo assim 525 00:37:23,000 --> 00:37:29,000 você precisa explicitamente lançá-lo 526 00:37:29,000 --> 00:37:34,000 e depois fazer alguma verificação de tipo. 527 00:37:34,000 --> 00:37:41,000 >> Você não quer apenas contar com este sistema de malabarismo tipo para fazer as coisas funcionarem, 528 00:37:41,000 --> 00:37:48,000 especialmente por razões de segurança e apenas para a robustez do seu site. 529 00:37:48,000 --> 00:37:51,000 Apenas algo para se manter em mente que quando você está lidando com dados do formulário, 530 00:37:51,000 --> 00:37:57,000 qualquer coisa que vem na mensagem ou as superglobais get 531 00:37:57,000 --> 00:38:01,000 certifique-se que você sempre validá-lo e convertê-lo e typecast-lo. 532 00:38:01,000 --> 00:38:04,000 E, assim como nós estávamos falando sobre um momento atrás que typecasting 533 00:38:04,000 --> 00:38:08,000 em PHP é exatamente o mesmo que no C, onde você tem os parênteses 534 00:38:08,000 --> 00:38:14,000 e, em seguida, o tipo. 535 00:38:14,000 --> 00:38:16,000 Tenha isso em mente. 536 00:38:16,000 --> 00:38:19,000 Uma função que vai vir a calhar quando você está fazendo isso 537 00:38:19,000 --> 00:38:22,000 é que estamos usando e este é o tipo de como um aparte- 538 00:38:22,000 --> 00:38:27,000 estamos usando esta função gettype aqui 539 00:38:27,000 --> 00:38:30,000 para descobrir o tipo de uma variável, 540 00:38:30,000 --> 00:38:37,000 e enquanto isso é útil para depuração e para ver que tipo de uma variável é 541 00:38:37,000 --> 00:38:42,000 você não quer usar isso, por exemplo, em uma condição em que 542 00:38:42,000 --> 00:38:57,000 você está verificando para ver se gettype de $ var = inteiro fazer alguma coisa. 543 00:38:57,000 --> 00:39:01,000 Isso é ruim, ruim, ruim. 544 00:39:01,000 --> 00:39:09,000 Em vez disso, são essas funções chamadas é inteiro, é string, 545 00:39:09,000 --> 00:39:14,000 é matriz que você deseja usar no lugar, portanto, neste caso 546 00:39:14,000 --> 00:39:18,000 o que eu gostaria de fazer, em vez de esse cara aqui 547 00:39:18,000 --> 00:39:31,000 se utilizar o var é número inteiro. 548 00:39:31,000 --> 00:39:37,000 E eles são muitas vezes referido é * is_ no sentido de que você poderia substituir o * com número inteiro, 549 00:39:37,000 --> 00:39:43,000 string, et cetera, e apenas para ter certeza realmente rápido 550 00:39:43,000 --> 00:39:50,000 é isso é int php. 551 00:39:50,000 --> 00:39:59,000 Parece que você pode fazer ou é int ou se existe inteiro também? 552 00:39:59,000 --> 00:40:06,000 Sim, alias, tão int aliases inteiros. 553 00:40:06,000 --> 00:40:08,000 Cool. 554 00:40:14,000 --> 00:40:17,000 >> Como estamos indo? 555 00:40:17,000 --> 00:40:20,000 Vamos pegar o ritmo um pouco. 556 00:40:20,000 --> 00:40:24,000 Agora vamos falar sobre matrizes, assim como você pode ver 557 00:40:24,000 --> 00:40:28,000 na próxima parte da especificação falamos sobre como arrays em PHP 558 00:40:28,000 --> 00:40:31,000 são um pouco diferentes do que são na C. 559 00:40:31,000 --> 00:40:34,000 Na verdade, eles são uma espécie de amálgama de 560 00:40:34,000 --> 00:40:36,000 as matrizes que você já conhece e ama na C 561 00:40:36,000 --> 00:40:40,000 onde tudo é do mesmo tipo 562 00:40:40,000 --> 00:40:43,000 armazenadas consecutivamente e de forma contígua na memória, 563 00:40:43,000 --> 00:40:46,000 e você tem esses índices numéricos. 564 00:40:46,000 --> 00:40:49,000 Você tem índice 0, o índice 1, índice 2, 565 00:40:49,000 --> 00:40:53,000 e armazenar valores nesses índices. 566 00:40:53,000 --> 00:40:57,000 Você também em C, quando você escreveu Speller, um monte de você 567 00:40:57,000 --> 00:41:00,000 fez a abordagem tabela hash, e você viu que não tivemos 568 00:41:00,000 --> 00:41:03,000 um tipo diferente de armazenamento onde estávamos mapeando 569 00:41:03,000 --> 00:41:07,000 uma chave para um valor, por isso, quando você tentou armazenar algo em tabela hash 570 00:41:07,000 --> 00:41:11,000 você teve que especificar que você queria guardá-lo com uma chave específica, 571 00:41:11,000 --> 00:41:17,000 e que a chave determinada a localização do valor e onde seria armazenado. 572 00:41:17,000 --> 00:41:22,000 Você tem tipo de ambos os conceitos acontecendo ao mesmo tempo em um array PHP, 573 00:41:22,000 --> 00:41:27,000 e, como resultado, muitas vezes chamamos essas matrizes associativas 574 00:41:27,000 --> 00:41:33,000 onde estamos associando uma chave em um valor. 575 00:41:33,000 --> 00:41:39,000 Nesta próxima parte falamos de uma matriz PHP simples 576 00:41:39,000 --> 00:41:45,000 onde temos teclas a, b, e c, 577 00:41:45,000 --> 00:41:53,000 todas as cordas, o mapeamento para os inteiros 1, 2 e 3. 578 00:41:53,000 --> 00:41:57,000 E você pode ter chaves de diferentes tipos. 579 00:41:57,000 --> 00:42:00,000 >> Você pode ter algumas chaves que são cordas, algumas chaves que são inteiros. 580 00:42:00,000 --> 00:42:03,000 Pode ter valores de tipos diferentes. 581 00:42:03,000 --> 00:42:06,000 Você pode ter um valor que é uma cadeia, um valor que é um número inteiro, 582 00:42:06,000 --> 00:42:11,000 um valor que é um objeto ou outro array, por exemplo, 583 00:42:11,000 --> 00:42:16,000 tudo no objeto mesma matriz, que é meio estranho. 584 00:42:16,000 --> 00:42:20,000 Você não tem que ter uma matriz que só tem um tipo de elemento nele. 585 00:42:20,000 --> 00:42:26,000 Você pode ter muitas coisas diferentes acontecendo lá dentro. 586 00:42:26,000 --> 00:42:33,000 A outra coisa a notar é que quando você ver algo como isso no seu código, 587 00:42:33,000 --> 00:42:38,000 que é PHP válido para declarar uma matriz como esta, 0, 1, 2, 3, 4, 5, 588 00:42:38,000 --> 00:42:43,000 que vai declarar um inicializado $ arr ser esta matriz. 589 00:42:43,000 --> 00:42:48,000 Mas o que você está realmente começando sob o capô é este tipo de implícito 590 00:42:48,000 --> 00:42:55,000 geração de chaves onde temos 0-0, 1-1, 2-2, 3-3. 591 00:42:55,000 --> 00:42:59,000 E acontece que, mesmo se você tem uma matriz como esse cara aqui 592 00:42:59,000 --> 00:43:03,000 onde tem a, b e c como as teclas 593 00:43:03,000 --> 00:43:09,000 e depois de começar a usar o método push matriz para começar a usar este conjunto como uma pilha, 594 00:43:09,000 --> 00:43:12,000 assim você pode ver que este objeto de matriz, essa matriz é realmente fique sobrecarregado. 595 00:43:12,000 --> 00:43:15,000 Podemos usá-lo como uma matriz. Podemos usá-lo como uma tabela de hash. 596 00:43:15,000 --> 00:43:19,000 Podemos usá-lo como uma pilha. 597 00:43:19,000 --> 00:43:22,000 Quando você começar a empurrar as coisas para esta matriz 598 00:43:22,000 --> 00:43:30,000 a primeira coisa que você empurra para isso será o índice 0 e então o índice 1 e índice 2. 599 00:43:30,000 --> 00:43:33,000 Você pode obter este tipo de geração implícita de chaves 600 00:43:33,000 --> 00:43:38,000 a menos que você especifique-los explicitamente. 601 00:43:38,000 --> 00:43:43,000 A maneira como você especificar chaves explicitamente, é claro, é usando esta notação de colchetes, 602 00:43:43,000 --> 00:43:48,000 que é semelhante a matrizes, excepto em vez de apenas permitir 603 00:43:48,000 --> 00:43:54,000 índices inteiros aqui, agora vamos permitir que qualquer coisa. 604 00:43:54,000 --> 00:43:57,000 Se você quiser que a chave para ser uma seqüência, você especificá-lo como este. 605 00:43:57,000 --> 00:44:06,000 Se você quer que ele seja um int, você especifica com a int você deseja usar. 606 00:44:06,000 --> 00:44:13,000 >> Perguntas sobre o que até agora? 607 00:44:13,000 --> 00:44:18,000 Uma das coisas agradáveis ​​sobre esta ideia 608 00:44:18,000 --> 00:44:26,000 é que você só pode ter um valor armazenado com uma chave especial. 609 00:44:26,000 --> 00:44:32,000 Se voltarmos para o nosso aparelho, deixe-me excluir algumas dessas coisas. 610 00:44:32,000 --> 00:44:47,000 E digamos que eu inicializar um array para ser 0, 1, 2, feito. 611 00:44:47,000 --> 00:44:55,000 Se eu agora sei que, por exemplo, se eu echo $ arr [0] 612 00:44:55,000 --> 00:44:59,000 Eu estou indo para obter o valor 0 impressos, 613 00:44:59,000 --> 00:45:05,000 e uma vez que só pode ser sempre um valor armazenado para uma determinada chave 614 00:45:05,000 --> 00:45:11,000 se eu armazenar algo em $ arr [0], digamos, um, 615 00:45:11,000 --> 00:45:16,000 então eu sei que quando eu echo $ arr [0] de novo 616 00:45:16,000 --> 00:45:19,000 Eu não estou indo para obter 0 impressos como antes. 617 00:45:19,000 --> 00:45:24,000 Eu só estou indo para obter um. 618 00:45:24,000 --> 00:45:30,000 Portanto, este é basicamente dizendo que eu não posso ter $ arr [0] armazenar dois valores diferentes. 619 00:45:30,000 --> 00:45:34,000 Não pode armazenar 0 ea seqüência de um, como este, literalmente substitui 620 00:45:34,000 --> 00:45:38,000 o que estava em $ arr [0] anteriormente. 621 00:45:38,000 --> 00:45:43,000 A razão de eu trazer isso é executá-lo, ver o que acontece. 622 00:45:43,000 --> 00:45:47,000 Veja aqui que eu tenho 0 impressos e em seguida, uma aqui. 623 00:45:47,000 --> 00:45:51,000 Não há nova linha lá porque eu era preguiçoso e não colocar isso dentro 624 00:45:51,000 --> 00:45:54,000 O que é legal sobre isso é que podemos usar isso como uma forma 625 00:45:54,000 --> 00:46:00,000 para capturar essa idéia de um conjunto 626 00:46:00,000 --> 00:46:07,000 onde não podemos ter várias chaves dentro de uma matriz. 627 00:46:07,000 --> 00:46:10,000 Nós não podemos ter chaves idênticas dentro de uma matriz. 628 00:46:10,000 --> 00:46:17,000 Eu não posso ter tecla 0 eo valor 1 e 0 chave e um valor 629 00:46:17,000 --> 00:46:21,000 ou tecla 0 e verdadeiro valor. 630 00:46:21,000 --> 00:46:27,000 As teclas são todos só há uma chave na matriz. 631 00:46:27,000 --> 00:46:32,000 Mesmo que você pode ter o mesmo valor armazenado 632 00:46:32,000 --> 00:46:35,000 várias vezes na matriz sob diferentes chaves 633 00:46:35,000 --> 00:46:42,000 não é possível ter chaves idênticas várias vezes em sua matriz PHP. 634 00:46:42,000 --> 00:46:47,000 >> Se olharmos para este problema seguinte, unique.php, 635 00:46:47,000 --> 00:46:51,000 onde queremos abrir um arquivo PHP 636 00:46:51,000 --> 00:46:54,000 contendo uma lista de strings, uma string por linha, 637 00:46:54,000 --> 00:47:01,000 e queremos encontrar todas as seqüências únicas em que o arquivo 638 00:47:01,000 --> 00:47:06,000 tudo o que temos a fazer é usar uma dessas matrizes PHP 639 00:47:06,000 --> 00:47:12,000 e usar as cordas no arquivo como as chaves para essa matriz 640 00:47:12,000 --> 00:47:17,000 e manter a actualizar a nossa matriz como armazenar essas novas chaves. 641 00:47:17,000 --> 00:47:22,000 Como podemos ler cada linha fora do arquivo podemos armazená-lo na matriz, 642 00:47:22,000 --> 00:47:28,000 e no final teremos como nossas chaves em nossa matriz 643 00:47:28,000 --> 00:47:34,000 todas as cordas originais dentro do arquivo. 644 00:47:34,000 --> 00:47:37,000 Isso faz sentido? 645 00:47:37,000 --> 00:47:41,000 Vamos ver como isso funciona. 646 00:47:41,000 --> 00:47:49,000 Vamos abrir, de acordo com a especificação, um novo arquivo chamado unique.php. 647 00:47:49,000 --> 00:47:58,000 Abra. Opa, desculpe, novo arquivo. 648 00:47:58,000 --> 00:48:03,000 Nós vamos começar-a com as tags do mesmo início e fim. 649 00:48:03,000 --> 00:48:17,000 Nós estamos indo para salvá-lo na seção 9, e vamos chamá-lo de unique.php. 650 00:48:17,000 --> 00:48:25,000 Ok, agora zoom in 651 00:48:25,000 --> 00:48:32,000 A idéia aqui é abrir um arquivo, 652 00:48:32,000 --> 00:48:38,000 ler em arquivo linha por linha. 653 00:48:38,000 --> 00:48:46,000 Para cada linha no arquivo 654 00:48:46,000 --> 00:48:51,000 vamos ter uma matriz onde temos 655 00:48:51,000 --> 00:49:03,000  a linha como a nossa chave. 656 00:49:03,000 --> 00:49:09,000 E então, quando chegarmos ao fim aqui 657 00:49:09,000 --> 00:49:17,000 Chaves $ arr são as linhas exclusivas 658 00:49:17,000 --> 00:49:25,000 a partir do arquivo, pois sabemos que se eu colocar em linha esta matriz 659 00:49:25,000 --> 00:49:33,000 várias vezes ele vai apenas manter substituindo o valor de idade, 660 00:49:33,000 --> 00:49:46,000 e nós podemos realmente colocar linha matriz como em si apenas como aquele. 661 00:49:46,000 --> 00:49:48,000 >> Isso é meio estranho. 662 00:49:48,000 --> 00:49:52,000 Nós estamos armazenando o mesmo valor de chave par mais e mais e mais uma vez, 663 00:49:52,000 --> 00:50:00,000 mas já que está garantido que haverá apenas uma tecla chamada linha 664 00:50:00,000 --> 00:50:05,000 Então, se temos um arquivo que diz-um arquivo de sons de animais e tem au, au, 665 00:50:05,000 --> 00:50:11,000 miau miau, moo, moo, e cada vez que lemos um ruído animal para fora 666 00:50:11,000 --> 00:50:15,000 como trama e armazená-lo em nossa matriz temos trama, e depois a segunda vez 667 00:50:15,000 --> 00:50:20,000 armazenamos trama que vai substituir a primeira vez que o guardou. 668 00:50:20,000 --> 00:50:25,000 No final, vamos ter apenas uma entrada na matriz 669 00:50:25,000 --> 00:50:33,000 para cada um dos ruídos de animais em nosso arquivo de ruídos animal. 670 00:50:33,000 --> 00:50:41,000 Vocês se sentem confiantes de que você pode resolver a abertura de um arquivo em PHP? 671 00:50:41,000 --> 00:50:45,000 Uma maneira de fazê-lo, vamos por este caminho rapidamente, de fazê-lo 672 00:50:45,000 --> 00:50:50,000 é com fopen, como vimos anteriormente. 673 00:50:50,000 --> 00:50:55,000 Você pode fopen some_file.txt. 674 00:50:55,000 --> 00:50:59,000 Você pode abri-lo em modo de leitura, assim como em C. 675 00:50:59,000 --> 00:51:02,000 Essa é uma maneira perfeitamente boa para fazê-lo. 676 00:51:02,000 --> 00:51:05,000 Você também, em seguida, para leitura no arquivo linha por linha 677 00:51:05,000 --> 00:51:12,000 têm as mesmas funções, muitos deles, que você fez em C. 678 00:51:12,000 --> 00:51:14,000 Você tem fgets. 679 00:51:14,000 --> 00:51:17,000 Você tem feof, embora não gosto de usar que 680 00:51:17,000 --> 00:51:22,000 porque, lembre-se, que não era grande na C. 681 00:51:22,000 --> 00:51:25,000 Você pode fazê-lo da mesma forma, 682 00:51:25,000 --> 00:51:34,000 mas aqui é uma coisa muito legal. 683 00:51:34,000 --> 00:51:41,000 Desculpe, eu não quero fazer $ arquivo, mas não há uma função chamada de arquivo em PHP, 684 00:51:41,000 --> 00:51:47,000 e esta função aqui é legal porque ele lê todo o conteúdo 685 00:51:47,000 --> 00:51:52,000 do arquivo que você especificar, de forma some_file.txt, 686 00:51:52,000 --> 00:51:56,000 lê todo o conteúdo desse arquivo em um array 687 00:51:56,000 --> 00:52:03,000 e então permite percorrer, o que é muito bacana. 688 00:52:03,000 --> 00:52:07,000 >> Se formos, por exemplo, para o nosso navegador 689 00:52:07,000 --> 00:52:14,000 e olhamos para o Google para o arquivo PHP 690 00:52:14,000 --> 00:52:23,000 você pode ver aqui que o nosso manual diz que lê arquivo arquivo inteiro em uma matriz, 691 00:52:23,000 --> 00:52:27,000 e podemos file_get_contents para retornar o conteúdo de um arquivo como uma string, 692 00:52:27,000 --> 00:52:30,000 mas normalmente apenas recebendo-o como uma matriz é muito bom porque o que ele faz 693 00:52:30,000 --> 00:52:33,000 é quebra-lo para que cada elemento 694 00:52:33,000 --> 00:52:37,000 na matriz é uma linha do arquivo, 695 00:52:37,000 --> 00:52:41,000 por isso, se olharmos para arquivo 0, que é a primeira linha do arquivo. 696 00:52:41,000 --> 00:52:46,000 Ficheiro de uma linha, em segundo lugar, lima 2, a terceira linha, e assim por diante e assim por diante. 697 00:52:46,000 --> 00:52:50,000 Não seria bom se isso era tudo o que tinha a fazer em C? 698 00:52:50,000 --> 00:52:53,000 Muito bacana. 699 00:52:53,000 --> 00:52:59,000 David mostrou isso na palestra, eo idioma que ele mostrou foi 700 00:52:59,000 --> 00:53:03,000 que, além de nosso padrão de loop em PHP tivemos que 701 00:53:03,000 --> 00:53:09,000 for ($ i = 0; i <10, i + +), 702 00:53:09,000 --> 00:53:16,000 e você pode fazer isso em PHP também, mesma coisa 703 00:53:16,000 --> 00:53:27,000 nós também temos essa construção legal chamado foreach. 704 00:53:27,000 --> 00:53:32,000 Foreach é realmente útil quando iterando arrays ou estas estruturas de dados 705 00:53:32,000 --> 00:53:36,000 porque ele permite que você retire cada elemento da matriz 706 00:53:36,000 --> 00:53:42,000 sem ter que fazer manualmente a indexação mesmo, 707 00:53:42,000 --> 00:53:46,000 sem ter que criar manualmente uma variável de índice, incrementa-o, 708 00:53:46,000 --> 00:53:51,000 puxe o valor na matriz nesse ponto, porque isso é uma coisa muito comum de se fazer. 709 00:53:51,000 --> 00:53:54,000 >> Você provavelmente já fez isso toneladas de vezes em que você estava fazendo coisas C 710 00:53:54,000 --> 00:54:00,000 ao longo do semestre, assim com este foreach 711 00:54:00,000 --> 00:54:06,000 podemos varrer essa matriz arquivo, 712 00:54:06,000 --> 00:54:12,000 ea sintaxe é que nós queremos agora loop sobre esta matriz 713 00:54:12,000 --> 00:54:18,000 e especificar que a variável que vamos usar para armazenar 714 00:54:18,000 --> 00:54:27,000 o elemento de matriz neste local, local para o âmbito deste loop foreach, 715 00:54:27,000 --> 00:54:32,000 é vamos chamá-lo de linha. 716 00:54:32,000 --> 00:54:38,000 Se for um arquivo de apenas palavras e não há uma palavra em uma linha 717 00:54:38,000 --> 00:54:43,000 poderíamos chamá-lo de palavra, bem como, realmente só você dar a este um nome, 718 00:54:43,000 --> 00:54:49,000 o que você quiser chamá-lo, 719 00:54:49,000 --> 00:55:02,000 e depois dentro do loop, você pode fazer o que quiser com esta linha variável. 720 00:55:02,000 --> 00:55:08,000 Se não é o suficiente para obter o valor da matriz e você também quiser obter 721 00:55:08,000 --> 00:55:17,000 o índice junto com ele você pode especificar um nome para o índice 722 00:55:17,000 --> 00:55:22,000 bem como o valor, e agora você tem acesso a duas variáveis. 723 00:55:22,000 --> 00:55:26,000 Você tem $ i e linha 724 00:55:26,000 --> 00:55:30,000 onde $ i é o índice na matriz, 725 00:55:30,000 --> 00:55:38,000 e linha é a linha que você recuperou do arquivo. 726 00:55:38,000 --> 00:55:49,000 Por exemplo, se quiséssemos imprimir echo 0 linha do arquivo como este, 727 00:55:49,000 --> 00:55:57,000 podemos fazê-lo apenas como este, "Linha $ i do arquivo é de R $ linha", 728 00:55:57,000 --> 00:56:02,000 e aqui é algo que também não vi ainda quer 729 00:56:02,000 --> 00:56:13,000 onde eu apenas totalmente ignorados durante este% s% d todo negócio 730 00:56:13,000 --> 00:56:16,000 que tivemos de lidar com a C, e, em vez eu fui direto para o 731 00:56:16,000 --> 00:56:19,000 escrever as variáveis ​​em linha na minha string. 732 00:56:19,000 --> 00:56:23,000 >> Isso é chamado de interpolação de variáveis, string interpolação 733 00:56:23,000 --> 00:56:26,000 onde você está enchendo as variáveis ​​na direita, eo intérprete PHP 734 00:56:26,000 --> 00:56:31,000 é inteligente o suficiente quando se está lendo através de uma cadeia que começa com a dupla cita- 735 00:56:31,000 --> 00:56:34,000 não aspas simples, com uma string entre apóstrofos você não pode fazer isso- 736 00:56:34,000 --> 00:56:38,000 mas com o dobro de strings entre aspas como se lê por ele está a olhar para as variáveis. 737 00:56:38,000 --> 00:56:42,000 É caçá-los, e se vê variáveis ​​que levará o valor da variável 738 00:56:42,000 --> 00:56:47,000 e enchê-lo para a cadeia se ele pode convertê-lo em uma representação de cadeia, 739 00:56:47,000 --> 00:56:51,000 o que é muito bacana. 740 00:56:51,000 --> 00:56:56,000 Por agora, vamos comentar o resto de tudo, 741 00:56:56,000 --> 00:57:00,000 salvar este, eo que podemos fazer agora é que podemos abrir um arquivo 742 00:57:00,000 --> 00:57:06,000 que podemos chamar de some_file.txt-vamos criar um novo arquivo 743 00:57:06,000 --> 00:57:15,000 e podemos colocar em um monte de coisas sem sentido aqui apenas para testar tudo para fora, 744 00:57:15,000 --> 00:57:25,000 salvá-lo, chamá-lo some_file.txt, como eu estou fazendo aqui em cima no topo, 745 00:57:25,000 --> 00:57:33,000 e agora, se eu diminuir o zoom apenas para se certificar que tudo está no mesmo diretório 746 00:57:33,000 --> 00:57:36,000 parece que eu tenho unique.php e some_file.txt no mesmo diretório. 747 00:57:36,000 --> 00:57:42,000 Se eu executar unique.php php 748 00:57:42,000 --> 00:57:51,000 ver como ele imprime cada linha no meu arquivo e que a linha é? 749 00:57:51,000 --> 00:57:56,000 >> Isso é muito poderoso, certo? 750 00:57:56,000 --> 00:58:03,000 Olha, que levou 3 linhas de código para abrir um arquivo. 751 00:58:03,000 --> 00:58:08,000 Bem, quatro linhas de código. Eu não posso contar, hoje, claramente. 752 00:58:08,000 --> 00:58:13,000 Mas realmente apenas duas linhas interessantes de código, porque os outros 2 foram as chaves, 753 00:58:13,000 --> 00:58:17,000 mas neste código muito fomos capazes de abrir um arquivo, percorrer-lo, 754 00:58:17,000 --> 00:58:20,000 puxe o número da linha e da própria linha 755 00:58:20,000 --> 00:58:24,000 e imprimi-lo. 756 00:58:24,000 --> 00:58:26,000 Coisas legais. Charlotte. 757 00:58:26,000 --> 00:58:28,000 [Charlotte] Eu tenho uma pergunta sobre a sintaxe. 758 00:58:28,000 --> 00:58:33,000 Então foreach lida com cada linha do arquivo que você abrir, 759 00:58:33,000 --> 00:58:37,000 e então, quando você quer fazer as coisas com cada linha que você acabou de fazê-lo como 760 00:58:37,000 --> 00:58:39,000 e, então, associar o valor. 761 00:58:39,000 --> 00:58:41,000 [Nate H.] O que você pode fazer aqui, a questão foi 762 00:58:41,000 --> 00:58:46,000 o foreach tem a ver com a matriz, de modo a sintaxe foreach 763 00:58:46,000 --> 00:58:51,000 é realmente foreach, e observe que não há espaço 764 00:58:51,000 --> 00:58:53,000 ou qualquer coisa entre a ea para cada. 765 00:58:53,000 --> 00:58:56,000 Eles têm de ir ao lado uns dos outros, 766 00:58:56,000 --> 00:59:00,000 e isso leva em uma matriz, 767 00:59:00,000 --> 00:59:05,000 e então você tem esta outra palavra-chave chamada como que tem que estar lá, 768 00:59:05,000 --> 00:59:11,000 e depois o que você pode colocar um nome de variável, 769 00:59:11,000 --> 00:59:14,000 caso em que você vai estar retirando os valores da matriz, 770 00:59:14,000 --> 00:59:20,000 não os índices, ou se você fizer isso, como temos escrito abaixo 771 00:59:20,000 --> 00:59:24,000 você pegar as chaves e os valores. 772 00:59:24,000 --> 00:59:33,000 Você tem elemento foreach da matriz ou par da matriz como introduzido ao valor 773 00:59:33,000 --> 00:59:38,000 ou apenas como valor. 774 00:59:38,000 --> 00:59:40,000 Dependendo do que você precisa, se você não precisa de chaves, 775 00:59:40,000 --> 00:59:42,000 então você pode ir com o valor. 776 00:59:42,000 --> 00:59:45,000 Se você quiser as teclas que você pode ir com eles também. 777 00:59:45,000 --> 00:59:48,000 >> [Charlotte] Eu também percebi que nunca declarou o i ou linha. 778 00:59:48,000 --> 00:59:51,000 Como ela mesmo sabe o que são? 779 00:59:51,000 --> 00:59:53,000 [Nate H.] O que você quer dizer com declarar? 780 00:59:53,000 --> 00:59:57,000 [Charlotte] Nós nunca disse a eles o que eu ou linha de meio. 781 00:59:57,000 --> 01:00:01,000 [Nate H.] Nós nunca disse o computador que eu ou linha significa em termos de- 782 01:00:01,000 --> 01:00:05,000 [Charlotte] de que eles estão indexadas ou que-eles 783 01:00:05,000 --> 01:00:09,000 [Nate H.] Nós nunca contou que este é suposto ser o índice ou a chave eo valor, 784 01:00:09,000 --> 01:00:13,000 e isso é porque esse é o interpretador PHP. 785 01:00:13,000 --> 01:00:17,000 Isto serve como declaração e diz que está bem, a chave vai ser 786 01:00:17,000 --> 01:00:20,000 uma variável chamada i armazenado em uma variável chamada i. 787 01:00:20,000 --> 01:00:24,000 O valor que vai ser armazenado em uma linha variável chamada, 788 01:00:24,000 --> 01:00:28,000 de modo que este serve como declaração dessas variáveis 789 01:00:28,000 --> 01:00:35,000 e diz $ i é uma chave, e US $ linha é um valor. 790 01:00:35,000 --> 01:00:37,000 Sim, Ella. 791 01:00:37,000 --> 01:00:41,000 [Ella] Se as chaves não são feitas numericamente 792 01:00:41,000 --> 01:00:44,000 como é que decidirá qual ordem que vai imprimir tudo? 793 01:00:44,000 --> 01:00:47,000 É exatamente como a ordem em que entrou em? 794 01:00:47,000 --> 01:00:51,000 [Nate H.] Vamos dar-lhe uma tentativa. 795 01:00:51,000 --> 01:00:57,000 Vamos criar uma variável chamada arr, 796 01:00:57,000 --> 01:01:06,000 e podemos fazer um vai para o 7. 797 01:01:06,000 --> 01:01:19,000 Vamos dizer que 0 vai para outra matriz com 1, 2 ou maçã. 798 01:01:19,000 --> 01:01:30,000 Digamos 7 vai para 1, b vai para 2, 799 01:01:30,000 --> 01:01:39,000 e 3 vai para 4. 800 01:01:39,000 --> 01:01:44,000 Este é um tipo de exemplo louco procurando porque estamos misturando 801 01:01:44,000 --> 01:01:47,000 strings e inteiros em todo o lugar. 802 01:01:47,000 --> 01:01:50,000 Não há nenhuma ordem real a essa matriz. 803 01:01:50,000 --> 01:01:55,000 Quero dizer, nós pode pedir tudo em ordem alfabética por as chaves. 804 01:01:55,000 --> 01:01:57,000 Poderíamos pedir tudo em ordem alfabética pelo valor. 805 01:01:57,000 --> 01:02:00,000 >> Poderíamos tentar e ter em conta que alguns são cordas, alguns são ints, 806 01:02:00,000 --> 01:02:03,000 e nós poderíamos tentar convertê-los todos para o mesmo tipo e ver o que acontece, 807 01:02:03,000 --> 01:02:09,000 ou poderíamos considerá-los no valor em que já foram digitados 808 01:02:09,000 --> 01:02:14,000 onde vamos colocar esse cara no primeiro, esse cara na segunda, esse cara em terceiro, 809 01:02:14,000 --> 01:02:19,000 esse cara na quarta, et cetera. 810 01:02:19,000 --> 01:02:23,000 Vamos ver o que acontece quando executamos este código. 811 01:02:23,000 --> 01:02:29,000 Se rolar para baixo e fazer o mesmo tipo de coisa, 812 01:02:29,000 --> 01:02:31,000 e aqui não é imprimir as novas linhas. 813 01:02:31,000 --> 01:02:35,000 Quando se ler coisas fora do arquivo que foi incluindo as novas linhas nos valores, 814 01:02:35,000 --> 01:02:38,000 que foi por isso que imprimiu bem, enquanto aqui isso não aconteceu, 815 01:02:38,000 --> 01:02:40,000 é por isso que tudo é esmagado juntos. 816 01:02:40,000 --> 01:02:44,000 Vamos acrescentar nessa nova linha só para fazer coisas boas. 817 01:02:44,000 --> 01:02:51,000 Vamos executar novamente, e então aqui 818 01:02:51,000 --> 01:02:54,000 olhar para o que aconteceu. 819 01:02:54,000 --> 01:03:00,000 É impresso tudo em ordem em que colocá-lo na matriz. 820 01:03:00,000 --> 01:03:10,000 Ele faz preservar a ordem nesse sentido. 821 01:03:10,000 --> 01:03:15,000 >> Voltando a este problema de únicos 822 01:03:15,000 --> 01:03:20,000 onde queremos ser capaz de iterar sobre um arquivo, 823 01:03:20,000 --> 01:03:24,000 e nós vamos dar-lhe some_file.txt, 824 01:03:24,000 --> 01:03:27,000 e vamos iterar sobre ele como este. 825 01:03:27,000 --> 01:03:31,000 Nós dissemos que queríamos usar uma matriz para ter certeza de que nós temos todo o 826 01:03:31,000 --> 01:03:36,000 linhas exclusivas de lá, e nós poderíamos fazer isso muito facilmente 827 01:03:36,000 --> 01:03:49,000 por apenas armazenar em uma matriz que nós, naturalmente, declarar fora do âmbito de um ciclo, 828 01:03:49,000 --> 01:03:55,000 e disse que, se nós usamos as linhas no arquivo como as chaves em nossa matriz 829 01:03:55,000 --> 01:03:59,000 se entramos em uma linha duplicada estaríamos substituindo o valor anterior. 830 01:03:59,000 --> 01:04:08,000 Não é sempre possível ter duas chaves que são idênticos na mesma matriz. 831 01:04:08,000 --> 01:04:13,000 Nós podemos fazer isso. 832 01:04:13,000 --> 01:04:17,000 Nós vamos nos livrar dessa declaração eco aqui. 833 01:04:17,000 --> 01:04:24,000 Aqui estamos armazenando a linha no arquivo em nossa matriz 834 01:04:24,000 --> 01:04:28,000 utilizando-se como a chave. 835 01:04:28,000 --> 01:04:32,000 Nada para ele, e verifica-se que não precisa mesmo de esta chave. 836 01:04:32,000 --> 01:04:38,000 Nós não precisamos que eu variável. 837 01:04:38,000 --> 01:04:43,000 Neste ponto, se fosse fazer outro laço foreach 838 01:04:43,000 --> 01:04:48,000 e nós para loop sobre cada arr 839 01:04:48,000 --> 01:04:56,000 e linha agora se eco-oops, desculpe. 840 01:04:56,000 --> 01:05:00,000 Nós não podemos usar a vírgula. Temos que usar isso como palavra-chave. 841 01:05:00,000 --> 01:05:05,000 Agora, se nós echo linha devemos obter todas as palavras originais em arquivo. 842 01:05:05,000 --> 01:05:10,000 Se formos até some_file.txt, 843 01:05:10,000 --> 01:05:19,000 e digamos que fazemos maçã, banana, maçã, maçã, banana, 844 01:05:19,000 --> 01:05:22,000 se estamos a imprimir todas as palavras únicas neste arquivo que só deve começar 845 01:05:22,000 --> 01:05:30,000 maçã e banana para imprimir. 846 01:05:30,000 --> 01:05:36,000 Se salvar este, agora aqui vamos zoom in, 847 01:05:36,000 --> 01:05:44,000 php unique.php, e ta-da. 848 01:05:44,000 --> 01:05:51,000 Nós sucesso uniqued o arquivo. 849 01:05:51,000 --> 01:05:55,000 >> A parte final deste problema está lhe pedindo para classificar essa matriz antes de você imprimiu 850 01:05:55,000 --> 01:05:58,000 porque neste exemplo simples que nós acabamos de fazer 851 01:05:58,000 --> 01:06:04,000 tivemos sorte no sentido de que o arquivo- 852 01:06:04,000 --> 01:06:06,000 fizemos este exemplo fictício com maçãs e bananas. 853 01:06:06,000 --> 01:06:08,000 Ele já estava classificada. 854 01:06:08,000 --> 01:06:19,000 Mas usando a função de classificação simples que você pode classificar uma matriz, que é muito bacana. 855 01:06:19,000 --> 01:06:24,000 A última coisa que eu queria falar com vocês sobre realmente rapidamente 856 01:06:24,000 --> 01:06:31,000 é que este tipo de PHP é tudo muito bem, e é super acessível 857 01:06:31,000 --> 01:06:43,000 saber como fazer, se você precisar de fazer pequenas, coisas rápidas de programação. 858 01:06:43,000 --> 01:06:48,000 Por exemplo, se eu preciso escrever um programa que, digamos, 859 01:06:48,000 --> 01:06:53,000 coloca todos em seções eu não estou indo para ir e escrever em C. 860 01:06:53,000 --> 01:06:55,000 Vai ser longa. 861 01:06:55,000 --> 01:06:57,000 Vai ser uma espécie de dor, especialmente se existem arquivos envolvidos, 862 01:06:57,000 --> 01:07:00,000 assim como vocês têm visto. 863 01:07:00,000 --> 01:07:05,000 É tão bom que com apenas este código muito bem aqui 864 01:07:05,000 --> 01:07:08,000 fomos capazes de rasgar através de um arquivo, retire todos os valores exclusivos 865 01:07:08,000 --> 01:07:11,000 e imprimi-los de volta. 866 01:07:11,000 --> 01:07:16,000 >> No entanto, para as suas atribuições, para seus projetos, 867 01:07:16,000 --> 01:07:20,000 se você está construindo sites com PHP é que o poder 868 01:07:20,000 --> 01:07:25,000 estamos executando nossos arquivos PHP através deste intérprete, 869 01:07:25,000 --> 01:07:29,000 eo intérprete está processando tudo dentro das tags PHP, 870 01:07:29,000 --> 01:07:34,000 deixando tudo mais intocada e cuspindo os resultados. 871 01:07:34,000 --> 01:07:40,000 Nós podemos fazer isso para construir HTML programaticamente. 872 01:07:40,000 --> 01:07:46,000 Agora, se voltar para a especificação, o último problema na especificação 873 01:07:46,000 --> 01:07:56,000 fala sobre essa idéia de concentrações 874 01:07:56,000 --> 01:08:01,000 e criação de um menu drop-down, 875 01:08:01,000 --> 01:08:06,000 que você pode ou não quer fazer, dependendo do que o seu projeto final está fazendo, 876 01:08:06,000 --> 01:08:13,000 que permite ao usuário selecionar a partir de uma lista de todos os possíveis concentrações 877 01:08:13,000 --> 01:08:15,000 uma sua concentração. 878 01:08:15,000 --> 01:08:21,000 Agora, este é um tipo de dor que digitar isso 879 01:08:21,000 --> 01:08:25,000 e tem que fazer tudo isso manualmente, especialmente quando você está tendo para se certificar 880 01:08:25,000 --> 01:08:28,000 que você tem todos os colchetes no lugar certo e todas as aspas no lugar certo, 881 01:08:28,000 --> 01:08:34,000 assim com o PHP, você pode fazer isso programaticamente, e você pode fazer isso muito rapidamente. 882 01:08:34,000 --> 01:08:36,000 >> Vamos ver como fazer isso. 883 01:08:36,000 --> 01:08:42,000 Nós vamos abrir um novo arquivo. 884 01:08:42,000 --> 01:08:46,000 Vamos colocar em nossas tags do PHP. 885 01:08:46,000 --> 01:08:53,000 Vamos chamá-lo de concentrations.php, 886 01:08:53,000 --> 01:08:58,000 e agora, quando você está fazendo isso, uma espécie de coisa boa para pensar 887 01:08:58,000 --> 01:09:02,000 quando você está tentando misturar e combinar seu PHP e HTML 888 01:09:02,000 --> 01:09:08,000 é descobrir, ok, o que é a parte que eu quero gerar programaticamente? 889 01:09:08,000 --> 01:09:11,000 Qual é a parte que eu possa gerar programaticamente? 890 01:09:11,000 --> 01:09:17,000 É verdade que você pode fazer tudo do seu HTML 891 01:09:17,000 --> 01:09:19,000 dentro de blocos de PHP. 892 01:09:19,000 --> 01:09:24,000 Você pode repetir todo o HTML como strings. 893 01:09:24,000 --> 01:09:30,000 Por exemplo, se eu quero começar a fazer as marcas selecionadas dentro de PHP 894 01:09:30,000 --> 01:09:46,000 Posso dizer eco, dizem selecionar concentração = nome, 895 01:09:46,000 --> 01:09:49,000 e depois lá embaixo Eu poderia ter outro tag eco 896 01:09:49,000 --> 01:09:57,000 ou outro eco chamado perto a seleção. 897 01:09:57,000 --> 01:10:00,000 Esta é uma maneira de fazê-lo porque o que este é, literalmente, vai fazer 898 01:10:00,000 --> 01:10:09,000 é imprimir essa string quando é executado através do intérprete PHP, 899 01:10:09,000 --> 01:10:12,000 portanto, o resultado será HTML. 900 01:10:12,000 --> 01:10:18,000 Se eu salvar este arquivo como é agora 901 01:10:18,000 --> 01:10:24,000 e eu corro concentrations.php php 902 01:10:24,000 --> 01:10:26,000 olha o que eu tenho. 903 01:10:26,000 --> 01:10:30,000 Eu tenho essa tag fechar abrir seleção. 904 01:10:30,000 --> 01:10:36,000 >> Se eu fosse fazer isso e eu fosse para salvar este resultado para um arquivo, 905 01:10:36,000 --> 01:10:45,000 dizer, concentrations.html espera, parece que o l passou para o outro lado 906 01:10:45,000 --> 01:11:02,000 agora se eu abrir aqui concentrations.html vedes que eu tenho um arquivo HTML válido. 907 01:11:02,000 --> 01:11:05,000 É que tipo de estranho? 908 01:11:05,000 --> 01:11:09,000 Estamos usando PHP para criar HTML, criar HTML válido. 909 01:11:09,000 --> 01:11:13,000 A maneira que nós estamos fazendo é que estamos apenas ter a impressão PHP 910 01:11:13,000 --> 01:11:16,000 o HTML que queremos imprimir. 911 01:11:16,000 --> 01:11:20,000 Este é, literalmente, como sites PHP estão funcionando. 912 01:11:20,000 --> 01:11:24,000 Quando você visita um site que envia para algo como 913 01:11:24,000 --> 01:11:30,000 alguma coisa, alguma coisa, alguma coisa ponto com barra index.php 914 01:11:30,000 --> 01:11:33,000 o computador é literalmente chamar index.php, 915 01:11:33,000 --> 01:11:38,000 executá-lo através do intérprete PHP, e qualquer lixo sai 916 01:11:38,000 --> 01:11:49,000 ele está enviando de volta para o navegador e dizendo ei, navegador, interpretar isso como HTML. 917 01:11:49,000 --> 01:11:54,000 O bom é que ele pode ser uma dor de escrever constantemente eco, eco, eco, eco 918 01:11:54,000 --> 01:11:59,000 e coloque tudo em citações como esta, por isso, se você quer escrever 919 01:11:59,000 --> 01:12:04,000 o HTML que vai ser estático-se que você pode fazê-lo assim, 920 01:12:04,000 --> 01:12:16,000 colocá-lo fora, fechá-lo, 921 01:12:16,000 --> 01:12:21,000 e aqui você só colocar dentro das tags PHP que você conhece 922 01:12:21,000 --> 01:12:26,000 você quer gerar programaticamente e, neste caso, é opção de tags 923 01:12:26,000 --> 01:12:31,000 que são uma dor de gerar. 924 01:12:31,000 --> 01:12:37,000 >> Por exemplo, poderíamos gerar uma opção tags mil 925 01:12:37,000 --> 01:12:48,000 fazendo algo parecido com isso, $ i <1000, i + + 926 01:12:48,000 --> 01:13:00,000 e dizendo o valor da opção de eco-= $ gritos, eu não posso fazer isso. 927 01:13:00,000 --> 01:13:03,000 Bem, vamos tentar e ver o que acontece. 928 01:13:03,000 --> 01:13:22,000 $ I e então dizer $ i 01:13:27,000 Ao invés de ter que digitar essa marca opção mil vezes diferentes 930 01:13:27,000 --> 01:13:33,000 Estou usando o código PHP para gerar automaticamente, por meio de programação. 931 01:13:33,000 --> 01:13:38,000 Tipo de bacana. Sim. 932 01:13:38,000 --> 01:13:41,000 Lembro-me de ser mencionado em qualquer palestra ou o passo a passo, 933 01:13:41,000 --> 01:13:43,000 mas qual é a diferença entre as aspas, 934 01:13:43,000 --> 01:13:45,000 os normais e essas coisas simples? 935 01:13:45,000 --> 01:13:49,000 Isso é algo que eu tenha feito incorretamente aqui que eu estava indo para mostrar-lhe. 936 01:13:49,000 --> 01:13:52,000 As aspas simples não permitem quaisquer caracteres especiais, 937 01:13:52,000 --> 01:13:57,000 portanto, tudo dentro de uma string entre aspas simples é interpretado literalmente. 938 01:13:57,000 --> 01:14:02,000 Se eu tivesse um \ n dentro de aspas simples e eu salvar este, por exemplo, 939 01:14:02,000 --> 01:14:07,000 e agora eu vou descer aqui e execute-o- 940 01:14:07,000 --> 01:14:12,000 opa, para onde vou? 941 01:14:12,000 --> 01:14:19,000 Ah, é porque eu esqueci o $. 942 01:14:19,000 --> 01:14:25,000 >> Agora, se eu abrir, na verdade, aqui, que vai se livrar do digitá-lo em um arquivo. 943 01:14:25,000 --> 01:14:27,000 Nós vamos apenas lê-lo. 944 01:14:27,000 --> 01:14:34,000 Aqui você vê que eu tenho essa literal \ n na seqüência, como não uma linha real novo, 945 01:14:34,000 --> 01:14:38,000 e de igual modo, em vez de realmente interpolando o valor desta variável 946 01:14:38,000 --> 01:14:42,000 ele me deu a $ i si, que é um tipo de dor. 947 01:14:42,000 --> 01:14:46,000 A maneira de contornar isso é usar as aspas duplas, 948 01:14:46,000 --> 01:14:52,000 e então, quando você usa aspas ele vai realmente 949 01:14:52,000 --> 01:14:56,000 adequadamente interpolar os valores de todas essas variáveis ​​aqui 950 01:14:56,000 --> 01:14:59,000 e também reconhece esta \ n ser a nova linha que é 951 01:14:59,000 --> 01:15:02,000 e não \ n. 952 01:15:02,000 --> 01:15:07,000 Usando as solteiras é bom quando você tem 953 01:15:07,000 --> 01:15:10,000 caracteres que podem ser interpretados como caracteres especiais, porque então você não tem que 954 01:15:10,000 --> 01:15:15,000 escapar deles constantemente. 955 01:15:15,000 --> 01:15:18,000 As coisas podem ficar confuso, e muitas vezes a maneira que eu faço, 956 01:15:18,000 --> 01:15:24,000 apenas para fazer coisas fáceis, é que se eu vou ter nada 957 01:15:24,000 --> 01:15:31,000 HTML como no meu código eu vou incluir edição dentro de aspas simples 958 01:15:31,000 --> 01:15:36,000 e então usar este operador de concatenação 959 01:15:36,000 --> 01:15:43,000 para concatenar as variáveis ​​dentro 960 01:15:43,000 --> 01:15:47,000 Esta é outra maneira de fazê-lo 961 01:15:47,000 --> 01:15:52,000 onde temos o ponto que vai ligar esta é uma string 962 01:15:52,000 --> 01:15:56,000 com isso com este, com isso, 963 01:15:56,000 --> 01:15:59,000 e agora eu não tenho que escapar destas aspas. 964 01:15:59,000 --> 01:16:02,000 Eu não tenho de usar esse cara escapar. 965 01:16:02,000 --> 01:16:08,000 Eles literalmente ser impressas como aspas duplas e então esse cara aqui. 966 01:16:08,000 --> 01:16:11,000 Esta é uma outra maneira de se misturar tudo em conjunto. 967 01:16:11,000 --> 01:16:14,000 >> [Estudante] Também, quando você ecoou gettype não havia aspas em tudo. 968 01:16:14,000 --> 01:16:22,000 Certo, então é uma espécie de eco especial no sentido de que você não precisa de parênteses. 969 01:16:22,000 --> 01:16:29,000 Você não precisa ter necessariamente as aspas em torno de variáveis, 970 01:16:29,000 --> 01:16:37,000 como ele é válido dizer echo $ i, e que vai interpretar isso como uma string. 971 01:16:37,000 --> 01:16:44,000 Ele vai fazer o elenco, para que possamos fazer isso, e isso é válido também, mas nós não precisamos dele. 972 01:16:44,000 --> 01:16:48,000 É opcional. 973 01:16:48,000 --> 01:16:53,000 No conjunto desta semana problema olhar para um monte de este tipo de coisas 974 01:16:53,000 --> 01:16:58,000 onde você está misturando e combinando HTML com PHP 975 01:16:58,000 --> 01:17:08,000 como esta, e agora, se rolar para trás e corremos este 976 01:17:08,000 --> 01:17:13,000 podemos ver que temos um monte de valores de opção 977 01:17:13,000 --> 01:17:15,000 que acabou de ser impressa. 978 01:17:15,000 --> 01:17:20,000 Temos todo o HTML gerado este que ficou muito rápido para nós. 979 01:17:20,000 --> 01:17:22,000 Eu vou deixá-lo como um exercício. 980 01:17:22,000 --> 01:17:24,000 É muito semelhante à leitura de arquivo que fizemos anteriormente. 981 01:17:24,000 --> 01:17:31,000 >> Há um arquivo concentrations.txt que você pode puxar para baixo a partir do CDN, 982 01:17:31,000 --> 01:17:34,000 e você pode abri-lo usando o mesmo truque foreach que fizemos anteriormente, 983 01:17:34,000 --> 01:17:39,000 foreach e você só tem que ecoar uma opção e conecte 984 01:17:39,000 --> 01:17:44,000 os valores apropriados, as teclas apropriadas e índices, 985 01:17:44,000 --> 01:17:49,000 e então você começa um drop down que literalmente cria 986 01:17:49,000 --> 01:17:54,000 programaticamente para você todas as diferentes concentrações em Harvard. 987 01:17:54,000 --> 01:17:57,000 Uma coisa útil para ter. 988 01:17:57,000 --> 01:18:02,000 Há um monte de coisas de configuração para essa atribuição. 989 01:18:02,000 --> 01:18:07,000 Se você não tiver feito isso já tomar a próxima meia hora, hora, 990 01:18:07,000 --> 01:18:10,000 algum tempo esta noite definitivamente, com certeza, 991 01:18:10,000 --> 01:18:14,000 caminhar através da especificação conjunto de problemas, 992 01:18:14,000 --> 01:18:20,000 ver o que está acontecendo com a configuração dos vhosts, o host local, todas essas coisas. 993 01:18:20,000 --> 01:18:24,000 Uma coisa a ressaltar neste momento é que 994 01:18:24,000 --> 01:18:30,000 na maioria dos conjuntos de problemas que temos de entrar em sua pasta Dropbox 995 01:18:30,000 --> 01:18:34,000 e depois fazer o download do arquivo zip problema set e descompactá-lo. 996 01:18:34,000 --> 01:18:36,000 Por este conjunto de problemas que você não quer. 997 01:18:36,000 --> 01:18:40,000 Você quer ir para este diretório vhosts. 998 01:18:40,000 --> 01:18:45,000 Você quer ir para vhosts e ir para o diretório do host local, dentro dela, 999 01:18:45,000 --> 01:18:50,000 e é aí que você vai querer puxar para baixo o arquivo zip, 1000 01:18:50,000 --> 01:18:55,000 descompactá-lo, e prepare-se para ir. 1001 01:18:55,000 --> 01:18:57,000 Você terá que seguir os passos de perto. 1002 01:18:57,000 --> 01:19:02,000 >> Se você tiver alguma dúvida, envie um e-mail, postá-lo no Discutir, venha para o horário de expediente. 1003 01:19:02,000 --> 01:19:08,000 Obrigado rapazes. Na próxima semana vamos ter uma sessão de revisão para o teste. 1004 01:19:08,000 --> 01:19:12,000 Aproveite o seu conjunto de problemas passado. Espero que tudo vai muito bem. 1005 01:19:12,000 --> 01:19:14,000 [CS50.TV]