Les variables
- Par Emacs
- 12 commentaires
- 3 902 lectures
- Format PDF
- RSS - Atom
Parmi les concepts les plus importants de la programmation figure la notion de variable. C'est une notion à assimiler et maîtriser pour pouvoir entreprendre les premières applications de base. Nous verrons que les variables font partie des mécanismes qui permettent de rendre une application dynamique. Entrons dans le vif du sujet.
Qu'est-ce qu'une variable ?
Une variable est une structure de données de type primitif (entier, réel, caractère, chaîne de caractères, booléen ou null) ou bien de type structuré (tableau ou objet) qui permet de stocker une ou plusieurs valeurs. Chaque valeur d'une variable est susceptible d'être remplacée par une autre au cours de l'exécution du programme. D'où le terme « variable ». En programmation, une variable est définie suivant 4 informations essentielles listées ci-après :
- Un nom
- Un type
- Une / des valeurs
- Une sémantique (un sens) après les opérations effectuées sur cette variable. Plus concrètement, la valeur de la variable est-elle logique par rapport à son contexte initial ?
Schématiquement, une variable peut être assimilée à une boîte opaque sur laquelle est collée une étiquette portant un nom (le nom de la variable). A l'intérieur de ce paquet se trouve quelque chose (la valeur) d'un type précis (le type de la variable). Quand nous souhaitons obtenir cette valeur, nous ne nous adressons pas directement à elle mais nous y faisons référence en sélectionnant la boîte par son nom.
Prenons un exemple plus parlant. Un médecin souhaite obtenir une information concernant l'état de santé d'un de ses patients (Mr Charles Dupont). Pour l'obtenir, il devra demander à sa secrétaire de lui sortir le dossier Charles Dupont dans lequel se trouve cette information qu'il ne connait pas !
Déclaration et initialisation d'une variable
Après cette introduction plutôt théorique, nous entamons la partie pratique du sujet. Il s'agit de la déclaration et de l'initialisation d'une variable en langage PHP. Contrairement à des langages très typés comme C, C++ ou Java; PHP ne porte pas d'importance au typage des variables. Par exemple, pour une même variable, le programmeur est libre de lui affecter une valeur de type entier à un instant T1 puis de lui affecter une chaine de caractères à un instant T2. On dit que PHP est un langage de typage « faible et dynamique ». Cela rend son utilisation plus souple par les développeurs mais pas forcément plus assidue... C'est d'ailleurs quelque chose que l'on peut reprocher à PHP.
Afin d'adopter de bonnes pratiques dès le début, nous vous conseillons de déclarer toute vos variables avec un type et leur affecter une valeur par défaut. Retenez le terme d'affectation au passage.
Par ailleurs, il est nécessaire de nommer les variables avec des noms évocateurs afin de faciliter la lecture du code. Une variable mal nommée sera source de problème lors d'un débugging ou d'une maintenance du programme des semaines plus tard.
Toute variable doit être déclarée au moyen du signe dollars $ suivi obligatoirement de lettres (en majuscules ou minuscules) ou d'un underscore (tiret souligné _ ). Ci-dessous, un tableau récapitulatif des syntaxes correctes et incorrectes de déclaration de variables.
| Correct | Incorrect | Explications |
|---|---|---|
| Déclaration de variables PHP | ||
| $variable | variable | Une variable doit commencer par $ |
| $Variable1 | $Variable 1 | Les espaces sont interdits |
| $variable_suite | $variable-suite | Le tiret est interdit |
| $_variable | $-variable | Le tiret est interdit |
| $variable2 | $2variable | Il ne peut y avoir de chiffre après le $ |
Note : PHP est l'un des rares langages de programmation acceptant les caractères accentués dans les noms de variables. Cependant les employer est fortement déconseillé pour des raisons de maintenance et de portabilité.
Le script suivant présente la déclaration de 6 variables de types différents. La première et la seconde sont de type chaine de caractères, la troisième de type entier, la quatrième de type booléen, la cinquième de type tableau et la dernière de type Etudiant. Nous n'aborderons pas ces deux derniers dans ce tutoriel. D'autres tutoriels sont dédiés aux tableaux et à la programmation orientée objet.
Déclaration de variables de types différents<?php$prenom = 'Hugo'; // Type string (chaine de caractères)$nom = "Hamon"; // Type string (chaine de caractères)$age = 19; // Type entier$estEtudiant = true; // Type booléen$unEtudiant = new Etudiant(); // Objet de type Etudiant?>
Pour déclarer une variable de type :
- string : on entoure la chaîne de caractères de guillemets ou d'apostrophes.
- entier, réel ou flottant : on écrit la valeur telle qu'elle. Pour les flottants, la virgule est remplacée par un point (écriture à l'américaine).
- booléen : on écrit true ou false directement.
- sans type : si l'on ne souhaite pas typer la variable, on lui affecte la valeur null.
Note : le type d'une variable n'est pas déclaré explicitement comme en Java, C ou encore C++ mais implicitement au moment de l'affectation d'une valeur.
Les noms de variables sont sensibles à la casse, ce qui signifie que l'interprêteur fera la différence entre deux variables écrites différemment. Par exemple, $nom et $NOM seront considérées comme deux variables complètement distinctes.
Par convention, les noms de variables composés de plusieurs mots (exemple : $estEtudiant) doivent avoir le premier mot en minuscules et les autres mots avec la première lettre en majuscule. Cette règle n'est pas à obligatoirerent à suivre mais fortement conseillée dans la mesure où elle fait partie des bonnes pratiques de programmation.
Note : il est recommandé de placer la directive error_reporting du php.ini à E_ALL sur toutes vos pages afin de faire remonter toute erreur générée. Les variables mal déclarées ou non initialisées peuvent être source d'erreur d'analyse.
L'affectation de valeur à une variable
L'affectation permet de fixer une valeur à une variable. Elle s'effectue au moyen du symbole égal =. Dans le script précédent, nous avons déclaré 6 variables et leur avons affecté à chacune une / plusieurs valeur(s) par défaut.
L'exemple ci-dessous montre comment changer la valeur d'une variable. Rien n'est compliqué puisque c'est exactement la même chose que précédemment.
<?php$prenom = 'Hugo';$age = 19;echo '<br/>';$prenom = 'Hadrien';$age = 18;echo '<br/>';?>
Explications : nous avons deux variables initialisées $prenom et $age Nous affichons leur valeur pour les contrôler. Puis nous actualisons les variables en leur affectant à chacune une nouvelle valeur. Enfin, nous affichons les nouvelles valeurs. Nous remarquons alors que nous avons perdu les valeurs originales. Une affectation entraîne donc l'écrasement de l'ancienne valeur par la nouvelle.
La concaténation, c'est quoi ?
Sous ce terme un peu « barbare » se cache un principe fondamental lié des variables. La concaténation n'est ni plus ni moins que l'opération permettant d'assembler deux ou plusieurs informations dans une variable. Cette opération se réalise au moyen de l'opérateur de concaténation qui est le point (.). Illustrons cela avec un exemple :
La concaténation<?php// Déclaration des variables$prenom = 'Hugo';$nom = 'Hamon';$identite = '';// On concatène $nom et $prenom dans $identite$identite = $prenom .' '. $nom;// Affiche 'Hugo Hamon'echo $identite;?>
Nous avons placé ici dans la variable $identite, le contenu de la variable $prenom suivi d'un espace par concaténation et enfin le contenu de la variable $nom.
Nous aurions également pu procéder de la manière suivante, ce qui nous évite d'employer une nouvelle variable $identite.
Autre exemple de concaténation<?php// Déclaration des variables$prenom = 'Hugo';$nom = 'Hamon';// On concatène $nom dans $prenom$prenom .= ' '. $nom;// Affiche 'Hugo Hamon'echo $prenom;?>
La syntaxe de concaténation ci-dessus signifie que l'on ajoute l'espace et le contenu de la variable $nom à la suite du contenu de la variable $prenom. Ainsi, cette syntaxe est similaire à celle-ci :
Opérations mathématiques sur les variables
Les variables peuvent contenir des nombres. Il est donc logique que nous puissions opérer mathématiquement sur ces valeurs. PHP propose une série d'opérateurs mathématiques assurant cela. Il est donc possible d'additionner, diviser, multiplier, ou encore soustraire les valeurs des variables.
Les exemples ci-dessous illustrent l'emploi de ces différents opérateurs mathématiques.
Opérations mathématiques sur les variables<?php// Déclaration des variables mathématiques$a = 10;$b = 2;$c = 0;// $c vaut 10+2 = 12$c = $a + $b;// $c vaut 10x2 = 20$c = $a * $b;// $c vaut 10/2 = 5$c = $a / $b;// $c vaut 10-2 = 8$c = $a - $b;// $c vaut le reste de la division de $a par $b soit 0$c = $a % $b;// Incrémentation de $a$a++;// Décrémentation de $b$b--;?>
L'opérateur modulo (%) retourne le reste de la division de deux nombres.
L'opérateur d'incrémentation augmente de 1 la valeur de la variable. La syntaxe $a++ est identique à $a+=1 et $a = $a+1.
L'opérateur de décrémentation diminue de 1 la valeur de la variable. La syntaxe $b-- est identique à $b-= et $b = $b-1.
Pour plus d'informations concernant les opérateurs mathématiques, nous vous conseillons de vous reporter au tutoriel « les opérateurs arithmétiques, logiques et binaires ».
Les variables dynamiques
Elles sont apparues avec la version 4 de PHP et on les appelle aussi « variable variable ». Concrètement, une variable dynamique repose sur le fait que la valeur d'une variable devienne à son tour une variable. Prenons un exemple :
Utilisation des variables dynamiques<?php// Définition des variables$poupee = 25;$voiture = 17;$console = 250;// Choix d'un jouet$jouet = 'console';// Affichage du prix du jouet sélectionné?>
Dans cet exemple, nous déclarons 3 variables qui représentent les prix de 3 jouets (une poupée, une voiture et une console de jeux vidéo). Puis nous déclarons une variable $jouet dans laquelle on stocke le nom du jouet pour lequel on désire connaître le prix. Ici nous avons décidé de savoir le prix que vaut la console vidéo. Enfin, au moyen d'une instruction echo(), on affiche le jouet sélectionné (console vidéo) et son prix en faisant une variable variable. Ainsi, $jouet = 'console' mais $$jouet est similaire à $console. En effet, la valeur de $jouet est devenue le nom de la variable.
Note : Bien que leur principe de fonctionnement est intéressant, il est vivement recommandé de ne pas les utiliser. Les tableaux, que nous verrons dans le chapitre suivant, remplissent cette fonction de variables dynamiques.
Test de l'existence d'une variable
Dans un programme, il est très souvent utile de savoir si une variable existe avant de pouvoir l'exploiter. Le langage PHP met à disposition des développeurs la fonction (même structure du langage) isset() qui permet de savoir si oui ou non la variable passée en paramètre existe. Cette fonction retourne un booléen TRUE ou FALSE. Illustrons ceci avec un exemple :
Test d'existence de variables dans un programme<?php// Déclaration de la variable$prenom = 'Hugo';echo '<br/>';?>
Dans notre exemple, $prenom est bien déclarée donc la fonction isset() retourne TRUE. Quant à la variable $nom, elle n'est pas déclarée dans le programme donc la fonction isset() retourne FALSE.
Note : nous conseillons plutôt d'utiliser la fonction empty() qui permet de savoir si une variable est vide ou non. Ainsi en faisant ce test, elle permet de connaître deux choses :
- La variable existe ou non
(elle est déclarée)
- La variable contient une valeur ou bien est vide (null par exemple)
Destruction d'une variable
Il est aussi parfois utile de détruire les variables qui encombrent le programme et qui ne servent plus. Par défaut, toutes les variables sont automatiquement effacées à la fin de l'exécution du programme mais il est néanmoins possible de forcer leur suppression en cours d'exécution. Pour se faire, PHP dispose de la fonction (ou plutôt la structure de langage) unset() qui prend en paramètre la variable à supprimer.
Suppression d'une ou plusieurs variables<?php// Déclaration des variables$prenom = 'Hugo';$nom = 'Hamon';$age = 19;$estEtudiant = true;// Suppression d'une variable// Suppression de plusieurs variables?>
Note : si l'on souhaite supprimer plusieurs variables d'un coup, il suffit de les lui préciser en les séparant par une virgule.
Conclusion
Ce cours nous a permis de définir les notions de variable, de déclaration, d'initialisation mais aussi les principes de concaténation, d'opérations mathématiques et de variables dynamiques. Nous sommes désormais à même de nous lancer dans des programmes plus complexes.
Les commentaires
2. Par Emacs le lundi 19 novembre 2007 à 21:09
La meilleure solution reste unset(). En faisant $toto = null, tu lui attribues une valeur mais tu ne la supprimes pas de la mémoire.
3. Par Mickaël Wolff le mardi 20 novembre 2007 à 21:09
La seule chose que fait en plus unset, c'est de supprimer la variable. Ce qui est en général inutile, surtout lorsque tu programmes en objet (d'ailleurs, unset devrait faire une erreur lorsqu'il est appelé sur un attribut, puisqu'il ne peut pas détruire la variable, mais uniquement la nullifier).
Mais c'est du détail![]()
4. Par greg le mardi 25 décembre 2007 à 23:11
Très Très mais alors très mais vraiment très intéressant ces cours.
C'est légèrement plus détaillé que le Sdz et cela fait avancer !! COOLL
5. Par Emacs le mercredi 26 décembre 2007 à 00:12
C'est le but ! Etre plus complet que la plupart des sites
![]()
6. Par tchix le mardi 08 avril 2008 à 13:01
Merci pour le partage de tes connaissances!
C'est clair, précis, documenté et tres pédagogique.
Merci.
Tchix!
7. Par Maman le samedi 24 mai 2008 à 13:01
c'est toujours trèsvsympathique de visiter to nblog
![]()
8. Par shark le samedi 24 mai 2008 à 21:09
C'est clair
9. Par ky le samedi 07 juin 2008 à 12:12
merci c limpide franchement bravo
10. Par PasD'IdeesDePseudo le mercredi 09 juillet 2008 à 17:05
Salut à tous,
Très bon tuto, mais vu l'apprentissage que peut donner A-PHP tout au long de son parcours, ce n'est pas étonnant.
Toutefois, une petite question à propos de la concaténation, quand est-il préférable d'utiliser la dite virgule plutôt que le dit point ?
PasD'IdeesDePseudo
11. Par Emacs le mercredi 09 juillet 2008 à 23:11
La virgule est uniquement à utiliser avec echo(). Dans tous les autres cas, il faudra avoir retour à l'opérateur de concaténation point.
Merci pour ton commentaire![]()
12. Par Nom d'un chien le mardi 15 juillet 2008 à 16:04
Merci pour l'article, tres utile pour un debutant.

1. Par Mickaël Wolff le lundi 19 novembre 2007 à 18:06