1 00:00:00,000 --> 00:00:05,340 2 00:00:05,340 --> 00:00:07,370 >> DOUG LLOYD: Então nós temos feito um monte de trabalho em C, 3 00:00:07,370 --> 00:00:09,536 e C é um muito legal língua porque lhe dá 4 00:00:09,536 --> 00:00:12,840 a capacidade de mergulhar realmente baixo nível em seus programas. 5 00:00:12,840 --> 00:00:16,810 Nós começamos a fazer as coisas como realmente minuto, manipulando 6 00:00:16,810 --> 00:00:18,800 bytes individuais da memória. 7 00:00:18,800 --> 00:00:21,420 Lembre-se que os ponteiros realmente permitir-nos de que a flexibilidade. 8 00:00:21,420 --> 00:00:25,260 >> Mas nós sempre precisa ter esse nível de grão fino de detalhe 9 00:00:25,260 --> 00:00:26,820 em nossos programas? 10 00:00:26,820 --> 00:00:28,210 Provavelmente não, certo? 11 00:00:28,210 --> 00:00:30,376 E se nós vamos ter um trade-off entre ser 12 00:00:30,376 --> 00:00:32,911 capaz de fazer muito, muito coisas hora e muito, muito 13 00:00:32,911 --> 00:00:35,910 grandes coisas que nós não temos de pensar sobre, não temos de implementar 14 00:00:35,910 --> 00:00:40,290 estes realmente grandes idéias se eles já estão construídos em para nós, 15 00:00:40,290 --> 00:00:43,980 em geral, para a construção de grande programas ou grandes projetos, 16 00:00:43,980 --> 00:00:49,130 nós provavelmente vamos errar no lado de ter mais coisas idioma construído em 17 00:00:49,130 --> 00:00:51,300 para nós, em vez de ter o material de baixo nível. 18 00:00:51,300 --> 00:00:53,970 E é aí que realmente vem em PHP. 19 00:00:53,970 --> 00:00:58,200 >> Agora, uma das razões que nós ensinamos em PHP CS50 20 00:00:58,200 --> 00:01:01,020 é que é fortemente inspirado por C. E, de fato, na minha opinião, 21 00:01:01,020 --> 00:01:05,140 há realmente dois línguas progenitoras que 22 00:01:05,140 --> 00:01:08,200 são muito comuns hoje em dia. 23 00:01:08,200 --> 00:01:10,110 C e LISP. 24 00:01:10,110 --> 00:01:13,280 E eles são línguas progenitoras porque todos os outros programação moderna 25 00:01:13,280 --> 00:01:17,380 linguagem que desenvolveu Desde então é inspirado 26 00:01:17,380 --> 00:01:20,330 por uma ou outra sintacticamente. 27 00:01:20,330 --> 00:01:26,160 PHP é muito semelhante sintaticamente a C, enquanto que línguas como o Scheme, 28 00:01:26,160 --> 00:01:27,900 por exemplo, que você pode ter ouvido, 29 00:01:27,900 --> 00:01:32,070 é fortemente inspirado por uma língua LISP chamado, que é uma linguagem mais velhos. 30 00:01:32,070 --> 00:01:34,220 >> Assim, a razão pela qual nós ensinamos PHP em CS50 é que, 31 00:01:34,220 --> 00:01:37,730 conhecendo C como fundamentalmente como você fazer neste momento, 32 00:01:37,730 --> 00:01:41,280 pegar PHP, que lhe dá a capacidade de fazer coisas nível muito mais elevado 33 00:01:41,280 --> 00:01:44,710 que faz C, não é que muito de um obstáculo, 34 00:01:44,710 --> 00:01:48,230 porque você já tem o ideia básica da sintaxe. 35 00:01:48,230 --> 00:01:50,590 C tem sido em torno de quase 45 anos neste momento. 36 00:01:50,590 --> 00:01:52,780 PHP tem sido em torno de cerca de 20 anos. 37 00:01:52,780 --> 00:01:57,080 E na medida em que 25 anos No meio, programadores 38 00:01:57,080 --> 00:02:01,540 determinou que eles seriam muito prefiro ter habilidades de nível superior, 39 00:02:01,540 --> 00:02:04,970 e os erros e lutas dos 20 anos de entre 40 00:02:04,970 --> 00:02:08,210 levou a PHP e outras línguas modernas. 41 00:02:08,210 --> 00:02:11,039 >> Do PHP uma grande escolha de idioma para software 42 00:02:11,039 --> 00:02:14,042 que allow-- para software isso-- onde você 43 00:02:14,042 --> 00:02:16,250 precisa fazer coisas que em C são efectivamente complicada. 44 00:02:16,250 --> 00:02:18,480 Assim, por exemplo, trabalhando com cordas em C 45 00:02:18,480 --> 00:02:21,709 é muito complicado, porque como sabemos, cordas em C 46 00:02:21,709 --> 00:02:23,250 são realmente apenas a arrays de caracteres. 47 00:02:23,250 --> 00:02:25,230 Não é um tipo de dados embutido. 48 00:02:25,230 --> 00:02:28,220 Ou talvez mais fundamentalmente, algo que nem sequer cobrir em C, 49 00:02:28,220 --> 00:02:30,360 E se você precisa fazer algumas redes de computadores? 50 00:02:30,360 --> 00:02:30,860 Tudo certo? 51 00:02:30,860 --> 00:02:34,920 >> C tem a capacidade de fazê-lo, mas é tão arcano e tão difícil de realmente fazer. 52 00:02:34,920 --> 00:02:37,580 Não seria bom se o linguagem tinha, uma maneira fácil embutido 53 00:02:37,580 --> 00:02:38,910 para implementar a rede? 54 00:02:38,910 --> 00:02:43,420 E PHP é uma linguagem que faz com que, ou facilita que, um pouco mais. 55 00:02:43,420 --> 00:02:47,740 Como eu disse, PHP é muito fortemente inspirado por C. A sintaxe é muito similar. 56 00:02:47,740 --> 00:02:51,760 E assim deve esperamos fazer o transição de uma para a outra 57 00:02:51,760 --> 00:02:54,710 um pouco mais suave do que alguns outras línguas pode ser. 58 00:02:54,710 --> 00:02:58,800 >> Para começar a escrever PHP, basta abrir um arquivo com a extensão .php. 59 00:02:58,800 --> 00:03:00,670 Tecnicamente esta não é realmente necessário, 60 00:03:00,670 --> 00:03:04,495 mas se você quiser coisas como sintaxe destacando em IDE, de modo que tipo 61 00:03:04,495 --> 00:03:07,620 nomes ou nomes de variáveis, funções, você sabe, as palavras-chave da linguagem 62 00:03:07,620 --> 00:03:10,090 são destacadas em um cor específica, você geralmente 63 00:03:10,090 --> 00:03:14,020 quer nomear seus arquivos com uma extensão de arquivo particular. 64 00:03:14,020 --> 00:03:18,430 Então, nós temos o nosso arquivo nomeado com um .php extensão, mas, em seguida, também com PHP, 65 00:03:18,430 --> 00:03:23,310 todo o código PHP que escrevemos em que ficheiro tem de ser colocado entre estes PHP 66 00:03:23,310 --> 00:03:25,190 delimitadores que vemos aqui na tela. 67 00:03:25,190 --> 00:03:27,910 Colchete angular? Php para começar. 68 00:03:27,910 --> 00:03:30,860 Então nós escrevemos todo o nosso PHP código que queremos no meio. 69 00:03:30,860 --> 00:03:32,260 E depois ? 70 00:03:32,260 --> 00:03:34,710 suporte de ângulo para fechar. 71 00:03:34,710 --> 00:03:37,170 >> Se não fizermos isso, então o que vai acontecer? 72 00:03:37,170 --> 00:03:38,170 Ele não vai falhar. 73 00:03:38,170 --> 00:03:39,410 Ele não vai realmente arruinar o nosso programa. 74 00:03:39,410 --> 00:03:41,440 Mas não vai ter o efeito que queremos. 75 00:03:41,440 --> 00:03:44,540 O que vai acontecer, realmente, é que quando nós tentamos e executar este programa, 76 00:03:44,540 --> 00:03:50,330 tudo não entre esses delimitadores vai ser impresso textualmente. 77 00:03:50,330 --> 00:03:52,210 Ele não vai efectivamente executar o código, 78 00:03:52,210 --> 00:03:56,010 ele vai apenas imprimi-lo textualmente. 79 00:03:56,010 --> 00:03:57,320 >> Agora, por que é o caso? 80 00:03:57,320 --> 00:04:00,416 Então, C é o que é conhecido como uma linguagem compilada. 81 00:04:00,416 --> 00:04:03,040 Você provavelmente está familiarizado com o passo de fazer seus programas, 82 00:04:03,040 --> 00:04:07,820 transformando os arquivos .c e .h em um único executável com o make, 83 00:04:07,820 --> 00:04:11,130 em especial através de Clang como nosso compilador. 84 00:04:11,130 --> 00:04:13,030 PHP, porém, não faz ter este equivalente. 85 00:04:13,030 --> 00:04:15,600 PHP é o que é chamado de linguagem interpretada. 86 00:04:15,600 --> 00:04:16,760 E o que isso significa? 87 00:04:16,760 --> 00:04:20,680 >> Bem, isso significa que não temos de converter nosso código fonte para zeros e uns 88 00:04:20,680 --> 00:04:21,470 de antemão. 89 00:04:21,470 --> 00:04:23,900 Em vez disso, há um programa, que também é chamado 90 00:04:23,900 --> 00:04:29,771 PHP, que entende e PHP pode classificar de torná-lo on the fly. 91 00:04:29,771 --> 00:04:32,520 Isso realmente não é exatamente preciso, mas é uma boa analogia 92 00:04:32,520 --> 00:04:33,760 do que está acontecendo. 93 00:04:33,760 --> 00:04:37,230 É interpretar os zeros e uns na mosca. 94 00:04:37,230 --> 00:04:40,160 E por isso, se ele não sabe como processar alguma coisa, 95 00:04:40,160 --> 00:04:42,800 se não sabe como processo PHP, você provavelmente 96 00:04:42,800 --> 00:04:44,680 queria colocar esse texto em lá, certo? 97 00:04:44,680 --> 00:04:48,960 >> Você provavelmente queria colocar o código em lá, mesmo se não é entre PHP-- 98 00:04:48,960 --> 00:04:50,035 os delimitadores PHP. 99 00:04:50,035 --> 00:04:51,910 Mas-- por isso não está acontecendo para excluí-lo para você, 100 00:04:51,910 --> 00:04:53,576 é só ir para basicamente descartá-lo. 101 00:04:53,576 --> 00:04:55,550 Então ele vai para imprimir -lo para a tela. 102 00:04:55,550 --> 00:04:57,150 >> Isto parece que é um mau coisa, mas na verdade é 103 00:04:57,150 --> 00:04:58,220 Vai ser realmente um coisa boa, como nós vamos 104 00:04:58,220 --> 00:05:00,390 ver quando falamos PHP desenvolvimento web, 105 00:05:00,390 --> 00:05:04,010 porque isso significa que pudermos intercalam PHP e HTML. 106 00:05:04,010 --> 00:05:06,640 Podemos usá-los em conjunto para criar uma página web mais dinâmico. 107 00:05:06,640 --> 00:05:10,650 Mas mais sobre isso na vídeo sobre o desenvolvimento web PHP. 108 00:05:10,650 --> 00:05:12,021 >> Então, qual é a sintaxe do PHP? 109 00:05:12,021 --> 00:05:13,520 Isso é o que este vídeo é tudo. 110 00:05:13,520 --> 00:05:14,850 Vamos conversar a respeito disso. 111 00:05:14,850 --> 00:05:16,490 >> Então, para começar, variáveis. 112 00:05:16,490 --> 00:05:18,030 Existem variáveis ​​PHP. 113 00:05:18,030 --> 00:05:20,067 Existem apenas dois grandes diferenças em relação a C. 114 00:05:20,067 --> 00:05:21,900 A primeira é que não há nenhum tipo especificador. 115 00:05:21,900 --> 00:05:24,245 Não temos a dizer int, char, float, todas essas coisas. 116 00:05:24,245 --> 00:05:25,620 Não temos mais fazer isso. 117 00:05:25,620 --> 00:05:26,810 PHP é uma linguagem moderna. 118 00:05:26,810 --> 00:05:28,910 Ele pode descobrir o que você é tentando fazer ou fazer uma melhor 119 00:05:28,910 --> 00:05:30,451 adivinhar, como o que você está tentando fazer. 120 00:05:30,451 --> 00:05:31,700 Então, isso é muito bom. 121 00:05:31,700 --> 00:05:35,330 >> A outra coisa é que todas as variáveis nomes tem que começar com um sinal de dólar. 122 00:05:35,330 --> 00:05:36,940 Isso é apenas algo para se acostumar. 123 00:05:36,940 --> 00:05:39,496 É um pouco estranho, porque é para que o PHP pode entender 124 00:05:39,496 --> 00:05:40,870 o que é uma variável eo que não é. 125 00:05:40,870 --> 00:05:43,340 Assim, cada nome de variável começa com um sinal de dólar. 126 00:05:43,340 --> 00:05:46,884 Assim, em C, poderíamos dizer algo assim, int x = 54. 127 00:05:46,884 --> 00:05:48,550 Não temos mais fazer isso em PHP. 128 00:05:48,550 --> 00:05:52,540 Podemos apenas dizer $ x = 54. 129 00:05:52,540 --> 00:05:55,920 E poderíamos dizer, por exemplo, em C, se tivéssemos pound-incluído o .h CS50 130 00:05:55,920 --> 00:06:00,314 arquivo de cabeçalho, poderíamos dizer frase string = "Este é CS50." 131 00:06:00,314 --> 00:06:01,980 Nós não temos que fazer isso em PHP, no entanto. 132 00:06:01,980 --> 00:06:04,865 Podemos apenas dizer $ frase = "Este é CS50." 133 00:06:04,865 --> 00:06:08,760 E, de fato, corda é agora um tipo de dados built-in em PHP, 134 00:06:08,760 --> 00:06:10,950 ou melhor o PHP entende o que é uma string. 135 00:06:10,950 --> 00:06:15,612 É separado a partir de uma matriz de personagens como é em C. 136 00:06:15,612 --> 00:06:17,570 Todo o seu favorito instruções condicionais de C 137 00:06:17,570 --> 00:06:19,520 ainda estão disponíveis para você usar. 138 00:06:19,520 --> 00:06:21,140 Portanto, não há grande transição. 139 00:06:21,140 --> 00:06:23,400 Podemos dizer-- podemos ter se declarações como essa. 140 00:06:23,400 --> 00:06:28,210 se y $ 43, ou $ z = 15. 141 00:06:28,210 --> 00:06:29,690 Então, isso é bastante simples. 142 00:06:29,690 --> 00:06:31,980 Podemos ter se e mais. 143 00:06:31,980 --> 00:06:34,210 Podemos ter se e else if. 144 00:06:34,210 --> 00:06:36,430 >> E notar algo muito bom aqui, e esta 145 00:06:36,430 --> 00:06:39,620 é uma espécie de um daqueles vantagens do PHP versus C, aviso 146 00:06:39,620 --> 00:06:41,510 qual a função que nós não estamos usando aqui? 147 00:06:41,510 --> 00:06:47,737 Estamos usando == para comparar um variável, $ nome, para uma cadeia. 148 00:06:47,737 --> 00:06:49,070 Nós não poderia fazer isso em C, certo? 149 00:06:49,070 --> 00:06:53,200 Tivemos de usar uma função chamada SeqComp ou qualquer ou StrEndComp 150 00:06:53,200 --> 00:06:54,840 de seus primos afins. 151 00:06:54,840 --> 00:06:56,980 >> E assim já vemos essas vantagens. 152 00:06:56,980 --> 00:07:00,930 Não temos que fazer alguma coisa como bobo ou talvez unintuitive 153 00:07:00,930 --> 00:07:03,540 como chamar uma função chamada StrComp se eu quiser testar 154 00:07:03,540 --> 00:07:05,237 se um valor igual a uma string. 155 00:07:05,237 --> 00:07:07,820 Eu poderia usar apenas iguala iguais, como se eu pudesse fazer mais nada. 156 00:07:07,820 --> 00:07:09,560 Portanto, há uma vantagem. 157 00:07:09,560 --> 00:07:13,350 >> Às vezes, a propósito, você pode veja mais se como uma palavra, elseif. 158 00:07:13,350 --> 00:07:14,910 E isso é OK em PHP também. 159 00:07:14,910 --> 00:07:17,020 Então, às vezes você pode ver isso. 160 00:07:17,020 --> 00:07:17,790 Não é um erro de digitação. 161 00:07:17,790 --> 00:07:21,830 PHP realmente entende elseif. 162 00:07:21,830 --> 00:07:23,980 Eu não sei por que eles decidiu implementar isso, 163 00:07:23,980 --> 00:07:28,220 mas como nós já vimos muitas vezes em toda a nossa vídeos até agora, 164 00:07:28,220 --> 00:07:30,460 nós programadores adorar se podemos fazer as coisas rapidamente, 165 00:07:30,460 --> 00:07:33,660 assim livrar-se de que o espaço é, aparentemente, uma grande vantagem. 166 00:07:33,660 --> 00:07:34,800 >> Então, isso é, se e elseif. 167 00:07:34,800 --> 00:07:37,540 Temos também o operador ternário, recordação ponto de interrogação cólon, 168 00:07:37,540 --> 00:07:43,262 para realmente curto formulário se mais ou ramificação condicional. 169 00:07:43,262 --> 00:07:45,470 E, aparentemente, neste, o que estamos tentando fazer aqui 170 00:07:45,470 --> 00:07:49,720 é atribuir a variável $ carta verdadeira ou falsa, 171 00:07:49,720 --> 00:07:54,110 dependendo se $ var é um caractere alfabético. 172 00:07:54,110 --> 00:07:57,320 Então, isso é bastante semelhante ao isalpha que estamos familiarizados com a partir de C. 173 00:07:57,320 --> 00:07:59,010 Esta é uma espécie de equivalente em PHP. 174 00:07:59,010 --> 00:08:01,550 A função é aparentemente chamado ctype_alpha, 175 00:08:01,550 --> 00:08:03,450 mas isso é como nós o fazemos em PHP. 176 00:08:03,450 --> 00:08:08,560 Então, tudo isso vai ser é, se $ var é uma carta, $ carta é verdadeira. 177 00:08:08,560 --> 00:08:13,820 Se $ var não é uma carta, $ carta é falsa. 178 00:08:13,820 --> 00:08:15,820 >> Temos também declarações switch ainda. 179 00:08:15,820 --> 00:08:17,870 Recordamos os de C também. 180 00:08:17,870 --> 00:08:22,480 Na parte superior há, é assim que nós fazemos algo como get int ou obter string. 181 00:08:22,480 --> 00:08:23,845 Então PHP tem que construído em. 182 00:08:23,845 --> 00:08:25,470 Nós não precisamos mais da biblioteca CS50. 183 00:08:25,470 --> 00:08:27,237 Nós podemos apenas usar o readline função. 184 00:08:27,237 --> 00:08:29,820 O que isso vai fazer é imprimir a mensagem "Seu estado, 185 00:08:29,820 --> 00:08:33,820 por favor ", e, em seguida, piscar rápida à espera de que o usuário de entrada 186 00:08:33,820 --> 00:08:34,739 alguma informação. 187 00:08:34,739 --> 00:08:36,530 Agora, observe o que mais nós podemos fazer com switch. 188 00:08:36,530 --> 00:08:39,105 Se você já usou antes, você deve se lembrar de que o interruptor 189 00:08:39,105 --> 00:08:44,960 é limitada praticamente em números inteiros e personagens, mas agora podemos usar strings. 190 00:08:44,960 --> 00:08:50,190 E, de fato, a instrução switch em PHP é um pouco mais flexível 191 00:08:50,190 --> 00:08:54,880 do que seu primo de C. 192 00:08:54,880 --> 00:08:55,380 Loops. 193 00:08:55,380 --> 00:08:58,130 Assim como condicionais, todos seus antigos favoritos ainda estão lá. 194 00:08:58,130 --> 00:09:00,740 Temos laços while que contam de 1 a 100, neste caso. 195 00:09:00,740 --> 00:09:03,940 Temos fazer while que contar de 1 a 100, 196 00:09:03,940 --> 00:09:06,200 e nós temos para loops que contam de 1 a 100. 197 00:09:06,200 --> 00:09:07,220 Portanto, não há grande salto. 198 00:09:07,220 --> 00:09:09,360 A sintaxe é bastante muito exatamente o mesmo, 199 00:09:09,360 --> 00:09:11,760 só que agora estamos usando variável sinal de dólar, em vez 200 00:09:11,760 --> 00:09:17,260 de declarar variáveis ​​inteiras ou algo como que para os nossos contadores. 201 00:09:17,260 --> 00:09:20,090 >> Aqui é onde as coisas ficam um muito melhor do que C, no entanto. 202 00:09:20,090 --> 00:09:21,020 Arrays. 203 00:09:21,020 --> 00:09:23,020 Então lembro de quando éramos falando C, a fim 204 00:09:23,020 --> 00:09:25,560 para que possamos crescer e encolher conjuntos de informações, 205 00:09:25,560 --> 00:09:28,310 o que for necessário para classificar de padrão a esta idéia de uma lista ligada, 206 00:09:28,310 --> 00:09:30,780 porque matrizes C foram fixadas em tamanho. 207 00:09:30,780 --> 00:09:31,800 Nós não poderia reduzi-los. 208 00:09:31,800 --> 00:09:32,930 Nós não poderíamos cultivá-las. 209 00:09:32,930 --> 00:09:36,074 Tivemos que realocar a memória e fazer toda essa loucura 210 00:09:36,074 --> 00:09:38,490 ou usar listas ligadas, que ocupam um espaço muito pouco mais. 211 00:09:38,490 --> 00:09:41,590 Mas em PHP, matrizes são não fixa em tamanho mais. 212 00:09:41,590 --> 00:09:43,240 Eles podem crescer e podem encolher. 213 00:09:43,240 --> 00:09:46,660 Então, novamente, nestes 20 anos que existia entre a primeira versão do C 214 00:09:46,660 --> 00:09:49,440 e o primeiro PHP libertação, nós decidimos que, você sabe, 215 00:09:49,440 --> 00:09:51,670 seria realmente grande se pudéssemos fazer isso. 216 00:09:51,670 --> 00:09:54,100 E assim nós implementamos isso. 217 00:09:54,100 --> 00:09:58,040 >> Então matrizes PHP não são fixos em tamanho, e porque o PHP realmente não 218 00:09:58,040 --> 00:10:03,090 tem frente virados para o programador noções de tipos, 219 00:10:03,090 --> 00:10:05,110 nós podemos misturar tipos de dados em nossas matrizes, também. 220 00:10:05,110 --> 00:10:08,100 Então, nós nem sequer temos de usar todos inteiros ou todos os pontos de flutuação, 221 00:10:08,100 --> 00:10:12,826 podemos ter uma mistura de tudo diferentes tipos em uma única matriz. 222 00:10:12,826 --> 00:10:14,700 Declarando uma matriz é bastante simples. 223 00:10:14,700 --> 00:10:16,116 É como qualquer outra variável. 224 00:10:16,116 --> 00:10:20,020 $ nums = array (1, 2, 3, 4), sendo uma função matriz 225 00:10:20,020 --> 00:10:22,760 que é construído em PHP que vai criar uma matriz para você. 226 00:10:22,760 --> 00:10:28,315 Isto cria uma matriz de quatro valores, números neste caso, chamado $ nums. 227 00:10:28,315 --> 00:10:29,940 E há mais de uma maneira de fazê-lo. 228 00:10:29,940 --> 00:10:32,420 E nós estamos indo para vejo muito isso em PHP. 229 00:10:32,420 --> 00:10:36,380 PHP foi desenvolvido por muitos diferente pessoas e cresce e cresce e cresce. 230 00:10:36,380 --> 00:10:40,050 Há geralmente não apenas dois ou três maneiras de fazer algo em PHP, 231 00:10:40,050 --> 00:10:42,170 há geralmente como 10 ou 20. 232 00:10:42,170 --> 00:10:45,300 Aqui é apenas mais um comum maneira de declarar uma matriz. 233 00:10:45,300 --> 00:10:48,310 $ nums = quadrados de suporte 1, 2, 3, 4. 234 00:10:48,310 --> 00:10:53,170 Portanto, esta é uma espécie de similar ao ângulo de C Br-- notação chaveta, em vez. $ - 235 00:10:53,170 --> 00:10:58,525 ou seria int nums quadrado suportes igual chaveta 1, 2, 3, 4. 236 00:10:58,525 --> 00:11:02,710 Em PHP é $ nums = quadrado suportes 1, 2, 3, 4. 237 00:11:02,710 --> 00:11:08,920 Mas ambos os exemplos aqui dá-me um conjunto de quatro neste caso inteiros. 238 00:11:08,920 --> 00:11:10,920 >> E se eu quiser para alinhavar algo agora? 239 00:11:10,920 --> 00:11:14,760 Bem, eu posso apenas dizer $ nums 4, que novamente, ainda estamos contando a partir de 0 aqui 240 00:11:14,760 --> 00:11:17,800 em PHP, seria o quinto elemento da matriz. 241 00:11:17,800 --> 00:11:18,990 Eu só posso dizer isso. 242 00:11:18,990 --> 00:11:22,860 Eu não vou sofrer um seg falha, porque a minha matriz é apenas 243 00:11:22,860 --> 00:11:24,337 vai crescer para acomodar isto. 244 00:11:24,337 --> 00:11:25,420 Isso é muito bom, certo? 245 00:11:25,420 --> 00:11:28,400 E, na verdade, eu nem preciso especifique onde eu quero colocá-lo. 246 00:11:28,400 --> 00:11:31,220 Posso apenas dizer isto e apenas pregá-la à direita para a final, 247 00:11:31,220 --> 00:11:34,099 Ou eu poderia até mesmo apenas dizer $ nums 20 ou 1000. 248 00:11:34,099 --> 00:11:35,140 Realmente não importa. 249 00:11:35,140 --> 00:11:38,330 É ainda só vai pregá-la à direita para a final. 250 00:11:38,330 --> 00:11:41,490 >> Para que eu possa crescer, e estamos as-- não vai cobrir isso aqui, 251 00:11:41,490 --> 00:11:45,360 mas posso emendar ou tira elementos fora da matriz, bem como, 252 00:11:45,360 --> 00:11:50,064 e a matriz irá encolher para acomodar que o espaço agora ausente ou vazio. 253 00:11:50,064 --> 00:11:52,230 Não há outra maneira de aderência algo sobre uma matriz, 254 00:11:52,230 --> 00:11:54,330 que é uma função chamada array_push. 255 00:11:54,330 --> 00:11:57,860 Então, novamente, apenas esta idéia de ser capaz de fazer coisas muitas maneiras diferentes. 256 00:11:57,860 --> 00:12:01,950 Então, nós vimos três maneiras diferentes agora para alinhavar um outro elemento em uma matriz. 257 00:12:01,950 --> 00:12:06,900 Portanto, este acrescenta outro elemento para o final do array $ nums. 258 00:12:06,900 --> 00:12:08,340 E nós podemos misturar nossos tipos de dados. 259 00:12:08,340 --> 00:12:13,110 Então, eu poderia ter uma matriz de não 1, 2, 3, 4, mas 1, verdadeira, 3, 4, 260 00:12:13,110 --> 00:12:16,420 onde o verdadeiro é um booleano, e, em seguida, se eu quiser aderência em outro elemento 261 00:12:16,420 --> 00:12:20,860 para essa matriz, talvez uma corda, a cadeia "cinco", eu poderia fazer isso. 262 00:12:20,860 --> 00:12:26,110 E agora minha matriz faria ser um, verdadeiro, 3, 4, cinco. 263 00:12:26,110 --> 00:12:28,640 A palavra de cinco, e não o inteiro 5. 264 00:12:28,640 --> 00:12:31,270 Então, um monte de flexibilidade lá. 265 00:12:31,270 --> 00:12:33,290 >> A flexibilidade fica ainda melhor, no entanto, 266 00:12:33,290 --> 00:12:37,530 porque o PHP tem suporte para algo chamado uma matriz associativa. 267 00:12:37,530 --> 00:12:40,660 E nós meio que vagamente falou matrizes sobre associativos em C 268 00:12:40,660 --> 00:12:44,740 no contexto de tabelas de dispersão, porque o que arrays associativos são realmente tudo 269 00:12:44,740 --> 00:12:48,950 sobre está fazendo chave mapeamentos par valor. 270 00:12:48,950 --> 00:12:53,410 E, neste caso, o keys-- se estamos familiarizados com matrizes de C, 271 00:12:53,410 --> 00:12:55,440 as teclas são números de índice. 272 00:12:55,440 --> 00:12:57,530 0, 1, 2, 3. 273 00:12:57,530 --> 00:13:03,070 E os valores são o que nós achamos que 0 matriz, matriz 1, conjunto 2, e assim por diante. 274 00:13:03,070 --> 00:13:06,310 Então as chaves são índices, e os valores são 275 00:13:06,310 --> 00:13:10,060 que é em que local da matriz, especificado por esse índice. 276 00:13:10,060 --> 00:13:15,130 >> Mas em PHP, não temos de fazer isso noção de matriz 0, array 1, conjunto 2 277 00:13:15,130 --> 00:13:15,830 anymore. 278 00:13:15,830 --> 00:13:21,025 Podemos agora usar palavras reais para mapear as teclas de valores. 279 00:13:21,025 --> 00:13:22,650 E para que eu pudesse dizer algo assim. 280 00:13:22,650 --> 00:13:26,710 Eu poderia criar uma matriz usando o sintaxe de colchetes como se segue. 281 00:13:26,710 --> 00:13:30,685 $ pizzas = colchete "queijo" e, em seguida, 282 00:13:30,685 --> 00:13:37,210 este tipo de notação seta dupla, 8,99, "pepperoni", arrow 10.99-- 9,99, 283 00:13:37,210 --> 00:13:37,880 e assim por diante. 284 00:13:37,880 --> 00:13:39,060 E então o que está acontecendo aqui? 285 00:13:39,060 --> 00:13:41,040 O que eu estou realmente fazendo? 286 00:13:41,040 --> 00:13:43,990 Estou criando mapeamentos de teclas par valor. 287 00:13:43,990 --> 00:13:49,060 Então, em vez de dizer, por exemplo, pizzas, 0 peças 1, 2 pizzas, 288 00:13:49,060 --> 00:13:52,350 Agora eu posso dizer pizzas queijo, pizzas pepperoni, 289 00:13:52,350 --> 00:13:55,120 e referem-se aos valores associado com eles. 290 00:13:55,120 --> 00:13:56,970 >> Então, aqui estão as nossas chaves no verde. 291 00:13:56,970 --> 00:13:59,870 Queijo, pepperoni, vegetal, búfalo frango. 292 00:13:59,870 --> 00:14:04,200 Aqui é a seta que faz esta chave de mapeamento par de valor. 293 00:14:04,200 --> 00:14:07,420 E, em seguida, aqui estão os valores em que local da matriz. 294 00:14:07,420 --> 00:14:10,330 Então, é como dizer matriz 0 é igual a 8,99. 295 00:14:10,330 --> 00:14:11,720 A chave é 0. 296 00:14:11,720 --> 00:14:13,600 O valor é 8,99. 297 00:14:13,600 --> 00:14:19,370 Agora eu posso dizer queijo matriz, ou neste caso pizzas de queijo, o queijo é a chave, 298 00:14:19,370 --> 00:14:23,340 eo que eu encontrar em pizzas queijo é 8.99. 299 00:14:23,340 --> 00:14:25,540 Esse é o valor que eu encontrar lá. 300 00:14:25,540 --> 00:14:28,124 >> Então eu posso dizer coisas como. $ pizza de queijo = 7,99. 301 00:14:28,124 --> 00:14:29,040 Digamos que eu estou tendo uma venda. 302 00:14:29,040 --> 00:14:31,750 Eu quero dis-- Eu quero largar o preço do queijo de pizza. 303 00:14:31,750 --> 00:14:35,620 Ou eu posso usar o vegetal pizza como parte de uma condição, 304 00:14:35,620 --> 00:14:39,990 ou eu posso adicionar um novo elemento para o meu array, assim como eu poderia fazer anteriormente. 305 00:14:39,990 --> 00:14:44,680 Eu posso adicionar um novo elemento a essa matriz associativa com a tecla "bacon" 306 00:14:44,680 --> 00:14:49,250 eo valor 13,49. 307 00:14:49,250 --> 00:14:53,820 >> Mas esse tipo de introduz um problema, se você pensar sobre isso por um segundo. 308 00:14:53,820 --> 00:14:55,721 Como poderíamos fazer uma iteração através desta matriz? 309 00:14:55,721 --> 00:14:56,220 Certo? 310 00:14:56,220 --> 00:14:59,820 Em C, teríamos apenas ter um para loop, tipicamente, que 311 00:14:59,820 --> 00:15:03,650 correria de 0 até o tamanho da matriz menos 1. 312 00:15:03,650 --> 00:15:08,060 A matriz tem n elementos em pelo, o índices válidos são de 0 a n menos 1. 313 00:15:08,060 --> 00:15:11,530 Assim nós poderíamos usar um loop for para percorrer cada elemento. 314 00:15:11,530 --> 00:15:13,530 >> Mas isso não é realmente mais o caso, certo? 315 00:15:13,530 --> 00:15:17,360 Agora, onde temos um par de valores chave mapeamentos onde as chaves são palavras, 316 00:15:17,360 --> 00:15:19,970 como é que vamos iterar sobre todas as palavras? 317 00:15:19,970 --> 00:15:22,420 Bem, felizmente, PHP tem uma maneira de lidar com isso também, 318 00:15:22,420 --> 00:15:24,580 e por isso vamos saltar para trás para loops para uma segunda 319 00:15:24,580 --> 00:15:30,780 a introdução de um quarto tipo de laço que existe em PHP chamado um loop foreach. 320 00:15:30,780 --> 00:15:34,430 E o que é um loop foreach faz é é basicamente a mesma idéia. 321 00:15:34,430 --> 00:15:36,060 Você pode usá-lo para qualquer tipo de matriz. 322 00:15:36,060 --> 00:15:38,100 Mas é basicamente a mesma idéia como um loop for, 323 00:15:38,100 --> 00:15:40,750 exceto em vez de usar números de índice, você só 324 00:15:40,750 --> 00:15:45,830 tem esta sintaxe estranho onde você chamar cada elemento 325 00:15:45,830 --> 00:15:47,550 um nome para os fins deste ciclo. 326 00:15:47,550 --> 00:15:49,258 >> Portanto, neste caso, foreach ($ array como $ key). 327 00:15:49,258 --> 00:15:52,900 328 00:15:52,900 --> 00:15:56,450 Basicamente, como aquele comentário notas, dentro desse loop foreach, 329 00:15:56,450 --> 00:16:00,466 ele vai passar por cima de todos os elemento de array $, que é tipicamente 330 00:16:00,466 --> 00:16:03,340 vai ser uma matriz associativa, mas pode realmente ser qualquer tipo de matriz 331 00:16:03,340 --> 00:16:05,419 que você quer em PHP. 332 00:16:05,419 --> 00:16:07,210 E cada vez que nos um loop que você pode 333 00:16:07,210 --> 00:16:13,780 disseram $ matriz colchetes $ i, você poderia apenas dizer $ key. 334 00:16:13,780 --> 00:16:22,340 De modo que se torna $ key um alias para cada Índice do seu PHP matriz associativa, 335 00:16:22,340 --> 00:16:23,710 e assim você pode usá-lo assim. 336 00:16:23,710 --> 00:16:25,897 >> Assim, por exemplo, nós temos agora temos a nossa disposição pizzas. 337 00:16:25,897 --> 00:16:27,730 Eu meio que enfiou- no canto lá 338 00:16:27,730 --> 00:16:31,080 para que possamos usá-lo para fazer um exemplo rápido. 339 00:16:31,080 --> 00:16:36,420 Se eu disser foreach ($ pizzas como $ pizza), bem, o que está acontecendo? 340 00:16:36,420 --> 00:16:42,400 Bem, eu estou indo para percorrer cada único elemento da matriz $ pizzas, 341 00:16:42,400 --> 00:16:46,670 e ao fazê-lo, eu vou chamar cada elemento, quando estou dentro 342 00:16:46,670 --> 00:16:49,400 do corpo do que para loop, $ pizza. 343 00:16:49,400 --> 00:16:52,440 >> Então, isso é uma espécie de dublê, recall, que a pizza $ 344 00:16:52,440 --> 00:16:59,140 é um stand-in para dizer $ pizzas quadradas suportes $ i 345 00:16:59,140 --> 00:17:03,370 se estivéssemos usando um loop for, onde nós Pode ir de $ i = 0 a, neste caso, 346 00:17:03,370 --> 00:17:06,089 $ i = 3. 347 00:17:06,089 --> 00:17:09,780 Se não tivéssemos pares de valores-chave aqui, este seria o elemento 0, 1, 2, 3, 348 00:17:09,780 --> 00:17:16,390 e gostaríamos de usar um loop for para ir $ 0 pizzas, pizzas $ 1, $ 2 pizzas, 349 00:17:16,390 --> 00:17:17,750 $ 3 pizzas. 350 00:17:17,750 --> 00:17:23,130 Então agora $ apenas pizza está substituindo para essa chave individual. 351 00:17:23,130 --> 00:17:25,630 >> Então o que é que isto vai imprimir? 352 00:17:25,630 --> 00:17:29,030 Estou imprimindo $ pizza. 353 00:17:29,030 --> 00:17:35,270 O que vou encontrar at-- se eu imprimir $ pizzas, $ i? 354 00:17:35,270 --> 00:17:35,770 Certo? 355 00:17:35,770 --> 00:17:38,680 Se eu estou indo para imprimir o elemento i de pizzas, 356 00:17:38,680 --> 00:17:40,070 o que eu estou indo para imprimir? 357 00:17:40,070 --> 00:17:42,580 Eu estou indo para imprimir o valores nesse local, certo? 358 00:17:42,580 --> 00:17:45,370 Como se estivéssemos fazendo isto no contexto de C, 359 00:17:45,370 --> 00:17:49,786 nós não costumamos usar nosso iterador variável, int i = 0, i é inferior a 3, 360 00:17:49,786 --> 00:17:52,900 i ++, para imprimir a 0, 1, 2, 3. 361 00:17:52,900 --> 00:17:57,500 Estamos imprimindo matriz 0, matriz 1, conjunto 2, série 3. 362 00:17:57,500 --> 00:17:59,580 E então o que este imprime é este. 363 00:17:59,580 --> 00:18:01,150 É a lista de preços. 364 00:18:01,150 --> 00:18:05,750 8,99, 9,99, 10,99, 11,99. 365 00:18:05,750 --> 00:18:06,900 >> Agora uma nota rápida aqui. 366 00:18:06,900 --> 00:18:10,900 Um loop foreach não necessariamente imprimir as coisas em ordem. 367 00:18:10,900 --> 00:18:12,770 Não é garantido. 368 00:18:12,770 --> 00:18:13,550 Ele geralmente faz. 369 00:18:13,550 --> 00:18:17,667 É geralmente com base na ordem em que os elementos são adicionados à matriz, 370 00:18:17,667 --> 00:18:18,750 por isso ter isso em mente. 371 00:18:18,750 --> 00:18:20,830 Pode não estar em ordem. 372 00:18:20,830 --> 00:18:23,930 Mas um loop foreach irá iterar através de cada elemento 373 00:18:23,930 --> 00:18:25,060 da matriz em questão. 374 00:18:25,060 --> 00:18:27,980 Neste caso, novamente, essa matriz é de R $ pizzas. 375 00:18:27,980 --> 00:18:32,920 >> Eu posso mudar a sintaxe, porém, se Eu quero tanto a chave eo valor. 376 00:18:32,920 --> 00:18:37,179 Em vez de dizer $ pizzas quanto $ pizza, posso dizer isso. 377 00:18:37,179 --> 00:18:39,470 E se você olhar para o que eu tenho destacadas em verde aqui, 378 00:18:39,470 --> 00:18:42,130 ele se parece com uma chave de mapeamento par de valor. 379 00:18:42,130 --> 00:18:45,980 E por isso, se você-- mesmo se você não for inteiramente certo o que ele vai fazer, 380 00:18:45,980 --> 00:18:49,300 você provavelmente pode adivinhar que US $ cobertura vai 381 00:18:49,300 --> 00:18:53,800 para ser a chave neste caso e R $ preço vai ser o valor. 382 00:18:53,800 --> 00:18:59,200 Então, eu estou substituindo agora cada elemento de US $ pizzas como um par de valores-chave, 383 00:18:59,200 --> 00:19:03,900 e agora eu posso referir-se à chave e o valor, o que pode ser útil, 384 00:19:03,900 --> 00:19:05,590 por exemplo, como se segue. 385 00:19:05,590 --> 00:19:10,170 >> "A todo" - este é um monte de impressão acontecendo aqui-- "um todo" 386 00:19:10,170 --> 00:19:17,300 cobertura "pizza custa R $" preço e, em seguida Eu imprimir um período e uma barra invertida n. 387 00:19:17,300 --> 00:19:23,420 Então, agora, aviso novamente eu tenho acesso a uma chave, $ cobertura, e um valor, R $ preço. 388 00:19:23,420 --> 00:19:26,647 Então você pode imaginar o que isso vai imprimir? 389 00:19:26,647 --> 00:19:29,480 Há um monte de instruções de impressão, mas só há uma barra invertida n, 390 00:19:29,480 --> 00:19:33,410 por isso vai para imprimir algo em um entire-- em uma única linha de código. 391 00:19:33,410 --> 00:19:36,965 >> Se eu pode referir-se a chave e o valor, então agora, 392 00:19:36,965 --> 00:19:39,090 em vez de apenas ser capaz para imprimir os preços, 393 00:19:39,090 --> 00:19:41,330 Eu posso imprimir algo como isto. 394 00:19:41,330 --> 00:19:43,780 "Toda uma pizza de queijo custa R $ 8,99." 395 00:19:43,780 --> 00:19:47,150 E agora eu estou usando todo o keys-- queijo, pepperoni, vegetal, 396 00:19:47,150 --> 00:19:49,640 búfalo chicken-- e os valores. 397 00:19:49,640 --> 00:19:53,980 8,99, 9,99, 10,99, 11,99 Assim isso é apenas uma maneira diferente 398 00:19:53,980 --> 00:19:57,840 para fazer um loop foreach que em vez de apenas dando-lhe acesso aos valores, 399 00:19:57,840 --> 00:20:02,950 apenas dá vocę-- dá-lhe acesso às chaves e os valores. 400 00:20:02,950 --> 00:20:04,411 >> Então imprimir informações. 401 00:20:04,411 --> 00:20:07,410 Eu já fiz isso algumas maneiras diferentes, você deve ter notado. 402 00:20:07,410 --> 00:20:11,080 As duas funções que nós temos principalmente visto são impressão e eco. 403 00:20:11,080 --> 00:20:14,380 E para praticamente todos os intentos e propósitos, eles são exatamente o mesmo. 404 00:20:14,380 --> 00:20:17,130 They're-- há uma muito sutil diferença de que não é sequer vale a pena 405 00:20:17,130 --> 00:20:21,130 se metendo, mas basicamente em todos os lugares você pode usar impressão provavelmente você pode usar 406 00:20:21,130 --> 00:20:22,370 ecoam também. 407 00:20:22,370 --> 00:20:23,610 >> E isso não é o único dois. 408 00:20:23,610 --> 00:20:26,970 PHP tem um monte de diferente formas de imprimir as coisas, 409 00:20:26,970 --> 00:20:30,520 e também tem maneiras de integrar variáveis ​​para o meio da corda. 410 00:20:30,520 --> 00:20:32,860 Então lembro de C, você lembre-se que função 411 00:20:32,860 --> 00:20:37,580 que podemos usar para substituir variáveis em coisas que pretende imprimir? 412 00:20:37,580 --> 00:20:40,160 Você provavelmente usar essa funcionar muito. 413 00:20:40,160 --> 00:20:42,290 printf, certo? 414 00:20:42,290 --> 00:20:45,290 Então é isso que nós tivemos antes no interior do contexto do nosso loop foreach. 415 00:20:45,290 --> 00:20:48,000 Tivemos estes cinco instruções de impressão separados, 416 00:20:48,000 --> 00:20:50,330 porque essa era a única maneira que eu realmente sabia, na época 417 00:20:50,330 --> 00:20:52,450 como imprimir mensagens. 418 00:20:52,450 --> 00:20:59,560 Eu não sabia como integrar o $ variável superando em meu código PHP. 419 00:20:59,560 --> 00:21:03,700 Bem, se eu acabado de tomar um palpite, printf, ele realmente teria funcionado. 420 00:21:03,700 --> 00:21:08,980 printf é uma função que eu posso usar em PHP, assim como eu posso usá-lo em C. 421 00:21:08,980 --> 00:21:11,880 >> E assim algo como isso, printf, mais uma vez, estamos familiarizados com isso. 422 00:21:11,880 --> 00:21:16,420 O primeiro% s é substituído com o valor de US $ cobertura. 423 00:21:16,420 --> 00:21:19,700 O segundo% s é substituído com o valor de $ preço. 424 00:21:19,700 --> 00:21:22,630 E por isso estou interpelando, que é apenas uma maneira elegante 425 00:21:22,630 --> 00:21:25,400 de dizer que eu estou aderindo a variáveis ​​em que localização. 426 00:21:25,400 --> 00:21:31,000 Então, eu estou ligando $ superando onde a vermelho% s é e onde o preço $% s azul 427 00:21:31,000 --> 00:21:36,060 é, e então eu iria receber a mensagem, "Toda uma pizza de queijo custa R $ 8,99." 428 00:21:36,060 --> 00:21:37,750 >> Não é a única maneira que eu posso fazê-lo, no entanto. 429 00:21:37,750 --> 00:21:39,760 Talvez eu iria querer usar este método. 430 00:21:39,760 --> 00:21:44,890 Este é realmente o que é mais comumente Interpelação chamado variável. 431 00:21:44,890 --> 00:21:45,690 Posso usar um eco. 432 00:21:45,690 --> 00:21:47,737 Eu poderia usar um print também, como veremos. 433 00:21:47,737 --> 00:21:48,820 Mas o que está acontecendo aqui? 434 00:21:48,820 --> 00:21:51,520 >> Primeiro de tudo, eu tenho que escapar do sinal de dólar. 435 00:21:51,520 --> 00:21:55,140 Porque lembre-se, quando estávamos realmente imprimindo os preços das pizzas, 436 00:21:55,140 --> 00:21:59,370 Eu estava realmente formatá-los como valores monetários com um sinal de dólar. 437 00:21:59,370 --> 00:22:05,635 Mas nós estamos usando sinais dólar também para representar os nomes de variáveis ​​em PHP, 438 00:22:05,635 --> 00:22:08,010 e em particular quando estou usando este método do encaracolado 439 00:22:08,010 --> 00:22:10,040 variável cinta método interpelação, eu preciso 440 00:22:10,040 --> 00:22:13,490 para escapar o meu signo do dólar para que ele não acho que eu estou falando sobre uma variável. 441 00:22:13,490 --> 00:22:16,920 Vai realmente, literalmente imprimir um sinal de dólar. 442 00:22:16,920 --> 00:22:19,530 >> Então espécie de analogia para o que você vê ali no final. 443 00:22:19,530 --> 00:22:22,832 Na verdade, não impressão barra invertida n, certo? 444 00:22:22,832 --> 00:22:24,290 Ele imprime um caractere de nova linha. 445 00:22:24,290 --> 00:22:26,750 Isso é-- isso não vai impressão cifrão barra invertida, 446 00:22:26,750 --> 00:22:30,130 ele vai imprimir apenas um cifrão. 447 00:22:30,130 --> 00:22:30,640 A mesma idéia. 448 00:22:30,640 --> 00:22:32,760 As seqüências de escape, o que essas coisas são chamadas. 449 00:22:32,760 --> 00:22:37,080 >> Mas observe que não estou fazendo qualquer tipo de substituições% s, 450 00:22:37,080 --> 00:22:40,050 Eu só estou literalmente ligar nessas variáveis. 451 00:22:40,050 --> 00:22:45,110 E assim, em isto-- o que aconteceria aqui é que o valor de $ topping-- novamente, 452 00:22:45,110 --> 00:22:48,390 apenas manter com o que temos sido falando de queijo tão far-- obteria 453 00:22:48,390 --> 00:22:49,720 conectado lá. 454 00:22:49,720 --> 00:22:54,780 E US $ preço seria o valor que é em pizzas, colchetes, queijo, 455 00:22:54,780 --> 00:22:56,270 que era 8,99. 456 00:22:56,270 --> 00:23:01,860 E por isso este também imprimir "Toda uma pizza de queijo custa R $ 8,99." 457 00:23:01,860 --> 00:23:05,160 E como eu disse, eu poderia usar imprimir aqui em vez de eco, 458 00:23:05,160 --> 00:23:08,040 e a funcionalidade seja muito bonito exatamente o mesmo. 459 00:23:08,040 --> 00:23:09,660 Seria imprimir a mesma coisa. 460 00:23:09,660 --> 00:23:12,680 >> Não há outra maneira de fazê-lo, e esta é outra vantagem 461 00:23:12,680 --> 00:23:14,710 de PHP trabalhar com strings. 462 00:23:14,710 --> 00:23:17,130 Podemos fazer concatenação de strings. 463 00:23:17,130 --> 00:23:19,660 Nós poderíamos fazer isso em C, também, usando uma função chamada strcat, 464 00:23:19,660 --> 00:23:21,180 mas, novamente, nós tivemos que chamar funções separadas. 465 00:23:21,180 --> 00:23:22,640 Foi toda essa confusão que fazer. 466 00:23:22,640 --> 00:23:24,590 Tivemos de pound-incluem string.h. 467 00:23:24,590 --> 00:23:25,780 Foi uma produção, certo? 468 00:23:25,780 --> 00:23:30,070 Mas agora eu só posso usar esse operador ponto para concatenar strings. 469 00:23:30,070 --> 00:23:34,910 >> Então, eu estou concatenando "um todo" e em seguida, qualquer que seja o valor de US $ cobertura é, 470 00:23:34,910 --> 00:23:38,860 e depois outro corda, "custos de pizza $" 471 00:23:38,860 --> 00:23:42,340 e, em seguida, seja qual for a concatenação o valor de R $ preço é, 472 00:23:42,340 --> 00:23:45,670 e então, no final, eu sou aderência em período de barra invertida n. 473 00:23:45,670 --> 00:23:47,926 E assim este seria também imprimir "um todo" - mais uma vez, 474 00:23:47,926 --> 00:23:50,550 se estamos falando sobre o primeiro elemento dessa array-- pizzas 475 00:23:50,550 --> 00:23:54,710 "Toda uma pizza de queijo custa R $ 8,99." 476 00:23:54,710 --> 00:24:01,260 Período, barra invertida n, novamente, com os US $ cobertura e preço $ substituindo 477 00:24:01,260 --> 00:24:06,580 para o que tínhamos especificado em nosso foreach laço como a chave de mapeamento par de valor. 478 00:24:06,580 --> 00:24:08,050 >> PHP pode manipular funções. 479 00:24:08,050 --> 00:24:11,250 Funções foram tipo de integrante ao C, como vimos. 480 00:24:11,250 --> 00:24:14,870 Como variáveis, não precisa especificar o tipo de retorno da função, 481 00:24:14,870 --> 00:24:16,350 porque ele realmente não importa. 482 00:24:16,350 --> 00:24:18,660 E nós não especificar o tipos de dados de todos os parâmetros, 483 00:24:18,660 --> 00:24:21,410 porque eles realmente não importa, como temos visto em PHP. 484 00:24:21,410 --> 00:24:24,510 Cada função é introduzido com a palavra-chave função. 485 00:24:24,510 --> 00:24:27,920 É assim que nos indicam para o PHP que o que nós estamos falando é uma função. 486 00:24:27,920 --> 00:24:29,720 >> E nós não temos que lidar com principal de todo, 487 00:24:29,720 --> 00:24:33,690 porque o intérprete, o PHP intérprete, funciona de cima para baixo, 488 00:24:33,690 --> 00:24:34,190 independentemente. 489 00:24:34,190 --> 00:24:35,640 Se ele vê que você pode fazer uma chamada de função, ele vai 490 00:24:35,640 --> 00:24:37,850 ir encontrar a chamada de função, mesmo que isso vem depois. 491 00:24:37,850 --> 00:24:40,360 Mas ele vai ler de cima para inferior, portanto, não é necessário especificar, 492 00:24:40,360 --> 00:24:41,500 aqui é onde você começa. 493 00:24:41,500 --> 00:24:46,700 Você começa na linha 1 do seu PHP e trabalhar para baixo de lá. 494 00:24:46,700 --> 00:24:49,690 >> Então aqui está como nós criaríamos uma função chamada hard_square. 495 00:24:49,690 --> 00:24:54,100 Ele, aparentemente, leva um parâmetro, que eu estou chamando $ x. 496 00:24:54,100 --> 00:24:58,424 Esta função é complicado apenas para ilustrar várias coisas. 497 00:24:58,424 --> 00:24:59,590 Nós ainda temos valores de retorno. 498 00:24:59,590 --> 00:25:00,870 Eu estou usando um loop for aqui. 499 00:25:00,870 --> 00:25:04,970 Mas é, basicamente, apenas, que este significa é apenas US $ x $ x vezes. 500 00:25:04,970 --> 00:25:10,520 O que eu estou realmente fazendo é apenas adicionando x para 0 x vezes ou US $ x a zero $ x vezes. 501 00:25:10,520 --> 00:25:15,850 Mas é exactamente o eficazmente mesmo que multiplicar $ x $ x vezes. 502 00:25:15,850 --> 00:25:18,700 Eu ainda pode retornar um valor, neste caso $ result, 503 00:25:18,700 --> 00:25:22,060 e eu fiz uma função em PHP. 504 00:25:22,060 --> 00:25:24,160 >> Veja como você pode usá-lo no contexto. 505 00:25:24,160 --> 00:25:26,020 Então, talvez eu estou dentro de algum arquivo PHP. 506 00:25:26,020 --> 00:25:29,240 Observe em azul lá que Eu usei meus delimitadores PHP, 507 00:25:29,240 --> 00:25:31,010 suporte de ângulo ponto de interrogação php. 508 00:25:31,010 --> 00:25:35,180 Entre esses são todos o PHP que eu quero escrever. 509 00:25:35,180 --> 00:25:37,840 Então, eu estou indo para get-- aparentemente Vou pedir ao utilizador 510 00:25:37,840 --> 00:25:41,550 para me dar um número, loja que variável, loja em que variável $ x, 511 00:25:41,550 --> 00:25:43,320 o que quer que eles me deram. 512 00:25:43,320 --> 00:25:48,590 Então eu vou para ecoar hard_square desse valor, 513 00:25:48,590 --> 00:25:50,370 e, aparentemente indo a aderência em uma nova linha 514 00:25:50,370 --> 00:25:53,590 bem, e depois, mais tarde, eu vou definir a função de forma hard_square 515 00:25:53,590 --> 00:25:55,550 que quando eu fizer o chamar a hard_square, 516 00:25:55,550 --> 00:25:58,160 ele sabe o que eu estou falando. 517 00:25:58,160 --> 00:26:00,705 >> Agora, eu também poderia fazer algo assim. 518 00:26:00,705 --> 00:26:02,050 Isso é um pouco diferente. 519 00:26:02,050 --> 00:26:04,190 É quase exatamente o mesmo que o que vimos antes, 520 00:26:04,190 --> 00:26:08,400 exceto em vez de dizer apenas US $ x lá como o parâmetro para hard_square, 521 00:26:08,400 --> 00:26:11,730 Eu estou dizendo $ x = 10. 522 00:26:11,730 --> 00:26:14,330 Portanto, este é um exemplo de programação defensiva, 523 00:26:14,330 --> 00:26:17,070 guardando seus programas contra usuários mal-intencionados. 524 00:26:17,070 --> 00:26:20,020 >> Esta é uma maneira de fazer algum erro verificação de que nós realmente não 525 00:26:20,020 --> 00:26:24,670 tem como uma opção no C. Nós nunca poderia especificar o valor padrão de alguma coisa. 526 00:26:24,670 --> 00:26:27,010 Nós sempre tivemos de check- se a, por exemplo, 527 00:26:27,010 --> 00:26:30,820 se fez uma chamada para GetString, foi mais adequada se imediatamente após nós 528 00:26:30,820 --> 00:26:33,300 verifiquei que, fizemos o check- se a cadeia 529 00:26:33,300 --> 00:26:35,504 que o usuário deu-nos não é igual a nulo, 530 00:26:35,504 --> 00:26:37,920 porque não quero começar trabalhar com uma cadeia nula. 531 00:26:37,920 --> 00:26:39,670 >> Aqui, esta é uma maneira para se proteger contra isso. 532 00:26:39,670 --> 00:26:43,480 Se o usuário não fornecer-nos alguma coisa de alguma forma, o que vamos fazer? 533 00:26:43,480 --> 00:26:46,080 Bem, vamos apenas dizer o que quer eles não fornecer-nos, 534 00:26:46,080 --> 00:26:47,705 nós apenas estamos indo para a ligação de 10 em vez. 535 00:26:47,705 --> 00:26:52,030 Então, se eles não nos deu um valor, é só usar 10 por padrão. E por isso aqui, 536 00:26:52,030 --> 00:26:53,940 notar que eu estou fazendo uma chamada para hard_square, 537 00:26:53,940 --> 00:26:55,980 mas não há nenhum prompt para o usuário, certo? 538 00:26:55,980 --> 00:26:57,540 Eu apenas estou fazendo uma chamada vazia. 539 00:26:57,540 --> 00:27:00,860 >> Mas minha função hard_square está esperando um parâmetro. 540 00:27:00,860 --> 00:27:02,222 O que é que isto vai imprimir? 541 00:27:02,222 --> 00:27:03,680 Vai imprimir 100, certo? 542 00:27:03,680 --> 00:27:05,720 Porque o usuário não fez dar-me qualquer coisa. 543 00:27:05,720 --> 00:27:08,970 E então eu só vou assumir que 10-- 10 é o valor padrão. 544 00:27:08,970 --> 00:27:13,760 E assim isto deve imprimir a 100 em sua própria linha. 545 00:27:13,760 --> 00:27:16,390 >> Arquivos PHP não tem que ser apenas um único arquivo. 546 00:27:16,390 --> 00:27:19,480 Você pode combinar vários arquivos juntos, Assim como você pode em C. A maneira 547 00:27:19,480 --> 00:27:24,330 nós fizemos isso em C foi tipicamente de fazer uma # include para obter arquivos de cabeçalho puxado. 548 00:27:24,330 --> 00:27:26,180 Nós não fazemos isso em PHP. 549 00:27:26,180 --> 00:27:29,110 Nós fazemos algo chamado require_once. 550 00:27:29,110 --> 00:27:33,360 E depois há toda esta coisa, o que é isso __dir__? 551 00:27:33,360 --> 00:27:36,510 Isso é apenas uma especial variável ou constante especial, 552 00:27:36,510 --> 00:27:39,030 realmente, que especifica o que seu diretório atual. 553 00:27:39,030 --> 00:27:41,320 E assim ele vai olhar em seu diretório atual 554 00:27:41,320 --> 00:27:44,900 para um arquivo chamado cs50.php Neste exemplo aqui, 555 00:27:44,900 --> 00:27:50,490 e ele vai ficar esse arquivo na parte superior de seu programa PHP, 556 00:27:50,490 --> 00:27:56,980 supondo que você colocar o exigir uma vez linha na parte superior do seu arquivo PHP. 557 00:27:56,980 --> 00:28:01,474 >> Então PHP é usada principalmente, mas não utilizados exclusivamente, 558 00:28:01,474 --> 00:28:03,140 como uma linguagem para programação baseada em web. 559 00:28:03,140 --> 00:28:05,270 Isso é realmente como ele veio a ser. 560 00:28:05,270 --> 00:28:06,980 Mas é um inteiro língua, como já vimos. 561 00:28:06,980 --> 00:28:10,105 Nós vimos praticamente todas as coisas que ele pode fazer que são semelhantes a C, 562 00:28:10,105 --> 00:28:13,290 e ele pode fazer um inferno de muito mais do que isso. 563 00:28:13,290 --> 00:28:16,950 >> Mas porque é uma língua cheia e nós pode fazer programação de linha de comando na mesma. 564 00:28:16,950 --> 00:28:18,630 Nós podemos executar programas de linha de comando. 565 00:28:18,630 --> 00:28:22,580 Tudo que é necessário para executar um comando programa de linha que está escrito em PHP 566 00:28:22,580 --> 00:28:24,260 é que você tem um interpretador de PHP. 567 00:28:24,260 --> 00:28:27,460 Então, é uma espécie de análogo ao ter um compilador em seu sistema 568 00:28:27,460 --> 00:28:31,100 se você quiser compilar o código C para transformá-lo em arquivos executáveis. 569 00:28:31,100 --> 00:28:33,810 Você precisa ter um intérprete PHP que existe no seu sistema 570 00:28:33,810 --> 00:28:37,330 de modo que você pode interpretar arquivos PHP. 571 00:28:37,330 --> 00:28:40,370 >> Supondo que você, e, geralmente, este intérprete é chamado de PHP, 572 00:28:40,370 --> 00:28:44,300 e normalmente é fornecido com mais downloads ou instalações de PHP 573 00:28:44,300 --> 00:28:47,430 que você pode obter on-line, e, certamente, o nome do interpretador PHP 574 00:28:47,430 --> 00:28:49,550 temos em CS50, IDE. 575 00:28:49,550 --> 00:28:51,819 Tudo que você faz é arquivo php tipo. 576 00:28:51,819 --> 00:28:53,610 E o seu programa de vai fazer é que é 577 00:28:53,610 --> 00:28:55,360 vai percorrer o intérprete, é 578 00:28:55,360 --> 00:28:58,040 vai ignorar tudo o que é não em questão entre mark-- 579 00:28:58,040 --> 00:29:03,160 ou, ângulo do suporte de interrogação php, os delimitadores PHP, e imprimi-lo, 580 00:29:03,160 --> 00:29:07,660 e ele irá interpretar e executar o código dentro de seus delimitadores PHP. 581 00:29:07,660 --> 00:29:12,850 >> Então, vamos estalar sobre a IDE e CS50 ter um olhar para um par de arquivos PHP, 582 00:29:12,850 --> 00:29:19,850 executando um par de arquivos PHP, em interface de linha de comando do CS50 IDE. 583 00:29:19,850 --> 00:29:22,100 Então, aqui estamos em CS50 IDE, e eu tomei a liberdade 584 00:29:22,100 --> 00:29:25,800 de abrir um arquivo chamado hello1.php. 585 00:29:25,800 --> 00:29:29,920 E, aparentemente, o conteúdo deste arquivo são apenas os delimitadores PHP lá, 586 00:29:29,920 --> 00:29:32,220 e no meio, echo ("Olá, mundo"). 587 00:29:32,220 --> 00:29:34,710 Este é um programa muito simples PHP. 588 00:29:34,710 --> 00:29:37,670 Eu só vou para rolar para baixo na minha janela de terminal aqui, 589 00:29:37,670 --> 00:29:44,320 e eu estou indo para digitar php hello1.php, aperte enter. 590 00:29:44,320 --> 00:29:44,950 Ola mundo. 591 00:29:44,950 --> 00:29:48,110 Isso é provavelmente o que nós éramos esperando que fazer, certo? 592 00:29:48,110 --> 00:29:51,140 >> Vamos subir e tomar um outro olhar para um programa. 593 00:29:51,140 --> 00:29:52,924 hello2.php. 594 00:29:52,924 --> 00:29:55,090 Praticamente a mesma coisa, não muita coisa acontecendo aqui. 595 00:29:55,090 --> 00:29:57,190 Desta vez, porém, eu estou indo para solicitar o usuário para me dar seus nomes. 596 00:29:57,190 --> 00:29:59,290 Eu estou usando essa função readline novamente. 597 00:29:59,290 --> 00:30:01,340 $ name = readline. 598 00:30:01,340 --> 00:30:03,070 Essa é a mensagem, "Qual é o seu nome?" 599 00:30:03,070 --> 00:30:04,880 >> Aparentemente eu sou impressão -lo em sua própria linha. 600 00:30:04,880 --> 00:30:07,220 E, em seguida, para que a linha abaixo que será o prompt 601 00:30:07,220 --> 00:30:08,750 onde o usuário pode digitar o seu nome. 602 00:30:08,750 --> 00:30:12,030 E então eu estou usando um pouco de Interpelação variável aqui na linha 3 603 00:30:12,030 --> 00:30:14,780 para imprimir "Olá" e tudo o que o usuário digita. 604 00:30:14,780 --> 00:30:22,040 Portanto, este é análogo a dizer, Olá, vírgula,% s se estivéssemos usando printf em C. 605 00:30:22,040 --> 00:30:24,910 >> Então vamos e interpretar este programa. 606 00:30:24,910 --> 00:30:27,400 Então, novamente, eu vou rolar para baixo na minha janela de terminal. 607 00:30:27,400 --> 00:30:29,070 hello2.php php. 608 00:30:29,070 --> 00:30:31,920 609 00:30:31,920 --> 00:30:33,820 Qual é o seu nome? 610 00:30:33,820 --> 00:30:35,490 Doug. 611 00:30:35,490 --> 00:30:36,526 Olá, Doug. 612 00:30:36,526 --> 00:30:39,440 Eu também tenho um outro arquivo chamado hello3.php. 613 00:30:39,440 --> 00:30:42,850 Eu estou indo para limpar a minha tela com controle L, 614 00:30:42,850 --> 00:30:46,210 e eu estou indo para executar isso. 615 00:30:46,210 --> 00:30:47,640 Qual é o seu nome? 616 00:30:47,640 --> 00:30:49,020 Doug. 617 00:30:49,020 --> 00:30:49,780 Olá, Doug. 618 00:30:49,780 --> 00:30:56,540 Assim, o comportamento é idêntico ao hello2.php, mas por que é hello3.php? 619 00:30:56,540 --> 00:30:58,040 >> Bem, aqui está a diferença. 620 00:30:58,040 --> 00:31:00,620 Neste caso, a notificação que na linha 1 aqui, 621 00:31:00,620 --> 00:31:04,270 Eu tenho algo que não é entre os delimitadores PHP. 622 00:31:04,270 --> 00:31:07,760 Eu só estou imprimindo out-- ou I acabou de digitar, "Qual é o seu nome?" 623 00:31:07,760 --> 00:31:12,060 Quando o interpretador PHP vê isso, não tem idéia de como interpretá-lo como PHP, 624 00:31:12,060 --> 00:31:15,060 e assim, em vez de falhar, ele só vai para cuspi-la. 625 00:31:15,060 --> 00:31:19,010 >> Então, observe on line 3 agora, a minha chamada para readline, não há nenhum prompt de mais. 626 00:31:19,010 --> 00:31:21,750 Eu só estou indo realmente quando a-- o intérprete PHP vê isso, 627 00:31:21,750 --> 00:31:23,400 ele vai imprimir "Qual é o seu nome?" 628 00:31:23,400 --> 00:31:25,941 Em seguida, ele vê Oh, OK, here's-- tudo o resto vai ser 629 00:31:25,941 --> 00:31:29,970 interpretada como PHP, então por isso é que isso funciona. 630 00:31:29,970 --> 00:31:34,990 Eu não tenho que pedir necessariamente a-- o usuário dentro da readline, 631 00:31:34,990 --> 00:31:37,490 Eu posso apenas tê-lo fora dos delimitadores PHP 632 00:31:37,490 --> 00:31:41,490 e permitir que o intérprete apenas imprimi-lo para mim. 633 00:31:41,490 --> 00:31:45,364 >> Então, você realmente não tem somente ter um conjunto de delimitadores PHP 634 00:31:45,364 --> 00:31:46,030 em seu programa. 635 00:31:46,030 --> 00:31:49,887 Você pode realmente ter vários deles, abrindo e fechando-los quando necessário. 636 00:31:49,887 --> 00:31:51,720 Então, vamos dar uma olhada em um par de programas 637 00:31:51,720 --> 00:31:55,070 em CS50 IDE onde nós ilustrar essa idéia de ter 638 00:31:55,070 --> 00:31:58,376 vários conjuntos de PHP delimitado. 639 00:31:58,376 --> 00:32:02,010 >> OK, então eu já abriu um arquivo aqui chamado add1.php. 640 00:32:02,010 --> 00:32:03,390 E observe o que está acontecendo aqui. 641 00:32:03,390 --> 00:32:08,077 Tal como antes, eu tenho um PHP único conjunto de delimitadores. 642 00:32:08,077 --> 00:32:10,660 Eu estou indo para imprimir o mensagem, "Por favor, me dar um número." 643 00:32:10,660 --> 00:32:13,394 Então eu vou ler uma linha e armazená-lo na variável $ num1. 644 00:32:13,394 --> 00:32:14,810 Então eu vou imprimir novamente. 645 00:32:14,810 --> 00:32:16,310 Dê-me um segundo número. 646 00:32:16,310 --> 00:32:20,450 Leia uma linha do usuário, loja o que digitou em $ num2. 647 00:32:20,450 --> 00:32:23,980 Adicioná-los juntos e armazenar esse resultar em uma variável chamada $ suma, 648 00:32:23,980 --> 00:32:26,180 e, em seguida, imprimir, "The soma destes dois números 649 00:32:26,180 --> 00:32:29,254 é ", em seguida, interpelar há os R $ soma variável. 650 00:32:29,254 --> 00:32:31,170 Então vamos executar este através do intérprete 651 00:32:31,170 --> 00:32:33,720 para confirmar que este é o que esperamos. 652 00:32:33,720 --> 00:32:37,540 add1.php php. 653 00:32:37,540 --> 00:32:38,665 Por favor, me dar um número, três. 654 00:32:38,665 --> 00:32:40,410 Por favor, me dê um segundo número, 4. 655 00:32:40,410 --> 00:32:43,370 A soma desses dois números é 7. 656 00:32:43,370 --> 00:32:45,030 Isso é 3 + 4. 657 00:32:45,030 --> 00:32:45,530 ok? 658 00:32:45,530 --> 00:32:47,770 Portanto, nada terrivelmente sofisticados lá. 659 00:32:47,770 --> 00:32:51,080 >> E agora vamos abrir add2.php. 660 00:32:51,080 --> 00:32:54,460 Aqui, eu tenho um par de PHP conjuntos delimitado lá, certo? 661 00:32:54,460 --> 00:32:59,107 Linhas 1, 3-- linhas 1 e 3 tem não delimitadores PHP. 662 00:32:59,107 --> 00:33:00,940 Assim, quando o intérprete vê-los, é só 663 00:33:00,940 --> 00:33:03,220 vai cuspir exatamente o que digitou lá. 664 00:33:03,220 --> 00:33:05,011 Então é aí que eu sou fazendo toda a minha solicitação. 665 00:33:05,011 --> 00:33:11,220 Nas linhas 2 e 4, vemos a muito $ familiar? php tipo de delimitadores, 666 00:33:11,220 --> 00:33:15,210 para que essas duas linhas são vai executar como PHP. 667 00:33:15,210 --> 00:33:18,270 E, em seguida, na linha 5, eu tenho essa coisa estranha aqui, certo? 668 00:33:18,270 --> 00:33:20,480 Este suporte de ângulo ponto de interrogação sinal de igual. 669 00:33:20,480 --> 00:33:22,660 Vou até ampliar um pouco mais longe. 670 00:33:22,660 --> 00:33:29,270 Você pode ver isso é o que eu sou falando ali, este $? =. 671 00:33:29,270 --> 00:33:33,420 >> Acontece que ele é tão comum que a razão que nós abrimos um conjunto de PHP 672 00:33:33,420 --> 00:33:36,055 delimitadores é imprimir um valor. 673 00:33:36,055 --> 00:33:37,430 E isso é tudo que vamos fazer. 674 00:33:37,430 --> 00:33:39,220 Mas há ainda uma abreviação para isso. 675 00:33:39,220 --> 00:33:46,490 $? = É um atalho para dizer PHP algo como US $? php echo a soma 676 00:33:46,490 --> 00:33:48,350 num1 e num2 de. 677 00:33:48,350 --> 00:33:51,900 Portanto, este é apenas mais um Abreviação para isso. 678 00:33:51,900 --> 00:33:55,550 >> Então, se eu executar este programa, php add2.php. 679 00:33:55,550 --> 00:33:57,530 Eu vou aumentar um pouco para baixo. 680 00:33:57,530 --> 00:33:59,000 Por favor, me dar um número, 4. 681 00:33:59,000 --> 00:34:00,350 Por favor, me dê um segundo número. 682 00:34:00,350 --> 00:34:04,650 E desde que eu realmente não me importo sobre tipos de dados em PHP, posso dizer 4.8. 683 00:34:04,650 --> 00:34:07,160 A soma desses dois números é de 8,8. 684 00:34:07,160 --> 00:34:10,179 Essa função se comporta muito bem exatamente o mesmo como seria de esperar, 685 00:34:10,179 --> 00:34:10,989 também. 686 00:34:10,989 --> 00:34:13,114 E eu tenho mais uma aberto aqui chamado dice.php. 687 00:34:13,114 --> 00:34:25,625 688 00:34:25,625 --> 00:34:26,250 Tente novamente. 689 00:34:26,250 --> 00:34:29,429 690 00:34:29,429 --> 00:34:33,280 Eu tenho um chamado mais aqui dice1.php, que também, ver, 691 00:34:33,280 --> 00:34:37,440 tem essa pergunta colchete angular marcar notação igual sinal lá, 692 00:34:37,440 --> 00:34:40,659 de notar que, neste caso, eu sou chamando a função rand, que como você 693 00:34:40,659 --> 00:34:42,790 pode esperar que gera um número aleatório. 694 00:34:42,790 --> 00:34:46,889 "Você rolou um", e ele vai calcular algum número aleatório, mod 6 + 695 00:34:46,889 --> 00:34:47,389 1. 696 00:34:47,389 --> 00:34:49,989 De modo que vou me dar o número na gama de 1 a 6. 697 00:34:49,989 --> 00:34:53,040 >> Lembre-se que mod 6 me daria um número no intervalo de 0 a 5, 698 00:34:53,040 --> 00:34:56,630 mas se eu estou simulando jogadas de dados, que é o que estou fazendo aqui, 699 00:34:56,630 --> 00:35:00,040 Eu não quero esses dados para ir de 0 a 5, eu quero dados que vão de 1 a 6. 700 00:35:00,040 --> 00:35:02,800 E por isso esta é uma maneira de obter me na gama de 1 a 6. 701 00:35:02,800 --> 00:35:04,720 Estou fazendo isso duas vezes. 702 00:35:04,720 --> 00:35:08,630 Então, aparentemente, eu estou rolando dois dados neste programa. 703 00:35:08,630 --> 00:35:15,210 >> Então, eu vou limpar minha tela, e eu vou fazer php dice1.php. 704 00:35:15,210 --> 00:35:16,640 Você rolou um 4 e um 2. 705 00:35:16,640 --> 00:35:19,156 E se eu executar o programa novamente, você rolou a 5 e a 5. 706 00:35:19,156 --> 00:35:21,780 Então, toda vez que eu executar o programa, Estou recebendo números diferentes, 707 00:35:21,780 --> 00:35:24,280 porque cada vez que eu faço Então, é começar de novo. 708 00:35:24,280 --> 00:35:27,250 Vai gerar um novo conjunto de números aleatórios para mim. 709 00:35:27,250 --> 00:35:29,790 >> Então, se estamos acostumados a a execução de programas de C, 710 00:35:29,790 --> 00:35:32,520 estamos acostumados a digitar o ./ nome de um programa, certo? 711 00:35:32,520 --> 00:35:35,090 Isso é como nós fizemos tudo dos nossos programas em C até o momento. 712 00:35:35,090 --> 00:35:37,555 Podemos fazer isso em PHP, bem adicionando algo chamado 713 00:35:37,555 --> 00:35:40,026 um shebang ao topo do nosso arquivo PHP. 714 00:35:40,026 --> 00:35:41,400 Eu sei que é uma espécie de palavra boba. 715 00:35:41,400 --> 00:35:44,540 É curto para hash de estrondo. 716 00:35:44,540 --> 00:35:46,300 Isso é os dois primeiros caracteres lá. 717 00:35:46,300 --> 00:35:50,030 Lembre-se que chamamos de ponto de exclamação freqüentemente um estrondo em ciência da computação. 718 00:35:50,030 --> 00:35:51,690 Ele também pode ser para estrondo afiado. 719 00:35:51,690 --> 00:35:53,273 Há algumas maneiras de interpretar isso. 720 00:35:53,273 --> 00:35:57,320 Mas é basicamente um tipo especial de comando que o intérprete PHP 721 00:35:57,320 --> 00:36:00,160 entende como, oh, eu quero você executar este programa, 722 00:36:00,160 --> 00:36:05,250 que é aparentemente / user / bin / php, que é, na verdade, onde o interpretador PHP 723 00:36:05,250 --> 00:36:08,590 vive especificamente no nosso sistema. 724 00:36:08,590 --> 00:36:12,530 Então it's-- o que acontece aqui é o intérprete entende, oh, 725 00:36:12,530 --> 00:36:17,270 Estou aparentemente deveria usar neste programa para executar esse arquivo. 726 00:36:17,270 --> 00:36:20,010 E assim ele permite que você para pular a etapa 727 00:36:20,010 --> 00:36:22,979 de ter de dizer php something.php. 728 00:36:22,979 --> 00:36:25,020 Há uma outra captura aqui, o que é que se 729 00:36:25,020 --> 00:36:27,320 queremos que os nossos programas para funcionar como esperado, nós 730 00:36:27,320 --> 00:36:30,220 precisa fazer algo chamado uma mudança de permissão de arquivo. 731 00:36:30,220 --> 00:36:33,380 E nós vamos vai-- e conversamos um pouco pouco mais alterações de permissão de arquivo sobre 732 00:36:33,380 --> 00:36:37,550 em nosso vídeo sobre MVC, mas basta dizer que este é o que você precisa fazer 733 00:36:37,550 --> 00:36:42,760 a fim de tornar a sua arquivos .php executável. 734 00:36:42,760 --> 00:36:49,330 Então, vamos dar uma olhada em como este nosso exemplo final sobre em CS50 IDE. 735 00:36:49,330 --> 00:36:53,910 >> Então, aqui no IDE Eu tenho dois arquivos nesta Diretório PHP que parecem não ser 736 00:36:53,910 --> 00:36:55,310 chamado .php. 737 00:36:55,310 --> 00:36:58,170 Eu tenho uma função chamada add-- Eu tenho um arquivo chamado Add3 738 00:36:58,170 --> 00:37:00,650 e um arquivo chamado dice2. 739 00:37:00,650 --> 00:37:03,680 Então, vamos dar uma rápida olhar e abrir Add3. 740 00:37:03,680 --> 00:37:08,300 E como você pode ver, no início do meu arquivo eu tenho essa coisa toda, certo? 741 00:37:08,300 --> 00:37:11,420 Este ponto de hash ponto de exclamação. 742 00:37:11,420 --> 00:37:15,115 Agora, você também vai talvez notar que, por algum motivo, 743 00:37:15,115 --> 00:37:16,990 Eu não tenho qualquer sintaxe destacando mais, 744 00:37:16,990 --> 00:37:20,198 e é isso que me referi anteriormente, que foi que se eu não citar meu arquivo 745 00:37:20,198 --> 00:37:23,040 .php, eu não tenho o benefício de destaque de sintaxe mais. 746 00:37:23,040 --> 00:37:26,220 Este arquivo é chamado apenas de Add3. 747 00:37:26,220 --> 00:37:30,960 Para que eu possa executá-lo mais tarde com ./ Add3 e não ./ add3.php. 748 00:37:30,960 --> 00:37:33,680 >> Assim, a razăo ainda é fino, ainda é válido PHP, 749 00:37:33,680 --> 00:37:37,000 mas não é a sintaxe em destaque, porque este arquivo não é chamado something.php. 750 00:37:37,000 --> 00:37:41,580 Essa é a única diferença real aqui, mais a coisa toda. 751 00:37:41,580 --> 00:37:45,170 Então vamos ver o que acontece quando Eu tento e executar este programa. 752 00:37:45,170 --> 00:37:50,780 ./ Add3, assim como eu faria com C. Bash. 753 00:37:50,780 --> 00:37:53,190 ./ Permissão Add3 negado. 754 00:37:53,190 --> 00:37:55,390 Isto é o que você está indo para ver se você se esquecer 755 00:37:55,390 --> 00:37:59,280 usar o comando chmod para alterar as permissões do arquivo. 756 00:37:59,280 --> 00:38:03,845 >> Como se constata, PHP regulares arquivos não pode apenas ser executado. 757 00:38:03,845 --> 00:38:06,970 Eles podem ser interpretados, mas estamos fazer algo um pouco diferente aqui. 758 00:38:06,970 --> 00:38:07,761 Estamos executá-lo. 759 00:38:07,761 --> 00:38:12,970 E assim que eu preciso para adicionar a permissão de execução, chmod a + x para Add3. 760 00:38:12,970 --> 00:38:15,680 Então eu posso dizer ./ Add3. 761 00:38:15,680 --> 00:38:16,860 Por favor, me dar um número. 762 00:38:16,860 --> 00:38:18,060 5, 6. 763 00:38:18,060 --> 00:38:20,490 A soma desses dois números é 11. 764 00:38:20,490 --> 00:38:26,530 >> Da mesma forma, eu já chmoded dice2, para que eu possa basta digitar ./ ​​dice2, 765 00:38:26,530 --> 00:38:31,260 você rolou um 1 e um 1, você laminados a 5 e um 4, e assim por diante. 766 00:38:31,260 --> 00:38:33,680 >> Então, isso é muito bonito o idéia de uma sintaxe PHP, certo? 767 00:38:33,680 --> 00:38:35,221 Há muita coisa para passar, eu sei. 768 00:38:35,221 --> 00:38:39,160 Mas espero que você viu agora que o PHP que não é realmente diferente de C 769 00:38:39,160 --> 00:38:43,670 e realmente nos dá a capacidade para levar as coisas um entalhe ou dois. 770 00:38:43,670 --> 00:38:48,230 Nós realmente não precisa se preocupar muito about-- nós realmente não 771 00:38:48,230 --> 00:38:51,605 tem que se preocupar muito com os detalhes de baixo nível nós 772 00:38:51,605 --> 00:38:52,980 tinha que se preocupar com C, certo? 773 00:38:52,980 --> 00:38:56,170 Podemos concentrar-se na maior material nível que o PHP 774 00:38:56,170 --> 00:39:01,090 nos permite fazer e levar para certo que ele vai trabalhar para nós. 775 00:39:01,090 --> 00:39:04,350 Por isso, nos dá a capacidade agora, a transição de C para PHP, 776 00:39:04,350 --> 00:39:08,280 para fazer programas que são muito mais complexo e talvez muito mais robusto. 777 00:39:08,280 --> 00:39:13,070 >> Então, eu espero que você tenha trabalho divertido com PHP, e eu sou Doug Lloyd. 778 00:39:13,070 --> 00:39:15,050 Este é CS50. 779 00:39:15,050 --> 00:39:17,637