logo oujood
🔍

La fonction settype() en PHP : Convertir le Type d'une Variable

Maîtrisez la conversion de types en PHP avec settype() : techniques avancées pour transformer vos variables en entiers, chaînes, booléens ou tableaux avec des exemples concrets et commentés.

OUJOOD.COM

PHP cours tutorial

Comprendre la fonction settype() en PHP

(PHP 4, PHP 5, PHP 7, PHP 8)

La fonction settype() est un outil puissant de PHP qui permet de modifier dynamiquement le type d'une variable. Contrairement au cast classique qui crée une copie, settype() transforme directement la variable d'origine. Cette fonctionnalité s'avère particulièrement utile lors de la manipulation de données provenant de formulaires, bases de données ou API externes où le contrôle strict du typage devient essentiel pour éviter les erreurs de logique et garantir l'intégrité des données.

Dans la programmation PHP moderne, la gestion rigoureuse des types de variables constitue une bonne pratique indispensable. La fonction settype() offre une approche déclarative pour forcer une variable à adopter un type spécifique, que ce soit pour convertir une chaîne en entier, un nombre en booléen, ou toute autre transformation de type supportée par PHP.

Syntaxe et paramètres de la fonction settype()

Syntaxe détaillée :

bool settype ( mixed &$var , string $type )

La fonction settype() modifie le type de la variable $var pour lui attribuer le type spécifié par le paramètre $type. Il est important de noter que la variable est passée par référence (grâce à l'opérateur &), ce qui signifie que la transformation s'effectue directement sur la variable originale et non sur une copie.

Description des paramètres

Paramètre $var : Il s'agit de la variable dont vous souhaitez modifier le type. Ce paramètre est passé par référence, ce qui permet à la fonction de modifier directement la variable dans son contexte d'origine. Cette particularité distingue settype() des opérateurs de cast traditionnels.

Paramètre $type : Une chaîne de caractères définissant le nouveau type à attribuer à la variable. Ce paramètre doit obligatoirement correspondre à l'une des valeurs de type prédéfinies en PHP pour assurer une conversion réussie.

Types de données supportés par settype()

Les valeurs possibles pour le paramètre $type sont strictement définies et doivent être spécifiées sous forme de chaîne de caractères :

  • "boolean" (ou "bool" depuis PHP 4.2.0) : Convertit la variable en valeur booléenne true ou false, idéal pour les conditions logiques et drapeaux
  • "integer" (ou "int" depuis PHP 4.2.0) : Transforme la variable en nombre entier, éliminant toute partie décimale et caractères non numériques
  • "float" (disponible depuis PHP 4.2.0, anciennement "double") : Convertit en nombre à virgule flottante pour les calculs décimaux précis
  • "string" : Transforme la variable en chaîne de caractères, pratique pour l'affichage et la concaténation de données
  • "array" : Convertit la variable en tableau PHP, encapsulant la valeur dans un array avec un seul élément
  • "object" : Transforme la variable en objet stdClass, utile pour la manipulation orientée objet
  • "NULL" (depuis PHP 4.2.0) : Définit la variable à NULL, supprimant effectivement toute valeur assignée

Valeur de retour de settype()

La fonction settype() retourne un booléen : TRUE en cas de succès de la conversion, ou FALSE si une erreur survient pendant l'opération de transformation de type. Cette valeur de retour permet d'implémenter une gestion d'erreur robuste dans vos scripts PHP.

Exemples pratiques de conversion de types avec settype()

Exemple 1 : Conversion basique entre types de variables

Cet exemple illustre comment utiliser settype() pour convertir une chaîne de caractères en entier et un booléen en chaîne. Nous utiliserons également la fonction gettype() pour vérifier le type après conversion et démontrer l'efficacité de la transformation.

Exemple :  📋 Copier le code

<?php
// Déclaration d'une variable de type chaîne contenant un chiffre et des caractères
$foo = "5bar"; 

// Déclaration d'une variable booléenne
$bar = true;

// Conversion de la chaîne en entier - seul le "5" sera conservé, "bar" sera ignoré
settype($foo, "integer");

// Affichage du nouveau type de $foo avec gettype() qui retourne "integer"
echo 'Le type de la variable $foo passe de string en <b>' . gettype($foo) . '</b><br />';

// Affichage de la valeur convertie pour vérification
echo 'Valeur de $foo après conversion : ' . $foo . '<br />';

// Conversion du booléen en chaîne de caractères
settype($bar, "string");

// Vérification du type après conversion - retourne "string"
echo 'Le type de la variable $bar passe de boolean en <b>' . gettype($bar) . '</b><br />';

// Affichage de la valeur : true devient "1" en string, false deviendrait ""
echo 'Valeur de $bar après conversion : ' . $bar;
?>

Résultat de l'exécution :

Le type de la variable $foo passe de string en integer
Valeur de $foo après conversion : 5
Le type de la variable $bar passe de boolean en string
Valeur de $bar après conversion : 1

Points importants : Lors de la conversion d'une chaîne en entier, PHP extrait uniquement la partie numérique située au début de la chaîne. Dans notre exemple, "5bar" devient 5, les caractères "bar" étant automatiquement ignorés. Cette règle de conversion est fondamentale pour comprendre le comportement de settype() avec les types numériques.

Conversion de type pour les tableaux PHP

Changer le type des valeurs dans un array homogène

Lorsque vous travaillez avec des tableaux PHP contenant des valeurs de même type et que vous devez convertir toutes ces valeurs vers un autre type, la fonction array_map() combinée à un cast offre une solution élégante. Cette technique est particulièrement utile pour traiter des données JSON, CSV ou des résultats de requêtes de base de données où les valeurs numériques arrivent sous forme de chaînes.

Note importante : La méthode avec create_function() présentée dans l'exemple historique est obsolète depuis PHP 7.2.0 et supprimée en PHP 8.0. Nous utiliserons plutôt les fonctions anonymes modernes (closures) qui offrent une syntaxe plus claire et de meilleures performances.

Syntaxe moderne pour la conversion de type dans les tableaux

Méthode moderne (PHP 5.3+) :
$tableau = array_map(function($val) { return (type)$val; }, $tableau);

Méthode avec fonction fléchée (PHP 7.4+) :
$tableau = array_map(fn($val) => (type)$val, $tableau);

Dans ces expressions, (type) représente l'opérateur de cast PHP que vous souhaitez appliquer à chaque élément du tableau. Les opérateurs de cast disponibles sont :

  • Pour le type boolean : utilisez (bool) ou (boolean) - convertit en true/false
  • Pour le type integer : utilisez (int) ou (integer) - extrait la partie entière
  • Pour le type float : utilisez (float) ou (double) - convertit en nombre décimal
  • Pour le type string : utilisez (string) - transforme en chaîne de caractères
  • Pour le type array : utilisez (array) - encapsule la valeur dans un tableau
  • Pour le type object : utilisez (object) - crée un objet stdClass

Exemple 2 : Conversion d'un tableau de chaînes en tableau d'entiers

Cet exemple démontre comment convertir efficacement un tableau contenant des valeurs numériques sous forme de chaînes (typique des données POST ou des imports CSV) en tableau d'entiers. Nous utiliserons var_dump() pour visualiser clairement la structure et les types avant et après transformation.

Exemple :  📋 Copier le code

<?php
// Simulation d'un tableau généré par un formulaire ou une API
// Les valeurs sont stockées comme strings bien qu'elles représentent des nombres
$tableau = array('3', '25', '94', '150');

// Affichage de la structure du tableau AVANT conversion
// var_dump() affichera : array(4) { [0]=> string(1) "3" [1]=> string(2) "25" ... }
echo '<h4>Tableau avant transformation :</h4>';
var_dump($tableau);

// Méthode moderne avec fonction anonyme pour convertir chaque élément
// La fonction array_map applique le cast (int) à chaque valeur du tableau
$tableau = array_map(function($val) { 
    return (int)$val; 
}, $tableau);

// Alternative avec fonction fléchée (PHP 7.4+) - syntaxe plus concise
// $tableau = array_map(fn($val) => (int)$val, $tableau);

// Affichage de la structure du tableau APRÈS conversion
// var_dump() affichera : array(4) { [0]=> int(3) [1]=> int(25) ... }
echo '<h4>Tableau après transformation :</h4>';
var_dump($tableau);

// Vérification pratique : on peut maintenant effectuer des opérations mathématiques
echo '<br>Somme des valeurs : ' . array_sum($tableau);
?>

Différences entre settype() et le cast en PHP

Il est crucial de comprendre la distinction fondamentale entre settype() et les opérateurs de cast en PHP. Le cast crée une copie temporaire de la variable avec le nouveau type, tandis que settype() modifie définitivement le type de la variable d'origine. Choisir la bonne méthode dépend de votre besoin : conservation ou transformation de la variable originale.

Exemple comparatif : $nombre = (int)$chaine; crée une nouvelle variable entière tout en préservant $chaine, alors que settype($chaine, "int"); transforme directement $chaine en entier.

Cas d'usage avancés de settype() en développement PHP

La fonction settype() trouve son utilité dans plusieurs scénarios professionnels : validation et normalisation de données utilisateur, préparation de variables pour des requêtes SQL paramétrées, traitement de flux JSON ou XML avec des types inconsistants, et migration de données entre systèmes hétérogènes. Dans tous ces contextes, un contrôle strict du typage garantit la fiabilité et la sécurité de votre application PHP.

Cours précédent :
  La fonction serialize()

    Fonctions de manipulation des variables en PHP

 Cours suivant :
La fonction strval()   

Par carabde | Mis à jour le 28 novembre 2025