FAQ PHP
FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
- 21.1. Les variables dynamiques (1)
- 21.2. Portée des variables (3)
- Comment connaître le type d'une variable ?
- Comment savoir si une variable est affectée ?
- Comment savoir si une variable contient une valeur non nulle ?
- Pourquoi ma variable n'est pas interprétée dans une chaine ?
- Qu'est-ce qu'une variable statique ?
- Comment connaître les variables POST, GET et SESSION envoyées à la page ?
La fonction gettype($var) retourne une chaîne de caractères contenant le nom du type de la variable $var.
Ce type peut être entier (integer), flottant (double), tableau (array), objet (object), booléen (boolean), chaîne de caractères (string), fonction définie par l'utilisateur (user function), ressource (ressource) ou inconnu (unknown type).
Il existe aussi tout un lot d'autres fonctions qui testent si une variable est d'un type donné, en retournant TRUE ou FALSE :
- is_array() pour un tableau.
- is_bool() pour un booléen.
- is_double(), is_float() et is_real() pour un flottant.
- is_int(), is_integer() et is_long() pour un entier.
- is_numeric() et is_scalar() pour un nombre entier ou flottant.
- is_object() pour un objet.
- is_resource() pour une ressource (par exemple un lien vers une base de données).
- is_string() pour une chaîne de caractères.
La fonction isset() permet de déterminer si une variable est affectée ou non, si une variable existe. Elle renvoie la valeur booléenne associée. On peut l'utiliser sur toutes sortes de structures de données, que ce soit une simple variable entière, textuelle ou un tableau, un objet, etc.
if($var
)
print '
La variable est vraie
'
;
if(isset($var
))
print '
La variable est définie
'
;
else
print '
La variable n
\'
est pas définie
'
;
Remarquez dans cet exemple que if($var) et if(isset($var)) ne sont d'aucune manière équivalents. Le premier vérifie que la variable est vraie (soit si elle contient une valeur booléenne vraie, soit si elle contient une valeur non null) et renvoie un avertissement si la variable n'existe pas ; la seconde ne fait que vérifier son existence.
Pour que le script ci-dessus affiche que la variable est définie, on peut utiliser divers subterfuges :
$var
=
NULL;
$var
=
0
;
// ...
Ainsi, la variable existera. Pour que isset() renvoie une valeur fausse après une telle déclaration, on peut utiliser la fonction unset() :
Vous avez écrit ce qui suit et l'affichage n'est pas celui attendu
$variable
=
'
valeur
'
;
echo '
chaine $variable
'
;
// affiche : chaine $variable
Vous attendiez chaine valeur. L'explication est très simple : les variables ne sont pas interprétées dans les chaines entre simple quotes.
Vous avez donc trois solutions :
1) La concaténation
$variable
=
'
valeur
'
;
echo '
chaine
'
.
$variable
;
// affiche : chaine valeur
2) Utiliser des doubles quotes (guillemets).
Les variables sont interprétées dans les chaînes entre double quotes, mais ce n'est pas recommandé d'un point de vue performances. Si l'on utilise quand même des variables dans des chaînes entre double quotes, les entrées de tableaux doivent être entourés d'accolades et il n'est pas possible d'utiliser les membres d'objets ($obj->machin).
$variable
=
'
valeur
'
;
echo "
chaine
$variable
"
;
// affiche : chaine valeur
$tableau
[
'
cle
'
]
=
'
valeur2
'
;
echo "
test
{
$tableau
[
'cle'
]
}
"
;
// affiche : test valeur2
3) La troisième solution est l'utilisation de la syntaxe HereDoc
$variable
=
'
valeur
'
;
echo <<<identifiant
chaine
$variable
identifiant;
Une variable statique est uniquement utilisée dans le corps des fonctions. Elle n'est pas accessible à l'extérieur de la fonction où elle est déclarée. Static nous vient du C et signifie que la valeur de la variable conserve après les appels de la fonction sa valeur puisque l'emplacement mémoire alloué à cette variable est constant. Ce qui n'est pas le cas en temps normal avec les variables puisqu'elles sont détruites à la fin de l'exécution de la fonction (soit lorsque la fin du bloc de la fonction a été atteint, soit lorsque return est rencontré).
Exemple :
/**
* Cette fonction permet d'afficher le contenu intégral de la variable $var.
*
@param
mixed
$var
: la variable à afficher.
*
@param
string
$titre
: facultatif, un éventuel titre à afficher avant la variable.
*/
function printVar($var
,
$titre
=
NULL)
{
?>
<
fieldset>
<?php
if
(!
empty($titre
)):
?>
<
legend>
<?php
echo $titre
;
?>
</
legend>
<?php
endif
;
?>
<?php
if
(!
is_array($var
)):
?>
<
p style=
"
white-space: pre
"
>
<?php
echo $var
;
?>
</
p>
<?php
else
:
?>
<
dl>
<?php
foreach
($var
as
$key
=>
$values
):
?>
<
dt>
<?php
echo $key
;
?>
</
dt>
<
dd style=
"
white-space: pre
"
>
<?php
print_r($values
);
?>
</
dd>
<?php
endforeach
;
?>
</
dl>
<?php
endif
;
?>
</
fieldset>
<?php
}
Afficher les variables de sessions :
echo printVar($_SESSION
,
'
Les variables en session
'
);
Afficher les variables postées par un formulaire (en mode POST) :
echo printVar($_POST
,
'
Les variables postées
'
);
Afficher les variables postées via l'url (mapage.php?var11=valeur) :
echo printVar($_GET
,
'
Les variables en get
'
);
Afficher l'intégralité de ces variables :
echo printVar($_REQUEST
);
La liste des variables dites « superglobales » est disponible dans la documentation de PHP.
Alternativement, on peut utiliser l'extension xdebug.