[Powered by Google Translate] [Article 8] [Moins confortable]
[Nate Hardison] [Université de Harvard]
[C'est CS50.] [CS50.TV]
>> Bienvenue à notre deuxième section précédente.
En cette semaine, nous allons parler de PHP, puis la semaine prochaine
nous ferons une petite revue du Quiz 1.
Nous allons commencer à la page 3 de ce problème met pack,
et nous allons travailler à travers la section de questions assez rapidement.
À la page 3, nous commençons à parler de cette différence entre C et PHP
en ce sens que PHP est un langage typé dynamiquement,
tandis que C est typé statiquement,
et quiconque a très rapidement fait aucun codage à quelque chose comme PHP
ou Python ou Ruby avant, JavaScript?
Totalement nouveau? D'accord.
>> Toutes ces langues que je viens de mentionner
sont très différentes de langages tels que C et C + + et Java
dans le sens où lorsque vous déclarez une variable que vous n'avez pas à déclarer
quel type de variable, il est donc dans C, nous étions coincés avoir à toujours dire
cela va être une variable de type int, ou cela va être une variable char *,
alors qu'avec PHP, Python, Ruby avec,
avec un grand nombre de ces langues plus modernes, vous n'avez pas à le faire du tout.
Vous venez de déclarer votre variable, et dans le cas de PHP
vous déclarez que c'est une variable en la faisant précéder par un signe $,
et ensuite le type de la variable est déterminée par la valeur qui lui est retenue,
ce qui est plutôt cool.
Pour jouer avec ce petit un peu, nous avons échantillon de code PHP ici
entre les balises de début et de fin.
Nous utilisons ce genre de comme le HTML dans le sens où
nous avons ces équerres ici pour ouvrir et fermer.
Vous verrez cela avec le langage HTML.
Vous verrez le même type de syntaxe de XML aussi.
>> Cela indique le début d'un bloc PHP.
Cette php? Est spécifique à PHP.
Nous terminons le tout avec un?> Ainsi.
Ouvrons un fichier dans notre appareil à l'aide que vous le souhaitez.
Dans ce paquet il est dit d'appeler dynamic.php.
En vérité, vous pouvez l'appeler comme vous voulez, mais le nom du fichier viendra
et jouer un rôle important plus tard, donc n'oubliez pas ce que vous appelez.
Je vais passer à l'appareil,
et je vais faire un répertoire pour
l'article 9, je crois que nous en sommes.
Et nous passerons à l'article 9,
et je vais utiliser gedit.
Voyons, gedit, et je vais appeler dynamic.php mine.
Boom.
Dans dynamic.php, puisqu'il s'agit d'un fichier PHP
et je veux exécuter ce grâce à l'interpréteur PHP
J'ai besoin de commencer tout enlever avec les balises d'ouverture,
donc je vais commencer tout de suite ceux qui,
me donner un peu d'espace entre les balises,
et puis le but de cet exercice était de jouer avec
Cette fonction s'appelle gettype, afin gettype, cette fonction ici.
>> Notez qu'il n'y a pas de trait de soulignement ou l'espace ou trait d'union ou quelque chose comme ça
séparant les 2 mots, obtenir et taper, juste un mot tout à fait.
Mais qu'est-ce que cela va faire, c'est que si je passe dans une variable pour gettype,
dire $ var ou $ x,
cela va me dire en quelque sorte dans un format de débogage
quel est le nom de ce type est.
Nous allons expérimenter ici.
En particulier, si vous regardez en arrière à la spécification pset
nous avons quelques lignes de code différents ici.
Dans la première ligne de code que nous avons initialiser cette variable, $ var,
être égal à 7, puis nous avons cette ligne printf
qui dit hey, var printf est vide.
Printf est l'une des nombreuses façons dont nous pouvons imprimer des choses en PHP.
Souvent, vous verrez la fonction d'écho utilisé à la place de printf,
printf, mais nous sommes tous familiers d'avoir été le codage en C pour un certain temps.
Qu'est-ce que vous pouvez réellement faire est nous allons voir si les travaux de copier-coller.
Je vais opter pour cette solution.
Nous allons revenir sur l'appareil.
D'accord, et voilà.
Et l'espacement est un peu excentrique, mais on y va.
Nous avons obtenu ce code ici.
>> [Étudiants] Est-ce le style n'est pas bon de le onglet?
Désolé?
[Étudiants] Est-ce classique de l'onglet?
Bon, alors Sam lui demande si c'est convention de la languette ou non.
En général oui.
Dans ce cas, j'ai choisi de ne pas le faire.
Honnêtement, vous verrez des choses différentes parmi les programmeurs différents.
PHP est généralement utilisé souvent en combinaison avec HTML
et d'autres langues, et si parfois l'impression aura l'air un peu funky
si vous tiret dans début balises de PHP.
Cela dépend vraiment.
Dans ce cas, la copie et la pâte ne colle pas aux pattes de pour moi,
mais il n'a certainement, comme vous l'avez dit, le rendre plus clair.
Très bien, si vous enregistrez ce code dans dynamic.php
alors qu'est-ce que vous pouvez faire est de descendre à votre fenêtre de terminal où je suis juste ici
dans gedit, et pour faire l'équivalent de la compilation
en utilisant make puis exécutez votre code en C
tout ce que vous avez à faire avec le fichier PHP est de démarrer l'interpréteur PHP,
qui est un petit programme appelé PHP,
et l'argument que vous donnez à l'interprète est le fichier que vous souhaitez interpréter.
Dans ce cas, dynamic.php.
Oups, où ai-je mis?
Oh, je l'ai mis dans la section 9, et me voici. C'est pourquoi.
>> Maintenant, si je lance à nouveau que
nous voyons que dans mon appel gettype première fonction
var est un nombre entier.
Dans le prochain var est une chaîne, puis dans le troisième var est un booléen.
Ce qui est intéressant à ce sujet est si nous revenir en arrière jusqu'à ce que nous voyons
ce sont des types semblables à celles que nous avons eues en C.
Nous avons eu ints en C.
Nous trions des cordes en ut eu,
si les chaînes ne sont pas d'un type tout à fait légitime en ce sens que
notre chaîne CS50 était vraiment quoi?
Désolé? Missy?
[Missy] Char *.
Ouais, c'est ce char *, nous avons utilisé.
Au tout début du semestre nous avons été en utilisant le type de chaîne,
mais c'était vraiment un char * sous le capot.
On tape défini, alors que dans ces chaînes PHP sont un type réel.
Il n'y a plus de ces trucs de type char *.
>> Vous verrez que nous pouvons faire beaucoup plus de choses avec des cordes
beaucoup plus facilement en PHP que nous ne pourrions en C,
et puis finalement, nous avons ce type booléen, et la grande différence ici, c'est que
si nous défiler vers le bas, nous voyons que le nom de ces types
sont maintenant integer, string, boolean et au lieu d', int et bool
et que vous décrochez différents langages de programmation,
en supposant que à un certain moment dans votre vie vous entrer en contact avec
les différentes vous remarquerez petites manies comme celui-ci
où C appelle ints entiers.
Certains l'appellent entiers.
Il existe d'autres expressions que vous rencontrer.
Big int nous avons vu aujourd'hui dans SQL.
Il ya aussi le numéro, puis bool, booléen,
toutes sortes de différences là.
>> Ce n'est pas très intéressant, mais maintenant, je vais vous donner un peu de temps
si nous effectuer un zoom arrière à travailler à travers cet exercice au bas de la page 3
où il demande quels types correspondent à ces valeurs ici en bas.
Nous avons 3,50.
Nous avons ce qu'il faut ici, ce qui est intéressant.
Nous n'avons pas vu cela avant, mais si vous avez suivi en cours
vous savez probablement déjà ce que c'est.
Ensuite, nous avons ce qui est de ce genre de funky.
Vous le reconnaître.
Qu'est-ce que cela en C?
Sam? Qu'est-ce que cela vous donne en C?
Il serait d'ouvrir un fichier appelé dynamic.php et le rendre lisible.
Oui, et quel serait le type de variable que nous assigner à? Étoile du fichier. >>
Exactement, nous l'affecter à une étoile fichier.
C'est PHP légitime aussi.
Exécutez cela. Voir ce qui se passe quand vous passez dans ce gettype.
Et puis aussi vérifier ce que nulle est, ce qui pourrait être dans PHP.
Je vais vous donner quelques minutes.
Vous pouvez littéralement copier et coller ces valeurs dans,
puis nous ferons une petite visite au hasard sur vous
et de voir ce que tu as.
>> [Étudiants] J'ai une question. << Ouais.
Dans une des conférences David dit il ya quelque chose que vous pouvez mettre en haut de votre fichier
de sorte que vous n'avez pas à taper dans PHP à chaque fois.
Qu'est-ce que c'était?
Il parlait probablement le bang livre, le coup de hachage.
Il s'agit d'une directive que si vous marquez votre fichier comme exécutable
alors qu'est-ce qu'il fait, c'est lorsque vous exécutez le fichier
il vous indiquera le programme shell
d'utiliser l'interpréteur PHP pour interpréter le contenu du fichier.
La question est quelle est cette ligne spéciale
que nous pourrions inclure dans le haut de nos fichiers PHP de ne pas avoir à inclure
cette ligne ou cette commande PHP PHP à chaque fois que nous voulons exécuter le fichier?
Et vous pouvez le faire avec un tas de fichiers différents.
Je crois que cela dépend de l'endroit où le binaire PHP est stockée,
mais souvent usr / bin / php est un bon endroit pour commencer.
Vous pouvez comprendre cela exactement en allant vers le bas à votre appareil
et en tapant sur lequel php.
La commande qui figure sur lorsque vous exécutez binaire
ou une commande où le fichier correspondant est.
Cela me dit que le PHP est vraiment aliasing ce fichier binaire
qui est stocké dans usr / bin, là où une grande partie des binaires du système sont installés.
Par exemple, si je défiler vers le haut vers le haut, maintenant que je l'ai mis #! ligne ici
Je peux faire défiler vers le bas, et je peux essayer de courir
dynamic.php, mais je reçois ce message d'erreur à propos autorisation à refuser,
et ce que cela signifie, c'est que ce fichier n'est pas actuellement donner des autorisations d'exécutables.
Ce n'est pas marqué comme un fichier que quelqu'un puisse fonctionner.
>> Lorsque vous avez exécuté Marque ou Clang et vous avez obtenu un fichier exécutable à partir de l'
le compilateur est assez intelligent pour savoir que bon, je vais construire un exécutable.
Vous voulez sans doute pour l'exécuter, il serait de configurer automatiquement
les autorisations pour vous.
Ce n'est pas le cas, cependant, lorsque vous créez un fichier normal à partir de zéro,
la raison étant généralement vous ne voulez pas avoir n'importe quel fichier sur votre système exécutable,
si vous avez réellement à y aller et le faire manuellement.
La meilleure façon de le faire est avec la commande chmod,
et chmod + x dit additionner le bit exécutable
parce qu'il est le bit de lecture, le bit d'écriture et le bit exécutable,
r, w et x,
et en disant chmod + x pour allumer le bit exécutable
car alors le fichier que nous précisons, qui dans ce cas sera dynamic.php.
>> [Étudiants] Est-ce que allumée pour tout le monde?
Nous allons vérifier cela, alors comment aurais-je vérifier les autorisations?
Savez-vous comment je pourrais vérifier les permissions d'un fichier?
[Réponse de l'élève inaudible]
Désolé? >> [Étudiants] XSD.
XSD nous donne le fichier de hacks.
Listant tous les fichiers,-l, va me montrer tous les fichiers dans mon répertoire
en quelque sorte dans leur longue liste longue, et si nous voyons ici que
ce fichier dynamic.php
Dernière modification de Novembre 5ème à 4:21 PM.
Le propriétaire de ce fichier est jharvard.
C'est l'utilisateur qui est connecté po
C'est à l'utilisateur, je travaille en tant que,
et si vous êtes aussi dans l'appareil, vous êtes également travaillé comme jharvard utilisateur.
Vous êtes dans le groupe des étudiants,
et ce sont des choses que vous verrez assez souvent.
>> Nous pouvons entrer dans beaucoup de détails ici,
mais pour la plupart ce que vous voulez regarder quand vous cherchez à voir
si oui ou non un fichier exécutable est essentiellement
l'utilisateur qui possède le fichier, le propriétaire,
si ce jharvard, puis nous avons
les bits de permissions plus ici sur la gauche,
et la façon de lire ce que le dernier bit
est généralement utilisé pour le marquage ou au non-moins dans ce cas
ce dernier morceau sera souvent mis à annonce pour indiquer
que le fichier est un répertoire, et pas seulement un fichier normal.
Puis les 3 bits suivants, ici
déterminer les autorisations que le propriétaire du fichier dispose,
alors dans ce cas jharvard, en tant que propriétaire du fichier, peut lire et écrire dans ce fichier,
mais il ya un tableau de bord en disant que jharvard ne peut pas exécuter ce fichier.
Les 3 bits suivants sont pour le groupe, c'est donc le groupe d'étudiants,
donc si il y avait plusieurs utilisateurs sur mon appareil,
et nous avons eu plusieurs utilisateurs dans le cadre du groupe d'étudiants,
alors ils peuvent tous lire ce fichier, mais ils ne peuvent pas écrire,
et de même quelqu'un d'autre, le monde
ne peut lire ce fichier ainsi.
Il ya une bonne, longue writeup à ce sujet,
de sorte que vous pouvez lire en ligne.
Dans la spécification problème posé nous allons dans cette question plus en détail.
>> [Étudiants] Est-ce que 218 se référant au monde?
Le 218 est-du haut de ma tête j'en oublie,
mais non.
Voyons voir. Je suis d'obturation dessus en ce moment.
Retour à ce que nous allions faire avec cette chmod + x
où nous voulions donner des autorisations exécutables dynamic.php,
et la question était de savoir si ce serait donner des autorisations exécutables à tout le monde
ou simplement jharvard, et nous pouvons le voir en
exécutant les commandes et en tapant ls-l,
et maintenant nous voyons qu'il est marqué comme exécutable.
Vous voyez qu'il ya eu un changement de couleur.
Maintenant dynamic.php est inscrite en vert,
et il semble que la réponse à la question est ce que, Charlotte?
[Charlotte] Uniquement jharvard. >> Seulement jharvard, ouais.
>> Si nous voulions tourner le bit d'exécution pour tout le monde sur
comment pourrions-nous le faire?
Toute pensée? >> A + x?
Oui, exactement.
Charlotte a dit que nous pouvons faire chmod + x d'un des dynamic.php,
et maintenant, si nous courons ls-l, nous voyons que les bits exécutables
sont en effet mis en marche pour tout le monde.
Et vous pouvez faire l'inverse de cela, de sorte que vous pouvez le désactiver à tout le monde
en utilisant moins.
Maintenant, il est désactivé, et maintenant nous pouvons le rallumer pour jharvard
de sorte que nous pouvons vraiment le faire maintenant,
et maintenant vous voyez quand nous courons le code de cette spéciale #! ligne vers le haut,
#! ligne, a déclaré à la coquille,
dit notre terminal hey, lorsque ce fichier est exécuté,
utiliser / usr / bin / php pour interpréter ce fichier
puis imprimez la sortie.
[Question étudiant inaudible]
Bien sûr, permettez-moi de revenir en arrière vers le haut. Juste comme ça.
Vous verrez tous ces directives commencer par ce livre, puis le point d'exclamation,
parfois appelé tout le toutim, bang hachage.
>> [Étudiants] Comment pouvons-nous le faire fonctionner avec dynamic.php php avant de le rendre exécutable?
La question était de savoir comment peut-on exécuter ce en utilisant le binaire PHP
tandis que dynamic.php n'est pas exécutable?
C'est super important parce que c'est exactement la façon dont
il va travailler quand vous écrivez 7 set problème.
La plupart des fichiers PHP de temps ne sont pas directement exécutable.
La façon dont fonctionne c'est parce que c'est le binaire PHP est exécutable.
L'interprète est la chose qui en cours d'exécution,
et si ce qu'il fait est littéralement siphonage dans tout le contenu
de notre dossier et dynamic.php ligne par ligne va
et l'exécution de ces commandes, il est donc en utilisant notre fichier PHP
comme une liste d'instructions.
Ce n'est pas l'exécuter directement.
C'est là que nous disons que ces fichiers sont interprétés lors de l'exécution.
C'est un langage moment de l'exécution au lieu de quelque chose qui est déterminée au moment de la compilation,
pas un langage compilé comme C
>> Y at-il un moyen d'obtenir un langage moment de l'exécution d'agir comme si c'était une langue moment de la compilation,
comme si vous avez tous fait la course sur le serveur
plutôt que, vous savez ce que je veux dire?
Oui, la question est donc
y at-il un moyen d'obtenir langues de l'exécution pour agir plus comme des types de compilation de langues?
Et il ya, je veux dire, c'est un domaine de recherche actif pour un grand nombre de ces entreprises.
Je crois que Facebook a fait beaucoup de travail avec PHP
et le compiler en bas, le rendant plus rapide, de l'optimiser
depuis leur site est construit sur PHP.
Si vous avez suivi node.js à tous,
qui est une sorte d'un interpréteur JavaScript
d'être capable d'exécuter JavaScript dehors du navigateur, à l'extérieur de votre navigateur,
parce que traditionnellement JavaScript voudrais juste courir à l'intérieur de Firefox ou Chrome,
et qu'il serait utilisé pour faire des animations fraîches arriver sur une page Web
et faire de votre page web dynamique.
Qui a été construit sur un terrain de travail que Google a fait
de faire activer JavaScript et C + +
lier ensemble, de sorte qu'il ya beaucoup de recherche active d'
obtenir ces langues d'interagir et de les optimiser,
principalement parce que plusieurs personnes puissent coder en PHP et JavaScript
parce que c'est beaucoup plus facile.
C'est beaucoup plus agréable. Vous n'avez pas les pointeurs.
Vous n'avez pas les types qui circulent.
Ils voulaient profiter des avantages de ces langues de compilation
avec toute la vérification du type et de la vitesse et de la diminution de l'utilisation de la mémoire et que tous
tout en conservant la flexibilité et la facilité d'utilisation de ces plus récents.
>> Retour à notre plan initial de l'attaque.
Nous avons eu un peu de ces questions ici, dans notre spec problème posé.
Passons en revue les très rapidement, et nous allons faire le tour de la salle.
Charlotte, de quel type est de 3,50?
[Charlotte] C'est un double. >> C'est un double.
Jimmy, qu'est-ce que le prochain? >> Un tableau.
Un tableau, impressionnant, et Jared, ce qui est la fonction fopen?
[Jared] Il s'agit d'une ressource. >> C'est une ressource.
C'est une sorte de nouveau, pas une étoile fichier, pas un fichier.
Il s'agit d'une ressource est du type en PHP,
et je suis désolé, Ella, le dernier null, c'est quoi?
Null.
Null, comment est-il précisé en PHP? >> Le même manière.
De la même façon, les capitales? >> Oui.
Ouais, d'accord.
Ici nous allons, nous avons eu une chambre double, nous avons un tableau,
nous avons une ressource, puis nous avons nulle.
Voyons maintenant avez-vous vu-
Voyons, maintenant, je suppose que ce que je veux faire est de tirer vers le haut
cette page web ici, ce php.net / manuel,
donc si vous les gars copier cela et ouvrir un navigateur Web.
Je vais remonter Chrome, mettez po
Je veux vous montrer non seulement parce
nous pouvons parler toute la journée sur les types et tous ces trucs fun
mais plutôt parce que c'est le manuel PHP,
et il ya beaucoup de programmeurs PHP là-bas.
Il ya beaucoup de sites web en PHP là-bas,
et, par conséquent, il ya beaucoup de documentation sur PHP,
et le manuel, ce php.net, est un très bon endroit où aller
chaque fois que vous rencontrez des questions sur ce qui est la meilleure façon de faire X en PHP
ou qu'est-ce que la fonction ressembler?
Tout type de se familiariser avec ce qui ressemble à ce que
vous viendrez souvent ici, un peu de problème posé 7.
>> Si vous finissez par faire un projet final qui utilise PHP
ce sera un endroit où vous allez devenir connaît très bien.
Souvent, la façon dont les gens le faire, c'est qu'ils utilisent Google pour rechercher sur le site,
et ils n'ont pas utiliser la boîte de recherche qui est ici en haut à droite, qui est une sorte de minuscule.
Si vous googler autour de quelque chose à voir avec PHP et que vous voyez
l'un des liens manuels pop up vous pouvez généralement compter sur cette
comme une ressource assez bonne.
Génial, tellement hors de ces types, juste par curiosité,
ceux qui n'ont pas vu nous?
Tout ce que nous n'avons pas vu ici?
[Étudiants] de ressources. >> Nous avons vu des ressources à l'appel fopen.
[Étudiants]. Objets Objets >> nous n'avons pas vu, c'est sûr.
Rappels, nous n'avons pas vu.
Il ya certaines de ces pseudo-types.
Nous avons certainement ne voyait entier et double.
Nous n'avons pas vu quelques-uns des autres, donc si l'on clique sur des entiers
nous pouvons voir ce qu'il ya des autres entiers qu'ils ont ici?
Sont-ils tous si-integer, integer, integer.
Certaines langues ont des grands types d'entiers,
comme nous l'avons vu sur MySQL aujourd'hui il y avait int puis int grand.
Cool.
>> Donc, manuel PHP.
Revenons à nos spécifications problème posé, et nous allons maintenant faire défiler la page 4.
Une des choses qui arrive quand vous obtenez ces langues
qui n'ont pas ce typage statique, de sorte que ces langues où vous devez déclarer
le type d'une variable de l'avant jusqu'à
est que vous obtenez lorsque vous pourriez commencer à avoir des variables de types différents
interagissant les uns avec les autres,
et PHP fait cette chose où il essaie de faire
ce qu'il considère être la chose la plus sensée à faire
quand on a 2 types d'interagir les uns avec les autres.
Par exemple, si nous regardons ces lignes de code ici
vous voyez que nous avons ce qu'il se passe quand
nous essayons et ajoutez la chaîne 1 à l'entier 2.
Qu'est-ce qui se passe si nous essayer et d'ajouter une chaîne qui n'est pas une valeur numérique
mais plutôt des personnages réels, CS au nombre 50?
Ensuite, nous verrons là quelque chose de différent qui se passe, où
au lieu d'ajouter une corde à un certain nombre, nous ajouterons un nombre en une chaîne,
et ainsi de suite et ainsi de suite jusqu'au point où nous obtenons
une sorte de trucs bizarres ici, où nous avons 7 + vrai.
Qu'est-ce que ça peut bien vouloir dire?
>> Si vous les gars aller de l'avant et coller une partie de ce code dans votre appareil.
Vous pouvez le garder dans dynamic.php.
Nous allons voir ce qui se passe.
[Étudiants] Il suffit d'utiliser print, printf pas?
Ouais, et alors vous verrez que d'impression est également une fonction valide pour l'impression en PHP.
Il existe de nombreuses façons de le faire.
Nous allons voir avec un couple des exemples plus tard une fois que nous commençons à parler
sur le problème particulier que nous allons écrire
et puis le problème concentrations que nous allons écrire
que même si nous avons fopen et fclose
ce n'est souvent pas le moyen le plus simple de lire le contenu d'un fichier.
PHP dispose d'un grand nombre de ces survivances C-like.
[Étudiants] Lorsque je mets dans les 6 de ces choses que je ne obtenir un certain nombre comme une sortie.
[Nate H.] Lorsque vous mettez en tout 6 de ces choses.
Voyons est-ce parce que c'est peut-être-
une chose, c'est que ces appels d'impression ne sont pas terminées à la fin avec de nouvelles lignes.
Il ya aucune nouvelle ligne séparant chacun de ces appels d'impression,
alors peut-être vous en achetez une grand nombre,
et il est vraiment juste amalgame de caractères de nouvelle ligne.
[Étudiants] Bon, comment puis-je m'assurer-
Eh bien, il ya un tas de façons différentes.
Vous pouvez mettre manuellement par le tirage d'un caractère de nouvelle ligne,
l'écho d'un caractère de nouvelle ligne,
imprimer de la nouvelle ligne.
[Étudiants] Donc écho est la même chose que printf?
>> Printf est comme printf
où vous imprimez une chaîne formatée.
Vous n'êtes approvisionnant la chaîne de format, puis toutes les variables d'espace réservé.
Il ya souvent quelque chose qui n'est pas utilisé-
Voyons voir, comme un avertissement,
Je suis moins familier avec PHP que je suis avec d'autres langages du web,
et quand je l'ai programmé en PHP, je n'utilisent généralement pas printf
parce que je trouve plus rapide d'utiliser les capacités d'interpolation de chaîne qui l'a,
que nous allons entrer et je vais vous montrer dans un instant,
alors qu'en C, nous avons sorte de faire cette chose hacky pour le faire imprimer correctement.
Vous pouvez effectivement mettre des variables directement dans des chaînes en PHP.
Printf est du genre trop long pour ce que je fais d'habitude. Oui, Ella.
[Ella] En général, si vous obtenez une erreur d'analyse que ça veut dire-
comme sur C, il ne vous dira exactement où l'erreur est et ce qu'elle est,
ne signifie pas pour que regarder à travers votre code entier et le comprendre?
Il est généralement plus ciblée que cela.
Je pense que dans ce cas, il était un peu hors,
donc je pense que dans ce cas, il nous manquait un point-virgule.
Il a essayé de donner un sens à tout,
si semblable à ces langages interprétés, l'interprète va essayer
et faire de son mieux pour que tout fonctionne correctement.
>> Vous verrez, par exemple, en JavaScript
Vous serez souvent en ligne des déclarations d'extrémité avec un point-virgule comme ils le font en PHP,
comme ils le font en C.
En JavaScript quelques-uns des interpréteurs JavaScript
dans un grand nombre de navigateurs mettra en points-virgules pour vous
s'il vous arrive d'être leur disparition.
Ils vont tenter de répondre pendant un certain laisser-aller de votre part.
C'est là que ça pourrait être d'essayer et d'essayer et d'essayer de faire fonctionner les choses,
et puis finalement il arrive à un point où il est dit d'accord,
Je ne peux pas faire fonctionner les choses pour renflouer, et c'est là que vous aurez un numéro de ligne
qui pourrait sembler un peu hors de l'endroit exact.
Ok, nous allons donc passer par ce très rapidement.
Nous nous sommes quittés avec Ella, nous allons donc passer à Missy,
et Missy, qu'est-ce tirage de corde 1 plus le nombre 2, vous donner?
[Missy] 3. >> 3.
Est-ce logique? En quelque sorte?
Est-il vous donner un chiffre? Elle vous donne une chaîne?
[Missy] Un certain nombre. >> C'est un nombre.
Mais c'est de l'imprimer, donc ça va vous donner une sorte de chaîne.
>> Une chose que nous pouvons faire pour vérifier cela
est de savoir si nous faisons $ var = 1 + 2
et alors nous disons écho de gettype,
Nous sommes donc en utilisant un troisième type d'impression ici.
Maintenant, nous pouvons voir ce qui se passe ici.
Voici ce que nous avons est nous avons eu un nombre entier de là.
Même si nous avons ajouté cette chaîne en nombre,
nous n'avons pas une chaîne hors de lui, tout comme Missy dit.
Nous recevions un nombre entier.
Bon, voyons voir, next up, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H.] 50. Est-ce logique?
[Kevin] Ouais.
[Nate H.] Pourquoi? Pourquoi faut-il un sens pour vous?
[Kevin] Parce que c'est juste avoir la chaîne, ayant une valeur nulle nombre.
Ouais, génial.
Genre de situations ambiguës, mais il est bon de savoir ce qui se passe.
Stella, ce qui arrive ensuite avec le numéro 1 + string 2?
[Stella] 3. >> 3 fois.
Et dans ce cas, pouvons-nous obtenir une chaîne ou un nombre?
>> Nous allons opter pour cette solution.
Tout le monde plus vite que moi d'obtenir la réponse? Charlotte?
Oh, je didn't-bien, nous allons voir, nous allons faire la même chose
où nous avons un nombre plus une ficelle, et nous allons faire l'écho de la nature,
voir ce que nous obtenons.
Nous recevons aussi un entier.
Il n'est pas question que l'on est de la chaîne, dont l'un est le nombre.
Nous allons encore pour obtenir un nombre entier.
Il va continuer à faire ce que nous pourrions nous attendre.
D'accord, Sam, qu'est environ 90 + 9 bouteilles de bière sur le mur?
[Sam] 99. >> 99.
Pas de bouteilles de bière sur le mur, cependant.
Il nous donne des informations un peu plus sur ce qui se passe.
[Sam] Si vous aviez écrit 9 en lettres
alors vous avez 90, non?
[Nate H.] Ouais.
La question était de savoir si nous avions écrit 9 sur la N-I-N-E
aurions-nous eu 99 ou 90?
Nous obtiendrions 90.
Il est littéralement juste à la recherche de caractères numériques.
Ce n'est pas assez intelligent pour reconnaître les mots nombre et ce genre de choses. Oui.
>> [Étudiants] Y at-il une chose telle que transtypage en PHP?
Il ya, et c'est exactement la façon dont vous le feriez dans C.
Qu'en est-10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H.] Ouais, et alors peut-être surprenant à ce sujet?
Qu'arriverait-il si vous avez fait ce même genre de chose en C,
si vous avez 10/7 en C?
[Charlotte] Il ne vous donne-selon la façon dont vous typecasted je suppose
cela vous donnerait un nombre limité de chiffres après la virgule.
Ouais, donc un nombre limité de chiffres après la virgule.
Quoi d'autre pourrait être serait-il-vous donner tous les chiffres après la virgule?
Souvent pas, à nouveau, selon la façon dont vous le transtypage
il peut ou ne peut le convertir en un nombre à virgule flottante.
Ici, il était assez jolie qu'il a fait.
Si nous avions montré ce que vous en arrière quand nous avons commencé à faire ce genre de choses dans C
il aurait probablement fait sens un peu plus
qu'il ne fait pas que passer à 1.
Et puis finalement, Jamie, qu'en est-il vrai 7 +?
[Jamie] 8. >> 8.
Qu'est-ce que ça veut dire?
Je suppose que cela donne juste true, la valeur de 1.
Ouais. Qu'advient-il si nous changeons que la valeur false?
[Étudiants] 7.
Ouais, donc n'oubliez pas que nous parlons de ces valeurs binaires,
1 étant activé, 0 étant éteint?
Maintenant, nous avons vrai est de 1, 0 est faux,
et vous n'auriez pas vu cela dans les exemples C que nous avons fait ce semestre passé,
mais, historiquement, le type bool en C n'a pas été un type réel,
afin que les gens ont utilisé 0 et 1 à la place du vrai et du faux.
Il s'agit d'une manifestation de cela.
>> Ok, donc une part importante de tout cela
est que nous avons ces différents types.
Ils peuvent interagir les uns avec les autres.
Ils peuvent souvent interagir les uns avec les autres d'une manière qui sont agréables, comme nous l'avons vu ici.
C'est agréable d'être en mesure d'avoir des cordes 1 et le numéro 2, additionnez-les et obtenez 3.
Cela a du sens.
Toutefois, lorsque vous écrivez des sites Web, et en particulier lorsque vous traitez
saisie de l'utilisateur, de sorte que vous avez écrit un formulaire web
qui collecte des informations de l'utilisateur, puis va à la traiter
sur l'arrière, sur le côté serveur dans votre code PHP
si vous vous attendez à ce que la valeur que l'utilisateur a tapé et envoyé
à votre formulaire pour être un entier ou un nombre à virgule flottante ou quelque chose comme ça
vous devez explicitement de le jeter
puis faites un contrôle de type.
>> Vous ne voulez pas compter uniquement sur ce système jonglerie genre à faire les choses fonctionnent,
notamment pour des raisons de sécurité et juste pour la robustesse de votre site web.
Juste une chose à garder à l'esprit que chaque fois que vous manipulez les données de formulaire,
tout ce qui vient par la poste ou les superglobales get
assurez-vous que vous avez toujours le valider et de le convertir et transtyper.
Et tout comme nous parlions il ya un instant que transtypage
en PHP est exactement la même que dans C où vous avez les parenthèses
et ensuite le type.
Gardez cela à l'esprit.
Une fonction qui vous sera utile lorsque vous faites cela
est que nous avons utilisé et c'est un peu comme une parenthèse-
nous avons utilisé cette fonction gettype ici
pour déterminer le type d'une variable,
et tout ce qui est pratique pour le débogage et pour voir quel type d'une variable est
vous ne voulez pas l'utiliser, par exemple, dans un état où
vous vérifiez pour voir si gettype d'entier $ var = faire quelque chose.
Ce qui est mauvais, mauvais, mauvais.
Au lieu de cela, il ya ces fonctions appelées est un entier, est une chaîne,
est un tableau que vous souhaitez utiliser à la place, donc dans ce cas
ce que je voudrais faire au lieu de ce gars ici
est d'utiliser le var est entier.
Et ils sont souvent appelés * est is_ dans le sens que vous pouvez remplacer * par nombre entier,
chaîne, et cetera, et juste pour s'assurer vraiment rapide
est ce n'est int php.
On dirait que vous pouvez faire c'est soit int ou est-il est un entier ainsi?
Oui, alias, alias donc int entier.
Cool.
>> Comment faisons-nous?
Nous allons accélérer le rythme un peu.
Maintenant, nous allons parler de tableaux, de sorte que vous pouvez voir
dans la prochaine partie de la spécification nous parlons de la façon dont les tableaux en PHP
sont légèrement différents de ce qu'ils sont dans C.
En vérité, ils sont une sorte d'amalgame de
les tableaux que vous avez appris à connaître et aimer en C
où tout est du même type
stockées consécutivement et de manière contiguë à la mémoire,
et vous avez ces indices numériques.
Vous avez index 0, l'indice 1, indice 2,
et de stocker des valeurs de ces indices.
Vous avez également en C, quand vous avez écrit Speller, beaucoup d'entre vous
a l'approche table de hachage, et vous avez vu que nous avons eu il ya
un autre type de stockage où nous étions cartographie
une clé à une valeur, alors quand vous avez essayé de stocker quelque chose dans la table de hachage
vous avez dû spécifier que vous voulez l'enregistrer avec une clé spécifique,
et en ce que la clé déterminé l'emplacement de la valeur et où il est stocké.
Vous avez obtenu type de ces deux concepts se passe en même temps dans un tableau PHP,
et, par conséquent, nous appelons souvent ces tableaux associatifs
où nous associer une clé à une valeur.
Dans la partie suivante nous parlons d'un tableau PHP simple
où nous avons touches a, b, et c,
toutes les chaînes de caractères, la cartographie des nombres entiers 1, 2, et 3.
Et vous pouvez avoir des clés de différents types.
>> Vous pouvez avoir quelques clés qui sont des chaînes, certaines touches qui sont des nombres entiers.
On peut avoir des valeurs de types différents.
Vous pouvez avoir une valeur qui est une chaîne, une valeur qui est un nombre entier,
une valeur qui est un objet ou d'un autre tableau, par exemple,
le tout dans l'objet même tableau, ce qui est un peu bizarre.
Vous n'avez pas besoin d'avoir un tableau qui a juste un type d'élément de celui-ci.
Vous pouvez avoir beaucoup de choses différentes se passe là-bas.
L'autre chose à noter est que quand vous voyez quelque chose comme ceci dans votre code,
qui est PHP valide pour déclarer un tableau comme ça, 0, 1, 2, 3, 4, 5,
qui déclarent un montant arr initialisé à ce tableau.
Mais ce que vous obtenez réellement sous le capot est ce genre de implicite
génération de clés où nous avons obtenu de 0 à 0, 1 à 1, 2 à 2, 3 à 3.
Et il s'avère que même si vous avez un tableau comme ce gars ici
où vous avez a, b et c comme les touches
et puis vous commencez à utiliser la méthode push tableau pour commencer à utiliser ce tableau comme une pile,
de sorte que vous pouvez voir que cet objet tableau, ce tableau est vraiment en cas de surcharge.
Nous pouvons l'utiliser comme un tableau. Nous pouvons l'utiliser comme une table de hachage.
Nous pouvons l'utiliser comme une pile.
Lorsque vous commencez à pousser les choses sur ce tableau
la première chose que vous appuyez sur ce sera l'index 0 et l'indice 1 et l'index 2.
Vous pouvez obtenir ce genre de génération implicite de touches
sauf si vous les spécifier explicitement.
La façon dont vous spécifiez explicitement les touches, bien sûr, est d'utiliser cette notation support,
qui est similaire à l'exception des tableaux au lieu de n'autoriser
indices entiers dans ici, maintenant nous permettre quoi que ce soit.
Si vous voulez que votre clé soit une chaîne, vous précisez comme ça.
Si vous voulez qu'il soit un int, vous spécifiez avec l'int que vous souhaitez utiliser.
>> Questions à ce sujet jusqu'à présent?
Une des choses gentilles sur cette idée
est que vous ne pouvez jamais avoir une valeur stockée avec une touche particulière.
Si nous revenons sur notre appareil, laissez-moi supprimer certaines de ces choses.
Et disons que je initialiser un tableau à 0, 1, 2, c'est fait.
Si je sais maintenant que, par exemple, si je echo $ arr [0]
Je vais prendre la valeur 0 imprimé,
et depuis il ne peut y avoir qu'une seule valeur stockée pour une clé particulière
si je stocker quelque chose à $ arr [0], par exemple un,
alors je sais que quand je echo $ arr [0] à nouveau
Je ne vais pas pour obtenir le 0 imprimé comme avant.
Je vais seulement pour obtenir un.
Donc, c'est essentiellement à dire que je ne peux pas $ arr [0] stocker des 2 valeurs différentes.
Il ne peut pas stocker à la fois 0 et la chaîne a, comme celui-ci remplace littéralement
ce qui était à $ arr [0] précédemment.
La raison pour laquelle je soulève cette question est-elle de fonctionner, voir ce qui se passe.
Voir ici que j'ai obtenu 0 imprimés puis un ici-bas.
Il n'ya pas de nouvelle ligne là parce que j'étais paresseux et ne pas mettre cette po
Ce qui est cool à ce sujet est que nous pouvons utiliser cela comme un moyen
de saisir cette idée d'un ensemble
où l'on ne peut pas avoir plusieurs clés d'un tableau.
Nous ne pouvons pas avoir des clés identiques dans un tableau.
Je ne peux pas avoir la touche 0 et la valeur 1 et la touche 0 et la valeur d'un
ou la touche 0 et la valeur réelle.
Les touches sont tout il ya seulement 1 clé dans le tableau.
Même si vous pouvez avoir la même valeur stockée
à plusieurs reprises dans le tableau sous différentes touches
il n'est pas possible d'avoir des clés identiques plusieurs fois dans votre tableau PHP.
>> Si nous regardons ce problème prochaine, unique.php,
où nous voulons ouvrir un fichier PHP
contenant une liste de chaînes de caractères, une chaîne de caractères par ligne,
et nous voulons trouver toutes les chaînes uniques dans ce fichier
tout ce que nous devons faire est d'utiliser l'un de ces tableaux PHP
et d'utiliser les chaînes de caractères dans le fichier que les clés de ce tableau
et de garder à jour notre tableau comme nous stockons ces nouvelles clés.
Comme nous le lisons chaque ligne à partir du fichier on peut le stocker dans le tableau,
et à la fin nous aurons comme nos clés dans notre tableau
toutes les chaînes de caractères uniques dans le fichier.
Est-ce logique?
Voyons comment cela fonctionne.
Nous allons ouvrir, selon les spécifications, un nouveau fichier appelé unique.php.
Ouvrez-le. Oups, désolé, nouveau fichier.
Nous allons commencer avec elle balises de début et de fin même.
Nous allons l'enregistrer à l'article 9, et nous allons l'appeler unique.php.
Bon, maintenant effectuer un zoom avant
L'idée ici est d'ouvrir un fichier,
lire fichier ligne par ligne.
Pour chaque ligne dans le fichier
nous aurons un tableau où nous avons
la ligne comme notre clé.
Et puis, quand nous arrivons à la fin ici
Clés $ arr sont les lignes uniques
à partir du fichier puisque nous savons que si je mets en ligne dans la matrice
plusieurs fois il va tout simplement continuer remplaçant l'ancienne valeur,
et nous pouvons effectivement mis line array en tant que lui-même comme ça.
>> C'est un peu bizarre.
Nous vous stockez la paire même valeur de clé maintes et maintes et maintes fois,
mais puisque nous sommes assurés qu'il y aura seulement 1 clé appelée ligne
si nous avons un fichier qui dit-un fichier de bruits d'animaux et il a woof, woof,
miaou, miaou, meuh, meuh, et chaque fois que nous lisons un bruit sur les animaux
comme trame et nous le stockons dans notre gamme nous obtenons trame, puis la deuxième fois
nous stockons woof il va écraser la première fois que nous l'avons stocké.
En fin de compte nous n'avons qu'une seule entrée dans le tableau
pour chacune des bruits d'animaux chez l'animal bruits notre fichier.
Ne vous les gars se sentent confiants que vous pouvez aborder l'ouverture d'un fichier en PHP?
Une façon de le faire, nous allons passer rapidement de cette façon-et-un pour le faire
C'est avec fopen, comme nous l'avons vu plus haut.
Vous pouvez fopen some_file.txt.
Vous pouvez l'ouvrir en mode lecture, tout comme en C.
C'est une façon parfaitement bon de le faire.
Vous aussi, puis pour la lecture dans le fichier ligne par ligne
ont les mêmes fonctions, beaucoup d'entre eux, que vous avez fait en C.
Vous avez fgets.
Vous avez feof, même si nous n'aimons pas utiliser ce
parce que, souvenez-vous, ce n'était pas grand C.
Vous pouvez le faire de la même manière,
mais ici, c'est une chose vraiment cool.
Désolé, je ne veux pas faire $ fichier, mais il ya une fonction appelée fichier en PHP,
et cette fonction droite est ici cool car il lit tout le contenu
du fichier que vous spécifiez, si some_file.txt,
lit tout le contenu de ce fichier dans un tableau
et puis vous permet de parcourir, ce qui est assez chouette.
>> Si nous allons, par exemple, à notre navigateur
et nous attendons avec Google pour fichier PHP
vous pouvez voir ici que notre manuel indique que le fichier se lit tout un fichier dans un tableau,
et nous pouvons file_get_contents pour renvoyer le contenu d'un fichier sous forme de chaîne,
mais en général, il suffit de faire comme un tableau est vraiment bien car ce qu'il fait
il est le décompose de sorte que chaque élément de
dans la matrice est une ligne du fichier,
si nous regardons fichier 0, c'est la première ligne du fichier.
Fichier 1, deuxième ligne, le fichier 2, troisième ligne, et ainsi de suite et ainsi de suite.
Ce ne serait pas bien si c'est tout ce que vous avez eu à le faire en C?
Très chouette.
David l'a montré dans la conférence, et l'idiome qu'il montrait était
qu'en plus de notre niveau de boucle en PHP que nous avons eu
for ($ i = 0; i <10; i + +),
et vous pouvez le faire en PHP aussi, même chose,
nous avons également ce concept cool appelé foreach.
Foreach est très pratique lorsque vous parcourez des tableaux ou ces structures de données
car il vous permet de retirer chaque élément du tableau
sans avoir à le faire manuellement vous-même l'indexation,
sans avoir à créer manuellement une variable d'index, l'incrémenter,
retirer la valeur dans le tableau à ce moment-là, parce que c'est une chose très commune à faire.
>> Vous avez probablement fait que des tonnes de fois où vous avez été faire des trucs C
au cours du semestre, de sorte à ce foreach
nous pouvons boucler sur ce tableau dossier,
et la syntaxe, c'est que nous voulons maintenant une boucle sur ce tableau
et de préciser que la variable que nous allons utiliser pour stocker
l'élément de ce tableau au niveau local, locale à la portée de cette boucle foreach,
est que nous allons appeler la ligne.
Si c'est un fichier de mots justes et il ya un mot dans une ligne
On pourrait appeler cela le mot ainsi, vraiment juste vous donner ce nom,
tout ce que vous voulez l'appeler,
puis à l'intérieur de la boucle, vous pouvez faire ce que vous voulez avec cette ligne variable.
Si cela ne suffit pas pour obtenir la valeur du tableau et vous aussi vous voulez obtenir
l'indice avec elle, vous pouvez spécifier un nom pour l'index
ainsi que la valeur, et maintenant vous avez accès à 2 variables.
Vous avez $ i et la ligne
où $ i est l'index dans le tableau,
et la ligne est la ligne que vous avez récupéré à partir du fichier.
Par exemple, si nous voulions imprimer echo 0 ligne du fichier de ce type,
nous pourrions le faire comme ça, "Ligne $ i du fichier est $ line»,
et c'est là quelque chose que nous n'avons pas encore vu non plus
où je viens totalement sauté% cette% s ensemble d entreprise
que nous avons eu à traiter en C, et à la place je suis allé directement à
écrit les variables en ligne dans ma chaîne.
>> C'est ce qu'on appelle l'interpolation de variables, chaîne d'interpolation
où vous bourrer les variables de droite, et l'interpréteur PHP
est assez intelligent quand il est lu par une chaîne qui commence avec doubles quotes-
pas de guillemets simples, avec des chaînes entre apostrophes vous ne pouvez pas le faire-
mais avec des chaînes entre guillemets tel qu'il se lit à travers elle cherche variables.
Il a les traquer, et si elle voit variables, il prendra la valeur de la variable
et le farcir dans la chaîne si elle ne peut le convertir en une représentation de chaîne,
ce qui est assez chouette.
Pour l'instant, nous allons commenter le reste de tout,
enregistrer cette, et ce que nous pouvons faire maintenant, c'est nous pouvons ouvrir un fichier
que nous pouvons appeler some_file.txt-let 's créer un nouveau fichier
et l'on peut mettre dans un tas de trucs non-sens ici juste pour tester tout ça,
l'enregistrer, appelez-le some_file.txt, comme je le fais ici en haut,
et maintenant si je effectuer un zoom arrière juste pour s'assurer que tout est dans le même répertoire-
il semble que je dois unique.php et some_file.txt dans le même répertoire.
Si je lance unique.php php
voir comment elle imprime chaque ligne dans mon fichier et ce que la ligne est?
>> C'est assez puissant, non?
Regardez, il a fallu 3 lignes de code pour ouvrir un fichier.
Eh bien, 4 lignes de code. Je ne compte plus aujourd'hui, clairement.
Mais, en réalité seulement 2 lignes de code intéressants, car les 2 autres étaient des accolades,
mais dans ce code beaucoup, nous avons pu ouvrir un fichier, la parcourir,
retirer le numéro de la ligne et la ligne elle-même
et l'imprimer.
Cool stuff. Charlotte.
[Charlotte] J'ai une question à propos de la syntaxe.
Donc foreach traite chaque ligne du fichier que vous ouvrez,
et puis quand vous voulez faire des choses avec chaque ligne que vous venez de le faire aussi
puis associer la valeur.
[Nate H.] Ce que vous pouvez faire ici-la question a été
foreach a à voir avec le tableau, la syntaxe foreach
est vraiment foreach, et l'avis qu'il n'y a pas d'espace
ou quoi que ce soit entre le pour et le chacun.
Ils doivent passer juste à côté de l'autre,
puis il prend dans un tableau,
et puis vous avez ce mot-clé autre que celui appelé doit être là,
puis après la comme vous pouvez soit mettre un nom de variable,
Dans ce cas, vous allez être en tirant sur les valeurs du tableau,
pas les indices, ou si vous le faites comme nous l'avons écrit ci-dessous
vous obtenez les clés et les valeurs.
Vous avez élément du tableau foreach ou une paire du tableau comme calé sur la valeur
ou juste valeur.
Selon ce que vous avez besoin, si vous n'avez pas besoin des clefs,
alors vous pouvez aller avec la valeur.
Si vous voulez que les touches que vous pouvez aller avec eux.
>> [Charlotte] J'ai aussi réalisé que nous n'avons jamais déclaré la commande i ou en ligne.
Comment ça sait même pas ce qu'ils sont?
[Nate H.] Que voulez-vous dire par déclarer?
[Charlotte] Nous n'avons jamais dit ce que je ou une ligne moyen.
[Nate H.] Nous n'avons jamais dit ce que je l'ordinateur ou de la ligne signifie en termes de-
[Charlotte] C'est qu'ils sont indexées ou que they're-
[Nate H.] Nous n'avons jamais dit que ce qui est censé être l'index ou la clé et la valeur,
et c'est parce que c'est l'interpréteur PHP.
Cela sert de la déclaration et dit d'accord, la clé va être
une variable appelée i stocké dans une variable appelée i.
La valeur va être stockée dans une variable appelée ligne,
si cela sert la déclaration de ces variables
et dit i $ est une clé, et $ line est une valeur.
Ouais, Ella.
[Ella] Si les touches ne sont pas fait numériquement
comment ça décider dans quel ordre il va tout imprimer?
Est-il juste comme la commande il est entré en?
[Nate H.] Nous allons faire un essai.
Nous allons créer une variable appelée arr,
et nous pouvons faire une passe à 7.
Disons 0 va à un autre tableau avec 1, 2, ou de pomme.
Disons que 7 va à 1, b passe à 2,
et 3 va à 4.
C'est en quelque sorte d'un exemple de regard fou parce que nous sommes mélanger
chaînes et les entiers un peu partout.
Il n'y a aucun ordre réel de ce tableau.
Je veux dire, on pouvait commander tout dans l'ordre alphabétique des touches.
On peut commander tout par ordre alphabétique de la valeur.
>> Nous pourrions essayer de prendre en compte que certains sont des chaînes, certaines sont de type int,
et nous pourrions essayer de les convertir au même type et de voir ce qui se passe,
ou nous pourrions les prendre en compte dans la valeur dans laquelle nous les avons déjà conclu
où nous mettons ce gars en premier, ce gars-là dans le deuxième, ce gars-là en troisième position,
ce gars-là en quatrième, et ainsi de suite.
Voyons voir ce qui se passe quand on exécuter ce code.
Si nous faisons défiler vers le bas et faire le même genre de chose,
et ici ce n'est pas l'impression des nouvelles lignes.
Quand il lu des choses sur le fichier, il a été notamment les nouvelles lignes dans les valeurs,
qui a été imprimé pourquoi il gentiment, alors qu'ici elle n'a pas,
c'est pourquoi tout est smushed ensemble.
Ajoutons à cette nouvelle ligne juste pour rendre les choses plus agréables.
Regardons les choses en rediffusion, et ainsi de suite ici
regardez ce qui s'est passé.
Il imprimés tout dans l'ordre dans lequel nous l'avons mis dans le tableau.
Il ne maintenir l'ordre dans ce sens.
>> Pour en revenir à ce problème de visiteurs uniques
là où nous voulons être en mesure de parcourir un fichier,
et nous allons lui donner some_file.txt,
et nous allons itérer sur elle comme ça.
Nous avons dit que nous voulions utiliser un tableau pour s'assurer que nous avions pris toutes les
lignes uniques sortir de là, et nous avons pu le faire très facilement
par tout stocker dans un tableau que nous avons bien sûr déclarer hors de la portée d'une boucle,
et nous avons dit que si nous avons utilisé les lignes dans le fichier que les touches dans notre tableau
si nous sommes entrés dans une ligne double que nous serions remplacer la valeur précédente.
Ce n'est pas toujours possible d'avoir 2 clés identiques dans le même tableau.
Nous pouvons le faire.
Nous allons vous débarrasser de cette instruction echo ici.
Ici, nous stockons la ligne dans le fichier dans notre tableau
lui-même en utilisant comme clé.
Rien à faire, et il s'avère que nous n'avons même pas besoin de cette clé.
Nous n'avons pas besoin que la variable i.
À ce stade, si nous devions faire une autre boucle foreach
et nous avons été faire une boucle sur chaque arr
et en ligne dès maintenant si nous echo-oups, désolé.
Nous ne pouvons pas utiliser la virgule. Nous devons l'utiliser comme mot-clé.
Maintenant, si nous faisons écho à la ligne que nous devrions obtenir tous les mots uniques dans le fichier.
Si nous montons à some_file.txt,
et disons que nous faisons pomme, banane, pomme, pomme, banane,
si nous imprimons sur tous les mots uniques dans ce fichier nous ne devrions obtenir
pomme et la banane à imprimer.
Si nous gagnons ce, maintenant nous allons en faire un zoom avant,
php unique.php, et ta-da.
Nous avons réussi à uniqued le fichier.
>> La dernière partie de ce problème, on vous demande de trier ce tableau avant de l'imprimer
parce que, dans cet exemple simple que nous venons de faire
nous avons eu de la chance en ce sens que le fichier
nous avons fait cet exemple artificiel avec des pommes et des bananes.
Il a déjà été triés.
Mais en utilisant la fonction de tri simple, vous pouvez trier un tableau, ce qui est assez chouette.
La dernière chose que je voulais parler avec vous très rapidement sur
est que ce genre de PHP est très bien, et c'est super pratique
de savoir comment faire si jamais vous avez besoin de faire de petites choses, rapides programme.
Par exemple, si j'ai besoin d'écrire un programme qui, par exemple,
met tout le monde en sections je ne vais pas aller l'écrire en C
Ça va être long.
Il va y avoir une sorte de douleur, surtout si il ya des fichiers impliqués,
tout comme vous les gars ont vu.
C'est tellement agréable que, avec juste ce code beaucoup ici
nous avons réussi à extraire dans un fichier, extraire toutes les valeurs uniques
et de les imprimer arrière.
>> Toutefois, pour vos travaux, de vos projets,
si vous construisez des sites Web avec PHP, c'est que le pouvoir
nous manquons à nos fichiers PHP par cet interprète,
et l'interprète est le traitement de tout l'intérieur des balises PHP,
laissant tout le reste intact et recrachant les résultats.
Nous pouvons le faire pour construire HTML par programmation.
Maintenant, si nous revenons à la spécification, le dernier problème dans la spécification
parle de cette idée de concentrations
et la création d'un menu déroulant,
qui vous peuvent ou ne veulent pas faire, en fonction de ce que votre projet final est fait,
qui permet à l'utilisateur de choisir parmi une liste de toutes les concentrations possibles
leur seule concentration.
Maintenant, c'est une sorte de douleur à taper ce sur
et à faire tout cela manuellement, surtout quand vous avez à vous assurer
que vous avez tous les équerres à la bonne place et toutes les citations à la bonne place,
donc avec PHP, vous pouvez le faire par programme, et vous pouvez le faire très rapidement.
>> Voyons comment faire cela.
Nous allons ouvrir un nouveau fichier.
Nous allons mettre dans nos balises PHP.
Nous allons l'appeler concentrations.php,
et maintenant, quand vous faites cela, une sorte de bonne chose à penser
lorsque vous essayez de mélanger et assortir votre PHP et votre code HTML
est de trouver, d'accord, ce qui est la partie que je veux générer par programmation?
Quelle est la partie que je peux générer par programmation?
Il est vrai que vous pouvez faire tout de votre code HTML
à l'intérieur de blocs PHP.
Vous pouvez l'écho de tout le code HTML sous forme de chaînes.
Par exemple, si je veux commencer à faire les balises select à l'intérieur de PHP
Je peux dire d'écho, disons sélectionnez le nom = concentration,
puis en bas je pouvais avoir une autre balise écho
ou un autre écho appelé près de la sélectionner.
C'est une façon de le faire parce que cela va littéralement faire
est d'imprimer cette chaîne quand il est exécuté par l'interpréteur PHP,
de sorte que le résultat sera HTML.
Si je sauve ce fichier car il est en ce moment
et je cours concentrations.php php
regardez ce que j'ai obtenu.
J'ai eu cette ouverture balise de fermeture de sélection.
>> Si je devais le faire et je devais sauvegarder ce résultat dans un fichier,
dire, concentrations.html-attente, il semble que le l a passé à l'autre côté,
maintenant, si j'ouvre ici concentrations.html vous voyez que j'ai un fichier HTML valide.
Est-ce bizarre?
Nous utilisons PHP pour créer HTML, de créer du code HTML valide.
La façon dont nous le faisons, c'est que nous sommes juste avoir l'impression PHP
le code HTML que nous voulons pour l'imprimer.
C'est littéralement la façon dont des sites Web PHP fonctionnent.
Lorsque vous visitez un site Web qui vous envoie quelque chose comme
quelque chose, quelque chose, quelque chose dot com slash index.php
l'ordinateur est littéralement appeler index.php,
l'exécutant à travers l'interpréteur PHP, et tout ce qui sort indésirable
qu'il envoie au navigateur et dire hey, navigateur, interpréter cela comme HTML.
La bonne chose est que cela peut être une douleur à écrire constamment écho, l'écho, l'écho, l'écho
et joindre tout entre guillemets comme celui-ci, donc si vous voulez écrire
le code HTML qui va être statique vous-même vous pouvez le faire comme ceci,
le mettre dehors, fermez-le,
et puis là, vous ne mettre dans les balises PHP que vous connaissez
vous souhaitez générer par programmation, et dans ce cas ce sont ces étiquettes d'option
qui sont une douleur à générer.
>> Par exemple, nous pourrions générer un millier d'étiquettes d'option
en faisant quelque chose comme ceci, $ i <1000, i + +
et en disant valeur de l'option echo = $-oups, je ne peux pas faire ça.
Eh bien, nous allons lui donner un essai et voir ce qui se passe.
$ I puis dire $ i </ option.
Plutôt que d'avoir à taper cette balise option d'un millier de fois différentes
J'utilise le code PHP pour le générer automatiquement, par programmation.
Sorte de chouette. Ouais.
Je me souviens que cela soit mentionné ni dans la conférence ou la procédure pas à pas,
mais quelle est la différence entre les guillemets,
les normaux et ces choses simples?
En fait, c'est quelque chose que j'ai mal fait ici que je vais vous montrer.
Les guillemets simples ne permettent pas de caractères spéciaux,
donc tout l'intérieur d'une chaîne de caractères entre guillemets simples est interprété littéralement.
Si j'avais un \ n à l'intérieur des guillemets simples et je sauver ce, par exemple,
et maintenant je descends ici et exécutez-le-
oups, où vais-je?
Oh, c'est parce que j'ai oublié de dollars.
>> Maintenant, si j'ouvre-en fait, ici, nous allons vous débarrasser de la tapant le dans un fichier.
Nous allons le lire.
Ici vous voyez que j'ai ce littéral \ n dans la chaîne, à l'instar pas une ligne réelle nouvelle,
et de même, au lieu d'interpolation en fait la valeur de cette variable
il m'a donné l'$ i lui-même, qui est une sorte de douleur.
Le moyen de contourner cela est d'utiliser les guillemets,
et puis quand vous utilisez des guillemets doubles, il sera effectivement
correctement interpoler les valeurs de toutes ces variables ici
et aussi reconnaître ce n \ être la nouvelle ligne qu'il est
et non \ n.
En utilisant les simples est agréable quand vous avez
caractères qui pourraient être interprétés comme des caractères spéciaux parce que vous n'avez pas à
leur échapper en permanence.
Les choses peuvent déraper, et souvent la façon dont je le fais,
juste pour rendre les choses faciles, c'est que si je vais avoir quoi que ce soit
HTML comme dans mon code, je vais inclure édition des guillemets simples
et ensuite utiliser cet opérateur de concaténation
pour concaténer les variables po
C'est une autre façon de le faire
où nous avons le point qui va relier ceci est une chaîne
avec cette ce avec cela,
et maintenant je n'ai pas d'échapper à ces guillemets.
Je n'ai pas à utiliser ce type de s'échapper.
Ils vont littéralement être imprimés sous forme de guillemets et puis ce gars ici.
C'est une autre façon de mélanger le tout.
>> [Étudiants] Aussi, lorsque vous gettype écho il n'y avait pas de guillemets tout.
Bon, alors écho est un peu spécial dans le sens que vous n'avez pas besoin de parenthèses.
Vous n'avez pas besoin d'avoir les guillemets autour des variables nécessairement,
comme il est valable de dire echo $ i, et il va interpréter cela comme une chaîne.
Il va faire le casting, afin que nous puissions le faire, et c'est valable aussi, mais nous n'en avons pas besoin.
Il est facultatif.
Dans problème posé cette semaine regarder dehors pour beaucoup de ce genre de choses
où vous mélanger et assortir HTML avec PHP
juste comme ça, et maintenant, si nous revenir en arrière et nous courons ce
nous pouvons voir que nous avons un tas de valeurs d'option
qui vient de se imprimées.
Nous avons tout ce qu'il s'est HTML généré très vite pour nous.
Je vais laisser comme un exercice.
Il est très similaire à la lecture des fichiers que nous avons fait auparavant.
>> Il s'agit d'un fichier concentrations.txt que vous pouvez tirer vers le bas de la CAN,
et vous pouvez l'ouvrir en utilisant la même astuce foreach que nous avons fait précédemment,
et foreach vous avez juste faire écho à une option et branchez
les valeurs appropriées, les touches appropriées et indices,
et alors vous obtenez un menu déroulant qui crée littéralement
programme pour vous toutes les différentes concentrations de Harvard.
Une chose très pratique d'avoir.
Il ya beaucoup de choses de configuration pour cette mission.
Si vous n'avez pas fait cela prennent déjà la prochaine demi-heure, une heure,
un peu de temps ce soir définitivement à coup sûr,
marcher à travers la spécification problème posé,
voir ce qui se passe avec la mise en place des serveurs virtuels, l'hôte local, tous ces trucs.
Une chose à remarquer en ce moment, c'est que
dans la plupart des ensembles de problèmes que nous avons été aller dans votre dossier Dropbox
puis en téléchargeant le fichier zip problème posé et le décompresser.
Pour ce jeu de problème que vous ne voulez pas.
Vous voulez aller dans ce répertoire vhosts.
Vous aurez envie d'aller en vhosts et allez dans le répertoire hôte local en son sein,
et c'est là que vous aurez envie de tirer vers le bas le fichier zip,
décompressez-le, et soyez prêt à y aller.
Vous devrez suivre les étapes de près.
>> Si vous avez des questions, envoyez un courriel, postez sur Discutez, venez aux heures de bureau.
Merci les gars. La semaine prochaine, nous allons avoir une session d'examen pour le quiz.
Profitez de votre jeu dernier problème. J'espère que tout va très bien.
[CS50.TV]