[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 </ option.
Piuttosto che dover digitare che opzione etichetta mille volte diversi
Sto utilizzando il codice PHP per generare automaticamente, di programmazione.
Tipo di nifty. Gia '.
Mi ricordo di questo essere menzionate né la lezione o la procedura dettagliata,
ma qual è la differenza tra le virgolette,
quelle normali e queste cose singole?
Che in realtà è una cosa che ho fatto in modo errato qui che stavo per vedere.
Le virgolette non permettono caratteri speciali,
quindi tutto all'interno di una stringa tra apici singoli viene interpretata letteralmente.
Se avessi un \ n all'interno di apici e salvare questo, ad esempio,
e ora scendo qui e eseguirlo-
oops, dove sto andando?
Oh, è perché ho dimenticato il $.
>> Ora, se apro-in realtà, qui, ci sbarazzarsi del la digitazione in un file.
Non ci resta che leggere.
Qui si vede che ho questo letterale \ n nella stringa, non come una linea di vera nuova,
e similmente, anziché effettivamente interpolando il valore di questa variabile
mi ha dato la $ i in sé, che è una specie di dolore.
Il modo per aggirare questo è quello di utilizzare le virgolette,
e poi quando si utilizzano le virgolette doppie sarà effettivamente
correttamente interpolare i valori di tutte le variabili in qui
e anche riconoscere questo \ n per la nuova linea che è
e non \ n.
Utilizzando i singoli è bello quando si ha
caratteri che potrebbero essere interpretati come caratteri speciali perché allora non c'è bisogno di
sfuggire costantemente.
Le cose possono ottenere disordinato, e spesso il modo in cui lo faccio,
tanto per rendere le cose facili, è che se ho intenzione di avere a che
HTML come nel mio codice mi sono modifica tra virgolette singole
e quindi utilizzare questo operatore di concatenazione
per concatenare le variabili trovi
Questo è un altro modo di farlo
dove abbiamo il punto che sta per collegare questa è una stringa
con questo con questo con questo,
e ora non c'è bisogno di sfuggire a questi doppi apici.
Non è necessario utilizzare questo tipo di fuggire.
Faranno letteralmente essere stampati come i doppi apici e poi questo ragazzo qui.
Questo è un altro modo di mescolare tutto insieme.
>> [Studente] Inoltre, quando si fa eco gettype non c'erano le virgolette a tutti.
Giusto, quindi è una specie di eco particolare, nel senso che non hai bisogno di parentesi.
Non è necessario avere le virgolette intorno necessariamente variabili,
come se fosse valido da dire echo $ i, e che sta per interpretare questo come una stringa.
E 'intenzione di fare il cast, in modo da poter fare questo, e questo è valido anche, ma noi non ne abbiamo bisogno.
E 'opzionale.
Nel problema proposto questa settimana guardare fuori per un sacco di questo genere di cose
dove stai miscelazione e la congruenza HTML con PHP
proprio come questo, e ora se scorrere indietro e si esegue questo
possiamo vedere che abbiamo un intero gruppo di valori di opzione
che hanno appena stampato.
Abbiamo tutto questo HTML che ha generato molto velocemente per noi.
Lascio come esercizio.
E 'molto simile alla lettura del file che abbiamo fatto in precedenza.
>> C'è un file concentrations.txt che si può tirare giù dal CDN,
e si può aprire con lo stesso trucco foreach che abbiamo fatto in precedenza,
foreach e basta eco un'opzione e collegare
i valori appropriati, gli appositi tasti e gli indici,
e quindi si ottiene un menu a discesa che crea letteralmente
di programmazione per voi tutte le diverse concentrazioni di Harvard.
Una cosa utile avere.
C'è un sacco di roba di configurazione per questo incarico.
Se non lo avete già fatto prendere la prossima mezz'ora, un'ora,
po 'di tempo questa sera sicuramente di sicuro,
a piedi attraverso le specifiche set problema,
vedere quello che sta succedendo con l'impostazione dei vhost, l'host locale, tutta quella roba.
Una cosa da sottolineare è che in questo momento
nella maggior parte dei set di problemi che stiamo andando nella cartella Dropbox
e quindi scaricando il set di file problema zip e decomprimere esso.
Per questa serie problema che non si vuole.
Vuoi andare in questa directory vhost.
Avrai voglia di andare in vhost e andare nella directory host locale al suo interno,
e questo è dove si vuole tirare giù il file zip,
decomprimerlo, e si preparano a partire.
Dovrai seguire i passi vicino.
>> Se avete domande, inviare e-mail, pubblicarlo su Discutere, venuto a orari d'ufficio.
Grazie ragazzi. La prossima settimana abbiamo intenzione di avere una sessione di revisione per il quiz.
Godetevi il vostro ultimo set problema. Spero che tutto va molto bene.
[CS50.TV]