1 00:00:00,000 --> 00:00:05,340 2 00:00:05,340 --> 00:00:07,370 >> DOUG LLOYD: per questo abbiamo fatto un sacco di lavoro in C, 3 00:00:07,370 --> 00:00:09,536 e C è un davvero cool lingua perché ti dà 4 00:00:09,536 --> 00:00:12,840 la capacità di immergersi realmente basso livello nei vostri programmi. 5 00:00:12,840 --> 00:00:16,810 Si arriva a fare le cose come davvero minuto come la manipolazione 6 00:00:16,810 --> 00:00:18,800 singoli byte di memoria. 7 00:00:18,800 --> 00:00:21,420 Ricordiamo che i puntatori davvero ci permettono che la flessibilità. 8 00:00:21,420 --> 00:00:25,260 >> Ma abbiamo sempre bisogno di avere tale livello a grana fine di dettaglio 9 00:00:25,260 --> 00:00:26,820 nei nostri programmi? 10 00:00:26,820 --> 00:00:28,210 Probabilmente no, giusto? 11 00:00:28,210 --> 00:00:30,376 E se stiamo andando ad avere un trade-off tra l'essere 12 00:00:30,376 --> 00:00:32,911 in grado di fare davvero, davvero cose minuto e davvero, davvero 13 00:00:32,911 --> 00:00:35,910 grandi cose che noi non dobbiamo pensare su, non dobbiamo implementare 14 00:00:35,910 --> 00:00:40,290 queste davvero grandi idee se stanno già costruiti in per noi, 15 00:00:40,290 --> 00:00:43,980 in generale per la costruzione di grande programmi o grandi progetti, 16 00:00:43,980 --> 00:00:49,130 stiamo probabilmente andando a sbagliare sul lato di avere più roba lingua costruita nel 17 00:00:49,130 --> 00:00:51,300 per noi, invece di avere la roba di basso livello. 18 00:00:51,300 --> 00:00:53,970 Ed è qui che entra in gioco il PHP davvero. 19 00:00:53,970 --> 00:00:58,200 >> Ora, uno dei motivi che insegniamo PHP CS50 20 00:00:58,200 --> 00:01:01,020 è che è fortemente ispirato C. E infatti, a mio parere, 21 00:01:01,020 --> 00:01:05,140 ci sono davvero due lingue progenitrici che 22 00:01:05,140 --> 00:01:08,200 sono molto comuni al giorno d'oggi. 23 00:01:08,200 --> 00:01:10,110 C e LISP. 24 00:01:10,110 --> 00:01:13,280 E sono lingue progenitrici perché ogni altra programmazione moderno 25 00:01:13,280 --> 00:01:17,380 linguaggio che ha sviluppato da allora si ispira 26 00:01:17,380 --> 00:01:20,330 da uno o l'altro sintatticamente. 27 00:01:20,330 --> 00:01:26,160 PHP è molto simile sintatticamente a C, mentre linguaggi come Scheme, 28 00:01:26,160 --> 00:01:27,900 per esempio, che si può avere sentito parlare, 29 00:01:27,900 --> 00:01:32,070 è fortemente ispirato da una lingua chiamato LISP, che è una lingua più antica. 30 00:01:32,070 --> 00:01:34,220 >> Quindi la ragione si insegna PHP CS50 è che, 31 00:01:34,220 --> 00:01:37,730 conoscendo C come fondamentalmente come si fa a questo punto, 32 00:01:37,730 --> 00:01:41,280 raccogliendo PHP, che vi dà il capacità di fare le cose livello molto più elevato 33 00:01:41,280 --> 00:01:44,710 di C fa, non è che gran parte di un ostacolo, 34 00:01:44,710 --> 00:01:48,230 perché avete già la idea di base della sintassi. 35 00:01:48,230 --> 00:01:50,590 C è stato intorno per quasi 45 anni a questo punto. 36 00:01:50,590 --> 00:01:52,780 PHP è stato in giro per circa 20 anni. 37 00:01:52,780 --> 00:01:57,080 E in quanto 25 anni in mezzo, programmatori 38 00:01:57,080 --> 00:02:01,540 stabilito che avrebbero molto piuttosto avere capacità di livello superiore, 39 00:02:01,540 --> 00:02:04,970 e gli errori e le lotte dei 20 anni intermedi 40 00:02:04,970 --> 00:02:08,210 ha portato a PHP e altri linguaggi moderni. 41 00:02:08,210 --> 00:02:11,039 >> Una grande scelta di PHP lingua per il software 42 00:02:11,039 --> 00:02:14,042 che allow-- per software che-- dove 43 00:02:14,042 --> 00:02:16,250 bisogno di fare cose che in C sono in realtà complicata. 44 00:02:16,250 --> 00:02:18,480 Così, per esempio, lavorando con stringhe in C 45 00:02:18,480 --> 00:02:21,709 è molto complicato, perché come sappiamo, stringhe in C 46 00:02:21,709 --> 00:02:23,250 sono davvero solo array di caratteri. 47 00:02:23,250 --> 00:02:25,230 Non è un tipo di dati built-in. 48 00:02:25,230 --> 00:02:28,220 O forse più fondamentalmente, qualcosa che non abbiamo neanche coprire in C, 49 00:02:28,220 --> 00:02:30,360 E se avete bisogno di fare alcuni computer in rete? 50 00:02:30,360 --> 00:02:30,860 Tutto ok? 51 00:02:30,860 --> 00:02:34,920 >> C ha la capacità di farlo, ma è così arcana e così difficile da fare in realtà. 52 00:02:34,920 --> 00:02:37,580 Non sarebbe bello se il lingua aveva un modo semplice incorporato 53 00:02:37,580 --> 00:02:38,910 per implementare in rete? 54 00:02:38,910 --> 00:02:43,420 E PHP è un linguaggio che fa si che, o facilita che, un po 'di più. 55 00:02:43,420 --> 00:02:47,740 Come ho detto, PHP è fortemente ispirato da C. La sintassi è molto simile. 56 00:02:47,740 --> 00:02:51,760 E così si spera, dovrebbe fare il passaggio da una all'altra 57 00:02:51,760 --> 00:02:54,710 un po 'più morbida di alcuni altre lingue potrebbe essere. 58 00:02:54,710 --> 00:02:58,800 >> Per iniziare a scrivere PHP, basta aprire un file con estensione file .php. 59 00:02:58,800 --> 00:03:00,670 Tecnicamente questo non è effettivamente necessari, 60 00:03:00,670 --> 00:03:04,495 ma se si vuole le cose come sintassi evidenziando in IDE, in modo che il tipo 61 00:03:04,495 --> 00:03:07,620 nomi, o nomi di variabili, funzioni, si sa, le parole chiave del linguaggio 62 00:03:07,620 --> 00:03:10,090 sono evidenziati in un colore specifico, in genere 63 00:03:10,090 --> 00:03:14,020 vogliono nominare i file con una particolare estensione di file. 64 00:03:14,020 --> 00:03:18,430 Così abbiamo chiamato il nostro file con .php estensione, ma poi anche con PHP, 65 00:03:18,430 --> 00:03:23,310 tutto il codice PHP si scrive in quel file deve essere racchiuso tra questi PHP 66 00:03:23,310 --> 00:03:25,190 delimitatori che vediamo qui sullo schermo. 67 00:03:25,190 --> 00:03:27,910 Parentesi angolare? Php per iniziare. 68 00:03:27,910 --> 00:03:30,860 Poi scriviamo tutto il nostro PHP codice che vogliamo in mezzo. 69 00:03:30,860 --> 00:03:32,260 E poi ? 70 00:03:32,260 --> 00:03:34,710 staffa angolare per chiudere. 71 00:03:34,710 --> 00:03:37,170 >> Se non facciamo questo, poi che cosa accadrà? 72 00:03:37,170 --> 00:03:38,170 Non sta andando in crash. 73 00:03:38,170 --> 00:03:39,410 Non sta andando a davvero rovinare il nostro programma. 74 00:03:39,410 --> 00:03:41,440 Ma non sta andando ad avere l'effetto che vogliamo. 75 00:03:41,440 --> 00:03:44,540 Che cosa sta per succedere, davvero, è che quando cerchiamo di eseguire questo programma, 76 00:03:44,540 --> 00:03:50,330 tutto non tra quelle delimitatori sta per essere stampato parola per parola. 77 00:03:50,330 --> 00:03:52,210 Non sta andando a realmente eseguire il codice, 78 00:03:52,210 --> 00:03:56,010 sta andando a solo stamparlo testualmente. 79 00:03:56,010 --> 00:03:57,320 >> Ora, perché è il caso? 80 00:03:57,320 --> 00:04:00,416 Quindi C è ciò che è noto come un linguaggio compilato. 81 00:04:00,416 --> 00:04:03,040 Probabilmente siete a conoscenza con la fase di realizzare i vostri programmi, 82 00:04:03,040 --> 00:04:07,820 girando i file .c e file .h in un unico eseguibile con make, 83 00:04:07,820 --> 00:04:11,130 in particolare utilizzando Clang come il nostro compilatore. 84 00:04:11,130 --> 00:04:13,030 PHP, però, non fa avere questo equivalente. 85 00:04:13,030 --> 00:04:15,600 PHP è quello che si chiama un linguaggio interpretato. 86 00:04:15,600 --> 00:04:16,760 E cosa vuol dire? 87 00:04:16,760 --> 00:04:20,680 >> Beh, vuol dire che non abbiamo convertire il nostro codice sorgente di zero e uno 88 00:04:20,680 --> 00:04:21,470 in anticipo. 89 00:04:21,470 --> 00:04:23,900 Piuttosto, c'è un programma, che è anche chiamato 90 00:04:23,900 --> 00:04:29,771 PHP, che comprende PHP e può sorta di farlo al volo. 91 00:04:29,771 --> 00:04:32,520 Che non è proprio esattamente preciso, ma è una buona analogia 92 00:04:32,520 --> 00:04:33,760 di ciò che sta accadendo. 93 00:04:33,760 --> 00:04:37,230 E 'l'interpretazione quelli zero e uno al volo. 94 00:04:37,230 --> 00:04:40,160 E quindi se non lo sa come elaborare qualcosa, 95 00:04:40,160 --> 00:04:42,800 se non sa come processo PHP, probabilmente 96 00:04:42,800 --> 00:04:44,680 voluto mettere quel testo in là, giusto? 97 00:04:44,680 --> 00:04:48,960 >> Probabilmente voleva mettere il codice in lì, anche se non è tra PHP-- 98 00:04:48,960 --> 00:04:50,035 i delimitatori PHP. 99 00:04:50,035 --> 00:04:51,910 Ma-- così non sta andando per eliminarlo per voi, 100 00:04:51,910 --> 00:04:53,576 è solo andare a scartare fondamentalmente. 101 00:04:53,576 --> 00:04:55,550 Così sta andando a stampare fuori allo schermo. 102 00:04:55,550 --> 00:04:57,150 >> Questo mi sembra che sia una cattiva cosa, ma in realtà è 103 00:04:57,150 --> 00:04:58,220 sarà un veramente buona cosa, come vedremo 104 00:04:58,220 --> 00:05:00,390 vedere quando si parla di Sviluppo web PHP, 105 00:05:00,390 --> 00:05:04,010 perché significa che possiamo intervallare PHP e HTML. 106 00:05:04,010 --> 00:05:06,640 Possiamo usarli insieme per creare una pagina web più dinamico. 107 00:05:06,640 --> 00:05:10,650 Ma più che nel video su sviluppo web PHP. 108 00:05:10,650 --> 00:05:12,021 >> Allora, qual è la sintassi di PHP? 109 00:05:12,021 --> 00:05:13,520 Questo è ciò che il video è tutto. 110 00:05:13,520 --> 00:05:14,850 Parliamone. 111 00:05:14,850 --> 00:05:16,490 >> Quindi, per iniziare, le variabili. 112 00:05:16,490 --> 00:05:18,030 Esistono variabili PHP. 113 00:05:18,030 --> 00:05:20,067 Ci sono solo due grandi differenze da C. 114 00:05:20,067 --> 00:05:21,900 La prima è che c'è nessun indicatore di tipo. 115 00:05:21,900 --> 00:05:24,245 Non abbiamo da dire int, char, float, tutta quella roba. 116 00:05:24,245 --> 00:05:25,620 Noi non dobbiamo farlo più. 117 00:05:25,620 --> 00:05:26,810 PHP è un linguaggio moderno. 118 00:05:26,810 --> 00:05:28,910 Si può capire che cosa sei cercando di fare o fare un migliore 119 00:05:28,910 --> 00:05:30,451 indovinare di cosa si sta cercando di fare. 120 00:05:30,451 --> 00:05:31,700 Ecco, questo è abbastanza piacevole. 121 00:05:31,700 --> 00:05:35,330 >> L'altra cosa è che tutte le variabili i nomi devono iniziare con il simbolo del dollaro. 122 00:05:35,330 --> 00:05:36,940 Questo è solo qualcosa per abituarsi. 123 00:05:36,940 --> 00:05:39,496 E 'un po' strano, perché è così che PHP possa capire 124 00:05:39,496 --> 00:05:40,870 che cosa è una variabile e che cosa non lo è. 125 00:05:40,870 --> 00:05:43,340 Così ogni nome di variabile inizia con il simbolo del dollaro. 126 00:05:43,340 --> 00:05:46,884 Quindi, in C si potrebbe dire qualcosa in questo modo, int x = 54. 127 00:05:46,884 --> 00:05:48,550 Non abbiamo a che fare più che in PHP. 128 00:05:48,550 --> 00:05:52,540 Possiamo solo dire $ x = 54. 129 00:05:52,540 --> 00:05:55,920 E si potrebbe dire, per esempio, in C, se avessimo libbra-incluso il .h CS50 130 00:05:55,920 --> 00:06:00,314 file di intestazione, potremmo dire stringa frase = "Questo è CS50." 131 00:06:00,314 --> 00:06:01,980 Noi non dobbiamo fare che in PHP, però. 132 00:06:01,980 --> 00:06:04,865 Possiamo solo dire $ frase = "Questo è CS50." 133 00:06:04,865 --> 00:06:08,760 E in effetti, stringa è ora un tipo di dati incorporato in PHP, 134 00:06:08,760 --> 00:06:10,950 o meglio PHP capisce quello che una stringa è. 135 00:06:10,950 --> 00:06:15,612 E 'separata da un array di personaggi come è in C. 136 00:06:15,612 --> 00:06:17,570 Tutti i tuoi preferiti istruzioni condizionali da C 137 00:06:17,570 --> 00:06:19,520 sono ancora disponibili per l'uso. 138 00:06:19,520 --> 00:06:21,140 Quindi nessun grande transizione lì. 139 00:06:21,140 --> 00:06:23,400 Possiamo say-- possiamo avere se dichiarazioni come questo. 140 00:06:23,400 --> 00:06:28,210 se $ y 43, o $ z = 15. 141 00:06:28,210 --> 00:06:29,690 Ecco, questo è abbastanza semplice. 142 00:06:29,690 --> 00:06:31,980 Possiamo avere se e altro. 143 00:06:31,980 --> 00:06:34,210 Possiamo avere se e else if. 144 00:06:34,210 --> 00:06:36,430 >> E notare qualcosa abbastanza bello qui, e questo 145 00:06:36,430 --> 00:06:39,620 è una sorta di uno di quelli vantaggi di PHP vs C, avviso 146 00:06:39,620 --> 00:06:41,510 che funzione non stiamo usando qui? 147 00:06:41,510 --> 00:06:47,737 Stiamo usando == per confrontare un variabile $ nome, in una stringa. 148 00:06:47,737 --> 00:06:49,070 Non abbiamo potuto farlo in C, giusto? 149 00:06:49,070 --> 00:06:53,200 Abbiamo dovuto usare una funzione chiamata StrComp o StrEndComp o qualsiasi 150 00:06:53,200 --> 00:06:54,840 dei suoi cugini correlati. 151 00:06:54,840 --> 00:06:56,980 >> E così noi vediamo già questi vantaggi. 152 00:06:56,980 --> 00:07:00,930 Noi non dobbiamo fare qualcosa come sciocco o forse poco intuitivo 153 00:07:00,930 --> 00:07:03,540 come chiamare una funzione chiamata StrComp se voglio solo provare 154 00:07:03,540 --> 00:07:05,237 se un valore è uguale a una stringa. 155 00:07:05,237 --> 00:07:07,820 Potrei semplicemente usare uguali uguali, come ho potuto fare altro. 156 00:07:07,820 --> 00:07:09,560 Quindi c'è un vantaggio. 157 00:07:09,560 --> 00:07:13,350 >> A volte, tra l'altro, si potrebbe vedere altro se come una parola, elseif. 158 00:07:13,350 --> 00:07:14,910 E questo è OK in PHP pure. 159 00:07:14,910 --> 00:07:17,020 Così a volte si potrebbe vedere che. 160 00:07:17,020 --> 00:07:17,790 Non è un errore di battitura. 161 00:07:17,790 --> 00:07:21,830 PHP capisce realmente elseif. 162 00:07:21,830 --> 00:07:23,980 Io non so perché ha deciso di attuare tale, 163 00:07:23,980 --> 00:07:28,220 ma come abbiamo visto tante volte in tutta la nostra video finora, 164 00:07:28,220 --> 00:07:30,460 noi amiamo i programmatori se possiamo fare le cose in fretta, 165 00:07:30,460 --> 00:07:33,660 così sbarazzarsi di quello spazio è apparentemente un grande vantaggio. 166 00:07:33,660 --> 00:07:34,800 >> Ecco, questo è, se e elseif. 167 00:07:34,800 --> 00:07:37,540 Abbiamo anche l'operatore ternario, richiamo punto interrogativo colon, 168 00:07:37,540 --> 00:07:43,262 per davvero forma breve se il resto o diramazione condizionale. 169 00:07:43,262 --> 00:07:45,470 E a quanto pare, in questo, quello che stiamo cercando di fare qui 170 00:07:45,470 --> 00:07:49,720 è assegnare la variabile $ lettera sia vero o falso, 171 00:07:49,720 --> 00:07:54,110 a seconda che $ var è un carattere alfabetico. 172 00:07:54,110 --> 00:07:57,320 Quindi questo è abbastanza simile a isalpha che siamo a conoscenza da C. 173 00:07:57,320 --> 00:07:59,010 Questa è una sorta di equivalente in PHP. 174 00:07:59,010 --> 00:08:01,550 La funzione è apparentemente chiamato ctype_alpha, 175 00:08:01,550 --> 00:08:03,450 ma questo è come lo facciamo in PHP. 176 00:08:03,450 --> 00:08:08,560 Quindi tutto questo sta per essere è, se $ var è una lettera, $ lettera è vero. 177 00:08:08,560 --> 00:08:13,820 Se $ var non è una lettera, $ lettera è falsa. 178 00:08:13,820 --> 00:08:15,820 >> Abbiamo anche istruzioni switch ancora. 179 00:08:15,820 --> 00:08:17,870 Ricordiamo quelli da C pure. 180 00:08:17,870 --> 00:08:22,480 In cima c'è molto, ecco come facciamo qualcosa come ottenere int o ottenere stringa. 181 00:08:22,480 --> 00:08:23,845 Così PHP ha che ha costruito in. 182 00:08:23,845 --> 00:08:25,470 Non abbiamo bisogno di più la biblioteca CS50. 183 00:08:25,470 --> 00:08:27,237 Possiamo solo utilizzare la funzione readline. 184 00:08:27,237 --> 00:08:29,820 Cosa che sta per fare è la stampa il messaggio, "Il vostro Stato, 185 00:08:29,820 --> 00:08:33,820 per favore "e poi lampeggiante rapida attesa che l'utente di inserire 186 00:08:33,820 --> 00:08:34,739 alcune informazioni. 187 00:08:34,739 --> 00:08:36,530 Ora notate che altro possiamo fare con l'interruttore. 188 00:08:36,530 --> 00:08:39,105 Se hai utilizzato prima, si può ricordare che l'interruttore 189 00:08:39,105 --> 00:08:44,960 è limitata praticamente a numeri interi e personaggi, ma ora siamo in grado di usare le stringhe. 190 00:08:44,960 --> 00:08:50,190 E infatti, l'istruzione switch in PHP è un po 'più flessibile 191 00:08:50,190 --> 00:08:54,880 rispetto al suo cugino da C. 192 00:08:54,880 --> 00:08:55,380 Loops. 193 00:08:55,380 --> 00:08:58,130 Proprio come condizionali, tutti i tuoi vecchi preferiti sono ancora lì. 194 00:08:58,130 --> 00:09:00,740 Abbiamo mentre i cicli che contano da 1 a 100 in questo caso. 195 00:09:00,740 --> 00:09:03,940 Abbiamo fare cicli while che contano da 1 a 100, 196 00:09:03,940 --> 00:09:06,200 e che abbiamo per i loop che contano da 1 a 100. 197 00:09:06,200 --> 00:09:07,220 Quindi un grosso salto lì. 198 00:09:07,220 --> 00:09:09,360 La sintassi è abbastanza più esattamente, 199 00:09:09,360 --> 00:09:11,760 solo che adesso stiamo usando segno variabile del dollaro al posto 200 00:09:11,760 --> 00:09:17,260 di dichiarare variabili intere o qualcosa di simile per i nostri sportelli. 201 00:09:17,260 --> 00:09:20,090 >> Qui è dove le cose si fanno un molto meglio di C, però. 202 00:09:20,090 --> 00:09:21,020 Array. 203 00:09:21,020 --> 00:09:23,020 Così ricordare quando eravamo parlando di C, al fine 204 00:09:23,020 --> 00:09:25,560 per noi di crescere e ridursi serie di informazioni, 205 00:09:25,560 --> 00:09:28,310 abbiamo bisogno di ordinare di inadempienza a questa idea di una lista collegata, 206 00:09:28,310 --> 00:09:30,780 perché gli array C sono stati fissati in termini di dimensioni. 207 00:09:30,780 --> 00:09:31,800 Noi non potevamo ridursi. 208 00:09:31,800 --> 00:09:32,930 Noi non potevamo crescere. 209 00:09:32,930 --> 00:09:36,074 Abbiamo dovuto riallocare la memoria e fare tutta questa follia 210 00:09:36,074 --> 00:09:38,490 o utilizzare liste concatenate, che prendere un bel po 'di più spazio. 211 00:09:38,490 --> 00:09:41,590 Ma in PHP, gli array sono non fissato in termini di dimensioni più. 212 00:09:41,590 --> 00:09:43,240 Possono crescere e possono ridursi. 213 00:09:43,240 --> 00:09:46,660 Quindi, di nuovo, questi 20 anni che esisteva tra la prima versione di C 214 00:09:46,660 --> 00:09:49,440 e il primo rilascio di PHP, abbiamo deciso che, si sa, 215 00:09:49,440 --> 00:09:51,670 sarebbe davvero grande se potessimo farlo. 216 00:09:51,670 --> 00:09:54,100 E così abbiamo implementato questo. 217 00:09:54,100 --> 00:09:58,040 >> Quindi array PHP non sono fissi in dimensioni, e perché PHP non lo fa davvero 218 00:09:58,040 --> 00:10:03,090 avere programmatore front-facing nozioni di tipi, 219 00:10:03,090 --> 00:10:05,110 siamo in grado di mescolare i tipi di dati nel nostro array, anche. 220 00:10:05,110 --> 00:10:08,100 Quindi non hanno nemmeno bisogno di usare tutto interi o tutti i punti di galleggiamento, 221 00:10:08,100 --> 00:10:12,826 possiamo avere un mix di tutto diversi tipi in un singolo array. 222 00:10:12,826 --> 00:10:14,700 Dichiarazione di un array è abbastanza semplice. 223 00:10:14,700 --> 00:10:16,116 È proprio come qualsiasi altra variabile. 224 00:10:16,116 --> 00:10:20,020 $ nums = array (1, 2, 3, 4), di matrice essendo una funzione 225 00:10:20,020 --> 00:10:22,760 che è costruito in PHP che creerà un array per voi. 226 00:10:22,760 --> 00:10:28,315 Questo crea un array di quattro valori, numeri in questo caso, chiamato $ nums. 227 00:10:28,315 --> 00:10:29,940 E c'è più di un modo per farlo. 228 00:10:29,940 --> 00:10:32,420 E stiamo andando a vedere questo molto in PHP. 229 00:10:32,420 --> 00:10:36,380 PHP è stato sviluppato da molti diversi persone e cresce e cresce e cresce. 230 00:10:36,380 --> 00:10:40,050 C'è di solito non solo due o tre modi di fare qualcosa in PHP, 231 00:10:40,050 --> 00:10:42,170 di solito c'è come 10 o 20. 232 00:10:42,170 --> 00:10:45,300 Qui è solo un altro comune modo per dichiarare un array. 233 00:10:45,300 --> 00:10:48,310 $ nums = quadrati staffa 1, 2, 3, 4. 234 00:10:48,310 --> 00:10:53,170 Quindi questa è una sorta di simile all'angolo di C br-- notazione parentesi graffa, piuttosto. $ - 235 00:10:53,170 --> 00:10:58,525 o sarebbe int nums piazza staffe uguale parentesi graffa 1, 2, 3, 4. 236 00:10:58,525 --> 00:11:02,710 In PHP è $ nums = piazza staffe 1, 2, 3, 4. 237 00:11:02,710 --> 00:11:08,920 Ma entrambi questi esempi qui mi danno un array di quattro in questo caso interi. 238 00:11:08,920 --> 00:11:10,920 >> Che cosa devo fare per virare qualcosa adesso? 239 00:11:10,920 --> 00:11:14,760 Beh, posso solo dire $ nums 4, che di nuovo, stiamo ancora contando da 0 qui 240 00:11:14,760 --> 00:11:17,800 in PHP, sarebbe la quinta elemento della matrice. 241 00:11:17,800 --> 00:11:18,990 Posso solo dire che. 242 00:11:18,990 --> 00:11:22,860 Io non ho intenzione di subire un seg colpa, perché il mio array è solo 243 00:11:22,860 --> 00:11:24,337 andando a crescere per ospitare questo. 244 00:11:24,337 --> 00:11:25,420 Questo è abbastanza bello, giusto? 245 00:11:25,420 --> 00:11:28,400 E infatti, non ho nemmeno bisogno di specificare dove voglio dirla. 246 00:11:28,400 --> 00:11:31,220 Posso solo dire che questo e solo virare a destra fino alla fine, 247 00:11:31,220 --> 00:11:34,099 Oppure potrei anche solo dire $ nums 20 o 1000. 248 00:11:34,099 --> 00:11:35,140 Non ha molta importanza. 249 00:11:35,140 --> 00:11:38,330 E 'ancora solo andando a virare a destra fino alla fine. 250 00:11:38,330 --> 00:11:41,490 >> Così posso crescere, e as-- siamo Non andando a coprire in qui, 251 00:11:41,490 --> 00:11:45,360 ma posso impiombare o striscia elementi fuori della matrice così, 252 00:11:45,360 --> 00:11:50,064 e la matrice si ridurrà a ospitare che ora mancante o vuoto dello spazio. 253 00:11:50,064 --> 00:11:52,230 C'è un altro modo di virare qualcosa su un array, 254 00:11:52,230 --> 00:11:54,330 che è una funzione denominata array_push. 255 00:11:54,330 --> 00:11:57,860 Quindi, di nuovo, proprio questa idea di essere in grado di fare le cose molti modi diversi. 256 00:11:57,860 --> 00:12:01,950 Così abbiamo visto tre modi diversi ora di virare su un altro elemento di un array. 257 00:12:01,950 --> 00:12:06,900 Quindi questo aggiunge un altro elemento alla fine dell'array $ nums. 258 00:12:06,900 --> 00:12:08,340 E possiamo mescolare i nostri tipi di dati. 259 00:12:08,340 --> 00:12:13,110 Così ho potuto avere una serie di non 1, 2, 3, 4, ma 1, vero, 3, 4, 260 00:12:13,110 --> 00:12:16,420 in cui il vero è un valore booleano, e poi se voglio virare su un altro elemento 261 00:12:16,420 --> 00:12:20,860 a tale matrice, forse una stringa, la stringa "cinque", ho potuto farlo. 262 00:12:20,860 --> 00:12:26,110 E ora il mio allineamento sarebbe essere 1, vero, 3, 4, cinque. 263 00:12:26,110 --> 00:12:28,640 La parola di cinque, non il numero intero 5. 264 00:12:28,640 --> 00:12:31,270 Così un sacco di flessibilità lì. 265 00:12:31,270 --> 00:12:33,290 >> La flessibilità ottiene ancora meglio, però, 266 00:12:33,290 --> 00:12:37,530 perché PHP ha il supporto per qualcosa chiamato un array associativo. 267 00:12:37,530 --> 00:12:40,660 E noi sorta di vagamente parlato array associativi su in C 268 00:12:40,660 --> 00:12:44,740 nel contesto delle tabelle hash, perché quali array associativi sono davvero tutto 269 00:12:44,740 --> 00:12:48,950 circa stanno facendo chiave mappature coppia di valore. 270 00:12:48,950 --> 00:12:53,410 E in questo caso, il keys-- se siamo familiarità con gli array di C, 271 00:12:53,410 --> 00:12:55,440 le chiavi sono numeri indice. 272 00:12:55,440 --> 00:12:57,530 0, 1, 2, 3. 273 00:12:57,530 --> 00:13:03,070 E i valori sono ciò che noi troviamo che matrice 0, 1 campo, di matrice 2, e così via. 274 00:13:03,070 --> 00:13:06,310 Così i tasti sono indici, ei valori sono 275 00:13:06,310 --> 00:13:10,060 ciò è in quella posizione dell'array, specificato da tale indice. 276 00:13:10,060 --> 00:13:15,130 >> Ma in PHP, non dobbiamo fare questo nozione di matrice 0, 1 campo, di matrice 2 277 00:13:15,130 --> 00:13:15,830 più. 278 00:13:15,830 --> 00:13:21,025 Ora possiamo usare le parole reali per mappare i tasti ai valori. 279 00:13:21,025 --> 00:13:22,650 E così ho potuto dire qualcosa del genere. 280 00:13:22,650 --> 00:13:26,710 Potrei creare un array utilizzando il sintassi parentesi quadra come segue. 281 00:13:26,710 --> 00:13:30,685 $ pizze = parentesi quadra "formaggio" e poi 282 00:13:30,685 --> 00:13:37,210 questo tipo di notazione freccia a due, 8.99, "pepperoni" freccia 10.99-- 9.99, 283 00:13:37,210 --> 00:13:37,880 Eccetera. 284 00:13:37,880 --> 00:13:39,060 E così quello che sta succedendo qui? 285 00:13:39,060 --> 00:13:41,040 Che cosa sto facendo realmente? 286 00:13:41,040 --> 00:13:43,990 Sto creando chiave mappature coppia valore. 287 00:13:43,990 --> 00:13:49,060 Così, invece di dire, per esempio, pizze 0, pezzi 1, 2 pizze, 288 00:13:49,060 --> 00:13:52,350 Ora posso dire pizze formaggio, pizze ai peperoni, 289 00:13:52,350 --> 00:13:55,120 e si riferiscono ai valori essi associati. 290 00:13:55,120 --> 00:13:56,970 >> Così qui sono le nostre chiavi in ​​verde. 291 00:13:56,970 --> 00:13:59,870 Formaggio, peperoni, verdure, pollo bufala. 292 00:13:59,870 --> 00:14:04,200 Ecco la freccia che fa questa chiave mappatura coppia di valori. 293 00:14:04,200 --> 00:14:07,420 E poi qui ci sono i valori in tale posizione array. 294 00:14:07,420 --> 00:14:10,330 Quindi è come dire di matrice 0 equivale a 8.99. 295 00:14:10,330 --> 00:14:11,720 La chiave è 0. 296 00:14:11,720 --> 00:14:13,600 Il valore è 8,99. 297 00:14:13,600 --> 00:14:19,370 Ora posso dire formaggio array, o in questo caso pizze di formaggio, formaggio è la chiave, 298 00:14:19,370 --> 00:14:23,340 e quello che trovo in pizze formaggio è 8,99. 299 00:14:23,340 --> 00:14:25,540 Questo è il valore che trovo lì. 300 00:14:25,540 --> 00:14:28,124 >> Quindi posso dire cose come. $ formaggio pizza = 7.99. 301 00:14:28,124 --> 00:14:29,040 Dire che sto avendo una vendita. 302 00:14:29,040 --> 00:14:31,750 Voglio dis-- voglio cadere il prezzo della pizza di formaggio. 303 00:14:31,750 --> 00:14:35,620 Oppure posso usare le verdure pizza come parte di una condizione, 304 00:14:35,620 --> 00:14:39,990 o posso aggiungere un nuovo elemento al mio array, proprio come ho potuto fare in precedenza. 305 00:14:39,990 --> 00:14:44,680 Posso aggiungere un nuovo elemento a questo array associativo con il tasto "pancetta" 306 00:14:44,680 --> 00:14:49,250 e il valore 13.49. 307 00:14:49,250 --> 00:14:53,820 >> Ma questo tipo di introduce un problema, se ci pensate per un secondo. 308 00:14:53,820 --> 00:14:55,721 Come possiamo iterare questo array? 309 00:14:55,721 --> 00:14:56,220 Destra? 310 00:14:56,220 --> 00:14:59,820 In C, ci sarebbe solo una per ciclo, tipicamente, che 311 00:14:59,820 --> 00:15:03,650 avrebbe eseguito da 0 al dimensione dell'array meno 1. 312 00:15:03,650 --> 00:15:08,060 L'array ha n elementi in a, il indici validi sono 0 per n meno 1. 313 00:15:08,060 --> 00:15:11,530 Così abbiamo potuto utilizzare un ciclo for per passo attraverso ogni singolo elemento. 314 00:15:11,530 --> 00:15:13,530 >> Ma non è davvero il caso più, giusto? 315 00:15:13,530 --> 00:15:17,360 Ora dove abbiamo coppia di valori chiave mappature dove le chiavi sono parole, 316 00:15:17,360 --> 00:15:19,970 come possiamo iterare su tutte le parole? 317 00:15:19,970 --> 00:15:22,420 Beh, per fortuna, PHP ha un modo per affrontare anche questo, 318 00:15:22,420 --> 00:15:24,580 e così ci salto indietro a cicli per un secondo 319 00:15:24,580 --> 00:15:30,780 introdurre un quarto tipo di ciclo che esiste in PHP chiamato un ciclo foreach. 320 00:15:30,780 --> 00:15:34,430 E che un ciclo foreach fa è è fondamentalmente la stessa idea. 321 00:15:34,430 --> 00:15:36,060 Potete usarlo per qualsiasi tipo di matrice. 322 00:15:36,060 --> 00:15:38,100 Ma è fondamentalmente la stessa idea come un ciclo for, 323 00:15:38,100 --> 00:15:40,750 tranne che invece di utilizzare numeri indice, basta 324 00:15:40,750 --> 00:15:45,830 avere questa strana sintassi dove si chiama ogni singolo elemento 325 00:15:45,830 --> 00:15:47,550 un nome ai fini di questo ciclo. 326 00:15:47,550 --> 00:15:49,258 >> Quindi, in questo caso, foreach ($ array da $ chiave). 327 00:15:49,258 --> 00:15:52,900 328 00:15:52,900 --> 00:15:56,450 In sostanza, come che le note di commento, all'interno di tale ciclo foreach, 329 00:15:56,450 --> 00:16:00,466 che sta per andare oltre ogni elemento di $ array, che è tipicamente 330 00:16:00,466 --> 00:16:03,340 sta per essere un array associativo, ma può realmente essere qualsiasi tipo di matrice 331 00:16:03,340 --> 00:16:05,419 che si desidera in PHP. 332 00:16:05,419 --> 00:16:07,210 E ogni volta che in un ciclo for si potrebbe 333 00:16:07,210 --> 00:16:13,780 hanno detto $ matrice parentesi quadre $ i, si può solo dire $ chiave. 334 00:16:13,780 --> 00:16:22,340 In modo che $ chiave diventa un alias per ogni indice di un array associativo PHP, 335 00:16:22,340 --> 00:16:23,710 e così si può usare in quel modo. 336 00:16:23,710 --> 00:16:25,897 >> Così, per esempio, abbiamo ora ottenuto la nostra gamma pizze. 337 00:16:25,897 --> 00:16:27,730 Ho sorta di infilai in un angolo c'è 338 00:16:27,730 --> 00:16:31,080 in modo che possiamo usare per fare un esempio veloce. 339 00:16:31,080 --> 00:16:36,420 Se dico foreach ($ pizze come $ pizza), beh, cosa sta succedendo? 340 00:16:36,420 --> 00:16:42,400 Beh, io vado a scorrere ogni singolo elemento dell'array $ pizze, 341 00:16:42,400 --> 00:16:46,670 e così facendo, ho intenzione di chiamare ogni elemento, quando sono dentro 342 00:16:46,670 --> 00:16:49,400 del corpo di quel ciclo for $ pizza. 343 00:16:49,400 --> 00:16:52,440 >> Ecco, questo è una sorta di controfigura, ricordo, che la pizza $ 344 00:16:52,440 --> 00:16:59,140 è uno stand-in per dire $ pizze parentesi quadre $ i 345 00:16:59,140 --> 00:17:03,370 se stessimo usando un ciclo for, dove noi potrebbe andare da $ i = 0, in questo caso, 346 00:17:03,370 --> 00:17:06,089 $ i = 3. 347 00:17:06,089 --> 00:17:09,780 Se non avessimo coppie di valori chiave qui, questo sarebbe elemento 0, 1, 2, 3, 348 00:17:09,780 --> 00:17:16,390 e vorremmo usare un ciclo for per andare $ 0 pizze, pizze $ 1, $ 2 pizze, 349 00:17:16,390 --> 00:17:17,750 $ 3 pizze. 350 00:17:17,750 --> 00:17:23,130 Così ora $ solo pizza sta sostituendo per quella chiave individuale. 351 00:17:23,130 --> 00:17:25,630 >> Così che cosa è questo andare a stampare? 352 00:17:25,630 --> 00:17:29,030 Sto stampando $ pizza. 353 00:17:29,030 --> 00:17:35,270 Che cosa sono io che vado a trovare at-- se stampo fuori $ pizze, $ i? 354 00:17:35,270 --> 00:17:35,770 Destra? 355 00:17:35,770 --> 00:17:38,680 Se ho intenzione di stampare l'elemento esimo di pizze, 356 00:17:38,680 --> 00:17:40,070 cosa devo stampare? 357 00:17:40,070 --> 00:17:42,580 Ho intenzione di stampare il valori in quella posizione, giusto? 358 00:17:42,580 --> 00:17:45,370 Come se stessimo facendo ciò nel contesto di C, 359 00:17:45,370 --> 00:17:49,786 di solito non utilizziamo la nostra iteratore variabile, int i = 0, i è inferiore a 3, 360 00:17:49,786 --> 00:17:52,900 i ++, stampare 0, 1, 2, 3. 361 00:17:52,900 --> 00:17:57,500 Stiamo stampare array di 0, 1 campo, di matrice 2, un array 3. 362 00:17:57,500 --> 00:17:59,580 E così quello che viene stampato fuori è questo. 363 00:17:59,580 --> 00:18:01,150 E 'l'elenco dei prezzi. 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 >> Ora una breve nota qui. 366 00:18:06,900 --> 00:18:10,900 Un ciclo foreach non lo fa necessariamente stampare le cose in ordine. 367 00:18:10,900 --> 00:18:12,770 Non è garantito. 368 00:18:12,770 --> 00:18:13,550 Di solito fa. 369 00:18:13,550 --> 00:18:17,667 E 'di solito basato sull'ordine in quali elementi vengono aggiunti alla matrice, 370 00:18:17,667 --> 00:18:18,750 quindi basta tenere a mente. 371 00:18:18,750 --> 00:18:20,830 Potrebbe non essere in ordine. 372 00:18:20,830 --> 00:18:23,930 Ma un ciclo foreach itererà attraverso ogni singolo elemento 373 00:18:23,930 --> 00:18:25,060 della matrice in questione. 374 00:18:25,060 --> 00:18:27,980 In questo caso, ancora una volta, tale matrice è di $ pizze. 375 00:18:27,980 --> 00:18:32,920 >> Posso modificare la sintassi, però, se Voglio che sia la chiave e il valore. 376 00:18:32,920 --> 00:18:37,179 Invece di dire $ pizze da $ pizza, posso dire questo. 377 00:18:37,179 --> 00:18:39,470 E se si guarda a quello che ho evidenziato in verde qui, 378 00:18:39,470 --> 00:18:42,130 sembra una coppia di valori chiave di mappatura. 379 00:18:42,130 --> 00:18:45,980 E così, se you--, anche se non siete del tutto sicuro di quello che sta per fare, 380 00:18:45,980 --> 00:18:49,300 probabilmente si può intuire che $ topping sta andando 381 00:18:49,300 --> 00:18:53,800 essere la chiave in questo caso e $ prezzo sarà il valore. 382 00:18:53,800 --> 00:18:59,200 Così sto sostituendo ora ogni elemento di $ pizze come una coppia di valori chiave, 383 00:18:59,200 --> 00:19:03,900 e ora posso fare riferimento alla chiave e il valore che potrebbe, a portata di mano, 384 00:19:03,900 --> 00:19:05,590 per esempio, come segue. 385 00:19:05,590 --> 00:19:10,170 >> "Un intero" - si tratta di un sacco di stampa in corso qui-- "Un intero" 386 00:19:10,170 --> 00:19:17,300 topping "la pizza costa $" prezzo, e poi Stampo fuori un periodo e una barra rovesciata n. 387 00:19:17,300 --> 00:19:23,420 Così ora, avviso di nuovo mi hanno accesso a una chiave, $ topping, e un valore, $ prezzo. 388 00:19:23,420 --> 00:19:26,647 Così si può indovinare che cosa questo sta andando a stampare? 389 00:19:26,647 --> 00:19:29,480 C'è un sacco di dichiarazioni di stampa, ma c'è una sola barra rovesciata n, 390 00:19:29,480 --> 00:19:33,410 così sta andando a stampare qualcosa su un entire-- su una sola riga di codice. 391 00:19:33,410 --> 00:19:36,965 >> Se riesco a fare riferimento alla chiave e il valore, allora oggi, 392 00:19:36,965 --> 00:19:39,090 invece di essere solo in grado per stampare i prezzi, 393 00:19:39,090 --> 00:19:41,330 Posso stampare qualcosa di simile. 394 00:19:41,330 --> 00:19:43,780 "Un intero pizza di formaggio costa $ 8,99." 395 00:19:43,780 --> 00:19:47,150 E ora sto usando tutta la keys-- formaggio, peperoni, verdura, 396 00:19:47,150 --> 00:19:49,640 bufali chicken-- ei valori. 397 00:19:49,640 --> 00:19:53,980 8.99, 9.99, 10.99, 11.99 So questo è solo un modo diverso 398 00:19:53,980 --> 00:19:57,840 fare un ciclo foreach che invece di solo che vi dà accesso ai valori, 399 00:19:57,840 --> 00:20:02,950 dà solo you-- ti dà accesso alle chiavi e valori. 400 00:20:02,950 --> 00:20:04,411 >> Quindi stampare informazioni. 401 00:20:04,411 --> 00:20:07,410 Ho già fatto un paio di modi diversi, potreste aver notato. 402 00:20:07,410 --> 00:20:11,080 Le due funzioni che abbiamo in primo luogo visto sono stampa e eco. 403 00:20:11,080 --> 00:20:14,380 E per quasi tutti gli effetti e scopi, sono esattamente la stessa cosa. 404 00:20:14,380 --> 00:20:17,130 They're-- c'è un molto sottile differenza che non è nemmeno la pena 405 00:20:17,130 --> 00:20:21,130 entrare, ma in fondo in tutto il mondo è possibile utilizzare la stampa probabilmente si può usare 406 00:20:21,130 --> 00:20:22,370 echo pure. 407 00:20:22,370 --> 00:20:23,610 >> E non è il solo due. 408 00:20:23,610 --> 00:20:26,970 PHP ha un sacco di diverso modi per stampare le cose, 409 00:20:26,970 --> 00:20:30,520 e ha anche modi per integrare variabili nel mezzo di corda. 410 00:20:30,520 --> 00:20:32,860 Quindi ricorda da C, si fa ricordare quale funzione 411 00:20:32,860 --> 00:20:37,580 possiamo utilizzare per sostituire le variabili in cose che vogliamo stampare? 412 00:20:37,580 --> 00:20:40,160 Probabilmente utilizzare questo funzionare un bel po '. 413 00:20:40,160 --> 00:20:42,290 printf, giusto? 414 00:20:42,290 --> 00:20:45,290 Quindi questo è quello che avevamo prima dentro del contesto della nostra ciclo foreach. 415 00:20:45,290 --> 00:20:48,000 Abbiamo avuto questi cinque istruzioni di stampa separate, 416 00:20:48,000 --> 00:20:50,330 perché era l'unico modo ciò che sapevo al momento 417 00:20:50,330 --> 00:20:52,450 come stampare i messaggi. 418 00:20:52,450 --> 00:20:59,560 Non sapevo come integrare la $ variabile topping nel mio codice PHP. 419 00:20:59,560 --> 00:21:03,700 Beh, se ho appena preso un ipotesi, printf, in realtà avrebbe funzionato. 420 00:21:03,700 --> 00:21:08,980 printf è una funzione che posso usare in PHP, proprio come posso usarlo in C. 421 00:21:08,980 --> 00:21:11,880 >> E così qualcosa di simile, printf, ancora una volta, siamo a conoscenza che. 422 00:21:11,880 --> 00:21:16,420 Il primo% s è sostituito con il valore di $ topping. 423 00:21:16,420 --> 00:21:19,700 Il secondo% s è sostituito con il valore di $ prezzo. 424 00:21:19,700 --> 00:21:22,630 E così sto interpellating, che è solo un modo elegante 425 00:21:22,630 --> 00:21:25,400 di dire sto attaccando la variabili in quella posizione. 426 00:21:25,400 --> 00:21:31,000 Così sto collegando $ topping dove il rosso% s è e $ prezzo in cui l'azzurro% s 427 00:21:31,000 --> 00:21:36,060 è, e quindi vorrei ottenere il messaggio, "Un intero pizza di formaggio costa $ 8,99." 428 00:21:36,060 --> 00:21:37,750 >> Non l'unico modo in cui posso farlo, però. 429 00:21:37,750 --> 00:21:39,760 Forse vorrei utilizzare questo metodo. 430 00:21:39,760 --> 00:21:44,890 Questo è in realtà ciò che è più comunemente chiamato interpellanza variabile. 431 00:21:44,890 --> 00:21:45,690 Posso usare un eco. 432 00:21:45,690 --> 00:21:47,737 Potrei usare una stampa troppo, come vedremo. 433 00:21:47,737 --> 00:21:48,820 Ma cosa sta succedendo qui? 434 00:21:48,820 --> 00:21:51,520 >> Prima di tutto, devo sfuggire il simbolo del dollaro. 435 00:21:51,520 --> 00:21:55,140 Perché ricordate, quando eravamo in realtà stampare i prezzi dei pizze, 436 00:21:55,140 --> 00:21:59,370 Mi è stato effettivamente li formattazione come cifre monetarie con il simbolo del dollaro. 437 00:21:59,370 --> 00:22:05,635 Ma stiamo usando il segno del dollaro anche per rappresentare i nomi delle variabili in PHP, 438 00:22:05,635 --> 00:22:08,010 in particolare quando sono utilizzando questo metodo di ricci 439 00:22:08,010 --> 00:22:10,040 variabile brace Metodo di interpellanza, ho bisogno 440 00:22:10,040 --> 00:22:13,490 per sfuggire il mio segno di dollaro in modo che non Penso che sto parlando di una variabile. 441 00:22:13,490 --> 00:22:16,920 Sta andando a realtà, letteralmente stampare il simbolo del dollaro. 442 00:22:16,920 --> 00:22:19,530 >> Quindi una sorta di analogize a quello che si vede alla fine c'è. 443 00:22:19,530 --> 00:22:22,832 In realtà non stampa backslash n, giusto? 444 00:22:22,832 --> 00:22:24,290 Esso stampa un carattere di nuova riga. 445 00:22:24,290 --> 00:22:26,750 Questo è-- non sta andando a stampa il simbolo del dollaro backslash, 446 00:22:26,750 --> 00:22:30,130 sta andando a stampare solo un personaggio simbolo del dollaro. 447 00:22:30,130 --> 00:22:30,640 Stessa idea. 448 00:22:30,640 --> 00:22:32,760 Sequenze di escape, cosa queste cose sono chiamate. 449 00:22:32,760 --> 00:22:37,080 >> Ma accorgo che non sto facendo qualsiasi tipo di sostituzioni% s, 450 00:22:37,080 --> 00:22:40,050 Sto solo letteralmente collegando in queste variabili. 451 00:22:40,050 --> 00:22:45,110 E così nel questo-- cosa sarebbe successo qui è che il valore di $ topping-- nuovo, 452 00:22:45,110 --> 00:22:48,390 solo linea con quello che abbiamo passato parlando di formaggio così far-- otterrebbe 453 00:22:48,390 --> 00:22:49,720 inserito in là. 454 00:22:49,720 --> 00:22:54,780 E $ prezzo sarebbe qualsiasi valore è a pizze, tra parentesi quadre, formaggio, 455 00:22:54,780 --> 00:22:56,270 che era 8.99. 456 00:22:56,270 --> 00:23:01,860 E così questo sarebbe anche stampare "Un intero pizza di formaggio costa $ 8,99." 457 00:23:01,860 --> 00:23:05,160 E come ho detto, potrei usare stampare qui invece di eco, 458 00:23:05,160 --> 00:23:08,040 e la funzionalità sia più o meno esattamente la stessa. 459 00:23:08,040 --> 00:23:09,660 Sarebbe stampare la stessa cosa. 460 00:23:09,660 --> 00:23:12,680 >> C'è un altro modo per farlo, e questo è un altro vantaggio 461 00:23:12,680 --> 00:23:14,710 PHP lavorare con le stringhe. 462 00:23:14,710 --> 00:23:17,130 Possiamo fare concatenazione di stringhe. 463 00:23:17,130 --> 00:23:19,660 Potremmo farlo in C, anche, utilizzando una funzione chiamata strcat, 464 00:23:19,660 --> 00:23:21,180 ma ancora una volta, abbiamo dovuto chiamare funzioni separate. 465 00:23:21,180 --> 00:23:22,640 E 'stato tutto questo casino per fare. 466 00:23:22,640 --> 00:23:24,590 Abbiamo dovuto libbra-includere string.h. 467 00:23:24,590 --> 00:23:25,780 E 'stata una produzione, vero? 468 00:23:25,780 --> 00:23:30,070 Ma ora posso solo usare questo operatore punto per concatenare le stringhe insieme. 469 00:23:30,070 --> 00:23:34,910 >> Così sto concatenare "Un intero" e quindi qualunque sia il valore di $ topping è, 470 00:23:34,910 --> 00:23:38,860 e poi un altro stringa, "pizza costa $" 471 00:23:38,860 --> 00:23:42,340 e poi concatenare qualunque il valore di $ il prezzo è, 472 00:23:42,340 --> 00:23:45,670 e poi alla fine sono virare su periodo backslash n. 473 00:23:45,670 --> 00:23:47,926 E così questo sarebbe anche stampare "Un intero" - ancora una volta, 474 00:23:47,926 --> 00:23:50,550 se stiamo parlando del primo elemento di tale pizze array-- 475 00:23:50,550 --> 00:23:54,710 "Un intero pizza di formaggio costa $ 8,99." 476 00:23:54,710 --> 00:24:01,260 Periodo, backslash n, ancora una volta, con il $ topping e $ prezzo sostituendo 477 00:24:01,260 --> 00:24:06,580 per quello che abbiamo indicato nel nostro foreach ciclo come la chiave coppia di valori di mappatura. 478 00:24:06,580 --> 00:24:08,050 >> PHP in grado di gestire le funzioni. 479 00:24:08,050 --> 00:24:11,250 Funzioni erano una specie di integrante C, come abbiamo visto. 480 00:24:11,250 --> 00:24:14,870 Come le variabili, non abbiamo bisogno di specificare il tipo di ritorno della funzione, 481 00:24:14,870 --> 00:24:16,350 perché non ha molta importanza. 482 00:24:16,350 --> 00:24:18,660 E non si specifica il tipi di dati di tutti i parametri, 483 00:24:18,660 --> 00:24:21,410 perché in realtà non la materia, come abbiamo visto in PHP. 484 00:24:21,410 --> 00:24:24,510 Viene introdotta Ogni funzione con la parola chiave function. 485 00:24:24,510 --> 00:24:27,920 Ecco come si indica a PHP che di cosa stiamo parlando è una funzione. 486 00:24:27,920 --> 00:24:29,720 >> E noi non dobbiamo affrontare principale affatto, 487 00:24:29,720 --> 00:24:33,690 perché l'interprete, il PHP interprete, lavora da cima a fondo, 488 00:24:33,690 --> 00:24:34,190 indipendentemente. 489 00:24:34,190 --> 00:24:35,640 Se vede si può fare una chiamata di funzione, sarà 490 00:24:35,640 --> 00:24:37,850 andare a trovare la chiamata di funzione, anche se viene successivamente. 491 00:24:37,850 --> 00:24:40,360 Ma sta andando a leggere da cima a fondo, quindi non abbiamo bisogno di specificare, 492 00:24:40,360 --> 00:24:41,500 qui è dove si inizia. 493 00:24:41,500 --> 00:24:46,700 Si inizia sulla linea 1 della vostra PHP e lavorare giù di lì. 494 00:24:46,700 --> 00:24:49,690 >> Quindi, ecco come si creerebbe una funzione chiamata hard_square. 495 00:24:49,690 --> 00:24:54,100 Ci vuole apparentemente uno parametro, che io chiamo $ x. 496 00:24:54,100 --> 00:24:58,424 Questa funzione è complicato solo per illustrare varie cose. 497 00:24:58,424 --> 00:24:59,590 Abbiamo ancora i valori di ritorno. 498 00:24:59,590 --> 00:25:00,870 Io sto usando un ciclo for qui. 499 00:25:00,870 --> 00:25:04,970 Ma è fondamentalmente solo, che cosa questo ammonta a è di soli $ x $ x volte. 500 00:25:04,970 --> 00:25:10,520 Quello che sto facendo è in realtà solo l'aggiunta di x 0 x volte o $ x a zero $ x volte. 501 00:25:10,520 --> 00:25:15,850 Ma è esattamente il modo efficace equivale a moltiplicare x volte $ $ x. 502 00:25:15,850 --> 00:25:18,700 Posso ancora restituire un valore, in questo caso $ risultato, 503 00:25:18,700 --> 00:25:22,060 e ho fatto una funzione in PHP. 504 00:25:22,060 --> 00:25:24,160 >> Ecco come si potrebbe utilizzare nel contesto. 505 00:25:24,160 --> 00:25:26,020 Così forse sono all'interno di alcuni file PHP. 506 00:25:26,020 --> 00:25:29,240 Notate in blu là che Ho usato i miei delimitatori PHP, 507 00:25:29,240 --> 00:25:31,010 parentesi angolare punto interrogativo php. 508 00:25:31,010 --> 00:25:35,180 Tra quelli sono tutti il PHP che voglio scrivere. 509 00:25:35,180 --> 00:25:37,840 Così sto evidentemente intenzione di get-- Ho intenzione di richiedere all'utente 510 00:25:37,840 --> 00:25:41,550 di darmi un numero, negozio che variabili, conservare in quella variabile $ x, 511 00:25:41,550 --> 00:25:43,320 qualunque cosa mi hanno dato. 512 00:25:43,320 --> 00:25:48,590 Poi ho intenzione di eco hard_square di tale valore, 513 00:25:48,590 --> 00:25:50,370 ea quanto pare andare a virare su una nuova linea 514 00:25:50,370 --> 00:25:53,590 come pure, e poi più tardi in poi definire la funzione hard_square così 515 00:25:53,590 --> 00:25:55,550 che quando faccio la chiamata a hard_square, 516 00:25:55,550 --> 00:25:58,160 sa di cosa sto parlando. 517 00:25:58,160 --> 00:26:00,705 >> Ora, potrei anche fare qualcosa come questo. 518 00:26:00,705 --> 00:26:02,050 Questo è leggermente diverso. 519 00:26:02,050 --> 00:26:04,190 E 'quasi esattamente la stesso di quello che abbiamo visto prima, 520 00:26:04,190 --> 00:26:08,400 tranne che invece di dire solo $ x lì come parametro per hard_square, 521 00:26:08,400 --> 00:26:11,730 Sto dicendo $ x = 10. 522 00:26:11,730 --> 00:26:14,330 Quindi questo è un esempio di programmazione difensiva, 523 00:26:14,330 --> 00:26:17,070 custodire i tuoi programmi contro utenti malintenzionati. 524 00:26:17,070 --> 00:26:20,020 >> Questo è un modo di fare qualche errore verificare che non abbiamo davvero 525 00:26:20,020 --> 00:26:24,670 avere come opzione in C. Si potrebbe mai specificare il valore di default di qualcosa. 526 00:26:24,670 --> 00:26:27,010 Abbiamo sempre dovuto controllare se il, per esempio, 527 00:26:27,010 --> 00:26:30,820 se abbiamo fatto una chiamata a GetString, era più adatto se subito dopo 528 00:26:30,820 --> 00:26:33,300 verificato che, abbiamo controllato se la stringa 529 00:26:33,300 --> 00:26:35,504 che l'utente ha dato non è uguale a null, 530 00:26:35,504 --> 00:26:37,920 perché non vogliamo iniziare lavorando con una stringa nulla. 531 00:26:37,920 --> 00:26:39,670 >> Qui, questo è un modo per premunirsi contro questo. 532 00:26:39,670 --> 00:26:43,480 Se l'utente non ci fornisce qualcosa in qualche modo, ciò che abbiamo intenzione di fare? 533 00:26:43,480 --> 00:26:46,080 Beh, ci limiteremo a dire qualunque cosa essi non hanno fornito noi, 534 00:26:46,080 --> 00:26:47,705 stiamo solo andando a collegare 10 invece. 535 00:26:47,705 --> 00:26:52,030 Quindi, se non ci hanno dato un valore, basta usare 10 per impostazione predefinita. Ed ecco, 536 00:26:52,030 --> 00:26:53,940 Noto che sto facendo una chiamata a hard_square, 537 00:26:53,940 --> 00:26:55,980 ma non c'è alcuna richiesta all'utente, giusto? 538 00:26:55,980 --> 00:26:57,540 Sto solo facendo una chiamata vuoto. 539 00:26:57,540 --> 00:27:00,860 >> Ma la mia funzione hard_square si aspetta un parametro. 540 00:27:00,860 --> 00:27:02,222 Che cosa è questa intenzione di stampare? 541 00:27:02,222 --> 00:27:03,680 Sta andando a stampare 100, giusto? 542 00:27:03,680 --> 00:27:05,720 Poiché l'utente non ha darmi nulla. 543 00:27:05,720 --> 00:27:08,970 E così sto solo intenzione di assumere che 10-- 10 è il valore predefinito. 544 00:27:08,970 --> 00:27:13,760 E così questo sarebbe stampare il 100 su una riga. 545 00:27:13,760 --> 00:27:16,390 >> File PHP non devono essere solo un singolo file. 546 00:27:16,390 --> 00:27:19,480 È possibile combinare più file insieme, proprio come è possibile in C. Il modo 547 00:27:19,480 --> 00:27:24,330 abbiamo fatto in C era tipicamente di fare un #include per ottenere file di intestazione tirato in. 548 00:27:24,330 --> 00:27:26,180 Noi non facciamo che in PHP. 549 00:27:26,180 --> 00:27:29,110 Facciamo qualcosa chiamato require_once. 550 00:27:29,110 --> 00:27:33,360 E poi c'è tutta questa cosa, che cosa è questo __dir__? 551 00:27:33,360 --> 00:27:36,510 Questo è solo uno speciale variabile o costante speciale, 552 00:27:36,510 --> 00:27:39,030 davvero, che specifica che cosa la directory corrente è. 553 00:27:39,030 --> 00:27:41,320 E così sta andando a guardare nella directory corrente 554 00:27:41,320 --> 00:27:44,900 un file chiamato cs50.php in questo esempio qui, 555 00:27:44,900 --> 00:27:50,490 e sta andando a bastone quel file nella parte superiore del vostro programma PHP, 556 00:27:50,490 --> 00:27:56,980 supponendo che si mette la richiedono una volta che la linea nella parte superiore del vostro file PHP. 557 00:27:56,980 --> 00:28:01,474 >> Così PHP è utilizzato principalmente, ma non esclusivamente, 558 00:28:01,474 --> 00:28:03,140 come un linguaggio di programmazione web-based. 559 00:28:03,140 --> 00:28:05,270 Questo è davvero come è venuto essere. 560 00:28:05,270 --> 00:28:06,980 Ma è un pieno il linguaggio, come abbiamo visto. 561 00:28:06,980 --> 00:28:10,105 Abbiamo visto praticamente tutte le cose che può fare che sono simili a C, 562 00:28:10,105 --> 00:28:13,290 e si può fare un mucchio di molto più di questo. 563 00:28:13,290 --> 00:28:16,950 >> Ma perché è un linguaggio pieno e abbiamo può fare programmazione riga di comando in esso. 564 00:28:16,950 --> 00:28:18,630 Siamo in grado di eseguire programmi da linea di comando. 565 00:28:18,630 --> 00:28:22,580 Tutto ciò che è necessario per eseguire un comando programma di linea che è scritto in PHP 566 00:28:22,580 --> 00:28:24,260 è che avete un interprete PHP. 567 00:28:24,260 --> 00:28:27,460 Quindi è una sorta di analogo a avere un compilatore sul vostro sistema 568 00:28:27,460 --> 00:28:31,100 se si desidera compilare il codice C per trasformarlo in file eseguibili. 569 00:28:31,100 --> 00:28:33,810 È necessario disporre di un interprete PHP che esiste sul vostro sistema 570 00:28:33,810 --> 00:28:37,330 in modo da poter interpretare i file PHP. 571 00:28:37,330 --> 00:28:40,370 >> Dando per scontato che non, e di solito questo interprete è chiamato PHP, 572 00:28:40,370 --> 00:28:44,300 e di solito è in bundle con la maggior parte download o installazioni di PHP 573 00:28:44,300 --> 00:28:47,430 che è possibile ottenere on-line, e di certo il nome dell'interprete PHP 574 00:28:47,430 --> 00:28:49,550 abbiamo in CS50, IDE. 575 00:28:49,550 --> 00:28:51,819 Tutto ciò che fai è file php tipo. 576 00:28:51,819 --> 00:28:53,610 E che cosa il vostro programma di intenzione di fare è che è 577 00:28:53,610 --> 00:28:55,360 andando a correre attraverso l'interprete, è 578 00:28:55,360 --> 00:28:58,040 intenzione di ignorare tutto ciò che è non tra domanda mark-- 579 00:28:58,040 --> 00:29:03,160 o, parentesi angolare punto interrogativo php, i delimitatori PHP, e stamparlo, 580 00:29:03,160 --> 00:29:07,660 e sarà interpretare ed eseguire la codice all'interno dei vostri delimitatori PHP. 581 00:29:07,660 --> 00:29:12,850 >> Quindi cerchiamo di andare su un CS50 IDE e dare un'occhiata a un paio di file PHP, 582 00:29:12,850 --> 00:29:19,850 l'esecuzione di un paio di file PHP, in Command Line Interface di CS50 IDE. 583 00:29:19,850 --> 00:29:22,100 Quindi, qui siamo in CS50 IDE, e mi sono preso la libertà 584 00:29:22,100 --> 00:29:25,800 di aprire un file chiamato hello1.php. 585 00:29:25,800 --> 00:29:29,920 E a quanto pare, i contenuti di questo File sono solo i delimitatori PHP lì, 586 00:29:29,920 --> 00:29:32,220 e in mezzo, echo ("ciao, mondo"). 587 00:29:32,220 --> 00:29:34,710 Questo è un molto semplice programma PHP. 588 00:29:34,710 --> 00:29:37,670 Sto solo andando a scorrere verso il basso alla mia finestra di terminale qui, 589 00:29:37,670 --> 00:29:44,320 e ho intenzione di scrivere php hello1.php, premere invio. 590 00:29:44,320 --> 00:29:44,950 Ciao mondo. 591 00:29:44,950 --> 00:29:48,110 Questo è probabilmente ciò che siamo stati mi aspettavo di fare, giusto? 592 00:29:48,110 --> 00:29:51,140 >> Saliamo e prendere un altro sguardo a un programma. 593 00:29:51,140 --> 00:29:52,924 hello2.php. 594 00:29:52,924 --> 00:29:55,090 Praticamente la stessa cosa, Non un sacco di cose qui. 595 00:29:55,090 --> 00:29:57,190 Questa volta, però, ho intenzione di richiedere l'utente di darmi i loro nomi. 596 00:29:57,190 --> 00:29:59,290 Sto usando ancora una volta che la funzione readline. 597 00:29:59,290 --> 00:30:01,340 $ name = readline. 598 00:30:01,340 --> 00:30:03,070 Questo è il messaggio, "Qual è il tuo nome?" 599 00:30:03,070 --> 00:30:04,880 >> A quanto pare sono stampa sulla propria linea. 600 00:30:04,880 --> 00:30:07,220 E poi, in modo che la linea sotto che sarà la richiesta 601 00:30:07,220 --> 00:30:08,750 dove l'utente può inserire il proprio nome. 602 00:30:08,750 --> 00:30:12,030 E poi sto usando un po 'di interpellanza variabile qui sulla linea 3 603 00:30:12,030 --> 00:30:14,780 stampare "Ciao" e qualunque sia l'utente. 604 00:30:14,780 --> 00:30:22,040 Quindi questo è analogo a dire, Ciao, virgola,% s se stessimo usando printf in C. 605 00:30:22,040 --> 00:30:24,910 >> Così andiamo e interpretare questo programma. 606 00:30:24,910 --> 00:30:27,400 Così ancora una volta, farò scorrere verso il basso alla mia finestra di terminale. 607 00:30:27,400 --> 00:30:29,070 php hello2.php. 608 00:30:29,070 --> 00:30:31,920 609 00:30:31,920 --> 00:30:33,820 Come ti chiami? 610 00:30:33,820 --> 00:30:35,490 Doug. 611 00:30:35,490 --> 00:30:36,526 Ciao, Doug. 612 00:30:36,526 --> 00:30:39,440 Ho anche un altro file chiamato hello3.php. 613 00:30:39,440 --> 00:30:42,850 Ho intenzione di cancellare la mia schermo con comandi L, 614 00:30:42,850 --> 00:30:46,210 e ho intenzione di eseguire tale. 615 00:30:46,210 --> 00:30:47,640 Come ti chiami? 616 00:30:47,640 --> 00:30:49,020 Doug. 617 00:30:49,020 --> 00:30:49,780 Ciao, Doug. 618 00:30:49,780 --> 00:30:56,540 Quindi il comportamento è identico a hello2.php, ma perché è hello3.php? 619 00:30:56,540 --> 00:30:58,040 >> Bene, ecco la differenza. 620 00:30:58,040 --> 00:31:00,620 In questo caso, avviso che sulla linea 1 qui, 621 00:31:00,620 --> 00:31:04,270 Ho qualcosa che non è tra i delimitatori PHP. 622 00:31:04,270 --> 00:31:07,760 Sto solo la stampa fuori-- o io appena digitato: "Come ti chiami?" 623 00:31:07,760 --> 00:31:12,060 Quando l'interprete PHP vede questo, ha idea di come interpretarla come PHP, 624 00:31:12,060 --> 00:31:15,060 e così, invece di fallire, è solo andare a sputare. 625 00:31:15,060 --> 00:31:19,010 >> Così notare sulla linea 3 ora, il mio invito a readline, non c'è più alcun messaggio. 626 00:31:19,010 --> 00:31:21,750 Sto solo effettivamente andando a-- quando l'interprete PHP vede questo, 627 00:31:21,750 --> 00:31:23,400 sta andando a stampare "Come ti chiami?" 628 00:31:23,400 --> 00:31:25,941 Poi vede, oh, OK, here's-- tutto il resto sarà 629 00:31:25,941 --> 00:31:29,970 interpretato come PHP, così ecco perché questo funziona. 630 00:31:29,970 --> 00:31:34,990 Non ho per richiedere necessariamente il a-- dell'utente all'interno di readline, 631 00:31:34,990 --> 00:31:37,490 Posso solo avere fuori dei delimitatori di PHP 632 00:31:37,490 --> 00:31:41,490 e consentire l'interprete stampare appena fuori per me. 633 00:31:41,490 --> 00:31:45,364 >> Quindi in realtà non hanno solo di avere un set di delimitatori di PHP 634 00:31:45,364 --> 00:31:46,030 nel vostro programma. 635 00:31:46,030 --> 00:31:49,887 Si può effettivamente avere molti di loro, apertura e chiusura secondo necessità. 636 00:31:49,887 --> 00:31:51,720 Quindi, diamo uno sguardo un paio di programmi 637 00:31:51,720 --> 00:31:55,070 in CS50 IDE dove siamo illustrare questa idea di avere 638 00:31:55,070 --> 00:31:58,376 più set di PHP delimitati. 639 00:31:58,376 --> 00:32:02,010 >> OK, così ho aperto un file qui chiamato add1.php. 640 00:32:02,010 --> 00:32:03,390 E notare quello che sta succedendo qui. 641 00:32:03,390 --> 00:32:08,077 Proprio come prima, ho un PHP singolo set di delimitatori. 642 00:32:08,077 --> 00:32:10,660 Ho intenzione di stampare il il messaggio, "Per favore, dammi un numero." 643 00:32:10,660 --> 00:32:13,394 Poi ho intenzione di leggere una riga e memorizzarlo nella $ num1 variabile. 644 00:32:13,394 --> 00:32:14,810 Poi vado a stampare di nuovo. 645 00:32:14,810 --> 00:32:16,310 Dammi un secondo numero. 646 00:32:16,310 --> 00:32:20,450 Leggere una linea da parte dell'utente, negozio quello che digitato in $ num2. 647 00:32:20,450 --> 00:32:23,980 Aggiungi insieme e conservare che provocare una variabile denominata $ sum, 648 00:32:23,980 --> 00:32:26,180 e poi stampare, "The somma di questi due numeri 649 00:32:26,180 --> 00:32:29,254 è ", e poi interpellare c'è il $ somma variabile. 650 00:32:29,254 --> 00:32:31,170 Così facciamo solo eseguire questo attraverso l'interprete 651 00:32:31,170 --> 00:32:33,720 per confermare che questo è quello che ci aspettiamo. 652 00:32:33,720 --> 00:32:37,540 php add1.php. 653 00:32:37,540 --> 00:32:38,665 Per favore mi dia un numero, 3. 654 00:32:38,665 --> 00:32:40,410 Per favore mi dia un secondo numero, 4. 655 00:32:40,410 --> 00:32:43,370 La somma di questi due numeri è 7. 656 00:32:43,370 --> 00:32:45,030 Ecco 3 più 4. 657 00:32:45,030 --> 00:32:45,530 ok? 658 00:32:45,530 --> 00:32:47,770 Quindi niente di terribilmente fantasia lì. 659 00:32:47,770 --> 00:32:51,080 >> E adesso aprono add2.php. 660 00:32:51,080 --> 00:32:54,460 Qui, ho un paio di PHP delimitato set lì, giusto? 661 00:32:54,460 --> 00:32:59,107 Linee 1, 3-- linee 1 e 3 non hanno delimitatori PHP. 662 00:32:59,107 --> 00:33:00,940 Così, quando l'interprete li vede, è solo 663 00:33:00,940 --> 00:33:03,220 andando a sputare fuori esattamente quello che ho digitato lì. 664 00:33:03,220 --> 00:33:05,011 Ecco dove sono facendo tutto il mio suggerimento. 665 00:33:05,011 --> 00:33:11,220 Sulle linee 2 e 4, vediamo il molto $ familiare? php sorta di delimitatori, 666 00:33:11,220 --> 00:33:15,210 così queste due linee sono andare per eseguire PHP. 667 00:33:15,210 --> 00:33:18,270 E poi sulla linea 5, ho questo cosa strana qui, giusto? 668 00:33:18,270 --> 00:33:20,480 Questa parentesi angolare punto interrogativo segno di uguale. 669 00:33:20,480 --> 00:33:22,660 Sarò anche lo zoom in un po 'più avanti. 670 00:33:22,660 --> 00:33:29,270 Si può vedere questo è quello che sto parlando proprio lì, questo $? =. 671 00:33:29,270 --> 00:33:33,420 >> Si scopre che è così comune che la ragione per cui apriamo una serie di PHP 672 00:33:33,420 --> 00:33:36,055 delimitatori è per stampare un valore. 673 00:33:36,055 --> 00:33:37,430 E questo è tutto quello che andremo a fare. 674 00:33:37,430 --> 00:33:39,220 Ma c'è anche una scorciatoia per questo. 675 00:33:39,220 --> 00:33:46,490 $? = È PHP stenografia per dire qualcosa come $? php echo la somma 676 00:33:46,490 --> 00:33:48,350 di num1 e num2. 677 00:33:48,350 --> 00:33:51,900 Quindi questo è solo un altro scorciatoia per questo. 678 00:33:51,900 --> 00:33:55,550 >> Quindi, se corro questo programma, php add2.php. 679 00:33:55,550 --> 00:33:57,530 Io lo zoom giù un po '. 680 00:33:57,530 --> 00:33:59,000 Per favore mi dia un numero, 4. 681 00:33:59,000 --> 00:34:00,350 Per favore mi dia un secondo numero. 682 00:34:00,350 --> 00:34:04,650 E siccome io non mi preoccupo tipi di dati in PHP, posso dire 4.8. 683 00:34:04,650 --> 00:34:07,160 La somma di questi due numeri è 8.8. 684 00:34:07,160 --> 00:34:10,179 Tale funzione si comporta in modo più o meno esattamente come ci si aspetterebbe, 685 00:34:10,179 --> 00:34:10,989 anche. 686 00:34:10,989 --> 00:34:13,114 E ho un altro aperto qui chiamato dice.php. 687 00:34:13,114 --> 00:34:25,625 688 00:34:25,625 --> 00:34:26,250 Prova di nuovo. 689 00:34:26,250 --> 00:34:29,429 690 00:34:29,429 --> 00:34:33,280 Ho un altro qui chiamato dice1.php, che anche, vedere, 691 00:34:33,280 --> 00:34:37,440 ha quella domanda parentesi angolare contrassegnare notazione segno di uguale in là, 692 00:34:37,440 --> 00:34:40,659 a meno di notare che in questo caso sono chiamando la funzione rand, che come 693 00:34:40,659 --> 00:34:42,790 potrebbe aspettare genera un numero casuale. 694 00:34:42,790 --> 00:34:46,889 "Tu rotolato a", e sta andando a calcolare alcuni numeri casuali, mod 6 + 695 00:34:46,889 --> 00:34:47,389 1. 696 00:34:47,389 --> 00:34:49,989 In modo che mi darò numero nell'intervallo da 1 a 6. 697 00:34:49,989 --> 00:34:53,040 >> Ricorda che mod 6 mi avrebbe dato un numero compreso da 0 a 5, 698 00:34:53,040 --> 00:34:56,630 ma se sto simulando tiri di dado, che è quello che sto facendo qui, 699 00:34:56,630 --> 00:35:00,040 Non voglio questi dadi per passare da 0 a 5, voglio dadi che vanno da 1 a 6. 700 00:35:00,040 --> 00:35:02,800 E quindi questo è un modo per ottenere me nella gamma da 1 a 6. 701 00:35:02,800 --> 00:35:04,720 Lo sto facendo due volte. 702 00:35:04,720 --> 00:35:08,630 Quindi, apparentemente sto rotolando due dadi di questo programma. 703 00:35:08,630 --> 00:35:15,210 >> Quindi io cancellare il mio schermo, e farò php dice1.php. 704 00:35:15,210 --> 00:35:16,640 È rotolato un 4 e un 2. 705 00:35:16,640 --> 00:35:19,156 E se corro il programma ancora una volta, è rotolato un 5 e un 5. 706 00:35:19,156 --> 00:35:21,780 Così ogni volta che faccio funzionare il programma, Sto diventando numeri diversi, 707 00:35:21,780 --> 00:35:24,280 perché ogni volta che lo faccio così, sta ricominciando. 708 00:35:24,280 --> 00:35:27,250 Sta andando a generare una nuova set di numeri casuali per me. 709 00:35:27,250 --> 00:35:29,790 >> Quindi, se siamo abituati a l'esecuzione di programmi da C, 710 00:35:29,790 --> 00:35:32,520 siamo abituati a digitare il ./ il nome di un programma, giusto? 711 00:35:32,520 --> 00:35:35,090 È così che abbiamo fatto tutti dei nostri programmi in C finora. 712 00:35:35,090 --> 00:35:37,555 Possiamo farlo in PHP pure con l'aggiunta di qualcosa chiamato 713 00:35:37,555 --> 00:35:40,026 un shebang alla cima del nostro file PHP. 714 00:35:40,026 --> 00:35:41,400 So che è una specie di una parola stupida. 715 00:35:41,400 --> 00:35:44,540 E 'l'abbreviazione di hash botto. 716 00:35:44,540 --> 00:35:46,300 Ecco i primi due caratteri lì. 717 00:35:46,300 --> 00:35:50,030 Ricordate che noi chiamiamo punto esclamativo spesso un botto in informatica. 718 00:35:50,030 --> 00:35:51,690 Potrebbe anche essere per colpo secco. 719 00:35:51,690 --> 00:35:53,273 Ci sono un paio di modi di interpretarlo. 720 00:35:53,273 --> 00:35:57,320 Ma è fondamentalmente una sorta speciale di comandare che l'interprete PHP 721 00:35:57,320 --> 00:36:00,160 capisce come, oh, voglio di eseguire questo programma, 722 00:36:00,160 --> 00:36:05,250 che è evidentemente / user / bin / php, che è in realtà dove l'interprete PHP 723 00:36:05,250 --> 00:36:08,590 vive in particolare sul nostro sistema. 724 00:36:08,590 --> 00:36:12,530 Così it's-- cosa succede qui è l'interprete capisce, oh, 725 00:36:12,530 --> 00:36:17,270 Sono apparentemente dovrei usare in questo programma per eseguire questo file. 726 00:36:17,270 --> 00:36:20,010 E così ti permette per saltare il passo 727 00:36:20,010 --> 00:36:22,979 di dover dire php something.php. 728 00:36:22,979 --> 00:36:25,020 C'è un'altra cattura qui, che è che se 729 00:36:25,020 --> 00:36:27,320 vogliamo che i nostri programmi alle funzionare come previsto, abbiamo 730 00:36:27,320 --> 00:36:30,220 bisogno di fare qualcosa chiamato un cambiamento di autorizzazione file. 731 00:36:30,220 --> 00:36:33,380 E noi go-- e parliamo un po ' bit più modifiche di autorizzazione sui file 732 00:36:33,380 --> 00:36:37,550 nel nostro video su MVC, ma è sufficiente dire che questo è ciò che devi fare 733 00:36:37,550 --> 00:36:42,760 al fine di rendere il vostro file .php eseguibile. 734 00:36:42,760 --> 00:36:49,330 Quindi, diamo uno sguardo a questo come il nostro ultimo esempio sopra in CS50 IDE. 735 00:36:49,330 --> 00:36:53,910 >> Così qui in IDE ho due file in questa Directory PHP che sembrano non essere 736 00:36:53,910 --> 00:36:55,310 chiamato .php. 737 00:36:55,310 --> 00:36:58,170 Ho una funzione chiamata add-- Ho un file chiamato add3 738 00:36:58,170 --> 00:37:00,650 e un file denominato dice2. 739 00:37:00,650 --> 00:37:03,680 Quindi facciamo un rapido cercare e aprire add3. 740 00:37:03,680 --> 00:37:08,300 E come si può vedere, all'inizio del mio file ho questa faccenda, giusto? 741 00:37:08,300 --> 00:37:11,420 Questo punto hash punto esclamativo. 742 00:37:11,420 --> 00:37:15,115 Ora, potrai anche forse notare che per qualche ragione, 743 00:37:15,115 --> 00:37:16,990 Non ho alcuna sintassi mettendo in evidenza più, 744 00:37:16,990 --> 00:37:20,198 e questo è quello che ho accennato in precedenza, che era che se io non nomino il mio file 745 00:37:20,198 --> 00:37:23,040 .php, non ho il vantaggio di evidenziazione della sintassi più. 746 00:37:23,040 --> 00:37:26,220 Questo file è appena chiamato add3. 747 00:37:26,220 --> 00:37:30,960 In modo che possa funzionare in un secondo momento con ./ add3 e non ./ add3.php. 748 00:37:30,960 --> 00:37:33,680 >> Così il reason-- è ancora bene, è ancora valida PHP, 749 00:37:33,680 --> 00:37:37,000 ma non è la sintassi evidenziata, perché questo file non viene chiamato something.php. 750 00:37:37,000 --> 00:37:41,580 Questa è l'unica vera differenza qui, oltre alla faccenda. 751 00:37:41,580 --> 00:37:45,170 Quindi vediamo cosa succede quando Io cerco di eseguire questo programma. 752 00:37:45,170 --> 00:37:50,780 ./ Add3, proprio come farebbe con C. Bash. 753 00:37:50,780 --> 00:37:53,190 ./ Permesso add3 negato. 754 00:37:53,190 --> 00:37:55,390 Questo è ciò che si sta andando per vedere se si dimentica 755 00:37:55,390 --> 00:37:59,280 utilizzare il comando chmod per cambiare i permessi del file. 756 00:37:59,280 --> 00:38:03,845 >> Come si è visto, PHP regolare file non possono solo essere eseguiti. 757 00:38:03,845 --> 00:38:06,970 Essi possono essere interpretati, ma siamo fare qualcosa di un po 'diverso qui. 758 00:38:06,970 --> 00:38:07,761 Stiamo eseguirlo. 759 00:38:07,761 --> 00:38:12,970 E così ho bisogno di aggiungere l'autorizzazione di esecuzione, chmod a + x per add3. 760 00:38:12,970 --> 00:38:15,680 Allora posso dire ./ add3. 761 00:38:15,680 --> 00:38:16,860 Per favore mi dia un numero. 762 00:38:16,860 --> 00:38:18,060 5, 6. 763 00:38:18,060 --> 00:38:20,490 La somma di questi due numeri è 11. 764 00:38:20,490 --> 00:38:26,530 >> Allo stesso modo, ho già permessi CHMOD dice2, così posso semplicemente digitare ./ dice2, 765 00:38:26,530 --> 00:38:31,260 hai ottenuto un 1 e un 1, è laminati a 5 e 4, e così via. 766 00:38:31,260 --> 00:38:33,680 >> Ecco, questo è più o meno la idea di una sintassi di PHP, giusto? 767 00:38:33,680 --> 00:38:35,221 C'è un sacco di passare, lo so. 768 00:38:35,221 --> 00:38:39,160 Ma si spera che avete visto ora che il PHP non è poi così diverso da C 769 00:38:39,160 --> 00:38:43,670 e davvero ci dà la capacità di prendere le cose su una tacca o due. 770 00:38:43,670 --> 00:38:48,230 Non abbiamo davvero da preoccuparsi troppo about-- non lo facciamo davvero 771 00:38:48,230 --> 00:38:51,605 devono preoccuparsi troppo di i dettagli di basso livello noi 772 00:38:51,605 --> 00:38:52,980 ha dovuto preoccuparsi di C, giusto? 773 00:38:52,980 --> 00:38:56,170 Siamo in grado di concentrarsi sul più alto roba livello PHP 774 00:38:56,170 --> 00:39:01,090 ci permette di fare e di prendere per concesso che lavorerà per noi. 775 00:39:01,090 --> 00:39:04,350 Così ci dà la possibilità ora, transizione da C a PHP, 776 00:39:04,350 --> 00:39:08,280 per rendere i programmi che sono molto di più complessa e forse molto più robusto. 777 00:39:08,280 --> 00:39:13,070 >> Quindi spero che vi divertiate lavoro con PHP, e sono Doug Lloyd. 778 00:39:13,070 --> 00:39:15,050 Questo è CS50. 779 00:39:15,050 --> 00:39:17,637