Variables et constantes

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

Liste des types PHP

Il y a 8 types de variables :

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éen

Liste de tous les cas ou la valeur vaut False :

Valeurs des variables non encore initialisées

Récupération des types des variables

gettype permet de retrouver le type des différentes variables (ou constantes). Et quand une variable n'existe pas, gettype renvoie NULL, ce qui en fait une fonction plus pratique que isset. D'autant plus que gettype fonctionne avec les constantes, pas isset.

echo gettype($Truc)."<br/>"; // pas encore initialisée
$Truc = "66";
echo gettype($Truc)."<br/>";
$Truc = 66;
echo gettype($Truc)."<br/>";
$Truc = FALSE;
echo gettype($Truc)."<br/>";
unset ($Truc);
echo gettype($Truc)."<br/>";
NULL
string
integer
boolean
NULL

Portée des variables

Voir chapitre sur les fonctions.

Constantes

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

Elle ne débutent PAS par $, contrairement aux variables.

On peut très bien imaginer une variable et une constante de même nom. En plus, on peut également jouer avec les majuscules et les minuscules, ce qui peut créer certaines confusions :

define("Truc", 3);
$Truc = "Chaise";
define("TRUC", "Armoire");
$TRUC = "Bureau";
echo Truc;  // 3
echo $Truc; // Chaise
echo TRUC;  // Armoire
echo $TRUC; // Bureau

ATTENTION : Définir une constante une 2ème fois ne génère pas d'erreur, mais donne cet étrange résultat :

define("Truc", 3);
define("Truc", 4);
echo Truc;
3

Différences 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.94;
echo $mon_double."<br/>";
echo "<BR>";
echo (int)$mon_double;
2.94
2

Les conversions autorisées sont:

$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

"boolean" (ou, depuis PHP 4.2.0, "bool")

Test d'existence d'une variable et destruction

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.

Si on utilise unset avec une variable inexistante, rien ne se passe (pas d'erreur)

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.

Variables dynamiques

Il est possible de créer une variable à la volée, comme ceci :

$Animal="Canard";
$$Animal="Coin coin";
echo $Canard;
Coin coin

La même chose, un poil plus complexe, pour mieux comprendre le mécanisme :

$Animal="Canard";
$$Animal="Coin coin"; // Equivalent à $Canard="Coin coin"
$$Animal="Meuh"; // Equivalent à $Canard="Meuh"
echo $Canard; // Meuh
$Animal="Chat"; // On remplace Canard par Chat, MAIS ça ne détruit pas la variable dynamique $Canard
$$Animal="miaou"; // Equivalent à $Chat="miaou"
echo $Canard; // Meuh
echo $Chat; // Miaou

---