Accueil

Traduction

Débuter en programmation web - sommaire

Débuter en programmation web - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Les variables, constantes et tableaux en PHP

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.

Les variables simples

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 $

Règles de nommage d'une variable

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.

Type d'une variable

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.

La fonction gettype()

Le code de l'exemple

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.

Le rendu

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.

Les constantes en PHP

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.

Exemple - le code

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.

Le rendu

Les opérations en PHP

La concaténation

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 "+").

Exemple - le code

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.

Le rendu

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.

Les opérateurs arithmétiques

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)

Les opérateurs combinés

Ce sont des opérateurs qui effectuent un traitement mais aussi une affectation.
Leur utilisation simplifie les instructions.

Exemple

J'incrémente trois fois $init avec trois syntaxes différentes.
Je décrémente trois fois $init2 avec trois syntaxes différentes.

Le rendu

Les tableaux indicés

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.

Exemple - le code

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.

Le rendu

Autres manipulations de tableaux indicés

On peut appliquer à un tableau indicé de nombreuses fonctions.

Le code de l'exemple

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.

Le rendu

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.

Les tableaux associatifs

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.

Le script PHP

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().

Le rendu

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.

Manipulation de tableaux associatifs

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.

Le script

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.

Le rendu

Tableaux multidimensionnels

Un tableau indicé peut avoir pour éléments des tableaux indicés ou associatifs.

Exemple

$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.

Le rendu

Autres traitements sur tableaux

La fonction array_unique()

Comparons différents langages

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().

Exemple - le code

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

Le rendu

La fonction range()

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.

Le code

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

Le rendu indique que 5 existe dans ce tableau.
Essayez avec 11 !Simuler le tirage au sort d'une carte

Le code

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]

Le rendu dans un autre onglet

Testez le code !

Pour aller plus loin : simuler le poker

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.

Le rendu dans un autre onglet

Testez le code !

Exemple de rendu

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.

Le code

À 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

Variables superglobales

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