Variables/constantes : Types, construction, test, destruction, traitement, conversion

Toute une panoplie de fonctions liées aux variables se trouvent sur Dev Nexen

Liste des types PHP

PHP supporte les 8 types basiques suivants :

quatres types scalaires :

Deux types composés :

Deux types spéciaux :

mixed est un pseudo-type, qui indique que le paramètre peut indifféremment prendre plusieurs types.

Booléens : Liste de tous les cas ou la valeur est FALSE :

Valeurs des variables non encore initialisées

- type numérique : 0.00
- type chaine : "" équivalent à NULL
- type booléen : false équivalent à 0
- type tableau : NULL avec une taille à 0

Récupération des types des variables

gettype permet de retrouver le type des différentes variables. Et quand une variable n'existe pas, gettype renvoie NULL, ce qui en fait une fonction plus pratique que isset.

$Truc = "66";
echo gettype($Truc); // string
$Truc = 66;
echo gettype($Truc); // integer
$Truc = FALSE;
echo gettype($Truc); // boolean
unset ($Truc); // (Destruction de la variable)
echo gettype($Truc); // NULL

Portée des variables

Voir également le chapitre sur les fonctions.

Définition d'une constante

Une constante (variable invariable...) se définit avec la fonction define. L'usage veut que les constantes soit écrites en MAJUSCULES, mais ce n'est pas obligatoire. Attention : Elles sont toutefois case-sensitives !

define("NOMBREPI", 3.15159);
echo NOMBREPI;

On peut très bien imaginer une variable et une constante de même nom :

define("NOMBREPI", 3.15159);
$NOMBREPI = "Chaise";
echo NOMBREPI; //3.14159
echo $NOMBREPI; // Chaise

Comme les constantes sont sensibles à la casse, on serait sensé pouvoir écrire :

define("Animal", "Chat");
define("animal", "Souris");
echo Animal; // Chat
echo animal; // Non pas souris, mais animal !!!

Il y a comme qui dirait un petit bug..

Voici les différences fondamentales entre les variables et les constantes

Conversions de variables

2 méthodes sont possibles :

Méthode 1 : Un cast, comme en C :

$mon_double= 2.945678;
echo $mon_double;
echo "<BR>";
echo (int)$mon_double;

Renverra 2 : C'est la partie entière de 2.945678.

Les conversions autorisées sont:

Exemple :

$mon_double= 2.945678;
echo $mon_double; // 2.945678
echo (bool)$mon_double; // 1
echo (int)$mon_double; // 2
echo (real)$mon_double; // 2.945678
echo (string)$mon_double; // 2.945678
echo (array)$mon_double; // Array
echo (object)$mon_double; // Object

Méthode 2: settype :

Le settype, contrairement au cast, change réellement le type de la variable.

Exemple :

$mon_double = 2.345678;
settype ($mon_double, "integer");
echo $mon_double; //2

Définition, test et destruction d'une variable

isset permet de voir si une variable existe ou pas, mais gettype est nettement plus souple, puissant et pratique

unset détruit complètement la variable

echo isset($Truc); // ne renvoie rien, même pas 0(La variable n'existe pas encore)
$Truc = "yes";
echo isset($Truc); // renvoie 1 (La variable existe)
$Truc = "";
echo isset($Truc); // renvoie 1 (elle existe toujours, mais elle est vide)
unset($Truc);
echo isset($Truc); // ne renvoie rien, même pas 0 (elle n'existe plus)

Création d'une constante

Le mot clé define permet ça

define ("CapitaleFrance", "Paris");
echo CapitaleFrance; // Paris
CapitaleFrance = "Madrid" // Renvoie une erreur fatale, logique !

Vérification de l'existence d'une constante : defined

echo defined ("CapitaleFrance"); // 0
define ("CapitaleFrance", "Paris");
echo defined ("CapitaleFrance"); // 1

Constantes prédéfinies

echo PHP_VERSION; // 4.1.2 - Version de PHP
echo PHP_OS; // Linux
- OS de l'hébergeur
echo __FILE__; // /home/websites/site11/web/filetest.php
- Emplacement du fichier PHP actuel
echo $REQUEST_URI; // /phpmysql/index.php
- Ressemble à __FILE__
echo __LINE__; //14
- N° de ligne dans laquelle on est dans le fichier PHP actuel

D'autres constantes prédéfinies ici

Attention : j'ai testé : on dirait bien qu'on ne peut pas accéder aux constantes prédéfinies dans nos propres fonctions (il faut les passer en paramètre)

Les constantes mathématiques commencent par M :Elles sont listées ici avec les fonctions mathématiques

Conversion binaire/décimale

Bindec et decbin

$NombreDecimal=123;
echo decbin($NombreDecimal); //1111011
$NombreBinaire = "1101";
echo bindec($NombreBinaire);//13

Affichage formaté des nombres

number_format permet d'afficher les nombres avec des séparations entre les milliers et les centaines, ainsi que le nombre de décimales après la virgules :

$MonNombre=2345678.6623;
echo number_format($MonNombre, 2);

Affichera :

2,345,678.66

Maintenant, il est possible de ne pas laisser la notation américaine par défaut : Pour définir l'apostrophe comme séparateur de milliers et la virgule comme séparateur décimal, avec 1 décimale après la virgule, on écrirait ceci :

$MonNombre=2345678.6623;
echo number_format($MonNombre, 1 , "," , "'");

L'affichage donne :

2'345'678,7

Constatez l'arrondissement à ,7.

---