1 00:00:00,000 --> 00:00:05,340 2 00:00:05,340 --> 00:00:07,370 >> Doug LLOYD: Entón temos feito unha chea de traballo en C, 3 00:00:07,370 --> 00:00:09,536 e C é un moi legal lingua porque lle dá 4 00:00:09,536 --> 00:00:12,840 a capacidade de mergullo realmente baixo nivel nos seus programas. 5 00:00:12,840 --> 00:00:16,810 Nós comezamos a facer as cousas como realmente minuto manipulando 6 00:00:16,810 --> 00:00:18,800 bytes individuais da memoria. 7 00:00:18,800 --> 00:00:21,420 Lembre que os punteiros realmente permitir-nos de que a flexibilidade. 8 00:00:21,420 --> 00:00:25,260 >> Pero sempre que ter ese nivel de gran fino de detalle 9 00:00:25,260 --> 00:00:26,820 nos nosos programas? 10 00:00:26,820 --> 00:00:28,210 Probablemente non, non? 11 00:00:28,210 --> 00:00:30,376 E se nós imos ter un trade-off entre ser 12 00:00:30,376 --> 00:00:32,911 capaz de facer moi, moi cousas hora e moito 13 00:00:32,911 --> 00:00:35,910 grandes cousas que nós non temos que pensar sobre, non debemos aplicar 14 00:00:35,910 --> 00:00:40,290 estes realmente grandes ideas se xa están construídos en para nós, 15 00:00:40,290 --> 00:00:43,980 en xeral, para a construción de gran programas ou grandes proxectos, 16 00:00:43,980 --> 00:00:49,130 nós probablemente imos errar no lado ter máis cousas idioma construído en 17 00:00:49,130 --> 00:00:51,300 para nós, en vez de ter o material de baixo nivel. 18 00:00:51,300 --> 00:00:53,970 E é aí onde realmente ven en PHP. 19 00:00:53,970 --> 00:00:58,200 >> Agora, unha das razóns que ensinamos en PHP CS50 20 00:00:58,200 --> 00:01:01,020 é que está fortemente inspirado por C. E, de feito, na miña opinión, 21 00:01:01,020 --> 00:01:05,140 hai realmente dous linguas progenitoras que 22 00:01:05,140 --> 00:01:08,200 son moi comúns hoxe en día. 23 00:01:08,200 --> 00:01:10,110 C e LISP. 24 00:01:10,110 --> 00:01:13,280 E son linguas progenitoras porque todos os demais programación moderna 25 00:01:13,280 --> 00:01:17,380 linguaxe que desenvolveu Desde entón está inspirado 26 00:01:17,380 --> 00:01:20,330 por unha ou outra sintacticamente. 27 00:01:20,330 --> 00:01:26,160 PHP é moi semellante sintaticamente a C, mentres que linguas como o Scheme, 28 00:01:26,160 --> 00:01:27,900 por exemplo, que pode ter oído, 29 00:01:27,900 --> 00:01:32,070 está fortemente inspirado por unha lingua LISP chamado, que é unha linguaxe máis vellos. 30 00:01:32,070 --> 00:01:34,220 >> Así, a razón pola que nós ensinamos PHP en CS50 é que, 31 00:01:34,220 --> 00:01:37,730 coñecendo C como fundamentalmente como facer neste momento, 32 00:01:37,730 --> 00:01:41,280 incorporarse PHP, que lle dá a capacidade de facer cousas nivel moito máis elevado 33 00:01:41,280 --> 00:01:44,710 que fai C, non é que moi de un obstáculo, 34 00:01:44,710 --> 00:01:48,230 porque xa ten o idea básica da sintaxe. 35 00:01:48,230 --> 00:01:50,590 C foi en torno de case 45 anos neste momento. 36 00:01:50,590 --> 00:01:52,780 PHP ten sido en torno de preto de 20 anos. 37 00:01:52,780 --> 00:01:57,080 E na medida en que 25 anos No medio, programadores 38 00:01:57,080 --> 00:02:01,540 determinou que serían moi prefiro ter habilidades de nivel superior, 39 00:02:01,540 --> 00:02:04,970 e os erros e loitas dos 20 anos de entre 40 00:02:04,970 --> 00:02:08,210 levou a PHP e outras linguas modernas. 41 00:02:08,210 --> 00:02:11,039 >> PHP unha gran selección de Idioma para software 42 00:02:11,039 --> 00:02:14,042 que allow-- para software isso-- onde 43 00:02:14,042 --> 00:02:16,250 cómpre facer cousas que en C son efectivamente complicada. 44 00:02:16,250 --> 00:02:18,480 Así, por exemplo, traballando con cordas en C 45 00:02:18,480 --> 00:02:21,709 é moi complicado, porque como sabemos, cordas en C 46 00:02:21,709 --> 00:02:23,250 son realmente só a arrays de caracteres. 47 00:02:23,250 --> 00:02:25,230 Non é un tipo de datos embutido. 48 00:02:25,230 --> 00:02:28,220 Ou quizais máis fundamentalmente, algo que nin sequera cubrir en C, 49 00:02:28,220 --> 00:02:30,360 E se ten que facer algunhas redes de ordenadores? 50 00:02:30,360 --> 00:02:30,860 Todo ben? 51 00:02:30,860 --> 00:02:34,920 >> C ten a capacidade de facelo, pero é tan arcano e tan difícil de realmente facer. 52 00:02:34,920 --> 00:02:37,580 Non sería bo se o linguaxe tiña, un xeito doado embutido 53 00:02:37,580 --> 00:02:38,910 para aplicar a rede? 54 00:02:38,910 --> 00:02:43,420 E PHP é unha linguaxe que fai que, ou facilita que, un pouco máis. 55 00:02:43,420 --> 00:02:47,740 Como dixen, PHP é moi fortemente inspirado por C. A sintaxe é moi similar. 56 00:02:47,740 --> 00:02:51,760 E así debe esperamos facer o transición dunha a outra 57 00:02:51,760 --> 00:02:54,710 un pouco máis suave do que algúns outras linguas pode ser. 58 00:02:54,710 --> 00:02:58,800 >> Para comezar a escribir PHP, pode abrir un arquivo coa extensión .PHP. 59 00:02:58,800 --> 00:03:00,670 Técnicamente esta non é realmente necesario, 60 00:03:00,670 --> 00:03:04,495 pero se quere cousas como sintaxe destacando en IDE, para que tipo 61 00:03:04,495 --> 00:03:07,620 nomes ou nomes de variables, funcións, vostede sabe, as palabras clave da linguaxe 62 00:03:07,620 --> 00:03:10,090 son destacadas nun cor específica, xeralmente 63 00:03:10,090 --> 00:03:14,020 quere nomear os seus arquivos con unha extensión de arquivo particular. 64 00:03:14,020 --> 00:03:18,430 Entón, nós temos o noso arquivo nomeado cun .PHP extensión, pero, a continuación, tamén con PHP, 65 00:03:18,430 --> 00:03:23,310 todo o código PHP que escribimos en que ficheiro debe ser colocado entre estes PHP 66 00:03:23,310 --> 00:03:25,190 delimitadores que vemos aquí na pantalla. 67 00:03:25,190 --> 00:03:27,910 Paréntese angular? Php para comezar. 68 00:03:27,910 --> 00:03:30,860 Entón escribimos todo o noso PHP código que queremos no medio. 69 00:03:30,860 --> 00:03:32,260 E logo ? 70 00:03:32,260 --> 00:03:34,710 soporte de ángulo para pechar. 71 00:03:34,710 --> 00:03:37,170 >> Se non se fai iso, entón o que vai pasar? 72 00:03:37,170 --> 00:03:38,170 Non vai fallar. 73 00:03:38,170 --> 00:03:39,410 Non vai realmente arruinar o noso programa. 74 00:03:39,410 --> 00:03:41,440 Pero non terá o efecto que queremos. 75 00:03:41,440 --> 00:03:44,540 O que vai ocorrer, realmente, é que cando nós tratamos e executar este programa, 76 00:03:44,540 --> 00:03:50,330 todo non entre eses delimitadores será impreso textualmente. 77 00:03:50,330 --> 00:03:52,210 Non vai efectivamente realizar o código, 78 00:03:52,210 --> 00:03:56,010 que vai só imprimir 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ón, C é o que se coñece como unha linguaxe compilada. 81 00:04:00,416 --> 00:04:03,040 Probablemente está familiarizado con o paso de facer os seus programas, 82 00:04:03,040 --> 00:04:07,820 transformando os ficheiros .c e .h nun único executable co make, 83 00:04:07,820 --> 00:04:11,130 en especial a través Clang como noso compilador. 84 00:04:11,130 --> 00:04:13,030 PHP, porén, non ten ter este equivalente. 85 00:04:13,030 --> 00:04:15,600 PHP é o que se chama linguaxe interpretada. 86 00:04:15,600 --> 00:04:16,760 E o que significa isto? 87 00:04:16,760 --> 00:04:20,680 >> Ben, iso significa que non hai que converter noso código fonte para ceros e uns 88 00:04:20,680 --> 00:04:21,470 de antemán. 89 00:04:21,470 --> 00:04:23,900 Pola contra, hai un programa, que tamén é chamado 90 00:04:23,900 --> 00:04:29,771 PHP, que entende e PHP pode clasificar de facelo on the fly. 91 00:04:29,771 --> 00:04:32,520 Isto realmente non é exactamente preciso, pero é unha boa analoxía 92 00:04:32,520 --> 00:04:33,760 do que está pasando. 93 00:04:33,760 --> 00:04:37,230 É interpretar os ceros e uns en tempo real. 94 00:04:37,230 --> 00:04:40,160 E por iso, se non sabe como procesar algo, 95 00:04:40,160 --> 00:04:42,800 se non sabe como proceso PHP, probablemente 96 00:04:42,800 --> 00:04:44,680 quería poñer este texto en alí, non? 97 00:04:44,680 --> 00:04:48,960 >> Probablemente quería poñer o código alí, aínda que non é entre PHP-- 98 00:04:48,960 --> 00:04:50,035 os delimitadores PHP. 99 00:04:50,035 --> 00:04:51,910 Mas-- polo que non está pasando para borrar-lo para ti, 100 00:04:51,910 --> 00:04:53,576 é só ir basicamente descartalo lo. 101 00:04:53,576 --> 00:04:55,550 Entón vai para imprimir Lo á pantalla. 102 00:04:55,550 --> 00:04:57,150 >> Isto parece que é un mal cousa, pero a verdade é 103 00:04:57,150 --> 00:04:58,220 Vai ser realmente un O bo, como nós imos 104 00:04:58,220 --> 00:05:00,390 ver cando falamos PHP desenvolvemento web, 105 00:05:00,390 --> 00:05:04,010 porque iso significa que podemos intercalam PHP e HTML. 106 00:05:04,010 --> 00:05:06,640 Podemos usalos en conxunto para crear unha páxina web máis dinámico. 107 00:05:06,640 --> 00:05:10,650 Pero máis sobre iso na vídeo sobre o desenvolvemento web PHP. 108 00:05:10,650 --> 00:05:12,021 >> Entón, cal é a sintaxe PHP? 109 00:05:12,021 --> 00:05:13,520 Iso é o que este vídeo é todo. 110 00:05:13,520 --> 00:05:14,850 Imos falar sobre iso. 111 00:05:14,850 --> 00:05:16,490 >> Entón, para comezar, variables. 112 00:05:16,490 --> 00:05:18,030 Existen variables PHP. 113 00:05:18,030 --> 00:05:20,067 Hai só dous grandes diferenzas con respecto a C. 114 00:05:20,067 --> 00:05:21,900 A primeira é que non hai ningún tipo especificador. 115 00:05:21,900 --> 00:05:24,245 Non temos que dicir int, char, float, todas esas cousas. 116 00:05:24,245 --> 00:05:25,620 Non temos máis facelo. 117 00:05:25,620 --> 00:05:26,810 PHP é unha linguaxe moderna. 118 00:05:26,810 --> 00:05:28,910 Pode descubrir o que é tentando facer é facer unha mellor 119 00:05:28,910 --> 00:05:30,451 adiviñar, como o que estás a facer. 120 00:05:30,451 --> 00:05:31,700 Entón, iso é moi bo. 121 00:05:31,700 --> 00:05:35,330 >> A outra cousa é que todas as variables nomes ten que comezar por un sinal de dólar. 122 00:05:35,330 --> 00:05:36,940 Isto é só algo para acostumar. 123 00:05:36,940 --> 00:05:39,496 É un pouco raro, porque é para que o PHP pode entender 124 00:05:39,496 --> 00:05:40,870 o que é unha variable eo que non é. 125 00:05:40,870 --> 00:05:43,340 Así, cada nome de variable comeza con un sinal de dólar. 126 00:05:43,340 --> 00:05:46,884 Así, en C, poderiamos dicir algo así, int x = 54. 127 00:05:46,884 --> 00:05:48,550 Non temos máis facelo en PHP. 128 00:05:48,550 --> 00:05:52,540 Podemos só dicir $ x = 54. 129 00:05:52,540 --> 00:05:55,920 E poderiamos dicir, por exemplo, en C, se tivésemos pound-incluído o .h CS50 130 00:05:55,920 --> 00:06:00,314 arquivo de cabeceira, poderiamos dicir frase cadea = "Este é CS50." 131 00:06:00,314 --> 00:06:01,980 Non temos que facelo en PHP, con todo. 132 00:06:01,980 --> 00:06:04,865 Podemos só dicir $ frase = "Este é CS50." 133 00:06:04,865 --> 00:06:08,760 E, de feito, corda é agora un tipo de datos built-in en PHP, 134 00:06:08,760 --> 00:06:10,950 ou mellor PHP entende o que é unha cadea. 135 00:06:10,950 --> 00:06:15,612 É separado a partir dunha matriz de personaxes como é en C. 136 00:06:15,612 --> 00:06:17,570 Todo o seu favorito instrucións condicionais de C 137 00:06:17,570 --> 00:06:19,520 aínda están dispoñibles para usar. 138 00:06:19,520 --> 00:06:21,140 Polo tanto, non hai gran transición. 139 00:06:21,140 --> 00:06:23,400 Podemos dizer-- podemos ter se declaracións como esta. 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ón, iso é moi sinxelo. 142 00:06:29,690 --> 00:06:31,980 Podemos ter e máis. 143 00:06:31,980 --> 00:06:34,210 Podemos ter e else if. 144 00:06:34,210 --> 00:06:36,430 >> E notar algo moi bo aquí, e esta 145 00:06:36,430 --> 00:06:39,620 é unha especie de un destes vantaxes de PHP versus C, aviso 146 00:06:39,620 --> 00:06:41,510 cal a función que non estamos a usar aquí? 147 00:06:41,510 --> 00:06:47,737 Estamos a usar == para comparar un variable, $ nome, para unha cadea. 148 00:06:47,737 --> 00:06:49,070 Non podería facelo en C, non? 149 00:06:49,070 --> 00:06:53,200 Tivemos que usar unha función chamada SeqComp ou calquera ou StrEndComp 150 00:06:53,200 --> 00:06:54,840 dos seus curmáns afíns. 151 00:06:54,840 --> 00:06:56,980 >> E así xa vemos estas vantaxes. 152 00:06:56,980 --> 00:07:00,930 Non temos que facer algo como parvo ou que unintuitive 153 00:07:00,930 --> 00:07:03,540 como chamar unha función chamada StrComp se eu queira probar 154 00:07:03,540 --> 00:07:05,237 un valor igual a unha cadea. 155 00:07:05,237 --> 00:07:07,820 Eu podería usar só iguala iguais, como se eu puidese facer nada máis. 156 00:07:07,820 --> 00:07:09,560 Polo tanto, hai unha vantaxe. 157 00:07:09,560 --> 00:07:13,350 >> Ás veces, a propósito, pode ver máis como unha palabra, elseif. 158 00:07:13,350 --> 00:07:14,910 E iso é OK en PHP tamén. 159 00:07:14,910 --> 00:07:17,020 Entón, ás veces se pode ver iso. 160 00:07:17,020 --> 00:07:17,790 Non é un erro de dixitación. 161 00:07:17,790 --> 00:07:21,830 PHP realmente entende elseif. 162 00:07:21,830 --> 00:07:23,980 Non sei por que decidiu aplicar tanto, 163 00:07:23,980 --> 00:07:28,220 pero como xa vimos moitas veces en toda a nosa vídeos ata o momento, 164 00:07:28,220 --> 00:07:30,460 nós programadores adorar se podemos facer as cousas rapidamente, 165 00:07:30,460 --> 00:07:33,660 así librar-se de que o espazo é, aparentemente, unha gran vantaxe. 166 00:07:33,660 --> 00:07:34,800 >> Entón, iso é, e elseif. 167 00:07:34,800 --> 00:07:37,540 Temos tamén o operador ternário, recordo signo de interrogación colonos, 168 00:07:37,540 --> 00:07:43,262 para realmente curto formulario máis ou ramificación condicional. 169 00:07:43,262 --> 00:07:45,470 E, ao parecer, neste, o que estamos intentando facer aquí 170 00:07:45,470 --> 00:07:49,720 é atribuír a variable $ Carta verdadeira ou falsa, 171 00:07:49,720 --> 00:07:54,110 dependendo se $ var é un carácter alfabético. 172 00:07:54,110 --> 00:07:57,320 Entón, iso é moi semellante ao isalpha que estamos familiarizados coa dende C. 173 00:07:57,320 --> 00:07:59,010 Esta é unha especie de equivalente en PHP. 174 00:07:59,010 --> 00:08:01,550 A función é aparentemente chamado ctype_alpha, 175 00:08:01,550 --> 00:08:03,450 pero iso é como nós o facemos en PHP. 176 00:08:03,450 --> 00:08:08,560 Entón, todo isto vai ser é, se $ Var é unha carta, $ carta é certa. 177 00:08:08,560 --> 00:08:13,820 Se $ var non é unha carta, $ Carta é falsa. 178 00:08:13,820 --> 00:08:15,820 >> Temos tamén declaracións rede aínda. 179 00:08:15,820 --> 00:08:17,870 Recordamos os de C tamén. 180 00:08:17,870 --> 00:08:22,480 Na parte superior hai, é así que nós facemos algo así como get int ou obter cadea. 181 00:08:22,480 --> 00:08:23,845 Entón PHP ten que construído en. 182 00:08:23,845 --> 00:08:25,470 Non necesitamos máis da biblioteca CS50. 183 00:08:25,470 --> 00:08:27,237 Podemos só usar o readline función. 184 00:08:27,237 --> 00:08:29,820 O que isto vai facer é imprimir a mensaxe "O seu estado, 185 00:08:29,820 --> 00:08:33,820 por favor ", e, a continuación, palpebrar rápida á espera de que o usuario de entrada 186 00:08:33,820 --> 00:08:34,739 unha información. 187 00:08:34,739 --> 00:08:36,530 Agora, teña en conta o que máis podemos facer switch. 188 00:08:36,530 --> 00:08:39,105 Se xa usou antes, ten que se lembrar de que a chave 189 00:08:39,105 --> 00:08:44,960 limítase practicamente en números enteiros e personaxes, pero agora podemos utilizar cadeas. 190 00:08:44,960 --> 00:08:50,190 E, de feito, a instrución switch en PHP é un pouco máis flexible 191 00:08:50,190 --> 00:08:54,880 do que o seu primo de C. 192 00:08:54,880 --> 00:08:55,380 Loops. 193 00:08:55,380 --> 00:08:58,130 Así como condicionais, todo seus antigos favoritos aínda están alí. 194 00:08:58,130 --> 00:09:00,740 Temos lazos while que contan de 1 a 100, neste caso. 195 00:09:00,740 --> 00:09:03,940 Temos facer while que contar de 1 a 100, 196 00:09:03,940 --> 00:09:06,200 e temos para loops que contan de 1 a 100. 197 00:09:06,200 --> 00:09:07,220 Polo tanto, non hai gran salto. 198 00:09:07,220 --> 00:09:09,360 A sintaxe é moi moi exactamente o mesmo, 199 00:09:09,360 --> 00:09:11,760 só que agora estamos usando variable sinal de dólar, no canto 200 00:09:11,760 --> 00:09:17,260 de declarar variables enteiras ou algo así como que para os nosos contadores. 201 00:09:17,260 --> 00:09:20,090 >> Aquí é onde as cousas están un moito mellor que C, con todo. 202 00:09:20,090 --> 00:09:21,020 Arrays. 203 00:09:21,020 --> 00:09:23,020 Entón lembro cando eramos falando C, a fin 204 00:09:23,020 --> 00:09:25,560 para que poidamos crecer e encoller conxuntos de información, 205 00:09:25,560 --> 00:09:28,310 o que sexa necesario para clasificar de patrón a esta idea dunha lista ligada, 206 00:09:28,310 --> 00:09:30,780 porque matrices C foron fixadas en tamaño. 207 00:09:30,780 --> 00:09:31,800 Non podería reduci-los. 208 00:09:31,800 --> 00:09:32,930 Non poderiamos cultiva-las. 209 00:09:32,930 --> 00:09:36,074 Tivemos que recolocar a memoria e facer toda esta tolemia 210 00:09:36,074 --> 00:09:38,490 ou usar listas ligadas, que ocupan un espazo moi pouco máis. 211 00:09:38,490 --> 00:09:41,590 Pero en PHP, matrices son non fixa en tamaño máis. 212 00:09:41,590 --> 00:09:43,240 Poden crecer e poden encoller. 213 00:09:43,240 --> 00:09:46,660 Entón, de novo, nestes 20 anos que existía entre a primeira versión do C 214 00:09:46,660 --> 00:09:49,440 eo primeiro PHP liberación, decidimos que, vostede sabe, 215 00:09:49,440 --> 00:09:51,670 sería realmente grande se puidésemos facer. 216 00:09:51,670 --> 00:09:54,100 E así nós Implementar iso. 217 00:09:54,100 --> 00:09:58,040 >> Entón matrices PHP non son fixos en tamaño, e porque o PHP realmente non 218 00:09:58,040 --> 00:10:03,090 ten fronte orientados ao desenvolvedor nocións de tipos, 219 00:10:03,090 --> 00:10:05,110 podemos mesturar diferentes tipos de datos nas nosas matrices, tamén. 220 00:10:05,110 --> 00:10:08,100 Entón, nós nin sequera temos que usar todos enteiros ou todos os puntos de flotación, 221 00:10:08,100 --> 00:10:12,826 podemos ter unha mestura de todo distintos tipos en unha única matriz. 222 00:10:12,826 --> 00:10:14,700 Declarando unha matriz é moi sinxelo. 223 00:10:14,700 --> 00:10:16,116 É como calquera outra variable. 224 00:10:16,116 --> 00:10:20,020 $ N.º = array (1, 2, 3, 4), sendo unha función matriz 225 00:10:20,020 --> 00:10:22,760 que está construído en PHP que vai crear unha matriz para ti. 226 00:10:22,760 --> 00:10:28,315 Isto crea unha matriz de catro valores, números neste caso chamado $ N.º. 227 00:10:28,315 --> 00:10:29,940 E hai máis dunha forma de facelo. 228 00:10:29,940 --> 00:10:32,420 E nós estamos indo a vexo moito iso en PHP. 229 00:10:32,420 --> 00:10:36,380 PHP foi desenvolvido por moitos diferente persoas e crece e crece e crece. 230 00:10:36,380 --> 00:10:40,050 Hai xeralmente non só dous ou tres xeitos de facer algo en PHP, 231 00:10:40,050 --> 00:10:42,170 hai xeralmente como 10 ou 20. 232 00:10:42,170 --> 00:10:45,300 Aquí é só un común xeito de declarar unha matriz. 233 00:10:45,300 --> 00:10:48,310 $ N.º = cadrados de soporte 1, 2, 3, 4. 234 00:10:48,310 --> 00:10:53,170 Polo tanto, esta é unha especie de similar ao ángulo de C Br-- notación chaveta, en vez. $ - 235 00:10:53,170 --> 00:10:58,525 ou sería int N.º cadrado soportes igual chaveta 1, 2, 3, 4. 236 00:10:58,525 --> 00:11:02,710 En PHP é $ N.º = cadrado soportes 1, 2, 3, 4. 237 00:11:02,710 --> 00:11:08,920 Pero ambos exemplos aquí dáme un conxunto de catro neste caso enteiros. 238 00:11:08,920 --> 00:11:10,920 >> E se eu queira para alinhavar algo agora? 239 00:11:10,920 --> 00:11:14,760 Ben, podo só dicir $ N.º 4, que de novo, aínda estamos contando a partir de 0 aquí 240 00:11:14,760 --> 00:11:17,800 en PHP, sería o quinto elemento da matriz. 241 00:11:17,800 --> 00:11:18,990 Só podo dicir iso. 242 00:11:18,990 --> 00:11:22,860 Non vou sufrir un seg falla, porque a miña matriz é só 243 00:11:22,860 --> 00:11:24,337 vai medrar para acomodar isto. 244 00:11:24,337 --> 00:11:25,420 Iso é moi bo, non? 245 00:11:25,420 --> 00:11:28,400 E, de feito, eu nin teño especifique onde quero poñelas. 246 00:11:28,400 --> 00:11:31,220 Podo só dicir isto e só predica-la á dereita para a final, 247 00:11:31,220 --> 00:11:34,099 Ou eu podería incluso só dicir $ N.º 20 ou 1000. 248 00:11:34,099 --> 00:11:35,140 Realmente non importa. 249 00:11:35,140 --> 00:11:38,330 É aínda só vai predica-la á dereita para a final. 250 00:11:38,330 --> 00:11:41,490 >> Para que eu poida crecer, e estamos as-- non vai cubrir iso aquí, 251 00:11:41,490 --> 00:11:45,360 pero podo emendar ou tira elementos fóra da matriz, así como, 252 00:11:45,360 --> 00:11:50,064 ea matriz pode encoller para acomodar que o espazo agora ausente ou baleiro. 253 00:11:50,064 --> 00:11:52,230 Non hai outra forma de agarre algo sobre unha matriz, 254 00:11:52,230 --> 00:11:54,330 que é unha función chamada array_push. 255 00:11:54,330 --> 00:11:57,860 Entón, de novo, só esta idea de ser capaz de facer cousas moitas formas diferentes. 256 00:11:57,860 --> 00:12:01,950 Entón, nós vimos tres xeitos diferentes agora para alinhavar outro elemento nunha matriz. 257 00:12:01,950 --> 00:12:06,900 Polo tanto, este engade outro elemento ao final do array $ N.º. 258 00:12:06,900 --> 00:12:08,340 E podemos mesturar nosos tipos de datos. 259 00:12:08,340 --> 00:12:13,110 Entón, eu podería ter unha matriz de non 1, 2, 3, 4, pero 1, verdadeira, 3, 4, 260 00:12:13,110 --> 00:12:16,420 onde o verdadeiro é un booleano, e, a continuación, se eu queira adherencia noutro elemento 261 00:12:16,420 --> 00:12:20,860 para esa matriz, quizais unha corda, a cadea "cinco", eu podería facelo. 262 00:12:20,860 --> 00:12:26,110 E agora a miña matriz faría ser un, certo, 3, 4, cinco. 263 00:12:26,110 --> 00:12:28,640 A palabra de cinco, e non o enteiro 5. 264 00:12:28,640 --> 00:12:31,270 Entón, unha morea de flexibilidade alí. 265 00:12:31,270 --> 00:12:33,290 >> A flexibilidade queda aínda mellor, con todo, 266 00:12:33,290 --> 00:12:37,530 porque o PHP ten soporte para algo chamado unha matriz asociativa. 267 00:12:37,530 --> 00:12:40,660 E nós medio que vagamente falou matrices sobre asociativos en C 268 00:12:40,660 --> 00:12:44,740 no contexto de táboas de dispersión, porque o que arrays asociativos son realmente todo 269 00:12:44,740 --> 00:12:48,950 sobre está facendo clave mapeamento par valor. 270 00:12:48,950 --> 00:12:53,410 E neste caso, o keys-- se estamos familiarizados con matrices de C, 271 00:12:53,410 --> 00:12:55,440 as teclas son 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 son o que nós cremos que 0 matriz, matriz 1, conxunto 2, e así por diante. 274 00:13:03,070 --> 00:13:06,310 Entón as claves son índices, e os valores son 275 00:13:06,310 --> 00:13:10,060 que é no que lugar da matriz, especificado por este índice. 276 00:13:10,060 --> 00:13:15,130 >> Pero en PHP, non debemos facelo noción de matriz 0, array 1, conxunto 2 277 00:13:15,130 --> 00:13:15,830 anymore. 278 00:13:15,830 --> 00:13:21,025 Podemos agora utilizar palabras reais para mapear as teclas de valores. 279 00:13:21,025 --> 00:13:22,650 E para que eu puidese dicir algo así. 280 00:13:22,650 --> 00:13:26,710 Podería crear unha matriz usando o sintaxe de corchetes deste xeito. 281 00:13:26,710 --> 00:13:30,685 $ Pizzas = paréntese "queixo" e, a continuación, 282 00:13:30,685 --> 00:13:37,210 este tipo de notación frecha dobre, 8,99, "pepperoni", arrow 10.99-- 9,99, 283 00:13:37,210 --> 00:13:37,880 etcétera. 284 00:13:37,880 --> 00:13:39,060 E entón o que está pasando aquí? 285 00:13:39,060 --> 00:13:41,040 O que eu estou realmente facendo? 286 00:13:41,040 --> 00:13:43,990 Estou creando mapeamento de teclas par valor. 287 00:13:43,990 --> 00:13:49,060 Entón, en vez de dicir, por exemplo, pizzas, 0 pezas 1, 2 pizzas, 288 00:13:49,060 --> 00:13:52,350 Agora podo dicir pizzas queixo, pizzas pepperoni, 289 00:13:52,350 --> 00:13:55,120 e refírense aos valores asociado con eles. 290 00:13:55,120 --> 00:13:56,970 >> Entón, aquí están as nosas chaves no verde. 291 00:13:56,970 --> 00:13:59,870 Queixo, pepperoni, vexetal, búfalo polo. 292 00:13:59,870 --> 00:14:04,200 Aquí é a frecha que fai esta chave de cartografía par de valor. 293 00:14:04,200 --> 00:14:07,420 E, a continuación, aquí están os valores en que lugar da matriz. 294 00:14:07,420 --> 00:14:10,330 Entón, é como dicir matriz 0 é igual a 8,99. 295 00:14:10,330 --> 00:14:11,720 A clave é 0. 296 00:14:11,720 --> 00:14:13,600 O valor é 8,99. 297 00:14:13,600 --> 00:14:19,370 Agora podo dicir queixo matriz, ou neste caso pizzas de queixo, o queixo é a clave, 298 00:14:19,370 --> 00:14:23,340 eo que eu atopar en pizzas queixo é 8.99. 299 00:14:23,340 --> 00:14:25,540 Ese é o valor que eu atopar alí. 300 00:14:25,540 --> 00:14:28,124 >> Entón eu podo dicir cousas como. $ Pizza de queixo = 7,99. 301 00:14:28,124 --> 00:14:29,040 Digamos que eu estou tendo unha venda. 302 00:14:29,040 --> 00:14:31,750 Quero dis-- quero botar o prezo do queixo de pizza. 303 00:14:31,750 --> 00:14:35,620 Ou podo usar o vexetal pizza como parte dunha condición, 304 00:14:35,620 --> 00:14:39,990 ou podo engadir un novo elemento para o meu array, así como eu podería facer antes. 305 00:14:39,990 --> 00:14:44,680 Podo engadir un novo elemento a esa matriz asociativa coa tecla "Bacon" 306 00:14:44,680 --> 00:14:49,250 eo valor 13,49. 307 00:14:49,250 --> 00:14:53,820 >> Pero este tipo de introduce un problema, se pensar sobre iso por un segundo. 308 00:14:53,820 --> 00:14:55,721 Como poderiamos facer unha iteración a través desta matriz? 309 00:14:55,721 --> 00:14:56,220 Non? 310 00:14:56,220 --> 00:14:59,820 En C, teriamos só ter un para loop, tipicamente, que 311 00:14:59,820 --> 00:15:03,650 correría de 0 ata o tamaño da matriz menos 1. 312 00:15:03,650 --> 00:15:08,060 A matriz ten n elementos en polo, o índices válidos son de 0 a n menos 1. 313 00:15:08,060 --> 00:15:11,530 Así poderiamos usar un loop for para percorrer cada elemento. 314 00:15:11,530 --> 00:15:13,530 >> Pero iso non é realmente máis o caso, non? 315 00:15:13,530 --> 00:15:17,360 Agora, onde temos un par de valores clave mapeamento onde as claves son palabras, 316 00:15:17,360 --> 00:15:19,970 como é que imos iterado sobre todas as palabras? 317 00:15:19,970 --> 00:15:22,420 Ben, por sorte, PHP ten unha forma de tratar con isto tamén, 318 00:15:22,420 --> 00:15:24,580 e por iso imos ir para atrás para loops para unha segunda 319 00:15:24,580 --> 00:15:30,780 a introdución dun cuarto tipo de lazo que existe en PHP chamado un loop foreach. 320 00:15:30,780 --> 00:15:34,430 E o que é un loop foreach fai é é basicamente a mesma idea. 321 00:15:34,430 --> 00:15:36,060 Pode usalo para calquera tipo de matriz. 322 00:15:36,060 --> 00:15:38,100 Pero é basicamente a mesma idea como un loop for, 323 00:15:38,100 --> 00:15:40,750 excepto en vez de usar números de índice, só 324 00:15:40,750 --> 00:15:45,830 ten esta sintaxe estraño onde chamar cada elemento 325 00:15:45,830 --> 00:15:47,550 un nome para os fins deste ciclo. 326 00:15:47,550 --> 00:15:49,258 >> Polo tanto, 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 aquel comentario notas, dentro dese loop foreach, 329 00:15:56,450 --> 00:16:00,466 vai pasar por riba de todo elemento de array $, que é tipicamente 330 00:16:00,466 --> 00:16:03,340 vai ser unha matriz asociativa, pero realmente pode ser calquera tipo de matriz 331 00:16:03,340 --> 00:16:05,419 que quere en PHP. 332 00:16:05,419 --> 00:16:07,210 E cada vez que nos bucle que pode 333 00:16:07,210 --> 00:16:13,780 dixeron $ matriz corchetes $ I, podería só dicir $ key. 334 00:16:13,780 --> 00:16:22,340 De xeito que se fai $ key un alias para cada Índice de PHP matriz asociativa, 335 00:16:22,340 --> 00:16:23,710 e así pode usalo así. 336 00:16:23,710 --> 00:16:25,897 >> Así, por exemplo, temos agora temos a nosa disposición pizzas. 337 00:16:25,897 --> 00:16:27,730 Eu medio que enfiou- na parte alí 338 00:16:27,730 --> 00:16:31,080 para que poidamos usalo para facer un exemplo rápido. 339 00:16:31,080 --> 00:16:36,420 Se eu digo foreach ($ pizzas como $ Pizza), ben, o que está pasando? 340 00:16:36,420 --> 00:16:42,400 Ben, eu estou indo a percorrer cada único elemento da matriz $ pizzas, 341 00:16:42,400 --> 00:16:46,670 e ao facelo, eu vou chamar cada elemento, cando 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ón, iso é unha especie de dublê, recall, que a pizza $ 344 00:16:52,440 --> 00:16:59,140 é un stand-in para dicir $ Pizzas cadradas soportes $ i 345 00:16:59,140 --> 00:17:03,370 se estivésemos usando un 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 non tivésemos pares de valores clave aquí, este sería o elemento 0, 1, 2, 3, 348 00:17:09,780 --> 00:17:16,390 e queremos usar un 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ón agora $ só pizza está substituíndo para esa chave individual. 351 00:17:23,130 --> 00:17:25,630 >> Entón 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 Que vou atopar at-- se eu imprimir $ pizzas, $ i? 354 00:17:35,270 --> 00:17:35,770 Non? 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 a imprimir o valores nese local, non? 358 00:17:42,580 --> 00:17:45,370 Como se estivésemos facendo isto no contexto C, 359 00:17:45,370 --> 00:17:49,786 non adoitamos usar o noso iterador variable, 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, conxunto 2, serie 3. 362 00:17:57,500 --> 00:17:59,580 E entón o que este imprime é este. 363 00:17:59,580 --> 00:18:01,150 É a lista de prezos. 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 unha nota rápida aquí. 366 00:18:06,900 --> 00:18:10,900 Un loop foreach non necesariamente imprimir as cousas en orde. 367 00:18:10,900 --> 00:18:12,770 Non se pode garantir. 368 00:18:12,770 --> 00:18:13,550 El xeralmente fai. 369 00:18:13,550 --> 00:18:17,667 É xeralmente con base na orde en que os elementos son engadidos á matriz, 370 00:18:17,667 --> 00:18:18,750 polo que ter isto presente. 371 00:18:18,750 --> 00:18:20,830 Non estea en orde. 372 00:18:20,830 --> 00:18:23,930 Pero un loop foreach ha iterado a través de cada elemento 373 00:18:23,930 --> 00:18:25,060 da matriz en cuestión. 374 00:18:25,060 --> 00:18:27,980 Neste caso, de novo, esa matriz é de R $ pizzas. 375 00:18:27,980 --> 00:18:32,920 >> Podo cambiar a sintaxe, porén, se Quero tanto a chave eo valor. 376 00:18:32,920 --> 00:18:37,179 No canto de dicir $ pizzas canto $ pizza, podo dicir iso. 377 00:18:37,179 --> 00:18:39,470 E se ollar para o que eu teño destacadas en verde aquí, 378 00:18:39,470 --> 00:18:42,130 el se parece unha clave de cartografía par de valor. 379 00:18:42,130 --> 00:18:45,980 E por iso, se você-- mesmo se non é enteiramente certo o que vai facer, 380 00:18:45,980 --> 00:18:49,300 probablemente pode adiviñar que US $ cuberta vai 381 00:18:49,300 --> 00:18:53,800 para ser a clave neste caso e R $ prezo será o valor. 382 00:18:53,800 --> 00:18:59,200 Entón, eu estou substituíndo agora cada elemento de US $ pizzas como unha parella de valores clave, 383 00:18:59,200 --> 00:19:03,900 e agora podo referirse á chave e o valor, o que pode ser útil, 384 00:19:03,900 --> 00:19:05,590 por exemplo, como segue. 385 00:19:05,590 --> 00:19:10,170 >> "A todo" - este é un monte de impresión suceder aqui-- "un conxunto" 386 00:19:10,170 --> 00:19:17,300 cobertura "pizza custa R $" prezo e, a continuación Eu imprimir un período e unha barra invertida n. 387 00:19:17,300 --> 00:19:23,420 Entón, agora, aviso outra vez eu teño acceso a unha chave, $ cuberta, e un valor, R $ prezo. 388 00:19:23,420 --> 00:19:26,647 Entón podes imaxinar o que iso vai imprimir? 389 00:19:26,647 --> 00:19:29,480 Hai unha morea de instrucións de impresión, pero só hai unha barra invertida n, 390 00:19:29,480 --> 00:19:33,410 polo que vai para imprimir algo en un entire-- nunha soa liña de código. 391 00:19:33,410 --> 00:19:36,965 >> Se eu pode referirse a clave eo valor, entón agora, 392 00:19:36,965 --> 00:19:39,090 no canto de só ser capaz para imprimir os prezos, 393 00:19:39,090 --> 00:19:41,330 Podo imprimir algo así. 394 00:19:41,330 --> 00:19:43,780 "Toda unha pizza de queixo custa R $ 8,99." 395 00:19:43,780 --> 00:19:47,150 E agora está a usar todo o keys-- queixo, pepperoni, vexetal, 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 Así isto é só un xeito diferente 398 00:19:53,980 --> 00:19:57,840 para facer un loop foreach que en vez de só dándolle acceso aos valores, 399 00:19:57,840 --> 00:20:02,950 só dá vocę-- dálle acceso ás claves e os valores. 400 00:20:02,950 --> 00:20:04,411 >> Entón imprimir información. 401 00:20:04,411 --> 00:20:07,410 Eu xa fixen iso algunhas formas diferentes, ten que ter notado. 402 00:20:07,410 --> 00:20:11,080 As dúas funcións que temos sobre todo visto son impresión e eco. 403 00:20:11,080 --> 00:20:14,380 E para practicamente todos os intentos e propósitos, son exactamente o mesmo. 404 00:20:14,380 --> 00:20:17,130 They're-- hai unha moi sutil diferenza de que non é sequera paga a pena 405 00:20:17,130 --> 00:20:21,130 metendo, pero basicamente, en todas partes pode usar impresión probablemente pode usar 406 00:20:21,130 --> 00:20:22,370 ecoam tamén. 407 00:20:22,370 --> 00:20:23,610 >> E iso non é o único dous. 408 00:20:23,610 --> 00:20:26,970 PHP ten unha morea de diferentes formas de imprimir as cousas, 409 00:20:26,970 --> 00:20:30,520 e tamén ten formas de integrar variables para o medio da corda. 410 00:20:30,520 --> 00:20:32,860 Entón lembro C, vostede lembre que función 411 00:20:32,860 --> 00:20:37,580 que podemos usar para substituír variables en cousas que desexa imprimir? 412 00:20:37,580 --> 00:20:40,160 Probablemente usar esta funcionar moito. 413 00:20:40,160 --> 00:20:42,290 printf, non? 414 00:20:42,290 --> 00:20:45,290 Entón é iso que tivemos antes no interior do contexto do noso loop foreach. 415 00:20:45,290 --> 00:20:48,000 Tivemos estes cinco instrucións de impresión separados, 416 00:20:48,000 --> 00:20:50,330 porque esa era a única xeito que realmente sabía, na época 417 00:20:50,330 --> 00:20:52,450 como imprimir mensaxes. 418 00:20:52,450 --> 00:20:59,560 Eu non sabía como integrar o $ Variable superando no meu código PHP. 419 00:20:59,560 --> 00:21:03,700 Ben, se eu acaba de tomar un palpite, printf, realmente funcionaría. 420 00:21:03,700 --> 00:21:08,980 printf é unha función que podo usar en PHP, así como podo usalo en C. 421 00:21:08,980 --> 00:21:11,880 >> E así algo como isto, printf, unha vez máis, estamos familiarizados con iso. 422 00:21:11,880 --> 00:21:16,420 O primeiro% s substitúese co valor de US $ cuberta. 423 00:21:16,420 --> 00:21:19,700 O segundo% s substitúese co valor de $ prezo. 424 00:21:19,700 --> 00:21:22,630 E polo que estou interpelando, que é só un xeito elegante 425 00:21:22,630 --> 00:21:25,400 de dicir que eu estou unirse a variables que localización. 426 00:21:25,400 --> 00:21:31,000 Entón, eu estou conectando $ superando onde a vermello% s é e onde o prezo $% s azul 427 00:21:31,000 --> 00:21:36,060 é, e entón eu ía recibir a mensaxe, "Toda unha pizza de queixo custa R $ 8,99." 428 00:21:36,060 --> 00:21:37,750 >> Non é o único xeito que podo facelo, con todo. 429 00:21:37,750 --> 00:21:39,760 Poida que eu ía querer usar este método. 430 00:21:39,760 --> 00:21:44,890 Este é realmente o que é máis comunmente Interpelación chamado variable. 431 00:21:44,890 --> 00:21:45,690 Podo usar un eco. 432 00:21:45,690 --> 00:21:47,737 Eu podería usar un print tamén, como veremos. 433 00:21:47,737 --> 00:21:48,820 Pero o que está a suceder aquí? 434 00:21:48,820 --> 00:21:51,520 >> Primeiro de todo, eu teño que escapar do sinal de dólar. 435 00:21:51,520 --> 00:21:55,140 Porque lembre, cando estabamos realmente imprimindo os prezos das pizzas, 436 00:21:55,140 --> 00:21:59,370 Eu estaba realmente formato-los como valores monetarios con un sinal de dólar. 437 00:21:59,370 --> 00:22:05,635 Pero nós estamos usando sinais dólar tamén para representar os nomes de variables en PHP, 438 00:22:05,635 --> 00:22:08,010 e en particular cando estou usando este método do rizado 439 00:22:08,010 --> 00:22:10,040 variable cinta método interpelación, eu teño 440 00:22:10,040 --> 00:22:13,490 para escapar o meu signo do dólar para que non creo que eu estou falando sobre unha variable. 441 00:22:13,490 --> 00:22:16,920 Vai realmente, literalmente imprimir un sinal de dólar. 442 00:22:16,920 --> 00:22:19,530 >> Entón especie de analoxía para o que ve alí ao final. 443 00:22:19,530 --> 00:22:22,832 En realidade, non impresión barra invertida n, non? 444 00:22:22,832 --> 00:22:24,290 El imprime un carácter de nova liña. 445 00:22:24,290 --> 00:22:26,750 Isto é-- iso non vai impresión cifrão barra invertida, 446 00:22:26,750 --> 00:22:30,130 vai imprimir só un cifrão. 447 00:22:30,130 --> 00:22:30,640 A mesma idea. 448 00:22:30,640 --> 00:22:32,760 As secuencias de escape, o que esas cousas son chamadas. 449 00:22:32,760 --> 00:22:37,080 >> Pero teña en conta que non estou facendo calquera tipo de substitucións% s, 450 00:22:37,080 --> 00:22:40,050 Eu só estou literalmente conectar nesas variables. 451 00:22:40,050 --> 00:22:45,110 E así, en isto-- que pasaría aquí é que o valor de $ topping-- novo, 452 00:22:45,110 --> 00:22:48,390 só manter co que fomos falando de queixo tan far-- obtería 453 00:22:48,390 --> 00:22:49,720 conectado alí. 454 00:22:49,720 --> 00:22:54,780 E US $ prezo sería o valor que é en pizzas, corchetes, queixo, 455 00:22:54,780 --> 00:22:56,270 que era 8,99. 456 00:22:56,270 --> 00:23:01,860 E por iso este tamén imprimir "Toda unha pizza de queixo custa R $ 8,99." 457 00:23:01,860 --> 00:23:05,160 E como dixen, eu podería usar imprimir aquí en vez de eco, 458 00:23:05,160 --> 00:23:08,040 ea función sexa moi bonito exactamente o mesmo. 459 00:23:08,040 --> 00:23:09,660 Sería imprimir o mesmo. 460 00:23:09,660 --> 00:23:12,680 >> Non hai outra forma de facelo, e esta é outra vantaxe 461 00:23:12,680 --> 00:23:14,710 de PHP traballar con cadeas. 462 00:23:14,710 --> 00:23:17,130 Podemos facer concatenación de cadeas. 463 00:23:17,130 --> 00:23:19,660 Poderíamos facelo en C tamén usando unha función chamada strcat, 464 00:23:19,660 --> 00:23:21,180 pero, de novo, tivemos que chamar funcións separadas. 465 00:23:21,180 --> 00:23:22,640 Foi toda esa confusión que facer. 466 00:23:22,640 --> 00:23:24,590 Tivemos que pound-inclúen string.h. 467 00:23:24,590 --> 00:23:25,780 Foi unha produción, non? 468 00:23:25,780 --> 00:23:30,070 Pero agora eu só podo usar este operador punto para concatenar cadeas. 469 00:23:30,070 --> 00:23:34,910 >> Entón, eu estou concatenando "un conxunto" e a continuación, calquera que sexa o valor de US $ cuberta é, 470 00:23:34,910 --> 00:23:38,860 e logo outro corda, "custos de pizza $" 471 00:23:38,860 --> 00:23:42,340 e, a continuación, sexa cal sexa a concatenación o valor de R $ prezo é, 472 00:23:42,340 --> 00:23:45,670 e entón, ao final, eu son adherencia en período de barra invertida n. 473 00:23:45,670 --> 00:23:47,926 E así este sería tamén imprimir "un todo" - unha vez máis, 474 00:23:47,926 --> 00:23:50,550 se estamos a falar sobre o primeiro elemento desa array-- pizzas 475 00:23:50,550 --> 00:23:54,710 "Toda unha pizza de queixo custa R $ 8,99." 476 00:23:54,710 --> 00:24:01,260 Período, barra invertida n, de novo, con os US $ cuberta e prezo $ substituíndo 477 00:24:01,260 --> 00:24:06,580 para o que tiñamos especificado na nosa foreach lazo como a clave de cartografía par de valor. 478 00:24:06,580 --> 00:24:08,050 >> PHP pode manipular funcións. 479 00:24:08,050 --> 00:24:11,250 Funcións foron tipo de integrante ao C, como vimos. 480 00:24:11,250 --> 00:24:14,870 Como variables, non ten especificar o tipo de retorno da función, 481 00:24:14,870 --> 00:24:16,350 porque realmente non importa. 482 00:24:16,350 --> 00:24:18,660 E nós non especifica o tipos de datos de todos os parámetros, 483 00:24:18,660 --> 00:24:21,410 porque realmente non importa, como vimos en PHP. 484 00:24:21,410 --> 00:24:24,510 Cada función é introducido coa palabra clave función. 485 00:24:24,510 --> 00:24:27,920 É así que nos indican a PHP que o que estamos a falar é unha función. 486 00:24:27,920 --> 00:24:29,720 >> E nós non temos que xestionar principal de todo, 487 00:24:29,720 --> 00:24:33,690 porque o intérprete, o PHP intérprete, funciona de arriba abaixo, 488 00:24:33,690 --> 00:24:34,190 independentemente. 489 00:24:34,190 --> 00:24:35,640 Se ve que pode facer unha chamada de función, que vai 490 00:24:35,640 --> 00:24:37,850 ir atopar a chamada de función, aínda que só vén despois. 491 00:24:37,850 --> 00:24:40,360 Pero só pode ler de arriba inferior, polo tanto, non é necesario especificar, 492 00:24:40,360 --> 00:24:41,500 aquí é onde comeza. 493 00:24:41,500 --> 00:24:46,700 Comeza na liña 1 do seu PHP e traballar para abaixo de alí. 494 00:24:46,700 --> 00:24:49,690 >> Entón aquí está como nós criaríamos unha función chamada hard_square. 495 00:24:49,690 --> 00:24:54,100 El aparentemente leva un parámetro, que eu estou chamando $ x. 496 00:24:54,100 --> 00:24:58,424 Esta función é complicado só para ilustrar moitas cousas. 497 00:24:58,424 --> 00:24:59,590 Aínda temos valores de retorno. 498 00:24:59,590 --> 00:25:00,870 Eu estou usando un loop for aquí. 499 00:25:00,870 --> 00:25:04,970 Pero é basicamente só, que este significa só US $ x $ x veces. 500 00:25:04,970 --> 00:25:10,520 O que eu estou realmente facendo é só engadindo x para 0 x veces ou US $ x a cero $ x veces. 501 00:25:10,520 --> 00:25:15,850 Pero é exactamente o eficazmente aínda que multiplicar $ x $ x veces. 502 00:25:15,850 --> 00:25:18,700 Aínda pode voltar un valor, neste caso $ result, 503 00:25:18,700 --> 00:25:22,060 e eu fixen unha función en PHP. 504 00:25:22,060 --> 00:25:24,160 >> Vexa como pode usalo no contexto. 505 00:25:24,160 --> 00:25:26,020 Entón, talvez eu estou dentro dalgún arquivo PHP. 506 00:25:26,020 --> 00:25:29,240 Observe en azul alí que Eu usei os meus delimitadores PHP 507 00:25:29,240 --> 00:25:31,010 soporte de ángulo signo de interrogación php. 508 00:25:31,010 --> 00:25:35,180 Entre eses son todos PHP que quero escribir. 509 00:25:35,180 --> 00:25:37,840 Entón, eu estou indo a get-- aparentemente Vou pedir ao usuario 510 00:25:37,840 --> 00:25:41,550 para me dar un número, tenda que variable, tenda en que variable $ x, 511 00:25:41,550 --> 00:25:43,320 o que quere que eles me deron. 512 00:25:43,320 --> 00:25:48,590 Entón eu vou para ecoar hard_square dese valor, 513 00:25:48,590 --> 00:25:50,370 e ao parecer vai a adherencia nunha nova liña 514 00:25:50,370 --> 00:25:53,590 ben, e despois, máis tarde, eu vou definir a función de forma hard_square 515 00:25:53,590 --> 00:25:55,550 que cando fai o chamar a hard_square, 516 00:25:55,550 --> 00:25:58,160 el sabe o que eu estou falando. 517 00:25:58,160 --> 00:26:00,705 >> Agora, eu tamén podería facer algo así. 518 00:26:00,705 --> 00:26:02,050 Isto é un pouco diferente. 519 00:26:02,050 --> 00:26:04,190 É case exactamente o aínda que o que vimos antes, 520 00:26:04,190 --> 00:26:08,400 excepto no canto de dicir só US $ x alí como o parámetro para hard_square, 521 00:26:08,400 --> 00:26:11,730 Eu digo $ x = 10. 522 00:26:11,730 --> 00:26:14,330 Polo tanto, este é un exemplo de programación defensiva, 523 00:26:14,330 --> 00:26:17,070 gardando os seus programas contra usuarios mal intencións. 524 00:26:17,070 --> 00:26:20,020 >> Esta é unha forma de facer un erro verificación de que realmente non 525 00:26:20,020 --> 00:26:24,670 ten como unha opción no C. Nunca podería especificar o valor por defecto de algo. 526 00:26:24,670 --> 00:26:27,010 Sempre tivemos que check- a, por exemplo, 527 00:26:27,010 --> 00:26:30,820 se fixo un chamamento para GetString, foi máis adecuada inmediatamente despois nós 528 00:26:30,820 --> 00:26:33,300 verifiquei que fixemos o check- a cadea 529 00:26:33,300 --> 00:26:35,504 que o usuario deunos non é igual a cero, 530 00:26:35,504 --> 00:26:37,920 porque non quero comezar traballar con unha cadea nula. 531 00:26:37,920 --> 00:26:39,670 >> Aquí, esta é unha forma para protexerse contra iso. 532 00:26:39,670 --> 00:26:43,480 Se o usuario non proporcionar-nos algo dalgún xeito, o que imos facer? 533 00:26:43,480 --> 00:26:46,080 Ben, imos só dicir o que quere non proporcionar-nos, 534 00:26:46,080 --> 00:26:47,705 nós só estamos indo para a conexión de 10 en vez. 535 00:26:47,705 --> 00:26:52,030 Entón, se eles non nos deu un valor, é só usar 10 por defecto. E por iso aquí, 536 00:26:52,030 --> 00:26:53,940 notar que eu estou facendo unha chamada hard_square, 537 00:26:53,940 --> 00:26:55,980 pero non hai ningún poder para o usuario, non? 538 00:26:55,980 --> 00:26:57,540 Eu só estou facendo unha chamada baleira. 539 00:26:57,540 --> 00:27:00,860 >> Pero a miña función hard_square está esperando un parámetro. 540 00:27:00,860 --> 00:27:02,222 Que isto vai imprimir? 541 00:27:02,222 --> 00:27:03,680 Vai imprimir 100, non? 542 00:27:03,680 --> 00:27:05,720 Porque o usuario non está darme algo. 543 00:27:05,720 --> 00:27:08,970 E entón eu só vou asumir que 10-- 10 é o valor predeterminado. 544 00:27:08,970 --> 00:27:13,760 E así isto debe imprimir a 100 na súa propia liña. 545 00:27:13,760 --> 00:27:16,390 >> Arquivos PHP non ten que ser só un único ficheiro. 546 00:27:16,390 --> 00:27:19,480 Pode combinar varios ficheiros xuntos, Así como pode en C. A forma 547 00:27:19,480 --> 00:27:24,330 nós fixemos iso en C foi tipicamente de facer unha # Include para ficheiros de cabeceira levado. 548 00:27:24,330 --> 00:27:26,180 Nós non facemos iso en PHP. 549 00:27:26,180 --> 00:27:29,110 Facemos algo chamado require_once. 550 00:27:29,110 --> 00:27:33,360 E despois hai toda esta cousa, o que é iso __dir__? 551 00:27:33,360 --> 00:27:36,510 Isto é só unha especial variable ou constante especial, 552 00:27:36,510 --> 00:27:39,030 realmente, que especifica o que seu directorio actual. 553 00:27:39,030 --> 00:27:41,320 E así que vai mirar no seu directorio actual 554 00:27:41,320 --> 00:27:44,900 para un ficheiro chamado cs50.php Neste exemplo aquí, 555 00:27:44,900 --> 00:27:50,490 e só pode ir o ficheiro na parte superior do seu programa PHP 556 00:27:50,490 --> 00:27:56,980 supoñendo que poñer o esixir xa liña na parte superior do seu arquivo PHP. 557 00:27:56,980 --> 00:28:01,474 >> Entón PHP é usado principalmente, pero non utilizados exclusivamente, 558 00:28:01,474 --> 00:28:03,140 como unha linguaxe para programación baseada en web. 559 00:28:03,140 --> 00:28:05,270 Isto é realmente como chegou a ser. 560 00:28:05,270 --> 00:28:06,980 Pero é un enteiro lingua, como xa vimos. 561 00:28:06,980 --> 00:28:10,105 Vimos practicamente todas as cousas que pode facer que soarán C, 562 00:28:10,105 --> 00:28:13,290 e pode facer un inferno de moito máis que iso. 563 00:28:13,290 --> 00:28:16,950 >> Senón porque é unha lingua completa e nós pode facer programación de liña de comandos na mesma. 564 00:28:16,950 --> 00:28:18,630 Podemos realizar programas de liña de comandos. 565 00:28:18,630 --> 00:28:22,580 Todo o que é necesario para executar un comando programa de liña que está escrito en PHP 566 00:28:22,580 --> 00:28:24,260 é que ten un intérprete de PHP. 567 00:28:24,260 --> 00:28:27,460 Entón, é unha especie de análogo ao ter un compilador no seu sistema 568 00:28:27,460 --> 00:28:31,100 se quere compilar o código C para transformalo en arquivos executable. 569 00:28:31,100 --> 00:28:33,810 Ten que ter un intérprete PHP que existe no seu sistema 570 00:28:33,810 --> 00:28:37,330 de modo que pode interpretar arquivos PHP. 571 00:28:37,330 --> 00:28:40,370 >> Supoñendo que, e, xeralmente, este intérprete chámase PHP 572 00:28:40,370 --> 00:28:44,300 e normalmente ven con máis descargas ou instalacións de PHP 573 00:28:44,300 --> 00:28:47,430 que pode obter en liña, e, por suposto, o nome do intérprete PHP 574 00:28:47,430 --> 00:28:49,550 temos en CS50, IDE. 575 00:28:49,550 --> 00:28:51,819 Todo o que fai é ficheiro php tipo. 576 00:28:51,819 --> 00:28:53,610 E o seu programa de vai facer é 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 todo o que é non en cuestión entre mark-- 579 00:28:58,040 --> 00:29:03,160 ou, ángulo do soporte de interrogación php, os delimitadores PHP, e imprimir lo, 580 00:29:03,160 --> 00:29:07,660 e ha interpretar e executar o código dentro dos seus delimitadores PHP. 581 00:29:07,660 --> 00:29:12,850 >> Entón, imos estalar sobre a IDE e CS50 ter un ollar para un par de arquivos PHP, 582 00:29:12,850 --> 00:29:19,850 executando un par de arquivos PHP en interface de liña de comandos de CS50 IDE. 583 00:29:19,850 --> 00:29:22,100 Entón, aquí estamos en CS50 IDE, e eu tomei a liberdade 584 00:29:22,100 --> 00:29:25,800 de abrir un arquivo chamado hello1.php. 585 00:29:25,800 --> 00:29:29,920 E, ao parecer, o contido deste ficheiro só os delimitadores PHP alí, 586 00:29:29,920 --> 00:29:32,220 e no medio, echo ("Ola, mundo"). 587 00:29:32,220 --> 00:29:34,710 Este é un programa moi sinxelo PHP. 588 00:29:34,710 --> 00:29:37,670 Eu só vou para rolar para abaixo na miña fiestra de terminal aquí, 589 00:29:37,670 --> 00:29:44,320 e eu estou indo a escribir php hello1.php, presione enter. 590 00:29:44,320 --> 00:29:44,950 Hola Mundo. 591 00:29:44,950 --> 00:29:48,110 Isto pode ser o que eramos esperando que facer, non? 592 00:29:48,110 --> 00:29:51,140 >> Imos subir e tomar outro ollar para un programa. 593 00:29:51,140 --> 00:29:52,924 hello2.php. 594 00:29:52,924 --> 00:29:55,090 Practicamente o mesmo, non moita cousa a ocorrer aquí. 595 00:29:55,090 --> 00:29:57,190 Esta vez, porén, eu estou indo a solicitar o usuario para me dar os seus nomes. 596 00:29:57,190 --> 00:29:59,290 Eu estou usando esa función readline novo. 597 00:29:59,290 --> 00:30:01,340 $ Name = readline. 598 00:30:01,340 --> 00:30:03,070 Esa é a mensaxe, "Cal é o seu nome?" 599 00:30:03,070 --> 00:30:04,880 >> Aparentemente son impresión Lo na súa propia liña. 600 00:30:04,880 --> 00:30:07,220 E, a continuación, para que a liña a continuación que será o poder 601 00:30:07,220 --> 00:30:08,750 onde o usuario pode escribir o seu nome. 602 00:30:08,750 --> 00:30:12,030 E entón eu estou usando un pouco de Interpelación variable aquí na liña 3 603 00:30:12,030 --> 00:30:14,780 para imprimir "Ola" e todo o que o usuario escribe. 604 00:30:14,780 --> 00:30:22,040 Polo tanto, este é análogo a dicir, Ola, coma,% s se estivésemos usando printf en C. 605 00:30:22,040 --> 00:30:24,910 >> Entón imos e interpretar este programa. 606 00:30:24,910 --> 00:30:27,400 Entón, de novo, eu vou rodar abaixo na miña fiestra 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 Cal é o teu nome? 610 00:30:33,820 --> 00:30:35,490 Doug. 611 00:30:35,490 --> 00:30:36,526 Ola, Doug. 612 00:30:36,526 --> 00:30:39,440 Eu tamén teño outro ficheiro chamado hello3.php. 613 00:30:39,440 --> 00:30:42,850 Eu estou indo a limpar a miña pantalla con control L, 614 00:30:42,850 --> 00:30:46,210 e eu estou indo a executar iso. 615 00:30:46,210 --> 00:30:47,640 Cal é o teu nome? 616 00:30:47,640 --> 00:30:49,020 Doug. 617 00:30:49,020 --> 00:30:49,780 Ola, Doug. 618 00:30:49,780 --> 00:30:56,540 Así, o comportamento é o mesmo que o hello2.php, pero por que é hello3.php? 619 00:30:56,540 --> 00:30:58,040 >> Ben, aquí está a diferencia. 620 00:30:58,040 --> 00:31:00,620 Neste caso, a notificación que na liña 1 aquí, 621 00:31:00,620 --> 00:31:04,270 Eu teño algo que non é entre os delimitadores PHP. 622 00:31:04,270 --> 00:31:07,760 Eu só estou imprimindo out-- ou I acaba de escribir, "Cal é o seu nome?" 623 00:31:07,760 --> 00:31:12,060 Cando o intérprete PHP ve iso, non ten idea de como interpretalo como PHP, 624 00:31:12,060 --> 00:31:15,060 e así, en vez de falla, el só vai para cuspídela. 625 00:31:15,060 --> 00:31:19,010 >> Entón, observe en liña 3 agora, a miña chamada readline, non hai ningún ventá de máis. 626 00:31:19,010 --> 00:31:21,750 Eu só estou indo realmente cando a-- o intérprete PHP ve iso, 627 00:31:21,750 --> 00:31:23,400 vai imprimir "Cal é o teu nome?" 628 00:31:23,400 --> 00:31:25,941 A continuación, el ve Oh, ben, here's-- o resto será 629 00:31:25,941 --> 00:31:29,970 interpretada como PHP, entón por iso é que iso funciona. 630 00:31:29,970 --> 00:31:34,990 Non teño que pedir necesariamente a-- o usuario dentro da readline, 631 00:31:34,990 --> 00:31:37,490 Podo só telo fóra dos delimitadores PHP 632 00:31:37,490 --> 00:31:41,490 e facer que o intérprete só imprimir lo para min. 633 00:31:41,490 --> 00:31:45,364 >> Entón, o que realmente non ten soamente ter un conxunto de delimitadores PHP 634 00:31:45,364 --> 00:31:46,030 no seu programa. 635 00:31:46,030 --> 00:31:49,887 Realmente pode ter varios deles, abrindo e pechando a eles cando é necesario. 636 00:31:49,887 --> 00:31:51,720 Entón, imos dar un ollo nun par de programas 637 00:31:51,720 --> 00:31:55,070 en CS50 IDE onde nós ilustrar esta idea de ter 638 00:31:55,070 --> 00:31:58,376 varios conxuntos de PHP delimitado. 639 00:31:58,376 --> 00:32:02,010 >> OK, entón eu xa abriu un ficheiro aquí chamado add1.php. 640 00:32:02,010 --> 00:32:03,390 E teña en conta o que está a suceder aquí. 641 00:32:03,390 --> 00:32:08,077 Tal como antes, eu teño un PHP único conxunto de delimitadores. 642 00:32:08,077 --> 00:32:10,660 Eu estou indo a imprimir o mensaxe, "Por favor, me dar un número." 643 00:32:10,660 --> 00:32:13,394 Entón eu vou ler unha fileira e almacena-lo na variable $ num1. 644 00:32:13,394 --> 00:32:14,810 Entón eu vou imprimir de novo. 645 00:32:14,810 --> 00:32:16,310 Dáme un segundo número. 646 00:32:16,310 --> 00:32:20,450 Ler unha liña do usuario, tenda o que escribiu en $ num2. 647 00:32:20,450 --> 00:32:23,980 Engadila los xuntos e almacenar ese producir unha variable chamada $ definitiva, 648 00:32:23,980 --> 00:32:26,180 e, a continuación, imprimir, "The suma destes dous números 649 00:32:26,180 --> 00:32:29,254 é ", a continuación, interpelar hai os R $ suma variable. 650 00:32:29,254 --> 00:32:31,170 Entón imos realizar este a través do intérprete 651 00:32:31,170 --> 00:32:33,720 para confirmar que isto é 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 un número, tres. 654 00:32:38,665 --> 00:32:40,410 Por favor, me dea un segundo número, 4. 655 00:32:40,410 --> 00:32:43,370 A suma destes dous números é 7. 656 00:32:43,370 --> 00:32:45,030 Iso é 3 + 4. 657 00:32:45,030 --> 00:32:45,530 OK? 658 00:32:45,530 --> 00:32:47,770 Polo tanto, nada terrible sofisticados alí. 659 00:32:47,770 --> 00:32:51,080 >> E agora imos abrir add2.php. 660 00:32:51,080 --> 00:32:54,460 Aquí, eu teño un par de PHP conxuntos delimitado alí, non? 661 00:32:54,460 --> 00:32:59,107 Liñas 1, 3-- liñas 1 e 3 ten non delimitadores PHP. 662 00:32:59,107 --> 00:33:00,940 Así, cando o intérprete velos, é só 663 00:33:00,940 --> 00:33:03,220 vai cuspir exactamente o que escribiu alí. 664 00:33:03,220 --> 00:33:05,011 Entón é aí onde eu son facendo toda a miña solicitude. 665 00:33:05,011 --> 00:33:11,220 Nas liñas 2 e 4, vemos a moito $ Familiar? Php tipo de delimitadores, 666 00:33:11,220 --> 00:33:15,210 para que estas dúas liñas son vai realizar como PHP. 667 00:33:15,210 --> 00:33:18,270 E, a continuación, na liña 5, eu teño esa cousa estraña aquí, non? 668 00:33:18,270 --> 00:33:20,480 Este soporte de ángulo punto de interrogação signo igual. 669 00:33:20,480 --> 00:33:22,660 Vou ata ampliar un pouco máis lonxe. 670 00:33:22,660 --> 00:33:29,270 Podes ver que é o que eu son falando alí, este $? =. 671 00:33:29,270 --> 00:33:33,420 >> Acontece que é tan común que a razón que nos abrimos un conxunto de PHP 672 00:33:33,420 --> 00:33:36,055 delimitadores é imprimir un valor. 673 00:33:36,055 --> 00:33:37,430 E iso é todo o que imos facer. 674 00:33:37,430 --> 00:33:39,220 Pero hai aínda unha abreviación para iso. 675 00:33:39,220 --> 00:33:46,490 $? = É un atallo para dicir PHP algo como US $? php echo a suma 676 00:33:46,490 --> 00:33:48,350 num1 e num2 de. 677 00:33:48,350 --> 00:33:51,900 Polo tanto, este é só un Abreviatura para iso. 678 00:33:51,900 --> 00:33:55,550 >> Entón, se eu executar este programa, php add2.php. 679 00:33:55,550 --> 00:33:57,530 Vou aumentar un pouco para abaixo. 680 00:33:57,530 --> 00:33:59,000 Por favor, me dar un número, 4. 681 00:33:59,000 --> 00:34:00,350 Por favor, me dea un segundo número. 682 00:34:00,350 --> 00:34:04,650 E dende que eu realmente non me importa sobre tipos de datos en PHP, podo dicir 4.8. 683 00:34:04,650 --> 00:34:07,160 A suma destes dous números é de 8,8. 684 00:34:07,160 --> 00:34:10,179 Esa función compórtase moi ben exactamente o mesmo como era de esperar, 685 00:34:10,179 --> 00:34:10,989 ben. 686 00:34:10,989 --> 00:34:13,114 E eu teño unha aberta aquí chamado dice.php. 687 00:34:13,114 --> 00:34:25,625 688 00:34:25,625 --> 00:34:26,250 Ténteo de novo. 689 00:34:26,250 --> 00:34:29,429 690 00:34:29,429 --> 00:34:33,280 Eu teño un chamado máis aquí dice1.php, que tamén, ver, 691 00:34:33,280 --> 00:34:37,440 ten esta pregunta paréntese angular marcar notación igual sinal alí, 692 00:34:37,440 --> 00:34:40,659 de ter en conta que, neste caso, eu son chamando a función rand, que como 693 00:34:40,659 --> 00:34:42,790 Pode esperar que xera un número aleatorio. 694 00:34:42,790 --> 00:34:46,889 "Vostede rolou un", e só pode calcular algún número aleatorio, mod 6 + 695 00:34:46,889 --> 00:34:47,389 1. 696 00:34:47,389 --> 00:34:49,989 De xeito que vou dar o número na gama de 1 a 6. 697 00:34:49,989 --> 00:34:53,040 >> Lembre que mod 6 me daría un número no rango de 0 a 5, 698 00:34:53,040 --> 00:34:56,630 pero se eu estou simulando xogadas de datos, que é o que estou facendo aquí, 699 00:34:56,630 --> 00:35:00,040 Non quero eses datos para ir de 0 a 5, quero datos que van de 1 a 6. 700 00:35:00,040 --> 00:35:02,800 E polo que esta é unha forma de obter me na gama de 1 a 6. 701 00:35:02,800 --> 00:35:04,720 Estou facendo iso dúas veces. 702 00:35:04,720 --> 00:35:08,630 Entón, ao parecer, eu estou rodando dous datos neste programa. 703 00:35:08,630 --> 00:35:15,210 >> Entón, eu vou limpar miña pantalla, e eu vou facer php dice1.php. 704 00:35:15,210 --> 00:35:16,640 Vostede rolou un 4 e un 2. 705 00:35:16,640 --> 00:35:19,156 E se eu executar o programa de novo, rolou a 5 ea 5. 706 00:35:19,156 --> 00:35:21,780 Entón, cada vez que eu realizar o programa, Estou recibindo números diferentes, 707 00:35:21,780 --> 00:35:24,280 xa que cada vez que fago Entón, é comezar de novo. 708 00:35:24,280 --> 00:35:27,250 Vai xerar un novo conxunto de números aleatorios para min. 709 00:35:27,250 --> 00:35:29,790 >> Entón, se estamos afeitos a execución de programas de C, 710 00:35:29,790 --> 00:35:32,520 estamos afeitos escribir o ./ nome dun programa, non? 711 00:35:32,520 --> 00:35:35,090 Isto é como fixemos todo dos nosos programas en C ata o momento. 712 00:35:35,090 --> 00:35:37,555 Podemos facelo en PHP, así engadindo algo chamado 713 00:35:37,555 --> 00:35:40,026 un shebang arriba do noso arquivo PHP. 714 00:35:40,026 --> 00:35:41,400 Sei que é unha especie de palabra boba. 715 00:35:41,400 --> 00:35:44,540 É curto para hash de estrondo. 716 00:35:44,540 --> 00:35:46,300 Iso é os dous primeiros caracteres alí. 717 00:35:46,300 --> 00:35:50,030 Lembre que chamamos signo de admiración frecuentemente un estrondo en ciencia da computación. 718 00:35:50,030 --> 00:35:51,690 Tamén pode ser para estrondo afiado. 719 00:35:51,690 --> 00:35:53,273 Hai algunhas formas de interpretar iso. 720 00:35:53,273 --> 00:35:57,320 Pero é basicamente un tipo especial de comandos que o intérprete PHP 721 00:35:57,320 --> 00:36:00,160 entende como, oh, quero executar este programa, 722 00:36:00,160 --> 00:36:05,250 que é aparentemente / user / bin / php, que é, en realidade, onde o intérprete PHP 723 00:36:05,250 --> 00:36:08,590 vive especialmente no noso sistema. 724 00:36:08,590 --> 00:36:12,530 Entón it's-- que pasa aquí é o intérprete entende, oh, 725 00:36:12,530 --> 00:36:17,270 Estou aparentemente debería usar neste programa para realizar ese ficheiro. 726 00:36:17,270 --> 00:36:20,010 E así el permite que para saltar a etapa 727 00:36:20,010 --> 00:36:22,979 de ter que dicir php something.php. 728 00:36:22,979 --> 00:36:25,020 Hai outra captura aquí, que é o que se 729 00:36:25,020 --> 00:36:27,320 queremos que os nosos programas para funcionar como se esperaba, nós 730 00:36:27,320 --> 00:36:30,220 cómpre facer algo chamado un cambio de permisos de arquivo. 731 00:36:30,220 --> 00:36:33,380 E nós imos vai-- e falamos un pouco pouco máis cambios de permiso de arquivo sobre 732 00:36:33,380 --> 00:36:37,550 no noso vídeo sobre MVC, pero basta dicir que este é o que ten que facer 733 00:36:37,550 --> 00:36:42,760 a fin de facer a súa arquivos .PHP executable. 734 00:36:42,760 --> 00:36:49,330 Entón, imos dar un ollo a como esta noso exemplo final sobre a CS50 IDE. 735 00:36:49,330 --> 00:36:53,910 >> Entón, aquí no IDE Teño dous ficheiros nesta Directorio PHP que parecen non ser 736 00:36:53,910 --> 00:36:55,310 chamado .PHP. 737 00:36:55,310 --> 00:36:58,170 Eu teño unha función chamada add-- Eu teño un arquivo chamado Add3 738 00:36:58,170 --> 00:37:00,650 e un ficheiro chamado dice2. 739 00:37:00,650 --> 00:37:03,680 Entón, imos dar unha rápida mirar e abrir Add3. 740 00:37:03,680 --> 00:37:08,300 E como se pode ver, a principios do meu arquivo eu teño esa cousa toda, non? 741 00:37:08,300 --> 00:37:11,420 Este punto de hash signo de admiración. 742 00:37:11,420 --> 00:37:15,115 Agora, tamén vai talvez Lembre que por algún motivo, 743 00:37:15,115 --> 00:37:16,990 Non teño ningún sintaxe destacando máis, 744 00:37:16,990 --> 00:37:20,198 e iso é o que me referín anteriormente, Que foi o que se eu non citar meu arquivo 745 00:37:20,198 --> 00:37:23,040 .PHP, eu non teño o beneficio destacado de sintaxe máis. 746 00:37:23,040 --> 00:37:26,220 Este ficheiro é chamado só de Add3. 747 00:37:26,220 --> 00:37:30,960 Para que eu poida executa-lo máis tarde con ./ Add3 e non ./ add3.php. 748 00:37:30,960 --> 00:37:33,680 >> Así, a razón aínda é fino, aínda é válido PHP 749 00:37:33,680 --> 00:37:37,000 pero non é a sintaxe en destaque, porque este ficheiro non se chama something.php. 750 00:37:37,000 --> 00:37:41,580 Esa é a única diferenza real aquí, máis a cousa toda. 751 00:37:41,580 --> 00:37:45,170 Entón imos ver o que acontece cando Eu intento e executar este programa. 752 00:37:45,170 --> 00:37:50,780 ./ Add3, así como eu faría C. Bash. 753 00:37:50,780 --> 00:37:53,190 ./ Permiso Add3 negado. 754 00:37:53,190 --> 00:37:55,390 Isto é o que está indo para ver se esquecer 755 00:37:55,390 --> 00:37:59,280 usar o comando chmod para cambiar os permisos do arquivo. 756 00:37:59,280 --> 00:38:03,845 >> Como se constata, PHP regulares arquivos non pode só ser executado. 757 00:38:03,845 --> 00:38:06,970 Poden ser interpretados, pero estamos facer algo un pouco diferente aquí. 758 00:38:06,970 --> 00:38:07,761 Estamos executalo. 759 00:38:07,761 --> 00:38:12,970 E así que eu teño para engadir o permiso de execución, chmod a + x para Add3. 760 00:38:12,970 --> 00:38:15,680 Entón eu podo dicir ./ Add3. 761 00:38:15,680 --> 00:38:16,860 Por favor, me dar un número. 762 00:38:16,860 --> 00:38:18,060 5, 6. 763 00:38:18,060 --> 00:38:20,490 A suma destes dous números é 11. 764 00:38:20,490 --> 00:38:26,530 >> Do mesmo xeito, eu xa chmoded dice2, para que eu poida escriba ./ dice2, 765 00:38:26,530 --> 00:38:31,260 vostede rolou un 1 e un 1, laminados en 5 e un 4, e así por diante. 766 00:38:31,260 --> 00:38:33,680 >> Entón, iso é moi fermoso o idea dunha sintaxe PHP, non? 767 00:38:33,680 --> 00:38:35,221 Hai moita cousa para pasar, eu sei. 768 00:38:35,221 --> 00:38:39,160 Pero espero que viu agora que o PHP que non é realmente diferente de C 769 00:38:39,160 --> 00:38:43,670 e realmente dános a posibilidade para levar as cousas un entalhe ou dous. 770 00:38:43,670 --> 00:38:48,230 Nós realmente non se preocupe moi about-- nós realmente non 771 00:38:48,230 --> 00:38:51,605 ten que preocuparse moito con os detalles de baixo nivel nós 772 00:38:51,605 --> 00:38:52,980 tiña que preocuparse C, non? 773 00:38:52,980 --> 00:38:56,170 Podemos concentrar-se na maior material nivel que o PHP 774 00:38:56,170 --> 00:39:01,090 nos permite facer e levar a seguro que vai traballar para nós. 775 00:39:01,090 --> 00:39:04,350 Por iso, nos dá a capacidade agora, a transición de C para PHP, 776 00:39:04,350 --> 00:39:08,280 para facer programas que son moito máis complexo e quizais moito máis robusto. 777 00:39:08,280 --> 00:39:13,070 >> Entón, eu espero que teña traballo divertido con PHP, e eu son Doug Lloyd. 778 00:39:13,070 --> 00:39:15,050 Este é CS50. 779 00:39:15,050 --> 00:39:17,637