Quatre types de variable | |||
---|---|---|---|
Type | Description | Exemple | |
BOOLEAN (booléen) |
Cette variable est susceptible de prendre deux valeurs s'excluant mutuellement, 0 ou 1, mais on peut aussi dire vrai (true) ou faux (false).
Remarque : Il est possible de convertir une variable qui est de type non-booléen en booléen. Une fois convertie on obtient 0 ou faux (false) dans les cas où on a au départ : 0 (entier, float ou chaîne), chaîne vide, tableau à 0 éléments, objet à 0 membres, NULL. Et une fois convertie on obtient 1 ou vrai (true) pour toutes les autres valeurs |
TRUE | |
INTEGER (entier) | Cette variable est associée à une valeur entière entre -2 147 483 648 et +2 147 483 648 (soit sur 31 bits + le signe) | 6 777 714 | |
DOUBLE ou FLOAT (décimal) | Cette variable est associée à une valeur décimale et sa taille dépend de la plateforme ~1.8e308, la précision est de 14 décimales | 7.254871368E-10 | |
STRING (chaîne) | Cette variable est associée à une valeur composée de caractères, le nombre de caractère est illimité | Bonjour à tous |
Quatre types de conteneur | |||
---|---|---|---|
Type | Description | Exemple | |
Simple | N'importe quelle valeur avec les restrictions données ci-dessus | $maVariable = 52.8 | |
ARRAY (Tableau) | Tableau, voir la leçon n°5 | $mois = array("octobre","novembre","décembre") | |
OBJET (object) | Instantition de classes, voir la leçon n°8 | $maVoiture = new $car | |
Ressource | Fichier, connexion | $maConnexion = mysql_connect("monServeur", "monNom","MonPass"); |
<?php $cow = "0"; // $cow est une chaine (string, ASCII 48) $cow += 2; // $cow est maintenant un entier integer (2) $cow = $cow + 1.3; // $cow est maintenant un float (3.3) $cow = 5 + "10 Little Piggies"; // attention dans ce cas $cow reste un entier (15) //Changement de type de conteneur $age = 1; // $age est un entier égal à 1 $age[0] = "f"; // $age devient un tableau, dont l'élément 0 contient f ?>
Rappel : echo est la fonction d'affichage<?php $prix = 10; // on charge $prix avec un entier, $prix est donc de type entier $resultat=settype($prix,"float");// $prix est convertie en float, $resultat contient TRUE ou FALSE if ($resultat == TRUE) echo "Le prix a pu être converti !"; // Si la conversion à réussi on affiche le message ?>
Tableau récapitulatif de l'utilisation de la fonction 'settype'<?php $pression = "5bar"; // variable de type chaîne (ou string) settype($pression, "integer"); // $pression contient maintenant 5 (integer) au lieu de "5bars" $actif = TRUE; // variable de type bouléen (ou boolean) settype($actif, "string"); // $actif devient égal à "1" (string) ?>
Tableau général sur le casting<?php $intPrice = 10; // $intPrice est un entier $floatPrice = (float) $intPrice; // $floatPrice est un float // la conversion vers un string peut se faire d'une façon spéciale : $maValeur = 5 ; // $maValeur est de type entier $maChaine = "$maValeur"; //$maChaine est de type chaîne, on pouvait aussi écrire $maChaine="5" ?>
<?php //Conversion en entier : $a = "222,22324" $a = $a * 100; // $a a pour valeur 22222,324 $a = intval($a * 100) / 100 ; // $a a pour valeur 222,22 $a = intval(($a * 100) + 0.5) / 100; ?>
<?php print intval ((0.1 + 0.7) * 10); ?>
Tableau récapitulatif des fonctions 'strval', 'intval', 'doubleval'<?php //Conversion en float $var = '122.34343The'; $float_value_of_var = floatval ($var); print $float_value_of_var; // affiche 122.34343 ?>
Opération | Exemple | Contenu de la variable d'origine modifié? |
---|---|---|
Changer une valeur par une valeur d'un autre type | $a=2;...$a="velo"; | oui |
Changer la présentation du contenu | $a=2;...$a="2"; | non |
Forcer implicitement un type | setType($var,"integer"); | oui parfois |
Casting : Transfert d'une variable dans une autre avec changement de type | $newVar= (integer) $var ; | non |
Afficher comme étant d'un autre type | print intval($var); | non |
<?php $a = array (1, 2, array ("a", "b", "c")); var_dump ($a);//voir le résultat avec l'exercice ci-après ?>
Fonction | Utilisation | Exemple |
---|---|---|
isset | Dès qu'une valeur a été affectée à une variable, celle-ci devient "set" | if (!isset($myVar))... |
empty | Pour ne pas être "empty", une variable doit contenir autre chose que 0 ou "" | if (empty($myVar))... |
is_numeric | Contient une valeur numérique différente de 0 (entre " ou pas) | if (is_numeric($myVar))... |
is_string | Peut contenir toute sorte de caractères avec les restrictions indiquées ci-dessus (symbole $, antislash...) | echo is_string($myVar)... |
is_array | Indique si la variable est de type tableau | if (is_array($myVar))... |
is_bool | Indique si une variable est de type booléen | if (is_bool($myVar))... |
is_double(=is_float,=is_real) | Indique si une variable est de type double ou float ou réel | if (is_real($myVar))... |
is_integer(=is_long,=is_int) | Indique si une variable est de type entier ou long | if (is_int($myVar))... |
is_null | Une variable est dite de type null si: _On lui a assigné la constante "null" _Elle n'est pas encore "set" (aucune valeur d'assignée, provoque une erreur "notice") _On lui a appliqué la fonction unset (provoque une erreur "notice") | if (is_null($myVar))... |
is_object | Indique si une variable est de type objet | if (is_object($myVar))... |
is_ressource | Indique si une variable est de type ressource | if (is_ressource($myVar))... |
is_scalar | Indique si une variable est de type scalaire (integer, float, string ou boolean mais pas array, object ni ressource) | if (is_scalar($myVar))... |
<?php //ISSET: $a = "test"; $b = "anothertest"; echo isset ($a); //revoie ==> TRUE echo isset ($a, $b); //revoie ==>>TRUE unset ($a); echo isset ($a); //revoie ==> FALSE echo isset ($a, $b); //revoie ==>>FALSE Ou encore: if (!isset($a)) .... //si $a n'est pas set .... ?>
<?php $var = $valeur; if (empty($var)) { echo '$var is soit vide soit =0'; } else { echo '$var est non chargée ou chargée avec une valeur <>0'; } if (!isset($var)) { echo '$var n'est pas set'; } ?>
<?php $myString="Il était une fois"; print $myString[4]; //renvoie t qui est le 5ième caractère (on commence à 0) ?>Les constantes
Syntaxe:
define ("MACONSTANTE") , valeur, sensible/insensible à la casse
Exemple:Le nom des constantes est en général en majuscules.<?php define ("MAXSIZE", 100, True); echo MAXSIZE; echo constant("MAXSIZE"); ?>
Le troisième paramètre indique si le nom de la constante est insensible à la casse ou non.
Si la valeur vrai (true) est indiquée, alors le nom n'est pas sensible à la casse.
La valeur par defaut est 'false', c'est à dire sensible à la casse
Exemple:Define() renvoie TRUE en cas de succès et FALSE en cas d'erreur.<?php define ("MYCONSTANT", "Bonjour à tous"); echo MYCONSTANT; // renvoie "Bonjour à tous" echo MyConstant; // renvoie "Constant" et une erreur de type notice. // define ("GREETING", "Salut, toi !.",TRUE); echo GREETING; // renvoie "Salut, toi !." echo Greeting; // renvoie "Salut, toi !." // define ("MAXSIZE", 100); echo MAXSIZE; echo constant("MAXSIZE"); // idem ligne ci-dessus ?>
Une constante doit être définie avant d'être utilisée. "defined" sert à savoir si une constante a été définie.
La portée des variables : variables globales, variables statiques
La portée des variables est primordiale à comprendre en PHP. Car outre le fait que des variables portant le même nom au sein d'un même programme peuvent avoir des portées différentes et donc des valeurs différentes, la déclaration des variables est implicite dans le langage PHP.Exécution de l'appel de fonction ci-dessus : valeurs $a et $b inconnues dans la fonction
LES VARIABLES DANS LES FONCTIONS :
Chaque variable utilisée dans une fonction est une variable à portée locale.
Exemple :
1_Ne fonctionne pas (pas de valeur de retour) :<?php $a=1; // Variables à portée globale $b=2; echo somme() function somme() { // la fonction somme ne retourne pas le bon résultat $result=$a+$b; // Variable à portée locale return $result; } ?>Nom du fichier : exercises_02/lesson_02_functions_1.php2/ Correction de l'erreur par passage de paramètres: on passe les paramètres $a et $b à la fonctionExécution de l'appel de fonction ci-dessus : passage de paramètres<?php $a=1; $b=2; echo 'Passing parameters $a and $b, result is '.somme($a,$b) ; // function somme($a,$b) { // la fonction somme retourne le bon résultat $result=$a+$b; return $result; } ?>Nom du fichier : exercises_02/lesson_02_functions_2.php3/ Correction de l'erreur : On utilise le tableau GLOBALSUtilisation du tableau $globals[]<?php $a=1; $b=2; print somme($a,$b); function somme() { // la fonction somme retourne le bon résultat $result = $GLOBALS["a"] + $GLOBALS["b"]; // Variables à portée globale return $result; } ?>Nom du fichier : exercises_02/lesson_02_globals_1.phpDéclaration des variables comme globalesNom du fichier : exercises_02/lesson_02_globals_2.phpVariables statiques
Utilisation d'une variable statique :Exemple de fonctionnement d'une variable statique
Une variable déclarée "static" garde sa valeur entre deux appels de fonction
Syntaxe : static $var_name; à l'intérieur de la fonction
Aller plus loin avec les variables statiques:Exercice niveau 2 : Un écran en papier listingNom du fichier : exercises_02/lesson_02_d.phpLes 'variables de variables'
On peut mettre le nom d'une variable dans une autre variable , cela donne un nouveau nom de variable commençant pas deux $ :Construire un exemple de variable de variable
si $prénom = "Alfred" et $Alfred = "Martin" , alors : $$prénom = "Martin" , on a ainsi accès au nom et au prénom avec le même nom de variable, ce qui peut être parfois pratique.Nom du fichier : exercises_02/lesson_02_var_of_var_1.phpUn autre exemple de variable de variableNom du fichier : exercises_02/lesson_02_var_of_var_2.phpAnnexe : Caractères spéciaux
Note concernant l'utilisation de caractères particuliers dans les chaînes de caractères:
De façon générale voici la liste des caractères réservés qui, précédés du signe "\" dans une chaîne de caractères, ont une signification particulière :
Séquence | Valeur |
---|---|
\n | Nouvelle ligne (linefeed, LF ou 0x0A en ASCII) |
\r | Retour à la ligne(carriage return, CR ou 0x0D en ASCII) |
\t | Tabulation horizontale (HT ou 0x09 en ASCII) |
\\ | Antislash |
\$ | Caractère $ |
\" | Guillemet double |
\[0-7]{1,3} | Une séquence de caractère qui permet d'afficher un nombre en notation octale. |
\[0-9A-Fa-f]{1,2} | Une séquence de caractère qui permet d'afficher un nombre en notation hexadécimale. |
Tous droits réservés. 2005-2020 |