 |
| | | | | | | | | 1. Qu'est ce qu'une variable
|  |  |  |
|
En PHP comme dans tous les langages, la notion
de variable est essentielle. Une variable est le nom donné à un paramètre fixé par
le programmeur afin de l'utiliser à plusieurs endroits, ou dans le but de faciliter
la lecture du programme.
Ainsi, l'exemple simple suivant
<?
echo "hello world !";
?>
Peut s'écrire
<?
$mavariable = "hello world !";
echo $mavariable;
?>
où $mavariable est une variable simple de nom "mavariable". On peut donner le nom
qu'on souhaite à une variable, tant qu'on utilise les caractères alphanumériques
(a-z, A-Z, 0-9, _, -) et qu'elle commence par le caractère "$".
Pour donner une valeur à une variable, il suffit d'utiliser le "=" qui correspond à
une affectation, c'est à dire qu'on dit à PHP que $mavariable prend pour valeur
"hello world !". La valeur de $mavariable ne changera pas dans la page, à moins qu'on le fasse
nous-mêmes.
Tous les autres caractères ne sont pas forcément interdits, mais fortement déconseillés...
Dans cet exemple, l'utilisation d'une variable n'est pas forcement très utile.
On va donc faire un autre exemple.
Si vous voulez afficher le résultat de toutes les opérations
numériques de 2 nombres, on peut écrire :
<?
echo "3*5=".(3*5)."<br>3/5=".(3/5)."<br>3+5=".(3+5)."<br>3-5=".(3-5);
?>
ou :
<?
$v1 = 3;
$v2 = 5;
echo "$v1*$v2=".($v1*$v2)."<br>$v1/$v2=".($v1/$v2)."<br>$v1+$v2=".($v1+$v2)."<br>$v1-$v2=".($v1-$v2);
?>
Vous vous dites sûrement que la seconde est plus compliquée... Maintenant, dites vous
que vous voulez changer 3 et mettre 4 à la place ! Le second cas est donc nettement
plus simple à maintenir et à changer...
Voici différents types de variables simples :
- $nombre = 5;
- $nombre = "5";
- $mot = "mot";
- $phrase = "c'est une phrase";
- $autrephrase = 'une autre phrase';
Toutes ces variables sont traitées de la même façon. Mais il est nécessaire de comprendre la notion
de valeur numérique (entier, décimal...), de chaînes de caractères, de booléens. En effet, on a :
5<10, mais "5">"10", car si on réfléchit du point de vue numérique, 5 est effectivement inférieur à 10,
mais en lettre, on compare d'abord 5 à 1, donc comme 5 est supérieur à 1, "5" est supérieur à "10".
Même si cette notion est aujourd'hui assez sensible à comprendre pour les débutants, elle est très
importante, mais elle rentrera à force de s'en servir.
| | | | | | | | | 2. 2. Opérations sur les variables
|  |  |  |
|
| | | | | | | | | 2.2.1. Opérations classiques
|  |  |  |
|
Addition : "+"
Soustraction : "-"
Multiplication : "*"
Division rationnelle : "/"
Reste de la division euclidienne : "%"
Concaténation : "."
Factorisation : "(" et ")"
Pour affecter un résultat à une variable, il suffit d'appliquer le même principe que pour
lui fixer un valeur :
<?
$v1 = 5;
$v2 = 3;
$v30 = $v1*$v2;
$v31 = $v30/$v2;
$v32 = $v1+$v2;
$v33 = $v1-$v2;
$v34 = $v1%$v2;
echo "$v30 = $v1*$v2;<br>$v31 = $v30/$v2;<br>$v32 = $v1+$v2;<br>
$v33 = $v1-$v2;<br>$v34 = $v1%$v2;<br>";
$v4 = "première partie de la phrase";
$v5 = " deuxième partie de la phrase";
$v6 = $v4.$v5;
echo "$v6 = <br>$v4.$v5";
?>
Donne comme résultat :
15 = 5*3; 5 = 15/3; 8 = 5+3;
2 = 5-3; 2 = 5%3; première partie de la phrase deuxième partie de la phrase = première partie de la phrase. deuxième partie de la phrase
| | | | | | | | | 2.2.2. Détails sur les opérations
|  |  |  |
|
<?
$v1 = 5;
$v2 = 3;
$v3 = "4";
$v4 = "première partie de la phrase";
$v5 = ' deuxième partie de la phrase';
$result1 = $v1*$v2;
$result2 = $v1+$v3;
$result3 = $v1.$v3;
$result4 = $v1.$v2;
$result5 = $v4.$v5;
$result6 = $v4+$v5;
$result7 = $v3.$v5;
$result8 = $v3+$v5;
$result9 = $v2.$v5;
$result10 = $v2+$v5;
echo "$v1*$v2 = $result1<br>\n";
echo "$v1+$v3 = $result2<br>\n";
echo "$v1.$v3 = $result3<br>\n";
echo "$v1.$v2 = $result4<br>\n";
echo "$v4.$v5 =<br> $result5<br>\n";
echo "$v4+$v5 = $result6<br>\n";
echo "$v3.$v5 = $result7<br>\n";
echo "$v3+$v5 = $result8<br>\n";
echo "$v2.$v5 = $result9<br>\n";
echo "$v2+$v5 = $result10<br>\n";
?>
Affiche :
5*3 = 15
5+4 = 9
5.4 = 54
5.3 = 53
premiere partie de la phrase. deuxieme partie de la phrase = premiere partie de la phrase deuxieme partie de la phrase
premiere partie de la phrase+ deuxieme partie de la phrase = 0
4. deuxieme partie de la phrase = 4 deuxieme partie de la phrase
4+ deuxieme partie de la phrase = 4
3. deuxieme partie de la phrase = 3 deuxieme partie de la phrase
3+ deuxieme partie de la phrase = 3
On voit alors que les opérations classiques pour les nombres sont applicables, qu'ils aient été saisis
en tant que valeur numérique (cas de $v1) ou en tant que chaîne de caractères (cas de $v3).
On voit également que si on utilise l'opérateur ".", le résultat est toujours la concaténation des
variables !
La valeur des variables est donc prise en compte en fonction de l'opérateur et non pas de comment
elle a été enregistrée.
| | | | | | | | | 2.2.3. Opérations sur les chaines de caractères
|  |  |  |
|
Les chaines de caractères disposent d'un grand nombre de fonction qui leur sont spécifiques.
Les plus pratiques ou les plus utiles (selon moi) sont présentées ci-dessous, dans ce tableau
récapitulatif.
| Commande |
Description |
| Exemple |
| strpos |
Recherche d'une chaine de caractère dans une sous-chaine. Renvoit la position dans la chaine de la sous-chaine. Renvoit -1 si la chaine n'est pas trouvée |
strpos($machaineComplete,$maSousChaine)
strpos('bonjour','jour') -> renvoit 3 |
| substr |
Récupère une sous-chaine dans une variable |
substr('bonjour',3,4) -> jour (retourne à partir du 3eme caractère, sur 4 caractères)
substr('bonjour',strpos('bonjour','jour'),4) -> jour (retourne à partir de la position de 'jour' sur 4 caractères)
substr('bonjour',3) -> jour (retourne la chaine sans les 3 premiers caractères)
substr('bonjour',-5) -> njour (retourne les 5 derniers caractères de la chaine)
substr('bonjour',0,3) -> bon (retourne les 3 premiers caractères)
substr('bonjour',0,-5) -> bo (retourne la chaine sans les 5 derniers caractères)
|
ereg
urlencode
urldecode
split
| | | | | | | | | 2. 3. les variables booléennes
|  |  |  |
|
Une variable booléenne peut prendre seulement 2 valeurs : "true" ou "false" ("vrai" ou "faux").
Cette variable n'a pas encore d'intérêt, mais elle en prendra plus tard (lorsqu'on étudiera les
instructions spécifiques du PHP).
$varbool = true;
$varbool = false;
Attention, il ne faut pas mettre les guillemets, ce n'est pas une chaîne de caractères, mais une valeur
spécifique.
On verra plus tard qu'une variable booléenne peut contenir le résultat d'une expression logique, c'est à dire
de toutes opérations ayant un résultat logique.
Reprenez le fichier "exemple.php" et remplacez dedans les valeurs numériques par des variables
contenant la même valeur.
- une variable "$ligne" qui contient le texte,
- une variable $v1 qui contient 10,
- une variable $v2 qui contient 5,
- une variable $v3 qui contient 52,
- une variable $v4 qui contient 3
- faire les opérations sur les variables et pas sur les valeurs directement
Solution
| | | | | | | | | 3. Les variables tableaux
|  |  |  |
|
| | | | | | | | | 3. 1. Présentation des tableaux
|  |  |  |
|
Un tableau est l'équivalent de plusieurs variables regroupées en une seule.
Par exemple, vous avez besoin d'une variable $coeff1 qui contiennent plusieurs valeurs numérique, ou
d'un tableau $coeff2 contenant plusieurs mots. Nous allons voir comment utiliser les tableaux.
Pour "les tableaux associatifs", allez à la partie suivante sur les "variables structurées".
Première méthode :
<?
$coeff1[0] = 3;
$coeff1[1] = 8;
$coeff1[2] = 17;
$coeff2[0] = "bonjour";
$coeff2[1] = "bonsoir";
$coeff2[2] = "salut";
?>
Cette méthode permet de fixer une valeur directement à une case du tableau. Pour accéder à une case,
il suffit de mettre le nom de la variable suivie du numéro de la case entre crochet. Dans notre exemple,
pour accéder à la 2ème case du tableau, on utilise : $coeff1[1].
Il est très important de noter que la première valeur est celle de la case "0" et pas celle de la case "1".
Deuxième méthode :
<?
$coeff1 = array (3,8,17);
$coeff2 = array ("bonjour","bonsoir","salut");
?>
Le terme "array" signifie "tableau" en anglais. Il permet de spécifier à PHP que la valeur qu'on
initialise est un tableau. Ensuite, les différentes valeurs sont situées entre les parenthèses et séparées par
des virgules.
La première case des tableaux est toujours "0".
| | | | | | | | | 3.1.2. Accès aux informations
|  |  |  |
|
Le code suivant :
<?
$coeff1 = array (3,8,17);
$coeff2 = array ("bonjour","bonsoir","salut");
echo "coeff1 case 0 : ".$coeff1[0]."<br>";
echo "coeff1 case 1 : ".$coeff1[1]."<br>";
echo "coeff1 case 2 : ".$coeff1[2]."<br>";
echo "coeff1 case 3 : ".$coeff1[3]."<br>";
echo "coeff2 case 0 : ".$coeff2[0]."<br>";
echo "coeff2 case 1 : ".$coeff2[1]."<br>";
echo "coeff2 case 2 : ".$coeff2[2]."<br>";
?>
à pour résultat :
coeff1 case 0 : 3 coeff1 case 1 : 8 coeff1 case 2 : 17 coeff1 case 3 : coeff2 case 0 : bonjour coeff2 case 1 : bonsoir coeff2 case 2 : salut
On peut constater que la case 3 du tableau $coeff1 ne contient aucune valeur... Ce qui est normal.
| | | | | | | | | 3. 2. Fonctions spécifiques aux tableaux
|  |  |  |
|
La fonction "count" permet de récupérer le nombre de cases dans un tableau
Par exemple, le code suivant :
<?
$coeff2 = array ("bonjour","bonsoir","salut");
$taille = count($coeff2);
echo "le tableau \$coeff2 contient $taille éléments<br>";
echo "coeff2 case 0 : ".$coeff2[0]."<br>";
echo "coeff2 case 1 : ".$coeff2[1]."<br>";
echo "coeff2 case 2 : ".$coeff2[2]."<br>";
?>
à pour résultat :
le tableau $coeff2 contient 3 éléments coeff2 case 0 : bonjour coeff2 case 1 : bonsoir coeff2 case 2 : salut
La fonction "count" n'a besoin en paramètre que du nom du tableau qui nous intéresse.
Une fonction est une sorte d'opérateur particulier à qui on donne les opérandes que l'on souhaite. Ici, l'opérande est le tableau
$coeff2 et l'opérateur est "count".
Le "\" devant le nom de la variable permet d'afficher non pas sa valeur mais bel et bien son nom.
| | | | | | | | | 4. Les variables structurées
|  |  |  |
|
Il existe plusieurs type de variables structurées :
- tableau associatif : tableaux indicés par des chaines de caractères et pas par des nombres
- objet : également appelé record. C'est une variable qui permet de regrouper d'autres variables de types différents,
et également des fonctions et procédures
// tableau à une dimension
$tableauassoc = array ("champs1" => "laurent",
"champs2" => 27,
"champs3" => "rennes");
// tableau à plusieurs dimensions
$tableauassoc = array ("champs1" => array("antoine","isabelle","laurent","charlotte"),
"champs2" => array(33,32,28,23));
// tableau à une dimension
$tableauassoc = array ("champs1" => "laurent",
"champs2" => 27,
"champs3" => "rennes");
// affichage
echo "prénom".$tableauassoc["champs1"]."<br>\n";
echo "age : ".$tableauassoc["champs2"]."<br>\n";
echo "ville: ".$tableauassoc["champs3"]."<br>\n";
// ou
echo "prénom :{$tableauassoc["champs1"]}<br>\n";
echo "age : {$tableauassoc["champs2"]}<br>\n";
echo "ville: {$tableauassoc["champs3"]}<br>\n";
// tableau à plusieurs dimensions
$tableauassoc = array ("champs1" => array("antoine","isabelle","laurent","charlotte"),
"champs2" => array(33,32,28,23));
// affichage
for ($i = 0; $i < 4; $i++) {
echo "prénom : ".$tableauassoc["champs1"][$i];
echo "age : ".$tableauassoc["champs2"][$i]."<br>\n";
}
// ou
for ($i = 0; $i < 4; $i++) {
echo "prénom : {$tableauassoc["champs1"][$i]}";
echo "age : {$tableauassoc["champs2"][$i]}<br>\n";
}
<?
class annuaire {
var $nom = "";
function setnom($newname) {
$this->nom = $newname;
}
function printnom() {
echo $this->nom;
}
}
$contact = new annuaire();
$contact->setnom("hobbes");
$contact->printnom();
?>
Le mot "class" permet de définir une class PHP et donc un Objet. Ensuite, il suffit de définir les variables utiles (avec l'item "var").
Ensuite, on peut définir autant de fonction que nécessaire. Ici, 2 fonctions :
- setnom qui permet de fixer le paramètre "nom"
- printnom qui affiche la valeur du champs "nom"
On constate que l'accès au champs "nom" se fait en utilisant le "$this". Attention à l'utilisation qui DOIT se faire ainsi.
Dans le code, on retrouve les 3 étapes :
- new qui alloue la mémoire et créé le nouvel objet de type "annuaire"
- $contact->setnom(...) qui fait appel à la méthode "setnom" afin de fixer la valeur de "nom"
- $contact->printnom() qui utilise la méthode "printnom"
On constate que pour utilisé une méthode ou un champs de l'objet, il faut faire suivre le nom de l'objet ($contact) par un "->" suivi
du nom de la méthode ou du champs.
|