[Powered by Google Translate] [Sezione 8] [meno confortevole] [Nate Hardison] [Harvard University] [Questo è CS50.] [CS50.TV] Benvenuti nel nostro secondo per ultima sezione. In questa settimana andremo a parlare di PHP, e poi la prossima settimana faremo una piccola recensione per Quiz 1. Stiamo per iniziare a pagina 3 del problema set pack, e lavoreremo attraverso la sezione di domande abbastanza rapidamente. A pagina 3, si comincia a parlare di questa differenza tra C e PHP nel senso che PHP è un linguaggio tipizzato in modo dinamico, mentre C è staticamente tipizzato, e qualcuno ha fatto molto in fretta alcuna codifica in qualcosa di simile a PHP o Python o Ruby prima, JavaScript? Completamente nuovo? Va bene. Tutte queste lingue che ho appena menzionato sono molto diverse da linguaggi come C e C + + e Java nel senso che quando si dichiara una variabile che non è necessario dichiarare che tipo di variabile è, quindi in C siamo rimasti bloccati dover dire sempre questa sarà una variabile int, o questo sta andando essere una variabile char *, mentre con PHP, con Python, con Ruby, con un sacco di queste lingue più moderne non hanno a che fare a tutti. Devi solo dichiarare la variabile, e nel caso di PHP si dichiara che si tratta di una variabile facendo precedere con un simbolo $, e quindi il tipo di variabile è determinata da qualsiasi valore in mano, che è genere di freddo. Per giocare con questo un po ', abbiamo esempio di codice PHP proprio qui tra i tag di inizio e di fine. Stiamo usando questo tipo di come l'HTML, nel senso che abbiamo queste parentesi angolari qui per aprire e chiudere. Vedrai questo con HTML. Vedrete lo stesso tipo di sintassi con XML troppo. Questo indica l'inizio di un blocco PHP. Questo? Php è specifico per PHP. Chiudiamo il tutto con un> pure. Apriamo un file nel nostro apparecchio con quello che vuoi. In questo pacchetto si dice di chiamare dynamic.php. In verità, si può chiamare quello che vuoi, ma il nome del file verrà su e di essere importante più avanti, quindi basta ricordare come lo vogliate chiamare. Ho intenzione di passare al l'apparecchio, e ho intenzione di fare una directory per sezione 9 Credo che siamo in ora. E andremo nella sezione 9, e ho intenzione di usare gedit. Vediamo, gedit, e ho intenzione di chiamare dynamic.php mia. Boom. All'interno dynamic.php, dal momento che si tratta di un file PHP e voglio eseguire questo attraverso l'interprete PHP Ho bisogno di ricominciare tutto fuori con questi tag aperti, così ho intenzione di iniziare quelli subito, darmi un po 'di spazio tra i tag, e poi il punto di questo esercizio era quello di giocare con questa funzione chiamata gettype, così gettype, questa funzione proprio qui. Si noti che non vi è alcuna sottolineatura o spazio o un trattino o qualcosa di simile separando le 2 parole, ottenere e digitare, una sola parola tutto. Ma ciò che questo farà è se passare una variabile a gettype, ad esempio $ var o $ x, questo mi dice tipo di in un formato di debug ciò che il nome di quel tipo è. Stiamo andando a sperimentare qui. In particolare, se si guarda indietro alla spec pset abbiamo poche righe di codice diverse qui. Nella prima riga di codice che inizializza questa variabile, $ var, essere uguale a 7, quindi abbiamo questa linea printf che dice: hey, var printf è vuoto. Printf è uno dei molti modi si può stampare le cose in PHP. Spesso vedrete la funzione eco usato al posto di printf, printf ma siamo tutti a conoscenza essendo stata la codifica in C per un po '. Che cosa si può effettivamente fare è lasciare a vedere se le opere di copia e incolla. Ho intenzione di dare questo una prova. Torneremo verso l'apparecchio. Va bene, e ci siamo. E spaziatura è un po 'eccentrico, ma qui andiamo. Abbiamo questo codice qui. [Studente] E 'lo stile non va bene alla scheda è? Scusa? [Studente] E 'convenzionale alla scheda è? Giusto, quindi Sam chiede se è convenzione alla scheda o meno. In genere sì. In questo caso ho scelto di non farlo. Onestamente, vedrete cose diverse tra i programmatori diversi. PHP è in genere utilizzato spesso in combinazione con HTML e in altre lingue, e così a volte la stampa sarà un po 'eccentrico se si trattino entro inizio PHP e tag di chiusura. Dipende. In questo caso il copia e incolla non incollare le schede per me, ma sicuramente si, come hai detto tu, renderlo più chiaro. Va bene, se si salva il codice in dynamic.php allora cosa si può fare è scendere a finestra del terminale dove mi trovo qui in gedit, e di fare l'equivalente di compilazione usando make e poi esegue il codice in C tutto quello che hanno a che fare con il file PHP è avviare l'interprete PHP, che è un piccolo programma chiamato PHP, e l'argomento ti danno per l'interprete è il file che si desidera interpretare. In questo caso, dynamic.php. Ops, dove l'ho messo? Oh, l'ho messo nella sezione 9, ed eccomi qui. Ecco perché. Ora, se faccio funzionare di nuovo si vede che nella mia prima chiamata funzione gettype var è un numero intero. Nella prossima var è una stringa, e poi nel terzo var è un valore booleano. La cosa interessante di questo è che se ci scorrere verso l'alto si vede che questi sono tipi simili a quelli che abbiamo avuto in C. Abbiamo avuto interi in C. Abbiamo avuto una sorta di stringhe in C, così stringhe non erano un tipo completamente legit nel senso che la nostra stringa CS50 era proprio quello? Scusa? Missy? [Missy] Char *. Sì, è stato questo char * abbiamo usato. All'inizio del semestre siamo stati con il tipo di stringa, ma era davvero un char * sotto il cofano. Abbiamo appena tipo definita, mentre in PHP queste stringhe sono un tipo effettivo. Non c'è più nulla di questa roba tipo char *. Vedrai che possiamo fare tante altre cose con le stringhe molto più facilmente in PHP di quanto si potrebbe in C, e poi finalmente, abbiamo questo tipo booleano, e la grande differenza qui è che se si scorre indietro vediamo che il nome di questi tipi ora sono integer, string, boolean e invece di, int e bool e come si prende in mano diversi linguaggi di programmazione, partendo dal presupposto che a un certo punto nella vostra vita si entrerà in contatto con quelle diverse noterete piccoli capricci come questo dove C chiama interi interi. Alcuni lo chiamano numeri interi. Ci sono altri termini che si incorrerà in. Int Big abbiamo visto oggi in SQL. Ci sono anche un numero, quindi bool, boolean, tutti i tipi di differenze lì. Questo non è molto interessante, ma ora ho intenzione di darvi un po 'di tempo- se lo zoom indietro a lavorare con questo esercizio in fondo alla pagina 3 dove si chiede che tipo corrispondono a questi valori qui in basso. Abbiamo 3.50. Noi abbiamo questa cosa qui, che è interessante. Non abbiamo mai visto prima, ma se avete seguito lungo in conferenza probabilmente già sapete di cosa si tratta. Poi abbiamo questo, che questo è una specie di funky. Riconosci questo. Che cosa è questo in C? Sam? Quale sarebbe questo vi darà in C? Sarebbe aprire un file chiamato dynamic.php e renderlo leggibile. Gia ', e quale sarebbe il tipo di variabile che si assegnerebbe questo? Stelle File >>. Esattamente, ci assegnarlo a una stella file. Questo è PHP legittima troppo. Eseguire questo. Vedi cosa succede quando si passa questo in gettype. E poi anche verificare che cosa è nullo, cosa che potrebbe essere in PHP. Ti do un paio di minuti. Si può letteralmente copiare e incollare questi valori, e poi faremo un po 'di chiamata a caso su di voi e vedere quello che abbiamo ottenuto. [Studente] Ho una domanda. << Si '. In una delle lezioni Davide ha detto che c'è qualcosa che si può mettere nella parte superiore del file in modo da non dover digitare ogni volta in PHP. Che cosa è stato? Probabilmente stava parlando il botto sterlina, il botto hash. E 'una direttiva che, se si contrassegna il file come eseguibile allora ciò che fa è quando si esegue il file che dirà il programma di shell utilizzare l'interprete PHP di interpretare il contenuto del file. La domanda di essere quello che era questa linea speciale che potremmo includere nella parte superiore dei nostri file PHP di avere di non includere questa linea PHP o se questo comando PHP ogni volta che si vuole eseguire il file? E si può effettivamente fare questo con un gruppo di file diversi. Credo che dipende da dove il file binario PHP viene memorizzato, ma spesso usr / bin / php è un buon punto di partenza. È possibile calcolare questo fuori esattamente tornando verso il basso per il vostro apparecchio e digitando che php. Il comando che capisce quando si eseguono binario o un comando in cui il file corrispondente. Questo mi dice che il PHP è davvero aliasing questo file binario che è memorizzato in usr / bin, che è dove un sacco di file binari di sistema sono installati. Per esempio, se ho scorrere fino alla cima, ora che ho messo questo #! linea qui Posso scorrere verso il basso, e posso provare a eseguire dynamic.php, ma ottengo questo errore su autorizzazione negata, e che cosa significa è che questo file non riesce a dare autorizzazioni di esecuzione. Non è contrassegnato come un file che qualcuno può essere eseguito. Quando è stato eseguito Marca o Clang e hai ottenuto un file eseguibile da esso il compilatore è stato abbastanza intelligente da sapere che ehi, sto costruendo un file eseguibile. Probabilmente si desidera eseguirlo, quindi sarebbe configurerà automaticamente le autorizzazioni per voi. Questo non è il caso, però, quando si crea un normale file da zero, Il motivo è di solito non si vuole avere alcun file sul vostro sistema sia eseguibile, in modo che effettivamente andare e farlo manualmente. Il modo più semplice per farlo è con il comando chmod, e chmod + x dice aggiungere il bit di esecuzione perché c'è il bit di lettura, la scrittura di bit e il bit di esecuzione, r, w e x, e dicendo: chmod + x si accende il bit di esecuzione per il file che specifica, che in questo caso sarà dynamic.php. [Studente] è che acceso per tutti? Diamo check this out, quindi come faccio a controllare i permessi? Sai come mi piacerebbe verificare i permessi di un file? [Risposta degli studenti incomprensibile] Scusa? >> [Studente] XSD. XSD ci dà il file in hack. Elencare tutti i file,-l, mi mostra tutti i file nella mia directory tipo di nella loro lunga, verbose, e così qui vediamo che questo file dynamic.php è stato modificato l'ultima volta 5 novembre alle ore 4:21. Il proprietario di questo file è jharvard. E 'l'utente che è loggato E 'l'utente La mia attività, e se siete anche l 'apparecchio si sta lavorando anche come jharvard utente. Tu sei nel gruppo di studenti, e queste sono le cose che vedrete abbastanza spesso. Possiamo andare in un sacco di dettaglio in questa sede, ma per la maggior parte ciò che si desidera guardare quando stai cercando di vedere se un file è eseguibile è in primo luogo l'utente che possiede il file, il proprietario, quindi questo jharvard, e poi abbiamo i bit di permesso qui sopra a sinistra, e il modo di leggere questo è che l'ultimo bit tipicamente viene utilizzato per marcare o meno, almeno in questo caso questo ultimo bit viene spesso impostata ad indicare che il file è una directory e non solo un normale file. Poi i seguenti 3 bit proprio qui determinare le autorizzazioni che il proprietario del file ha, in questo caso jharvard, come il proprietario del file, in grado di leggere e scrivere il file, ma c'è un trattino dicendo che jharvard non è possibile eseguire questo file. I successivi 3 bit sono per il gruppo, quindi questo è il gruppo di studenti, quindi se ci fossero più utenti sul mio apparecchio, e abbiamo avuto più utenti come parte del gruppo di studenti, poi tutti possono leggere il file, ma non possono scrivere, e similmente chiunque altro, il mondo possono solo leggere il file pure. C'è una buona, interessante resoconto a lungo su questo, in modo da poter leggere online. Nel set di specifiche problema entriamo in questo in modo più dettagliato. [Studente] è il 218 facendo riferimento al mondo? Il 218 è, la parte superiore della mia testa sto dimenticando, ma no. Vediamo un po '. Sto a blanking che in questo momento. Torna a ciò che stavamo per fare con questo chmod + x dove abbiamo voluto dare autorizzazioni di esecuzione dynamic.php, e la questione era se questo darebbe autorizzazioni di esecuzione a tutti o semplicemente jharvard, e si può vedere questo l'esecuzione dei comandi e digitando ls-l, e ora vediamo che è marcato come eseguibile. Si vede che c'è stato un cambiamento di colore. Ora dynamic.php è elencato in verde, e sembra che la risposta alla domanda è che cosa, Charlotte? [Charlotte] Solo jharvard. >> Solo jharvard, si '. Se volessimo trasformare il bit eseguibile per tutti come potremmo fare? Qualche idea? >> A + x? Sì, esattamente. Charlotte ha detto che possiamo fare di chmod a + x di dynamic.php, e ora se corriamo ls-l vediamo che i bit eseguibili sono infatti attivati ​​per tutti. E si può effettivamente fare il contrario di questo, in modo da poterlo spegnere per tutti utilizzando meno. Ora è spenta, e ora siamo in grado di riaccenderlo per jharvard in modo da poter effettivamente correre adesso, e adesso che si vede quando si esegue il codice di questo speciale #! riga in alto, #! linea, ha detto la shell, detto che il nostro terminale hey, quando questo file viene eseguito, usare / usr / bin / php per interpretare questo file e poi stampare l'output. [Domanda studente incomprensibile] Certo, fammi scorrere verso l'alto. Proprio come questo. Vedrete tutte queste direttive iniziare con questo sterlina e poi il punto esclamativo, a volte chiamato shebang, bang hash. [Studente] Come possiamo correre con dynamic.php php prima di renderlo eseguibile? La domanda era: come possiamo eseguire questa operazione utilizzando il binario PHP mentre dynamic.php non è eseguibile? Questo è super importante, perché questo è esattamente il modo sta andando a lavorare quando si scrive insieme problema 7. Maggior parte dei file temporali PHP non sono eseguibili direttamente. Il modo in cui funziona è perché è il binario PHP che è eseguibile. L'interprete è la cosa che è in corso di esecuzione, e così quello che sta facendo è letteralmente slurping l'intero contenuto del nostro file dynamic.php e linea che per linea e l'esecuzione di questi comandi, in modo da che sta utilizzando il nostro file PHP come una lista di istruzioni. Non è direttamente esecuzione. Ecco dove si dice che questi file vengono interpretati in fase di esecuzione. E 'un linguaggio di tempo di esecuzione, invece di qualcosa che è determinato in fase di compilazione, non è un linguaggio compilato come il C. C'è un modo per avere una lingua in fase di esecuzione di agire come se fosse una lingua in fase di compilazione, come se si dispone di tutto il funzionamento fatto sul server piuttosto, sai cosa voglio dire? Sì, quindi la domanda è c'è un modo per ottenere lingue fase di esecuzione per agire più come tipi in fase di compilazione di linguaggi? E ci sono, voglio dire, che è un'area attiva di ricerca per un sacco di queste aziende. Credo che Facebook ha fatto un sacco di lavoro con PHP e la compilazione verso il basso, il che rende più veloce, ottimizzandolo in quanto il loro sito è costruito su PHP. Se avete seguito node.js a tutti, che è una specie di interprete JavaScript per essere in grado di eseguire JavaScript al di fuori del browser, al di fuori del tuo browser web, perché tradizionalmente JavaScript sarebbe solo eseguire all'interno di Firefox o Chrome, e sarebbe usato per fare animazioni raffreddare accadere in una pagina web e rendere la vostra pagina web dinamica. Questo è stato costruito su un lotto di lavoro che Google ha fatto accertarti che lo JavaScript e C + + legano insieme, quindi c'è un sacco di ricerca attiva ottenere questi linguaggi di interagire e di ottimizzarli, in primo luogo perché così tante persone in grado di codificare in PHP e JavaScript perché è molto più facile. E 'molto più gradevole. Non hai puntatori. Non si dispone di tipi di galleggianti intorno. Volevano ottenere i benefici di queste lingue in fase di compilazione con tutto il controllo del tipo e la velocità e l'utilizzo di memoria inferiore e tutto questo mantenendo la flessibilità e facilità d'uso di questi nuovi. Torniamo al nostro piano originale di attacco. Abbiamo un paio di queste domande qui nel nostro spec problema insieme. Andiamo attraverso di loro molto in fretta, e andremo in giro per la stanza. Charlotte, che tipo è 3.50? [Charlotte] Questo è un doppio. >> E 'un doppio. Jimmy, che cosa è questo prossimo? >> Un array. Un array, impressionante, e Jared, qual è la fopen? [Jared] E 'una risorsa. >> E' una risorsa. Questo è il tipo di una nuova, non una stella file, non un file. E 'una risorsa è il tipo in PHP, e mi dispiace, Ella, l'ipotesi ultima è che cosa? Null. Null, come è scritto in PHP? >> Allo stesso modo. Allo stesso modo, capitali? >> Si '. Si, va bene. Ci siamo, abbiamo una doppia, abbiamo un array, abbiamo una risorsa, e poi abbiamo nulla. Vediamo ora hai visto, vediamo, quindi adesso credo che quello che voglio anche fare è tirare su questa pagina web proprio qui, questo php.net / manuale, quindi se voi ragazzi che copiare e aprire un browser web. Ho intenzione di tirare su Chrome, metterlo trovi Voglio mostrarvi questo non solo perché possiamo parlare tutto il giorno sui tipi e tutte quelle cose divertenti ma perché questo è il manuale di PHP, e ci sono un sacco di programmatori PHP là fuori. Ci sono un sacco di siti web PHP là fuori, e di conseguenza, vi è una quantità di documenti su PHP, e il manuale, questo php.net, è un buon posto per andare ogni volta che hai domande su ciò che è il modo migliore di fare X in PHP o quello che ha una funzione simile? Solo tipo di familiarizzare con come si presenta, perché sarete venire spesso qui, un po 'per il problema impostato 7. Se si finisce per fare un progetto finale che utilizza PHP questo sarà un luogo diventerete molto ben informato. Spesso il modo di farlo è quello che usano Google per cercare il sito, e non utilizzare la casella di ricerca che è qui in alto a destra, che è una specie di minuscolo. Se siete in giro per usare Google qualcosa a che fare con PHP e si vede uno dei collegamenti manuali pop-up in genere è possibile avvalersi di tale come una risorsa abbastanza buona. Impressionante, così fuori di questi tipi, solo per curiosità, quali non abbiamo visto? Tutto ciò che non abbiamo visto qui? [Studente] Resource. >> Abbiamo visto delle risorse con la chiamata fopen. [Studente] Oggetti. >> Oggetti che non abbiamo visto di sicuro. Callback non abbiamo visto. Ci sono alcuni di questi pseudo-tipi. Abbiamo sicuramente visto solo numeri interi e doppio. Non abbiamo visto alcuni degli altri, per cui se si clicca su interi possiamo vedere ci sono dei numeri interi altro modo, che abbiamo qui? Sono tutti così, intero, intero, intero. Alcune lingue hanno più grandi tipi interi, come abbiamo visto su MySQL oggi c'era int e poi int grande. Cool. Quindi, PHP manuale. Torniamo al nostro problema di set di specifiche, e noi ora scorrere fino alla pagina 4. Una delle cose che accadono quando si arriva nelle lingue che non hanno questa tipizzazione statica, così nelle lingue in cui si deve dichiarare il tipo di un fronte up variabile è di ottenere i casi in cui si potrebbe iniziare con le variabili di tipo diverso interagenti tra loro, e PHP fa questa cosa in cui si cerca di fare ciò che ritiene essere la cosa più sensata da fare quando si hanno due tipi diversi interagiscono tra di loro. Per esempio, se guardiamo a queste righe di codice proprio qui si vede che abbiamo ottenuto quello che succede quando cerchiamo di aggiungere la stringa 1 per l'intero 2. Cosa succede se si tenta di aggiungere una stringa che non è un valore numerico ma piuttosto i caratteri effettivi, CS per il numero 50? Poi vedremo c'è qualcosa di diverso che accade quando invece di aggiungere una stringa in un numero che stiamo aggiungendo un numero in una stringa, e così via e così via, fino al punto in cui stiamo ottenendo qualche tipo di cose strane proprio qui, dove abbiamo 7 + vero. Che diavolo vuol dire? Se voi andate avanti e incolla una parte di questo codice nel vostro apparecchio. È possibile mantenere in dynamic.php. Staremo a vedere cosa succede. [Studente] Basta usare stampa non, printf? Gia ', in modo da trovare che la stampa è anche una funzione valida per la stampa in PHP. Ci sono molti modi diversi di farlo. Staremo a vedere con un paio di esempi in seguito una volta che si comincia a parlare il problema unico che andremo a scrivere e poi la concentrazione problema che stiamo per scrivere che, anche se abbiamo fopen e fclose che non è spesso il modo più semplice per leggere il contenuto di un file. PHP ha un sacco di questi C-come un residuo. [Studente] Quando ho messo in tutte le 6 di quelle cose che ottiene solo un numero come uscita. [Nate H] Quando si mette in tutte le 6 di queste cose. Vediamo che è perché è possibile- una cosa è che queste chiamate di stampa non sono terminati alla fine con nuove linee. Non c'è da nuova linea che separa ciascuno di tali inviti stampa, così forse che stai ricevendo un numero di grandi dimensioni, ed è davvero solo amalgama di caratteri di nuova riga. [Studente] Va bene, come faccio a fare in modo- Beh, ci sono un sacco di modi diversi. Si potrebbe mettere in mano una stampa di un carattere di nuova riga, l'eco di un carattere di nuova riga, stampa della nuova linea. [Studente] Così eco è la stessa cosa di printf? È Printf come il C printf dove si sta stampando una stringa formattata. Lo stai fornendo la stringa di formato e quindi tutte le variabili segnaposto. Spesso è una cosa che non viene utilizzato, vediamo, come una dichiarazione di non responsabilità, Sono meno familiarità con PHP di me con i linguaggi web, e quando ho programmato in PHP Io di solito non uso printf perché ritengo che sia più veloce per utilizzare le funzionalità di stringa di interpolazione che ha, che vedremo entrare e vi mostrerò in un secondo, mentre in C che tipo di fare questa cosa hacky per farlo stampare in modo corretto. Si può effettivamente mettere direttamente le variabili in stringhe in PHP. È Printf tipo di troppo lungo o quello che faccio di solito. Sì, Ella. [Ella] Generalmente se l'errore di analisi significa- come in C, non ti dice esattamente dove l'errore è e quello che è, così vuol dire guardare attraverso il vostro intero codice e capirlo? E 'in genere più mirato di quello. Penso che in quel caso era un po 'fuori, quindi penso che in quel caso ci mancava un punto e virgola. Si è cercato di dare un senso a tutto, così come questi linguaggi interpretati, l'interprete sta per provare e fare del suo meglio per far funzionare il tutto in modo appropriato. Vedrai, ad esempio, in JavaScript spesso si-line le dichiarazioni finali un punto e virgola proprio come accade in PHP, proprio come fanno in C. In JavaScript alcuni degli interpreti JavaScript in un sacco di browser messi a punto e virgola per voi se vi capita di essere loro mancante. Cercheranno e ospitare per qualche trascuratezza da parte vostra. Ecco dove si potrebbe provare e provare e cercare di far funzionare le cose, e poi finalmente si arriva a un punto in cui si dice bene, Non riesco a far funzionare le cose sul salvataggio, ed è lì che si otterrà un numero di riga che potrebbe sembrare un po 'fuori dal luogo esatto. Va bene, quindi cerchiamo di passare attraverso questo molto velocemente. Abbiamo lasciato fuori con Ella, quindi cerchiamo di andare oltre a Missy, e Missy, che cosa stampa della stringa 1 più il numero 2 ti danno? [Missy] 3. >> 3. Ha senso? Ordina di? Non ti dà un numero? Non ti darà una stringa? [Missy] Un numero. >> E 'un numero. Ma è la stampa, in modo che sta per dare una sorta di stringa. Una cosa che possiamo fare per controllare questo fuori è se lo facciamo $ var = 1 + 2 e allora diciamo eco di gettype, quindi stiamo usando un terzo tipo di stampa qui. Ora siamo in grado di vedere quello che succede qui. Ecco quello che abbiamo ottenuto è che abbiamo ottenuto un numero intero da questo. Anche se ci sono stati l'aggiunta di questa stringa in un numero, non abbiamo una stringa di fuori di esso, proprio come ha detto Missy. Siamo stati sempre un numero intero. Ok, allora vediamo, next up, Kevin. CS + 50? >> [Kevin] 50. [Nate H] 50. Ha senso? [Kevin] Si '. [Nate H.] Perché? Perché ha senso per te? [Kevin] Perché è solo che hanno la stringa, un valore nullo numero. Sì, grande. Tipo di situazioni ambigue, ma è bene sapere cosa succede. Stella, cosa succede dopo con il numero 1 + stringa 2? [Stella] 3. >> 3 di nuovo. E in questo caso, non si ottiene una stringa o un numero? Diamo a questo una prova. Qualcuno più veloce di me la risposta? Charlotte? Oh, I didn't-bene, vediamo, stiamo andando a fare la stessa cosa dove abbiamo un numero più di una stringa, e stiamo andando a risuonare il tipo, vedere quello che si ottiene. Abbiamo anche un numero intero. Non importa quale sia la stringa, quale è il numero. Stiamo ancora in corso per ottenere un numero intero. E 'ancora in corso di fare ciò che ci si potrebbe aspettare. Va bene, allora Sam, che circa il 90 + 9 bottiglie di birra sul muro? [Sam] 99. >> 99. Non ci sono bottiglie di birra sul muro, però. Ci dà qualche informazione in più su quello che succede. [Sam] Se tu avessi scritto 9 in lettere allora si avrebbe 90, giusto? [Nate H] Si '. La domanda era se avessimo scritto 9 su come N-I-N-E avremmo ottenuto 99 o 90? Ci piacerebbe avere il 90. E 'letteralmente in cerca di caratteri numerici. Non è abbastanza intelligente da riconoscere le parole e numeri che roba. Sì. [Studente] C'è una cosa come la fusione di caratteri in PHP? C'è, ed è esattamente il modo in cui lo farebbe in C. Che dire 10/7, Charlotte? [Charlotte] 1,4285. [Nate H.] Sì, così quello che potrebbe essere sorprendente di questo? Che cosa accadrebbe se avete fatto questo stesso tipo di cosa in C, se avete fatto 10/7 in C? [Charlotte] Sarebbe solo dare-a seconda di come si typecasted credo darebbe solo un numero limitato di cifre dopo la virgola. Gia ', quindi un numero limitato di cifre dopo la virgola. Che altro potrebbe essere, sarebbe dare tutte le cifre dopo la virgola? Spesso non, così ancora una volta, a seconda di come lo si sta typecasting si può o non può convertire in un numero in virgola mobile. Qui era una sorta di bello che ha fatto. Se vi abbiamo mostrato questo ritorno quando abbiamo iniziato a fare questo genere di cose in C probabilmente avrebbe avuto senso un po 'più che non solo andare a 1. E poi finalmente, Jamie, che dire 7 + vero? [Jamie] 8. >> 8. Che cosa vuol dire? Credo che dà solo il vero valore di 1. Gia '. Che cosa succede se cambiamo che su false? [Studente] 7. Si ', in modo da ricordare dove si parla di questi valori binari, 1 è attivo, 0 essere fuori? Ora abbiamo vero è 1, 0 è falso, e si potrebbe non aver visto negli esempi C che abbiamo fatto in questo semestre passato, ma storicamente il tipo bool in C non è stato un tipo reale, così le persone hanno usato 0 e 1 al posto del vero e del falso. Si tratta di una manifestazione di questo. Ok, allora l'unica parte importante di tutto questo è che abbiamo questi tipi differenti. Essi possono interagire con l'altro. Spesso possono interagire tra loro in modi che sono bella, come abbiamo visto qui. E 'bello essere in grado di avere la stringa 1 e il numero 2, aggiungerli insieme e 3. Questo ha senso. Tuttavia, quando si sta scrivendo siti web, e soprattutto quando si è l'elaborazione l'input dell'utente, in modo da dire che hai scritto un modulo web che raccoglie informazioni dall'utente e poi va ad elaborarlo sul back-end, sul lato server nel codice PHP se vi aspettate che il valore che l'utente ha digitato e inviato al modulo per essere un numero intero o un numero a virgola mobile o qualcosa di simile è necessario in modo esplicito il cast e poi fare un po 'il controllo dei tipi. Non si vuole fare affidamento solo su questo sistema giocoleria tipo per far funzionare le cose fuori, soprattutto per ragioni di sicurezza e solo per la robustezza del tuo sito web. Solo una cosa da tenere a mente che ogni volta che si sta gestire i dati del modulo, tutto ciò che viene nel post o le superglobals get assicurarsi sempre convalidarlo e convertirlo e typecast esso. E proprio come se stessimo parlando di un momento fa che typecasting in PHP è esattamente lo stesso come in C, dove si hanno le parentesi e quindi il tipo. Tenere a mente. Una funzione che sarà utile quando si sta facendo questo è che abbiamo usato, e questo è una specie di come un a parte- abbiamo usato questa funzione gettype qui per capire il tipo di una variabile, e mentre questo è a portata di mano per il debug e per vedere che tipo di una variabile è non si desidera utilizzare questo, per esempio, in una condizione in cui si sta verificando se gettype di $ var = intero fare qualcosa. Questo è male, male, male. Invece ci sono queste funzioni chiamate è un numero intero, è string, è matrice che si desidera utilizzare, invece, in questo caso quello che vorrei fare al posto di questo ragazzo qui è utilizzare il var è intero. E sono spesso di cui è * is_, nel senso che è possibile sostituire il * con numero intero, stringa, et cetera, e solo per assicurarsi veramente veloce è questo è di tipo int php. Sembra che si può fare o è int o è là è un numero intero come bene? Sì, alias, alias interi così int. Cool. Come andiamo? Riprendiamo il ritmo un po '. Ora stiamo andando a parlare di array, così come si può vedere nella parte successiva della specifica si parla di come gli array in PHP sono leggermente diversi da quello che sono in C. In verità, sono una specie di amalgama di gli array che hai imparato a conoscere e ad amare in C dove tutto è dello stesso tipo memorizzati consecutivamente e contiguo nella memoria, e si dispone di questi indici numerici. Lei ha indice 0, indice 1, indice 2, e memorizzare i valori in tali indici. È anche in C, quando hai scritto Speller, molti di voi ha fatto l'approccio tabella hash, e hai visto che non vi avevamo un diverso tipo di archiviazione in cui siamo stati la mappatura una chiave per un valore, in modo che quando si è tentato di memorizzare qualcosa in tabella hash dovevi specificare che si voleva conservarlo con una chiave specifica, e quella chiave determinata la posizione del valore e dove sarebbe memorizzato. Hai avuto tipo di entrambi i concetti accadendo allo stesso tempo in un array PHP, e come risultato, spesso chiamiamo questi array associativi dove stiamo associando una chiave in un valore. In questa parte successiva si parla di un array PHP semplice dove abbiamo chiavi a, b, e c, tutte le stringhe, la mappatura per gli interi 1, 2, e 3. E si può avere chiavi di tipo diverso. Si può avere alcuni tasti che sono stringhe, alcuni tasti che sono numeri interi. Si possono avere valori di tipi diversi. Si può avere un valore che è una stringa, un valore che è un numero intero, un valore che è un oggetto o di un altro array, per esempio, tutto nell'oggetto stesso array, che è un po 'strano. Non è necessario avere una matrice che ha appena ricevuto un tipo di elemento in essa. Si possono avere molte cose diverse succede là dentro. L'altra cosa da notare è che quando si fa vedere qualcosa di simile nel codice, che è PHP valido per dichiarare un array come questo, 0, 1, 2, 3, 4, 5, che dichiara un $ arr inizializzato per essere questo array. Ma che cosa si sta effettivamente ricevendo sotto il cofano è questo tipo di implicita generazione di chiavi in ​​cui abbiamo ottenuto 0-0, 1-1, 2-2, 3-3. E si scopre che, anche se si dispone di un array come questo ragazzo qui dove si ha a, b e c come chiavi e poi di iniziare a usare il metodo push matrice per iniziare a utilizzare questo array come una pila, in modo da poter vedere che questo oggetto array, questa matrice è davvero di sovraccarico. Si può usare come un array. Siamo in grado di usarlo come una tabella hash. Si può usare come una pila. Quando si inizia a spingere le cose su questo array la prima cosa che spingerlo verso questo sarà indice 0 e l'indice 1 e l'indice 2. È possibile ottenere questo tipo di generazione implicita di chiavi meno che non vengano specificate in modo esplicito. Il modo in cui specificare le chiavi in ​​modo esplicito, ovviamente, è quello di utilizzare questa notazione staffa, che è simile alle matrici tranne che invece di autorizzare solo indici interi a qui, ora lasciamo nulla. Se si desidera che la chiave per essere una stringa, devi specificarlo in questo modo. Se si vuole che sia un int, si specifica con l'int che si desidera utilizzare. Domande su che finora? Una delle cose belle di questa idea è che si può sempre e solo avere un valore memorizzato con una chiave particolare. Se torniamo verso il nostro apparecchio, mi permette di cancellare alcune di queste cose. E diciamo che inizializzare un array di essere 0, 1, 2, fatto. Se ora so che, per esempio, se io echo $ arr [0] Ho intenzione di ottenere il valore 0 stampato, e poiché non ci può essere solo un valore memorizzato per una chiave particolare se devo conservare qualcosa a $ arr [0], diciamo una, allora so che quando ho echo $ arr [0] di nuovo Io non ho intenzione di ottenere 0 stampato come prima. Sto solo andando a prendere un. Quindi questo è fondamentalmente dicendo che non può avere $ arr [0] l'archiviazione di 2 valori diversi. Non può memorizzare sia 0 e la stringa a, così letteralmente sostituisce ciò che era in $ arr [0] in precedenza. La ragione per cui sollevare la questione è correre, vedere cosa succede. Vedi qui che ho ricevuto 0 stampato e poi una qui. Non c'è nuova linea a causa ero pigro e non ha messo che trovi Il bello di questo è che possiamo usare questo come un modo per catturare questa idea di un insieme dove non si può avere più chiavi all'interno di un array. Non possiamo avere chiavi uguali all'interno di un array. Non posso avere il tasto 0 e il valore 1 e il tasto 0 e il valore di una o il tasto 0 e il valore vero. I tasti sono tutti, c'è solo 1 chiave nella matrice. Anche se si può avere lo stesso valore memorizzato più volte nella matrice in chiavi diverse non è possibile avere chiavi identiche più volte nel tuo array PHP. Se guardiamo a questo problema successivo, unique.php, dove vogliamo aprire un file PHP contenente una lista di stringhe, una stringa per riga, e vogliamo trovare tutte le stringhe univoche in quel file tutto quello che dobbiamo fare è utilizzare uno di questi array PHP e utilizzare le stringhe nel file come le chiavi di questo array e tenere aggiornata la nostra gamma come memorizzare queste nuove chiavi. Come leggiamo su ogni riga del file possiamo memorizzare nella matrice, e alla fine avremo le nostre chiavi nella nostra matrice tutte le corde unici all'interno del file. Ha senso? Vediamo come funziona. Stiamo andando ad aprire, secondo le specifiche, un nuovo file chiamato unique.php. Aprire. Ops, scusate, nuovo file. Stiamo per cominciare fuori con i tag l'inizio e la fine stessa. Stiamo per salvarlo nella sezione 9, e abbiamo intenzione di chiamarlo unique.php. Ok, ora Immagine L'idea è aprire un file, leggere file riga per riga. Per ogni riga nel file avremo un array in cui abbiamo  la linea come la nostra chiave. E poi quando si arriva alla fine qui $ Arr le chiavi sono le linee uniche dal file dal momento che sappiamo che se ho messo in linea questa matrice più volte sarà solo mantenere sovrascrivendo il vecchio valore, e può effettivamente mettere in line array come se stesso proprio così. Questo è un po 'strano. Stiamo memorizzare la coppia di stesso valore di chiave più e più e più volte, ma dal momento che abbiamo la garanzia che non ci sarà solo 1 chiave denominata linea quindi se abbiamo un file che dice-un file di versi degli animali e ha trama, trama, meow, meow, moo, moo, e ogni volta che leggiamo un rumore animale fuori come la trama e lo memorizza nella nostra matrice otteniamo trama, e poi la seconda volta memorizziamo trama andrà a sovrascrivere la prima volta che abbiamo memorizzato. Alla fine avremo una sola voce nella matrice per ciascuno dei versi degli animali in fila animali nostro rumori. Voi ragazzi sicuri che si può affrontare l'apertura di un file in PHP? Un modo per farlo, andiamo da questa parte in fretta-one per farlo è con fopen, come abbiamo visto in precedenza. È possibile fopen some_file.txt. È possibile aprirlo in modalità di lettura, proprio come in C. Questo è un modo perfetto per farlo. Inoltre poi per la lettura nel file riga per riga hanno le stesse funzioni, molte delle quali, che avete fatto in C. Hai fgets. Hai feof, anche se non mi piace usare che perché, ricordate, che non era eccezionale in C. Lo si può fare allo stesso modo, ma qui è una cosa davvero cool. Mi dispiace, non voglio fare $ file, ma c'è una funzione chiamata file in PHP, e questa funzione proprio qui è fresco, perché si legge l'intero contenuto del file specificato, così some_file.txt, legge l'intero contenuto di questo file in un array e consente quindi di scorrere su di esso, che è piuttosto carino. Se si va, per esempio, al nostro browser web e guardiamo a Google per il file PHP si può vedere qui che il nostro manuale dice che il file si legge l'intero file in un array, e possiamo file_get_contents per restituire il contenuto di un file come una stringa, ma in genere basta prendere come una matrice è veramente bello, perché quello che fa sta rompe in modo che ogni elemento nella matrice è una riga del file, quindi se guardiamo file 0, questa è la prima riga del file. File 1, seconda riga, file 2, terza riga, e così via e così via. Non sarebbe bello se questo era tutto quello che doveva fare in C? Piuttosto carino. David ha dimostrato questo in conferenza, e il linguaggio ha mostrato era che, oltre al nostro standard per il ciclo-in PHP che abbiamo avuto for ($ i = 0; i <10, i + +), e si può fare questo in PHP troppo, stessa cosa, abbiamo anche questo costrutto foreach chiamato cool. Foreach è molto utile quando l'iterazione di questi array o strutture di dati perché permette di tirare fuori ogni elemento della matrice senza dover fare manualmente l'indicizzazione da soli, senza dover creare manualmente una variabile indice, incrementare, estrarre il valore nella matrice a quel punto, perché è una cosa molto comune da fare. Probabilmente hanno fatto tonnellate di momenti in cui si stavano facendo cose C sul semestre, quindi con questo foreach possiamo ciclo su questa matrice file, e la sintassi è che vogliamo ora un ciclo su questa matrice e specificare che la variabile che andremo a utilizzare per memorizzare l'elemento di questo array a livello locale, locale alla portata di questo ciclo foreach, è che stiamo andando a chiamare la linea. Se si tratta di un file di parole giuste e non c'è una parola in una linea potremmo chiamare la parola e, in realtà solo dare questo un nome, qualunque cosa tu voglia chiamare, e poi all'interno del ciclo si può fare quello che vuoi con questa linea variabile. Se non è sufficiente per ottenere il valore della matrice e anche voi volete ottenere l'indice con essa è possibile specificare un nome per l'indice così come il valore, e ora si ha accesso a 2 variabili. Avete $ i e la linea dove $ i è l'indice nella matrice, e la linea è la linea che è stato recuperato dal file. Per esempio, se vogliamo stampare echo 0 riga del file come questo, potremmo fare proprio così, "Linea $ i del file è $ line," e qui è anche qualcosa che non abbiamo ancora visto o dove ho appena completamente saltato su questo tutta% s% d affari che abbiamo dovuto affrontare in C, e invece sono andato dritto al scrivere le variabili in linea nella mia stringa. Questo si chiama interpolazione variabile, stringa di interpolazione dove stai ripieno le variabili in pieno, e l'interprete PHP è abbastanza intelligente da quando è la lettura attraverso una stringa che inizia con doppi apici- non virgolette singole, con le singole stringhe tra virgolette non è possibile fare questo, ma con stringhe tra doppi apici come si legge attraverso la sua ricerca per le variabili. E 'loro la caccia, e se vede variabili prenderà il valore della variabile e roba nella stringa se è possibile convertirlo in una rappresentazione di stringa, che è piuttosto carino. Per ora, cerchiamo di commentare il resto di tutto, salvare questo, e quello che possiamo fare ora è che possiamo aprire un file che possiamo chiamare some_file.txt-let 's creare un nuovo file- e possiamo mettere in un sacco di roba in sciocchezze qui solo per testare tutto fuori, salvarlo, chiamano some_file.txt, come sto facendo qui in alto, e ora se io diminuire solo per assicurarsi che tutto è nella stessa directory sembra che ho unique.php e some_file.txt nella stessa directory. Se corro unique.php php vedere come esso stampa ogni riga nel mio file e ciò che la linea è? Questo è abbastanza potente, giusto? Guarda, ci sono voluti 3 righe di codice per aprire un file. Beh, 4 righe di codice. Non riesco a contare oggi, chiaramente. Ma in realtà solo 2 righe di codice interessanti, perché gli altri 2 erano le parentesi graffe, ma in questo codice molto siamo stati in grado di aprire un file, scorrere attraverso di essa, estrarre il numero di linea e la linea stessa e stamparlo. Cool stuff. Charlotte. [Charlotte] Ho una domanda sulla sintassi. Così foreach si occupa di ogni singola riga del file che si apre, e poi quando si vuole fare le cose con ogni singola linea ma è sufficiente fare come e quindi associare il valore. [Nate H] Cosa si può fare qui, la questione è stata il foreach ha a che fare con l'array, in modo che la sintassi di foreach è davvero foreach, e notare che non c'è spazio o qualcosa tra il per e il ciascuno. Devono andare a destra accanto all'altro, e quindi prende in una matrice, e poi ci sono questa parola chiave altro chiamato come che deve essere lì, e poi, dopo il quale è possibile mettere un nome di variabile, nel qual caso si sta andando ad essere tirando fuori i valori della matrice, non gli indici, o se lo si fa, come abbiamo scritto qui sotto consegna delle chiavi e dei valori. Hai foreach elemento della matrice o coppia della matrice come corrispondono a valore o semplicemente come valore. A seconda di cosa hai bisogno, se non hai bisogno delle chiavi, allora si può andare con il valore. Se si desidera che i tasti si può andare con loro. [Charlotte] Ho anche capito che non abbiamo mai dichiarato l'i o linea. Come si sa nemmeno che cosa sono? [Nate H] Che cosa si intende per dichiarare? [Charlotte] Non li abbiamo mai detto cosa i mezzi o la linea. [Nate H.] Non abbiamo mai detto che il computer quello che ho o la linea significa in termini di- [Charlotte] che sono indicizzati o che Stanno- [Nate H] non abbiamo mai detto che questo dovrebbe essere l'indice o la chiave e il valore, e questo perché questo è l'interprete PHP. Questo serve come la dichiarazione e dice va bene, la chiave sarà una variabile chiamata ho memorizzato in una variabile chiamata i. Il valore deve essere memorizzato in una variabile denominata linea, quindi questo serve come la dichiarazione di queste variabili e dice $ i è una chiave, e $ linea è un valore. Si ', Ella. [Ella] Se i tasti non sono fatti numericamente come fa a decidere quale ordine sta andando a stampare tutto? E 'proprio come l'ordine è entrato in? [Nate H.] Vediamo di fare un tentativo. Creiamo una variabile denominata arr, e siamo in grado di fare una va a 7. Diciamo 0 reca in un altro array con 1, 2, o mela. Diciamo 7 passa a 1, b va a 2, e 3 va a 4. Questa è una specie di folle esempio cercando perché stiamo mescolando stringhe e numeri interi in tutto il luogo. Non c'è ordine reale a questo array. Voglio dire, abbiamo potuto ordinare tutto in ordine alfabetico in base ai tasti. Potremmo ordinare tutto in ordine alfabetico in base al valore. Potremmo cercare di tenere conto che alcuni sono stringhe, alcuni sono interi, e abbiamo potuto provare e li converte tutti allo stesso tipo e vedere cosa succede, oppure potremmo prendere in considerazione il valore in cui già li ha inseriti dove abbiamo messo il ragazzo in primo luogo, questo ragazzo in seconda, questo ragazzo in terza, questo ragazzo in quarta, et cetera. Vediamo cosa succede quando si esegue questo codice. Se scorrere verso il basso e fare la stessa cosa, e qui non è la stampa delle nuove linee. Quando leggere le cose del file è stato comprese le nuove linee nei valori, che è stato il motivo per cui stampato bene, mentre qui non ha fatto, è per questo che tutto è smushed insieme. Lasciatemi aggiungere che in linea nuova solo per rendere le cose belle. Diciamo la ripetizione, e così qui guardate cosa è successo. E tutto stampata nell'ordine in cui abbiamo messo nella matrice. Lo fa mantenere l'ordine in tal senso. Tornando al problema di unici dove vogliamo essere in grado di scorrere su un file, e faremo di some_file.txt, e stiamo andando a scorrere su di esso in questo modo. Abbiamo detto che volevamo utilizzare un array per assicurarsi che avevamo ottenuto tutto il linee uniche fuori di lì, e abbiamo potuto farlo molto facilmente semplicemente memorizzare in un array che ovviamente dichiarare fuori dell'ambito di un ciclo, e abbiamo detto che se abbiamo usato le righe nel file, come le chiavi della nostra matrice se siamo entrati in una linea duplicato saremmo l'override del valore precedente. Non è mai possibile avere 2 chiavi identiche dello stesso array. Siamo in grado di fare proprio questo. Ci sbarazzarsi di questo enunciato echo qui. Qui stiamo conservare la linea nel file nella nostra matrice si utilizza come chiave. Niente da essa, e si scopre che non hanno nemmeno bisogno di questa chiave. Non abbiamo bisogno che la variabile i. A questo punto, se dovessimo fare un altro ciclo foreach e siamo stati per eseguire un ciclo su ogni arr e la linea ora se abbiamo eco-oops, mi dispiace. Non possiamo usare la virgola. Dobbiamo usare questo come parola chiave. Ora, se abbiamo eco linea dovremmo avere tutte le parole uniche nel file. Se andiamo fino a some_file.txt, e diciamo che facciamo mela, banana, mela, mela, banana, se vogliamo stampare tutte le parole uniche in questo file si dovrebbe ottenere solo mela e banana da stampare. Se salviamo questa, ora qui ci ingrandire di nuovo, php unique.php, e ta-da. Abbiamo successo uniqued il file. La parte finale di questo problema vi sta chiedendo di ordinare questo array prima di stampare perché in questo semplice esempio che abbiamo appena fatto siamo stati fortunati, nel senso che il file- abbiamo fatto questo esempio forzato con le mele e banane. E 'stato già ordinati. Ma utilizzando la funzione di ordinamento semplice è possibile ordinare un array, che è piuttosto carino. L'ultima cosa che volevo parlare con voi su molto in fretta è che questo tipo di PHP è cosa buona e giusta, ed è super comodo per sapere come fare se mai hai bisogno di fare piccole cose veloci di programmazione. Per esempio, se ho bisogno di scrivere un programma che, per esempio, mette tutti in sezioni non ho intenzione di andare a scrivere in C. E 'intenzione di essere lungo. E 'intenzione di essere una specie di dolore, soprattutto se ci sono i file coinvolti, proprio come voi ragazzi avete visto. E 'così bello che solo con questo codice molto qui siamo riusciti a strappare attraverso un file, estrarre tutti i valori univoci e stamparli di nuovo fuori. Tuttavia, per le assegnazioni, per i vostri progetti, se si sta costruendo siti web con PHP è che il potere siamo in esecuzione i nostri file PHP attraverso questo interprete, e l'interprete sta elaborando tutto all'interno dei tag PHP, lasciando tutto il resto intatto e sputando i risultati. Possiamo farlo per costruire HTML di programmazione. Ora, se torniamo alle specifiche, l'ultimo problema nelle specifiche parla di questa idea di concentrazioni e creando un menu a discesa, che si può o non vuole fare, a seconda di ciò che il vostro progetto finale sta facendo, che permette all'utente di selezionare da un elenco di tutte le possibili concentrazioni loro una concentrazione. Ora, questo è una specie di dolore di tipo questo fuori e hanno a che fare tutto questo manualmente, soprattutto quando hai a che fare di avere tutte le parentesi angolari al posto giusto e tutte le citazioni al posto giusto, quindi con PHP si può fare questo livello di programmazione, e si può fare davvero in fretta. Vediamo come eseguire questa operazione. Stiamo per aprire un nuovo file. Stiamo andando a mettere dei tag PHP. Stiamo andando a chiamare concentrations.php, e ora, quando si sta facendo questo, un po 'una buona cosa a cui pensare quando si sta cercando di combinare il vostro PHP e il codice HTML è capire, va bene, ciò che è la parte che voglio generare programmazione? Qual è la parte di codice che posso generare? E 'vero che si può fare tutto il codice HTML all'interno di blocchi PHP. È possibile eco tutto il codice HTML sotto forma di stringhe. Per esempio, se voglio iniziare a fare i tag selezionati all'interno di PHP Posso dire eco, ad esempio selezionare il nome = concentrazione, e poi giù di sotto avrei potuto avere un altro tag eco o un altro eco chiamato chiudere la selezione. Questo è un modo per farlo, perché ciò che questo è letteralmente andando a fare è stampare questa stringa quando viene eseguito attraverso l'interprete PHP, in modo che il risultato sarà HTML. Se si salva il file come è adesso e corro concentrations.php php guarda quello che ho ottenuto. Ho avuto questa apertura tag di chiusura selezionare. Se dovessi fare questo e io eravamo a salvare questo risultato a un file, dire, concentrations.html-attesa, sembra che la l è passato all'altro lato- ora se apro qui concentrations.html vedete che io ho un file HTML valido. E 'un po' strano? Stiamo usando PHP per creare HTML, creare HTML valido. Il modo in cui lo stiamo facendo è che stiamo solo avere la stampa PHP il codice HTML che si desidera stampare. Questo è letteralmente dei siti web PHP sta lavorando. Quando si visita un sito web che vi manda a qualcosa come qualcosa, qualcosa, qualcosa dot com barra index.php il computer è letteralmente richiamare index.php, esecuzione attraverso l'interprete PHP, e tutto ciò che viene fuori spazzatura è l'invio al browser e dire hey, browser, interpretano questo come HTML. La cosa bella è che si può essere un dolore a scrivere costantemente eco, eco, eco, eco e racchiudere tutto tra virgolette come questo, quindi se si vuole scrivere il codice HTML che sta per essere statico se stessi si può fare in questo modo, metterlo fuori, chiuderlo, e poi qui solo mettere all'interno dei tag PHP ciò che si sa si desidera generare codice, e in questo caso si tratta di quei tag option che sono un dolore da generare. Per esempio, si potrebbe generare un tag option mille facendo qualcosa di simile, $ i <1000, i + + e dicendo value option = $ echo-whoops, non posso farlo. Bene, vediamo di fare un tentativo e vedere cosa succede. $ I e poi dire $ i