Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Une variable permet de stocker une valeur en mémoire.
Une constante stocke également une valeur mais son contenu initial ne peut pas être modifié ensuite.
PHP propose deux types de tableaux : les tableaux indicés et les tableaux associatifs.
Les séquences à valeurs uniques ('set') n'existent pas en PHP mais une fonction permet de supprimer à postériori
les doublons éventuels dans un tableau.
Dans le chapitre précédent ("quelques bonnes raisons d'utiliser PHP") j'ai déjà survolé la notion de variable.
Rappelez vous la table de multiplication par 8.
$i et $produit sont des variables simples PHP.
Le premier caractère d'une variable PHP doit être le symbole $
Le nom doit être préfixé par le caractère $.
Le nom ne doit pas contenir d'espace, ni de caractères spéciaux (-, !, %, etc.) sauf le _ (underscore).
Par ailleurs une variable peut seulement commencer par une lettre ou un underscore ;
les chiffres sont autorisés mais pas en premier caractère.
les noms de variables sont sensibles à la casse. Ainsi $nom et $NOM sont deux variables différentes.
Le type d'une variable peut donc évoluer en fonction de sa valeur. Le typage des variables est implicite et dynamique en PHP. Il n’est donc pas nécessaire de déclarer le type au préalable.
Notez l'emploi de la fonction gettype(variable) qui retourne le type d'une variable OU
plutôt le type de donnée contenu dans cette variable.
Pour créer un booléen il faut saisir true/false et surtout ne pas délimiter par des guillemets.
Les mots true / false sont insensibles à la casse.
La fonction var_dump() argumentée avec une variable donne beaucoup d'infos sur celle-ci : type, longueur et contenu.
Notez la balise ouvrante H4 avant le début du script et la la balise fermante H4 après le script.
Ainsi tous les instructions echo du script se voient appliquer le style défini pour le sélecteur H4.
L'avant avant dernière instruction retourne "array".
En effet j'ai affecté dans $variable une liste de valeurs entre crochets (un tableau indicé).
Les tableaux sont abordés en deuxième partie de ce chapitre.
Lapalisse aurait pu dire : "une constante est une variable constante". Plus sérieusement une constante est un type particulier de variable qui ne peut être modifiée après avoir été initialisée.
On définit une constante avec la fonction define('nom',valeur)
Le nom d'une constante ne commence pas par le symbole $ ; par convention les lettres sont en majuscules.
Il est inutile de définir sous forme d'une constante PI car une fonction mathématique (pi())
retourne la valeur de PI.
Pour assembler des expressions (chaines, variables, balisage) il faut les relier avec l'opérateur de concaténation qui est le point : "." (et non pas "+").
Premier echo : emploi de l'opérateur de concaténation pour assembler chaine, variable et balisage ; la syntaxe est lourde.
Deuxième echo : la variable $age est insérée dans une chaine délimitée par des guillemets simples.
Troisième echo : la variable $age insérée dans une chaine délimitée par des guillements doubles.
Premier echo : affichage correct mais syntaxe lourde car concaténation.
Deuxième echo : bug (affichage du nom de la variable et non pas son contenu).
Troisième écho : affichage correct et syntaxe succincte : une seule chaine intégrant variables et et balises.
Il s'agit des opérateurs +, -, *,/ pour respectivement addition, soustraction, multiplication et division.
Pour obtenir le reste de la division entière il faut utiser l'opérateur % (modulo).
Exemple : $reste = 10%3 ; $reste récupère 1 car le reste de la division entière de 10 par 3 est 1.
Pour élever à la puissance N il faut utiliser **
Exemple : $resultat = 10**6 ; $resultat récupère 1 000 000 (10 à la puissance 6)
Ce sont des opérateurs qui effectuent un traitement mais aussi une affectation.
Leur utilisation simplifie les instructions.
J'incrémente trois fois $init avec trois syntaxes différentes.
Je décrémente trois fois $init2 avec trois syntaxes différentes.
Un tableau indicé stocke plusieurs valeurs.
Ces valeurs peuvent être des nombres, des chaines voire d'autres tableaux.
Chaque élément est référencé par un indice ; il ne faut pas saisir les indices c'est PHP qui gère.
Dans ce script : création de tableaux indicés et quelques manipulations.
Je vous montre deux façons de créer un tableau indicé.
Dans le premier tableau j'utilise la fonction array suivi de la liste de toutes les valeurs du tableau.
Dans l'autre tableau j'utilise la notation 'crochets'.
Notez que les indices ne sont pas saisis.
Pour afficher en une seule instruction la totalité d'un tableau il suffit d'utiliser le fonction
print_r(nomTableau) qui affiche pour chaque élément son indice et la valeur correspondante.
Le premier élément d'un tableau indicé à l'indice 0.
Pour parcourir un tableau, PHP propose la structure foreach.
Vous pouvez alors vous contenter d'afficher les valeurs OU afficher pour chaque élément : indice & valeur.
On peut appliquer à un tableau indicé de nombreuses fonctions.
Notez que systématiquement les chaines qui suivent l'instruction echo sont délimitées par des guillemets doubles afin
de pouvoir y insérer des variables et du balisage HTML.
Pour afficher le contenu d'un tableau je privilégie la structure foreach().
Je vous montre aussi que l'on peut appliquer la fonction var_dump() à un tableau (indicé ou associatif).
Il est toujours possible d'ajouter des éléments à un tableau avec la syntaxe $tableau[] = valeur, PHP gérant l'indice.
La liste ci-dessus n'est pas exhaustive ; il existe d'autres fonctions qui seront abordées en fin de chapitre.
Notez que j'ai calculé la moyenne simple des notes en combinant les fonctions array_sum & count
La fonction var_dump() précise la longueur du tableau et précise pour chaque élément : indidce, type et valeur.
Chaque élément est identifié non pas par un indice mais par un mot (une clé).
On parle de paires de "clé-valeur" !
Ainsi pour identifier un individu on utilise son nom, son prénom et sa civilité (Monsieur ou Madame).
Dans la page ci-dessous on décrit sous forme de tableaux associatifs deux individus.
Dans les deux cas notez l'opérateur => avec la clé devant et la valeur après.
Pour les deux tableaux les clés sont : nom, prenom, civilite
Quant au parcours d'un tableau associatif on utilise aussi la boucle foreach() et on peut afficher pour chaque paire
uniquement la valeur OU clé & valeur.
Pour obtenir des infos détaillées sur un tableau associatif on peut utiliser les fonctions print_r ou mieux
encore var_dump().
La fonction print_r() se contente d'afficher les clés et les valeurs.
La fonction var_dump() précise la longueur du tableau (nombre de paires) et pour chaque valeur le type et la longueur.
les infos retournées par les fonctions print_r() & var_dump() sont précieuses mais on ne peut pas dire
que la présentation qui en découle soit esthétique ...
Ces fonctions sont des outils de débogage essentiels mais réservées à la phase de développement.
Compte tenu de la structure d'un tableau associatif (séquence de paires "clé=>valeur") certaines fonctions sont spécifiques à ce type de tableau et en particulier les fonctions de tri.
Pour un tableau associatif on peut trier par valeurs ou par clés, par ordre croissant ou
par ordre décroissant.
Il y a donc quatre fonctions de tri :
Par contre certaines fonctions sont partagées par les tableaux indicées et les tableaux associatifs.
Citons entre autres : reset(), end(), max(), min() count() , nex(), prev(), etc.
Un tableau indicé peut avoir pour éléments des tableaux indicés ou associatifs.
$membres est un tableau indicé comprennant trois tableaux associatifs.
J'affiche le détail de chaque tableau associatif avec différentes techniques.
Puis je parcoure le tableau bidimensionnel avec deux foreach imbriqués.
En Python les séquences de valeurs uniques se nomment "set" ; il en est de même en JavaScript.
Dans ces deux langages les 'sets' sont des séquences où l'ajout aboutissant à des doublons est impossible.
En PHP on ne peut pas véritablement créer de structures équivalentes.
Mais on peut supprimer les doublons à postériori avec la fonction array_unique().
La fonction array_unique() supprime les doublons dans le tableau précisé.
Suite à des ajouts, des doublons peuvent de nouveau apparaitre.
Le même 'array' peut être source et destination de la commande array_unique()
$unique = array_unique($unique); // suppression des doublons dans $unique
La fonction range() crée un tableau contenant une plage d'éléments à partir
de trois arguments : range(début,fin,pas). Le pas est facultatif (par défaut =1).
Si le paramètre début est supérieur au paramètre fin alors la liste est décroissante.
Les paramètres début et fin peuvent être des lettres minuscules ou majuscules.
Pour créer rapidement des tableaux indicés j'ai utilisé la fonction range().
Je montre aussi comment fusionner deux tableaux en un seul avec la fonction array_merge().
Piqure de rappel sur sort() & array_unique().
La fonction in_array(valeur cherchée, tableau) retourne un booléen ; donc il faut l'intégrer dans un test !
Le rendu indique que 5 existe dans ce tableau.
Essayez avec 11 !Simuler le tirage au sort d'une carte
Une carte c'est une enseigne (ou couleur) et un rang (as, roi, ... 7).
La fonction array_rand() prend au hasard dans un tableau un indice (ou clé).
Il faut donc récupérer ensuite la valeur correspondant à cet indice : valeur = tableau[indice]
Thème : simuler le tirage au sort de 5 cartes (une main au poker) et Il ne doit y avoir de doublons !
Il ne faut pas boucler 5 fois mais boucler tant que le tableau "$ma_main" ne comprend
pas encore cinq valeurs distinctes ; en effet le hasard peut générer plusieurs fois la même carte.
La carte tirée est : Roi de coeur La carte tirée est : As de coeur La carte tirée est : 10 de trèfle La carte tirée est : Dame de carreau La carte tirée est : 10 de trèfle La carte tirée est : As de coeur La carte tirée est : 7 de carreau Ma main est : Roi de coeur - As de coeur - 10 de trèfle - Dame de carreau - 7 de carreau -
Il a fallu 7 passages dans la boucle pour générer 5 cartes distinctes ! Donc une structure for() qui boucle 5 fois n'est pas envisageable.
À vous de travailler !
Vous devriez être capable de réaliser ce script surtout si vous avez également étudié le chapitre sur les structures de contrôle
qui évoque entre autes les boucles infinies ...
Tests & boucles
Les tableaux associatifs $_GET, $_POST, $_FILE sont dans le jargon PHP des variables superglobales.
Les variables superglobales sont des tableaux associatifs qui sont créés automatiquement par PHP dans certaines circonstances.
Il existe aussi $_COOKIE et $_SESSION.
Les variables superglobales sont accessibles partout et doivent être écrites en majuscules !
Le traitement en PHP des données et fichiers soumissionnées fait l'objet de tout un chapitre.
Traitement des données soumissionnées