Accueil
 COURS
 Cours Algorithmique
 Cours ASP
 Cours CSS
 Cours HTML
 Cours PHP / MySQL
 Cours Réseaux
 Cours SQL
 Cours Visual Basic
 ARTICLES
  Conception de sites
  Droit & Internet
  e-commerce
  Société
  Strategies du web
  Technologies Web
  Marketing Web
 LIVRES
  ASP/ASP.Net
  C/C++/C#
  Conception de sites
  DHTML/CSS
  Gestion de Projet
  HTML/Internet
  Java/JSP/J2EE
  JavaScript/VbScript
  Juridique
  Marketing/Stratégie
  PHP/Linux/Unix
  Réseaux
  XML/XHTML/XSL
 NETALYA RECOMMANDE
Reussir un projet de site web

Cours PHP N°2 : les variables

Auteur : Frédéric Jacquenod
Adaptation : Christophe Magdelaine

Infinite Menus, Copyright 2006, OpenCube Inc. All Rights Reserved.

Les variables de base

Tout comme PERL, le type de la variable dépend de ce que vous mettez dedans et de ce que vous en faites. Par contre vous pouvez forcer le type d'une variable ou modifier ce type si nécessaire.
Le caractère qui précède toutes les variables php est le dollar : $.

$variable = "chaine";
$variable = 3;

Les variables dynamiques

Vous pouvez créer des variables dynamiques, le nom de la variable est lui même une variable. La notation est le double dollar : $$.

$variable = "etudiant";
$$variable = "pat";

L'évaluation de la variable $etudiant donnera la valeur pat.
Cette possibilité permet ainsi de créer des variables dont le nom se modifie grâce au programme que vous faites: etudiant0, etudiant1 ...
Pour l'affichage vous pouvez par exemple utiliser la syntaxe :

print $$variable;

ou

print "La valeur de $variable est : ${$variable}";

Exemple d'une page utilisant des variables dynamiques

1 <HTML>
2 <BODY BGCOLOR=#FFFFFF>
3 <B>
4 <U>Petit script pour l'affichage de variable dynamique</U>
5 <BR><BR>
6 <FONT COLOR="green">
7 <?php
8 $variable = "etudiant";
9 $$variable = "pat";
10 print "Syntaxe 1 : La valeur de $variable est : ".$$variable;
11 ?>
12 <BR>
13 <?php
14 print "Syntaxe 2 : La valeur de $variable est : ${$variable}";
15 ?>
16 </FONT>
17 <BR><BR>
18 Fin de l'affichage
19 </BODY>
20 </HTML>

Explications

  • De la ligne 1 à la ligne 6 le code est du code HTML simple.
  • La ligne 7 permet d'insérer du code PHP
  • La ligne 8 est une affectation de la valeur etudiant dans la variable variable
  • La ligne 9 introduit une variable dynamique $$variable qui est équivalent à $etudiant
  • La ligne 10 et la ligne 14 propose deux méthodes pour l'affichage du contenu de la variable dynamique.
Vous obtiendrez le résultat suivant sur votre navigateur client:



Si vous regardez le source via votre navigateur vous obtenez:

Utilisation des références dans les variables

Vous pouvez travailler sur les références (pointeur) comme en C par exemple. Ceci vous permettra par exemple de conserver la persistence d'un valeur à l'intérieur de variables et de la modifier quelque soit sa position dans le programme.
Vous devez préfixer votre variable par le caractère : &
$pointeur = &$variable;


La variable pointeur ne représentera pas le contenu mais la référence qui pointe sur la valeur de la variable variable (la zone mémoire où elle est stockée). Si la valeur de la variable est modifiée et ceci quelque soit l'endroit où elle se situe dans la programme, la valeur de la variable pointeur le sera aussi.

Exemple

1 <HTML>
2 <BODY BGCOLOR=#FFFFFF>
3 <B>
4 <U>Travail sur les références des variables</U>
5 <BR><BR>
6 <FONT COLOR="green">
7 <?php
8 $variable = "pat";
9 $pointeur=&$variable;
10 print "Etape 1 : \$pointeur pointe sur la valeur ->$pointeur";
11 ?>
12 <BR>
13 <?php
14 print "Je modifie la valeur de la variable \$variable<BR>\n";
15 $variable="ibulaire";
16 print "Etape 2 : ".'$pointeur'." pointe sur la valeur ->$pointeur\n";
17 ?>
18 </FONT>
19 <BR><BR>
20 Fin de l'affichage
21 </BODY>
22 </HTML>

Explications

  • De la ligne 1 à la ligne 6 le code est du code HTML simple.
  • La ligne 7 permet d'insérer du code PHP
  • La ligne 8 est une affectation de la valeur pat dans la variable $variable
  • La ligne 9 permet de ranger dans la variable $pointeur non pas la valeur de la variable $variable mais la référence mémoire de cette variable grâce à l'utilisation du caractère &
  • La ligne 10 permet d'afficher le contenu de la variable $pointeur. Notez que pour permettre d'afficher à l'écran $pointeur et non la valeur de cette variable je désactive le caractère spécial $ au moyen du caractère \. Même chose à la ligne 14. La ligne 16 montre un autre moyen d'obtenir le même résultat grâce à l'utilisation des caractères ' et le caractère de cancaténation . . J'insére dans le print un retour chariot à la fin de la ligne (\n) simplement pour que le source soit mieux présenté.
  • La ligne 15 modifie la valeur de la variable $variable.
  • La ligne 16 permet de se rendre compte que malgré le fait que nous n'intervenons pas directement sur la variable $pointeur, celle ci voit sa valeur modifiée, c'est « l'effet pointeur ».
Vous obtiendrez le résultat suivant sur votre navigateur client :



Si vous n'aviez pas affecté à la variable $pointeur la référence vous auriez alors obtenu le résultat suivant : modification de la ligne 10 en :

10 $pointeur=$variable;

Quelques fonctions de traitement des chaînes

  • strlen

  • Cette fonction va permettre de trouver le nombre de caractères contenus dans une chaîne simple.

    $nbcar=strlen($variable);

  • strstr

  • Renvoie VRAI si la sous chaîne existe dans la chaîne. Attention : pour la fonction strstr la casse est importante.

    strstr($chaine,$souchaine);

  • substr

  • Permet de récupérer une partie de la chaîne en indiquant l'index du caractère à partir duquel la recherche se fait. Vous pouvez aussi indiquer le nombre de caractère à récupérer. Si l'index est négatif, la recherche se fait depuis la fin de la chaîne.

    $recup=substr($variable,$index,$longueur);

  • strtok

  • Permet de récupérer les éléments séparés par un ou des délimiteurs. Attention, le délimiteur n'apparaît pas dans la chaîne récupérée.
    Lorsque vous utilisez cette fonction, la chaîne de départ est stockée en mémoire, ce qui permet ensuite de pouvoir relancer strtok sans nécessité d'indiquer le nom de la variable où se passe la recherche. Ce qui est pratique sinon vous referiez la recherche toujours sur la même partie et obtiendriez toujours le même résultat à savoir la première occurrence trouvée. Vous pouvez donc faire la recherche sur toute la chaîne en utilisant une boucle while.

    $recup=strtok($variable,$delimiteur);

    ou

    $recup=strtok($delimiteur);

  • explode

  • Cette fonction renvoie dans une tableau, les valeurs comprises entre un séparateur que vous indiquez en argument. A la différence de strtok, même si vous indiquez plusieurs caractères comme délimiteurs, celui-ci ne sera vu que comme un seul.

    $liste=explode($delimiteur,$variable);

  • implode

  • Cette fonction a l'effet inverse de explode. Elle permet à partir d'une liste de créer une variable simple. Les différents éléments de la liste seront « recollés » via ce séparateur.

    $variable=implode($liste,$delemiteur);

  • split

  • Cette fonction permet de séparer les éléments d'une variable simple en utilisant des expressions régulières (et, ou ...). Attention la casse de l'expression régulière est très importante (nombre de blancs dans le séparateur ...).
    Le résultat est stocké dans une liste.

    $liste=split("$delimiteur",$variable);

  • trim, ltrim et chop

  • Ces trois fonctions permettent de supprimer à différents endroits d'une chaîne simple, les caractères « neutres » tels les espaces, tabulations, retour à la ligne ... Ces fonctions renvoient une chaîne « nettoyée ».
    trim les supprime tous en début en et fin de chaîne.
    ltrim les supprime tous en début de chaîne.
    chop les supprime tous en fin de chaîne.

    $variable=trim($variable);
    $variable=ltrim($variable);
    $variable=chop($variable);

  • str_replace

  • Cette fonction remplace toutes les occurrences d'une chaîne par une autre.

    $nettoie=str_replace($avant,$apres,$variable);

  • strtoupper et strtolower

  • Ces fonctions permettent de transformer en majuscule ou minuscule tous les caractères contenus dans une chaîne.

    $nouveau=strtoupper($variable);
    $nouveau=strtolower($variable);

  • ucwords
  • Cette fonction permet de mettre en majuscule, tous les premiers caractères de chaque mot contenu dans une chaîne simple.

    $modif=ucwords($variable);

  • addslashes et stripslashes

  • Addslashes permet de mettre un slashe devant les caractères apostrophe ('), double apostrophe (") et le slashe (\) lui-même.
    Cette fonction peut être très utile lors de requête SQL. Ces caractères étant spécifiques, les décommenter devient important.
    Stripslashes est la fonction inverse.

    $modif=addslashes($variable);
    $modif=stripslashes($variable);

Les variables composées

Les listes

Les listes sont des tableaux a deux dimensions. La première est un indice numérique entier et la deuxième la valeur associée à cet indice.
Une liste permet ainsi de stocker plus d'un valeur dans un même structure.
Imaginez un meuble constitué de rangements. Une colonne servira à indiquer l'ordre de rangement on appelle aussi cela une clé (ici les indices numériques) tandis que l'autre colonne servira à ranger les valeurs (un objet).
Vous pouvez accéder à un objet directement en indiquant le numéro de la case où il est rangé.

Pour définir une liste vous utiliserez le même caractère que pour une variable simple : $
L'affectation se fera de la façon suivante :
  1. Affectation complète de la liste

    $liste=array("escargot de bourgogne","cagouille","manchot","bretagne","php4");

  2. Affectation d'une valeur à un indice

    $liste[0] = escargot de bourgogne";

  3. Indiçage automatique
    php4 permet de réaliser une incrémentation automatique des indices sans avoir à s'en soucier. Vous ajoutez une valeur qui sera affectée automatiquement au dernier indice + 1.
    La syntaxe est la suivante :

    $liste[]="nouvelle valeur";

Pour la dernière syntaxe, nous n'indiquons pas de valeur à l'indice. Ce système peut être très utile dans les formulaires où vous donnerez comme nom de l'identifiant pour des boutons de type checkbox, des listes type select ... une liste auto incrémentée.

$liste=array("escargot de bourgogne","cagouille","manchot","bretagne","php4");

$liste[1] renverra la valeur cagouille

Attention les indices commencent à la valeur 0.

Vous pouvez utiliser la fonction count qui vous renverra le nombre d'élément contenu dans la liste.

Les tableaux associatifs a deux dimensions

Ces tableaux, à la différence des listes, auront comme indice des chaînes de caractères. Ces indices se nomment des clés. Une clé est forcément associée à une valeur. Vous obtenez donc un couple.
Pour définir un tableau vous utiliserez le même caractère que pour une variable simple ou pour une liste : $
L'affectation se fera de la façon suivante :

$tableau=array(nom=>Jacquenod,prenom=>frederic,age=>"En evolution constante");

Si la clé ou la valeur n'est pas un simple mot ou comporte des caractères blancs ... n'oubliez pas les guillemets.

Affectation d'une valeur à un indice:

$tableau[adresse]="Paris 75";

Pour parcourir cette structure vous utiliserez la boucle foreach (voir boucles).

Il existe un tableau associatif prédéfini qui se nomme GLOBALS et qui contient les informations sur le script, son contenu (variables ...) et le serveur web.
D'autres tableaux associatifs existent comme HTTP_GET_VARS et HTTP_POST_VARS qui contiennent les paires nom-valeurs en fonction de la méthode de transmission utilisée dans le formulaire (get ou post). Ces deux tableaux peuvent être utiles lorsque vous ne savez pas quels sont les variables qui seront renvoyées par le formulaire.

Les tableaux associatifs multidimentionnels

Le tableau associatif HTTP_POST_VARS est un tableau particulier car multidimentionnel. Pour le moment nous n'avons vu que les tableaux à 2 dimensions.
Mais rien n'empêche d'associer un autre tableau à un élément du premier. Vous aurez un tableau de tableaux.
Imaginons un tableau contenant les informations sur chaque cours donné dans une université. Un cours est caractérisé par son intitulé, son professeur, la durée du cours, le lieu ...

Affectation complète du tableau associatif

$tableau=array(
array(intitule=>reseau,professeur=>"Jacquenod Frédéric",duree=>4,lieu=>paris),
array(intitule=>unix,professeur=>"Petit Jean",duree=>2,lieu=>jussieu),
array(intitule=>biologie,professeur=>"Mobby Dick",duree=>5,lieu=>sorbonne)
);

Chaque élément du tableau est lui-même un tableau. Chaque tableau est rangé dans une case du tableau global dont la référence est un indice numérique (nous avons plutôt à faire à une liste de tableau).
Le premier tableau est situé à l'indice 0 et ainsi de suite. Ceci du fait que nous n'avons spécifié aucune clé. Mais rien n'empêche d'en spécifier une.

$tableau=array(
cours1=>array(intitule=>reseau,professeur=>"Jacquenod Frédéric",duree=>4,lieu=>paris),
cours2=>array(intitule=>unix,professeur=>"Petit Jean",duree=>2,lieu=>jussieu),
cours3=>array(intitule=>biologie,professeur=>"Mobby Dick",duree=>5,lieu=>sorbonne)
);

Affectation d'une valeur à un indice

$tableau[0][duree]=5;

ou

$tableau[cours1][duree]=5;

Dans les deux cas on affecte la valeur 5 à la clé duree du premier tableau.

Travail sur le type de la variable

Par défaut, PHP ne réclame pas de typage des variables, c'est à dire la déclaration de leur type, cependant il est possible de "typer" et de connaître le type d'une variable Parfois cela pourrait pourtant être utile. Voici les fonctions qui le permettent.

gettype et settype

PHP4 permet grâce aux fonctions gettype et settype d'obtenir le type d'une variable ou de modifier ce type.

gettype($variable);

et

settype ($variable,string);

Type renvoyé par gettypeType de la donnée
Integerentière
doubleréelle
stringchaîne simple
arrayliste ou tableau
objectObjet (pointeur)
classclasse
NULLType inconnu


Tester le type de la variable

Vous pouvez utiliser des fonctions permettant de tester le type de la variable et elles renvoient VRAI (ou 1) si le type est le bon.
  • is_int(), is_integer(), is_long() renverront VRAI si le type est entier
  • is_double(), is_float(), is_real() renverront VRAI si le type est double (réel)
  • is_string(), is_array(), is_object() renverront respectivement VRAI si le type est string, array ou object

Typage des variables

Vous pouvez aussi forcer le type de la valeur en utilisant les fonctions intval(), doubleval() et strval().
Exemple

1 <?
2 $variable = "3 petits cochons";
3 if(is_string($variable))
4 {
5 print "La variable est un : <FONT COLOR=green>".gettype($variable);
6 print "</FONT><Br>\n";
7 print "Je la transforme en un entier<Br>\n";
8 $trans = intval($variable);
9 print "La variable est un : <FONT COLOR=green>".gettype($trans);
10 print "</FONT><Br>\n";
11 print "Sa valeur est maintenant : <FONT COLOR=green>$trans</FONT>";
12 }
13 else
14 print "La variable est de type : <FONT COLOR=green>".gettype($variable);
15 ?>

Les constantes

Vous disposez aussi de la possibilité de créer des constantes qui auront donc la même valeur tout au long de votre programme. Ceci peut etre utile par exemple pour positionner une valeur de débugage DEBUG qui tracera les étapes du programme si elle vaut 1 et ne fera rien si elle vaut 0 :

define ("DEBUG",1);

Vous pouvez aussi vous en servir pour positionner un préfixe pour vos pages web que vous intégrerez dans vos liens hypertexte, vos références d'images ...

define("PRE","http://www.netalya.com");

On l'appelle ensuite comme ceci :

<php echo PRE ?>



Tests sur les variables


Vous avez à votre disposition les fonctions isset, unset et empty qui vous permettent de tester la validité, l'existence d'un contenu ...
  • isset permet de tester si la variable existe
    if(isset($variable)){print "La variable est définie et contient une valeur";}
    renverra VRAI si la variable contient une valeur
  • unset libère la place mémoire réservée par la variable
    unset($variable);
    Une fois cette action réalisée, le test avec isset renvoie FAUX
  • empty renvoie VRAI si la variable n'est pas définie ou si elle renvoie une valeur FAUSSE (valeur 0 ou chaîne vide)
    if(empty($variable)){print "variable non définie ou contient 0 ou chaine vide";}


Nous vous informons que ce cours constitue une œuvre protégée en France par le Code de la Propriété Intellectuelle, et à l’étranger par les conventions internationales en vigueur sur le droit d’auteur. La violation de l’un des droits d’auteur de l’œuvre est un délit de contrefaçon. Il est donc interdit, à titre privé ou public, de reproduire, copier, vendre, revendre ou exploiter, que ce soit dans un but commercial ou purement gratuit, ce cours, sauf accord exprès et préalable de son auteur.


Google
 
 RESSOURCES GRATUITES
 Caractères spéciaux
 Code Couleurs HTML
 Compresseur images
 Générateur Méta Tags
 Références HTML
 Scripts : ASP
 Scripts : Java Scripts
 PRATIQUE / OUTILS
 Salons Informatiques
 Astuces Windows
 Offres d'Emploi Web
 Syndication Contenu
 TÉLÉCHARGEMENTS
 Utilitaires système
 Logiciels pratiques
 Jeux & démos
 INFOS SITE
 Contacts
 Mentions légales
 NewsList
 Qui sommes-nous ?
 PARTENAIRES
 Jeux et Jouets
 Murielle Cahen
 Cours d'anglais
 Droit NTIC
 Directeur Internet
 Australie