Aller au menu - Aller au contenu

Icône Les variables

Mise à jour : 03/04/2010
Difficulté : Facile Facile Creative Commons BY-NC-SA
165 249 visites depuis 7 jours, dont 4 061 sur ce chapitre, classé 3/795
Attention, chapitre fondamental !
Les variables sont un élément indispensable dans tout langage de programmation, et en PHP on n'y échappe pas. Ce n'est pas un truc de programmeurs tordus, c'est au contraire quelque chose qui va nous simplifier la vie. Sans les variables, vous n'irez pas bien loin. :p

Les variables nous permettent de retenir temporairement des informations en mémoire. Avec elles, nous allons pouvoir par exemple retenir le pseudonyme du visiteur, effectuer des calculs et bien d'autres choses !
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Qu'est-ce qu'une variable ?

Rien qu'avec leur nom, vous devez vous dire que c'est quelque chose qui change tout le temps. En effet, le propre d'une variable c'est de pouvoir varier (lapalissade ;) ). Mais qu'est-ce que c'est concrètement ?

Une variable, c'est une petite information stockée en mémoire temporairement. Elle n'a pas une grande durée de vie. En PHP, la variable (l'information) existe tant que la page est en cours de génération. Dès que la page PHP est générée, toutes les variables sont supprimées de la mémoire car elles ne servent plus à rien. Ce n'est donc pas un fichier qui reste stocké sur le disque dur mais une petite information temporaire présente en mémoire vive.

C'est à vous de créer des variables. Vous en créez quand vous en avez besoin pour retenir des informations.

Un nom et une valeur



Une variable est toujours constituée de deux éléments :
  • Son nom : pour pouvoir la reconnaître, vous devez donner un nom à votre variable. Par exemple age_du_visiteur.
  • Sa valeur : c'est l'information qu'elle contient, qui peut changer. Par exemple : 17.

Ici, je vous ai donné l'exemple d'une variable appelée age_du_visiteur qui a pour valeur 17.
On peut modifier quand on veut la valeur de cette variable, faire des opérations dessus, etc. Et quand on en a besoin, on l'appelle (par son nom ;) ), et elle nous dit gentiment la valeur qu'elle contient.

Par exemple vous pouvez demander à un moment :

- Hep ! Toi, la variable age_du_visiteur, que contiens-tu ?
- 17
- Merci !


Vous allez voir que ces petites bébêtes, même si elles peuvent vous sembler encore un peu floues, seront vraiment indispensables pour votre site en PHP.
Par exemple, vous pourrez retenir temporairement le nom du visiteur. Dans une variable nom_du_visiteur, vous stockez son pseudo, par exemple "M@teo21". Dès que vous en avez besoin vous pouvez l'utiliser, par exemple pour afficher un message de bienvenue personnalisé : "Salut M@teo21 ! Bienvenue sur mon site !".

Les différents types de variables



Les variables sont capables de stocker différents types d'informations. On parle de types de données. Voici les principaux types à connaître :

  • Les chaînes de caractères (string) : les chaînes de caractères sont le nom informatique qu'on donne au texte. Tout texte est appelé chaîne de caractères. En PHP, ce type de données a un nom : string. On peut stocker des textes courts comme très longs au besoin.
    Exemple : "Je suis un texte". Une chaîne de caractères est habituellement écrite entre guillemets ou entre apostrophes (on parle de guillemets simples) : 'Je suis un texte'. Les deux fonctionnent mais il y a une petite différence que l'on va découvrir plus loin.
  • Les nombres entiers (int) : ce sont les nombres du type 1, 2, 3, 4, etc. On compte aussi parmi eux les nombres relatifs : -1, -2, -3...
    Exemple : 42
  • Les nombres décimaux (float) : ce sont les nombres à virgule, comme 14,738. On peut stocker de nombreux chiffres après la virgule, ce qui devrait convenir pour la plupart des usages que vous en ferez. Attention, les nombres doivent être écrits avec un point au lieu de la virgule (c'est la notation anglaise).
    Exemple : 14.738
  • Les booléens (bool) : c'est un type très important qui permet de stocker soit vrai soit faux. Cela permet de retenir si une information est vraie ou fausse. On les utilise très fréquemment. On écrit true pour vrai, et false pour faux.
    Exemple : true
  • Rien (NULL) : aussi bizarre que cela puisse paraître, on a parfois besoin de dire qu'une variable ne contient rien. Rien du tout. On indique donc qu'elle vaut NULL. Ce n'est pas vraiment un type de données, mais plutôt l'absence de type.

En résumé, voici ce qu'il faut retenir des différents types d'informations qu'est capable de stocker PHP dans les variables :
Types de données


Cela devrait vous donner une idée de tout ce qu'est capable de stocker PHP en mémoire. Ces types suffiront pour la création de notre site !

Maintenant, rentrons dans le concret. Comment créer une variable et comment afficher ce qu'elle contient ?

Affecter une valeur à une variable

Premières manipulations de variables



Je vous propose de commencer par regarder ce code d'exemple :

Code : PHP
1
2
3
<?php
$age_du_visiteur = 17;
?>


Avec ce code PHP, on vient en fait de créer une variable :
  • Son nom est age_du_visiteur
  • Sa valeur est 17


Notez qu'on ne peut pas mettre d'espaces dans un nom de variable. A la place, utilisez un underscore _ (c'est le symbole sous le chiffre 8 sur un clavier AZERTY).
Évitez aussi les accents, les cédilles et tout autre symbole pour le nom. PHP ne les apprécie pas trop...


Analysons dans le détail le code qu'on vient de voir :

  • D'abord, on écrit le symbole Dollar ($) : il précède toujours le nom d'une variable. C'est comme un signe de reconnaissance si vous préférez : ça permet de dire à PHP "J'utilise une variable". Vous reconnaîtrez toujours qu'il y a une variable par la présence du symbole Dollar ($).
  • Ensuite, il y a le signe Egal (=) : celui-là c'est logique, c'est pour dire que $age_du_visiteur est égal à...
  • A la suite, il y a la valeur de la variable, ici 17.
  • Enfin, il y a l'incontournable symbole point-virgule (;), qui permet de terminer l'instruction.


Concrètement, qu'est-ce que le code précédent afficherait ? Rien du tout ! :D Eh oui, tant que vous n'utilisez pas echo, rien ne s'affiche. Là, le serveur a juste créé la variable temporairement en mémoire, mais il n'a rien fait d'autre.


Supposons maintenant que l'on écrive ceci :

Code : PHP
1
2
3
4
5
<?php
$age_du_visiteur = 17; // La variable est créée et vaut 17
$age_du_visiteur = 23; // La variable est modifiée et vaut 23
$age_du_visiteur = 55; // La variable est modifiée et vaut 55
?>


Que se passera-t-il ? La variable $age_du_visiteur va être créée et prendre pour valeur, dans l'ordre : 17, 23, puis 55. Tout cela va très vite, l'ordinateur étant très rapide vous n'aurez pas le temps de dire "ouf" que tout ce code PHP aura été exécuté.

Comme tout à l'heure, rien ne s'affiche. Seulement, quelque part dans la mémoire de l'ordinateur, une petite zone nommée age_du_visiteur vient de prendre la valeur 17, puis 23, puis 55.

Utiliser les types de données



Vous vous souvenez des types de données dont je vous ai parlé il y a quelques minutes ? Les string, int, float... Voici un exemple de variable pour chacun de ces types.

Le type string (chaîne de caractères)



Ce type permet de stocker du texte. Pour cela, vous devez entourer votre texte de guillemets doubles "" ou de guillemets simples '' (ce sont des apostrophes).

Voici 2 exemples, l'un avec des guillemets simples et l'autre avec des guillemets doubles :

Code : PHP
1
2
3
4
<?php
$nom_du_visiteur = "Mateo21";
$nom_du_visiteur = 'Mateo21';
?>


Attention petit piège : si vous voulez insérer un guillemet simple alors que le texte est entouré de guillemets simples, il faut l'échapper comme on l'a vu précédemment en écrivant un antislash devant. De même pour les guillemets doubles. Voici un exemple pour bien comprendre :

Code : PHP
1
2
3
4
<?php
$variable = "Mon \"nom\" est Mateo21";
$variable = 'Je m\'appelle Mateo21';
?>


En effet, si vous oubliez de mettre un antislash, PHP va croire que c'est la fin de la chaîne et il ne comprendra pas le texte qui suivra (vous aurez en fait un message Parse error).

Vous pouvez en revanche insérer sans problème des guillemets simples au milieu de guillemets doubles et inversement :

Code : PHP
1
2
3
4
<?php
$variable = 'Mon "nom" est Mateo21';
$variable = "Je m'appelle Mateo21";
?>


La différence est subtile, faites attention. Il y a d'ailleurs une différence plus importante entre les deux types de guillemets dont nous parlerons plus loin.

Le type int (nombre entier)



On vient de l'utiliser pour nos exemples précédents. Il suffit tout simplement d'écrire le nombre que vous voulez stocker, sans guillemets.

Code : PHP
1
2
3
<?php
$age_du_visiteur = 17;
?>



Le type float (nombre décimal)



Vous devez écrire votre nombre avec un point au lieu d'une virgule. C'est la notation anglaise.

Code : PHP
1
2
3
<?php
$poids = 57.3;
?>


Le type bool (booléen)



Pour dire si une variable vaut vrai ou faux, vous devez écrire le mot true ou false sans guillemets autour (ce n'est pas une chaîne de caractères !). Je vous conseille de bien choisir le nom de votre variable pour que l'on comprenne ce que ça signifie. Voyez vous-mêmes :

Code : PHP
1
2
3
4
<?php
$je_suis_un_zero = true;
$je_suis_bon_en_php = false;
?>


Une variable vide avec NULL



Si vous voulez créer une variable qui ne contient rien, vous devez lui passer le mot-clé NULL (vous pouvez aussi l'écrire en minuscules : null).

Code : PHP
1
2
3
<?php
$pas_de_valeur = NULL;
?>


Cela sert simplement à indiquer que la variable ne contient rien, tout du moins pour le moment.

Afficher et concaténer des variables

Nous avons appris à créer des variables et à stocker des informations à l'intérieur. Mais pour le moment, aucun de nos codes source n'affiche quoi que ce soit.

Afficher le contenu d'une variable



Vous vous souvenez que l'on peut afficher du texte avec echo ? On peut aussi s'en servir pour afficher la valeur d'une variable !

Code : PHP
1
2
3
4
<?php
$age_du_visiteur = 17;
echo $age_du_visiteur;
?>


Comme vous le voyez, il suffit d'écrire le nom de la variable que vous voulez afficher.

Au fait, on ne doit pas mettre de guillemets après le echo comme tu nous as appris ? :euh:


Non, quand il s'agit d'une variable on ne met pas de guillemets autour.

Créez un fichier PHP avec ce code source pour le tester. Inutile de mettre tout le code XHTML autour, ce n'est pas grave ce ne sera pas une "vraie" page XHTML valide mais c'est bien suffisant pour nos tests. Vous devriez voir le résultat s'afficher sur un fond blanc dans votre navigateur :

Affiche une variable

Le nombre contenu à l'intérieur de la variable s'affiche dans la page (ici 17).

La concaténation



Non, ce n'est pas une insulte. ;)
Cela signifie assemblage.

En fait, écrire 17 tout seul comme on l'a fait n'est pas très parlant. On aimerait écrire du texte autour pour dire : "Le visiteur a 17 ans". La concaténation est justement un moyen d'assembler du texte et des variables.

Comment faire cela ? Les petits malins auront l'idée d'écrire 3 instructions echo :

Code : PHP
1
2
3
4
5
6
<?php
$age_du_visiteur = 17;
echo "Le visiteur a ";
echo $age_du_visiteur;
echo " ans";
?>


Vous pouvez tester, ça fonctionne :

Ajouter du texte autour

Mais il y a plus malin. On peut tout faire sur une ligne. Pour cela, il y a 2 méthodes et c'est justement maintenant que le fait d'utiliser des guillemets simples ou doubles va faire la différence.

Concaténer avec des guillemets doubles



Avec des guillemets doubles, c'est le plus simple. Vous pouvez écrire le nom de la variable au milieu du texte et elle sera remplacée par sa valeur.

Concrètement, essayez ce code :

Code : PHP
1
2
3
4
<?php
$age_du_visiteur = 17;
echo "Le visiteur a $age_du_visiteur ans";
?>


Ca affiche : Le visiteur a 17 ans. Ca fonctionne bien. :)

En effet, lorsque vous utilisez des guillemets doubles, les variables qui se trouvent à l'intérieur sont analysées et remplacées par leur vraie valeur. Ca a le mérite d'être une solution facile à utiliser mais je vous recommande plutôt la solution qu'on va voir avec des guillemets simples.

Concaténer avec des guillemets simples



Si vous écrivez le code précédent entre guillemets simples, vous allez avoir une drôle de surprise :

Code : PHP
1
2
3
4
<?php
$age_du_visiteur = 17;
echo 'Le visiteur a $age_du_visiteur ans'; // Ne marche pas
?>


Ca affiche : Le visiteur a $age_du_visiteur ans.

Miséricorde ! On ne peut pas concaténer du texte avec des guillemets simples ? :(


Eh bien si ! Mais cette fois, il va falloir écrire la variable en dehors des guillemets et séparer les éléments entre eux à l'aide d'un point. Regardez :

Code : PHP
1
2
3
4
<?php
$age_du_visiteur = 17;
echo 'Le visiteur a ' . $age_du_visiteur . ' ans';
?>


Cette fois, ça affiche bien comme on voulait : Le visiteur a 17 ans

Ca a l'air bien plus compliqué, mais en fait c'est cette méthode qu'utilisent la plupart des programmeurs expérimentés en PHP. En effet, le code est plus lisible, on repère bien la variable alors que tout à l'heure elle était comme "noyée" dans le texte. D'autre part, votre éditeur de texte devrait vous colorier la variable ce qu'il ne faisait pas pour le code précédent.

Il faut noter aussi que cette méthode d'écriture est un chouilla plus rapide car PHP voit de suite où se trouve la variable et n'a pas besoin de la chercher au milieu du texte.


Dorénavant, j'écrirai toutes mes chaînes de caractères entre guillemets simples (à de rares exceptions près) et j'utiliserai la seconde méthode de concaténation qu'on vient de voir. Prenez le temps de vous habituer à l'utiliser et cela finira par devenir complètement naturel pour vous. :)

Faire des calculs simples

On va maintenant faire travailler votre ordinateur, vous allez voir qu'il encaisse les calculs sans broncher. Eh oui, PHP sait aussi faire des calculs !
Oh je vous rassure, on ne va pas faire des calculs tordus, juste des additions, des soustractions, des multiplications et des divisions. C'est pas trop dur pour vous j'espère ? :p

Ici comme vous vous en doutez, on ne va travailler que sur des variables qui contiennent des nombres.

Les opérations de base : addition, soustraction...



Voici les signes à connaître pour faire les 4 opérations de base (vous les trouverez sur votre pavé numérique, à droite du clavier) :

Symbole Signification
+ Addition
- Soustraction
* Multiplication
/ Division


Après, ça coule de source pour vous en servir. Voici quelques exemples :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php
$nombre = 2 + 4; // $nombre prend la valeur 6
$nombre = 5 - 1; // $nombre prend la valeur 4
$nombre = 3 * 5; // $nombre prend la valeur 15
$nombre = 10 / 2; // $nombre prend la valeur 5

// Allez on rajoute un peu de difficulté
$nombre = 3 * 5 + 1; // $nombre prend la valeur 16
$nombre = (1 + 2) * 2; // $nombre prend la valeur 6
?>


Allez quoi, boudez pas, un peu de calcul mental ça n'a jamais fait de mal à personne :p
Vérifiez mes calculs, comme vous pouvez le voir il n'y a rien de bien compliqué dans tout ça.

Seulement, il ne faut pas avoir peur de "jongler" avec les variables.
Voici des calculs avec plusieurs variables :

Code : PHP
1
2
3
4
<?php
$nombre = 10;
$resultat = ($nombre + 5) * $nombre; // $resultat prend la valeur 150
?>


C'est de la pure logique, je ne peux rien vous dire de plus.
Si vous avez compris ces bouts de code, vous avez tout compris. :D

Le modulo



Il est possible de faire un autre type d'opération un peu moins connu : le modulo. Cela représente le reste de la division entière.

Par exemple, 6 / 3 = 2 et il n'y a pas de reste. En revanche, 7 / 3 = 2 (car le nombre 3 "rentre" 2 fois dans le nombre 7) et il reste 1. Vous avez fait ce type de calcul à l'école primaire, souvenez-vous !

Le modulo permet justement de récupérer ce "reste". Pour faire un calcul avec un modulo, on utilise le symbole %.

Code : PHP
1
2
3
4
<?php
$nombre = 10 % 5; // $nombre prend la valeur 0 car la division tombe juste
$nombre = 10 % 3; // $nombre prend la valeur 1 car il reste 1
?>


Et les autres opérations ?



Je passe sous silence les opérations plus complexes telles que la racine carrée, l'exponentielle, la factorielle, etc. Toutes ces opérations peuvent être réalisées en PHP mais il faudra passer par ce qu'on appelle des fonctions, une notion que l'on découvrira plus tard. Les opérations basiques que l'on vient de voir sont amplement suffisantes pour la programmation PHP de tous les jours.

Q.C.M.

Quel symbole indique la présence d'une variable ?
Que va afficher l'instruction suivante ?
Code : PHP
1
<?php $ma_variable = "Coucou !"; ?>
Qu'est-ce que ce code affiche ?
Code : PHP
1
2
3
4
5
<?php
$nom = "Pujol";
$prenom = "Pierre";
echo "Tu t'appelles $prenom $nom";
?>
Que vaut $nombre ?
Code : PHP
1
<?php $nombre = (2 * 5 - 1) / 3; ?>
Que vaut $resultat ?

Code : PHP
1
2
3
4
5
<?php
$nombre1 = 2 + 6;
$nombre2 = $nombre1 / 2;
$resultat = $nombre1 - (2 * $nombre2);
?>
Cette concaténation est-elle correcte ?


Code : PHP
1
2
3
4
<?php
$age_du_visiteur = 44;
echo 'Vous avez ' $age_du_visiteur ' ans';
?>

Statistiques de réponses au QCM

Si vous ressentez de vilaines migraines, je vous préconise un peu d'aspirine :p
Ce Q.C.M. était beaucoup plus vicieux que les précédents, mais au moins ça vous aura fait réfléchir.
Si vous avez répondu juste à toutes les questions (ou presque), alors mes sincères félicitations : non seulement vous avez compris le chapitre, mais en plus vous avez un esprit logique, ce qui est très utile en PHP !

Si vous avez eu un peu de mal pour ce chapitre, n'hésitez pas à le relire dans quelques heures, ou demain, vous aurez alors certainement les idées plus claires. :)

A l'aide des connaissances que vous venez d'acquérir, vous êtes blindés pour les prochains chapitres (ce sera facile à côté). Vous allez commencer à comprendre l'intérêt de tout ce que je vous apprends, les exemples concrets et amusants sont pour bientôt :D
Chapitre précédent Sommaire Chapitre suivant

Partager

118 commentaires pour "Les variables"
Note moyenne : 3.61 / 4 (2409 votes)
Pseudo Commentaire
Hors ligne because # Posté le 15/03/2011 à 14:59:15

Avis : Bon

Question simple et sans doute idiote.
Comment affecter la valeur d'une variable à une une autre variable ?
Mon problème est le suivant :
Au lieu d'envoyer l'instruction suivante
<form action="selection_jeux.php?article=voiture&prix_max=10000" method="post">
je voudrais pouvoir remplacer -voiture- et -10000- par des variables.

Merci pour votre lecture, et votre réponse avisée.
Hors ligne OriginalsGeeks # Posté le 16/03/2011 à 13:20:30
Avatar

Avis : Très bon

Voici ton code corriger "Spirit57" enfaite il fallait que tu mette des ",".

Code : PHP
1
2
3
4
5
6
7
8
<?php
	$var1 = 18;
	$var2 = 1212;
	
	echo $var1, $var2;
	
	
	?>


En espérant t'avoir aider.
Hors ligne goc # Posté le 14/11/2011 à 12:16:11
Avatar

Avec un peu de temps à tuer (c'est très rare), je me plonge toujours avec plaisir sur le site du Zéro.
Je viens de finir la partie 1. Comme D'hab, j'ai bien aimé.

Ce que je changerais peut être, c'est dans le chapitre sur les variables. Je préciserais que le nom est sensible à la casse >_< euh il faut faire attention à majuscules et minuscules
me demande d'ailleurs si je ne conseillerais pas de les écrire à la C.
comme déjà indiqué dans un commentaire, je préciserais qu'elles ne commencent pas par un chiffre.

Du coup, je crois que je présenterai antérieurement echo avec la quote c'est le choix finalement conseillé puis, dans le chapitre sur les variables, je montrerai que l'on peut aussi utiliser les guillemets.

Merci pour ce cours
Hors ligne pfdp # Posté le 08/01/2012 à 19:05:13
Avatar

J'ai un code, mais je n'arrive pas à obtenir mon objectif: je veux que quand les gens cliquent sur le lien, la variable augmente de 1.

code de traitement:
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// Connexion à la base de données
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);

	 
	
    // On ajoute un point 
    $req = $bdd->exec('UPDATE jeu (points) SET(:points)');
    $req->execute(array(
	'points' => $req,

	));
	($req = $req + 1);
    // Redirection du visiteur vers la page de fin d'inscription
    header('Location: Classement.php');
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>


aidez moi SVP
Hors ligne sail741 # Posté le 12/01/2012 à 19:56:50
Avatar

Ville : Verderel
Pays : France métropolitaine

Très bon tuto, merci ! :)

Voir tous les commentaires