Toute une panoplie de fonctions liées aux variables se trouvent sur Dev Nexen
mixed est un pseudo-type, qui indique que le paramètre peut indifféremment prendre plusieurs types.
Liste de tous les cas ou la valeur vaut False :
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/>";
Voir chapitre sur les fonctions.
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;
2 méthodes sont possibles :
$mon_double = 2.94
;
echo $mon_double."<br/>";
echo "<BR>";
echo (int)
$mon_double;
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
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")
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)
Le mot clé define permet ça
define
("CapitaleFrance", "Paris");
echo CapitaleFrance; // Paris
CapitaleFrance = "Madrid" // Renvoie une erreur fatale, logique !
echo defined
("CapitaleFrance"); // 0
define ("CapitaleFrance", "Paris");
echo defined ("CapitaleFrance"); // 1
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
$NombreDecimal=123;
echo decbin($NombreDecimal); //1111011
$NombreBinaire = "1101";
echo bindec($NombreBinaire);//13
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.
Il est possible de créer une variable à la volée, comme ceci :
$Animal="Canard";
$$Animal="Coin coin";
echo $Canard;
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
---