Comment convertir une chaîne en nombre en PHP : 5 méthodes efficaces

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi les chaînes et les nombres en PHP sont une éternelle tragédie

\n

Imaginez : vous écrivez un calculateur de livraison, et l'utilisateur saisit la quantité d'articles sous forme de chaîne "5". Vous essayez d'ajouter 10 — et vous obtenez "510" au lieu de 15. Cela vous dit quelque chose ? Bienvenue dans le monde de la conversion de types en PHP !

\n

La question "How do I convert a string to a number in PHP?" est l'une des plus populaires sur Stack Overflow (plus de 2 millions de vues). Et pour cause : PHP est connu pour son typage implicite, qui à la fois simplifie la vie et crée des pièges.

\n

Dans ce guide, nous allons examiner 5 méthodes fiables pour convertir une chaîne en nombre, démystifier les mythes et apprendre à éviter les bugs. C'est parti !

\n\n

Théorie : que se passe-t-il sous le capot de PHP ?

\n

PHP est un langage à typage dynamique. Une variable peut être une chaîne, et une seconde plus tard, un nombre. Mais il y a un détail :

\n
    \n
  • Transtypage implicite — PHP décide lui-même comment interpréter les données (et se trompe souvent).
  • \n
  • Transtypage explicite — vous prenez le contrôle.
  • \n
\n

Quand vous écrivez "5" + 10, PHP convertit automatiquement la chaîne "5" en nombre. Mais essayez "5 pommes" + 10 — et vous obtenez 15 (PHP ignore silencieusement " pommes"). Et "pommes 5" + 10 donne 10 (la chaîne est considérée comme zéro). Du chaos ? Oui. Mais nous allons mettre de l'ordre.

\n\n

Méthode 1 : L'opérateur de transtypage (int) et (float)

\n

La méthode la plus rapide et la plus simple consiste à utiliser le cast :

\n
<?php\n$string = "42.8";\n$int = (int)$string;      // 42 (partie entière)\n$float = (float)$string;  // 42.8\n\necho $int;   // 42\necho $float; // 42.8\n?>
\n

Important : (int) supprime la partie fractionnaire sans arrondi. Pour arrondir, utilisez round() après la conversion.

\n

Quand l'utiliser : lorsque vous êtes sûr que la chaîne ne contient qu'un nombre et que vous avez besoin d'une conversion rapide.

\n\n

Méthode 2 : Les fonctions intval() et floatval()

\n

Ce sont les « grands frères » du cast — plus lisibles et flexibles :

\n
<?php\n$string = "123.45abc";\n\n$int = intval($string);     // 123\n$float = floatval($string); // 123.45\n\n// Avec indication de la base (uniquement pour intval)\n$hexString = "1A";\n$hexInt = intval($hexString, 16); // 26 (convertit une chaîne hexadécimale)\n\necho $int;    // 123\necho $float;  // 123.45\necho $hexInt; // 26\n?>
\n

Astuce : intval() peut travailler avec différentes bases (binaire, octale, hexadécimale). floatval() ne fonctionne qu'avec la base décimale.

\n

Quand l'utiliser : lorsque vous devez traiter des « déchets » à la fin de la chaîne ou travailler avec des bases non standard.

\n\n

Méthode 3 : La fonction settype() — conversion avec retour true/false

\n

Vous voulez non seulement convertir, mais aussi vérifier le succès de l'opération ? Utilisez settype() :

\n
<?php\n$string = "99.9";\n$result = settype($string, "float"); // true\n\necho $string; // 99.9 (c'est maintenant un float)\necho $result; // 1 (true)\n\n// Si la chaîne n'est pas numérique\n$badString = "hello";\n$result = settype($badString, "integer"); // false\n\necho $badString; // 0 (converti en zéro)\necho $result;    // (vide, false)\n?>
\n

Important : settype() modifie la variable elle-même, et ne retourne pas une nouvelle valeur. Pratique lorsque vous devez garantir que le type a changé.

\n

Quand l'utiliser : lorsque vous avez besoin de vérifier le succès de la conversion (par exemple, pour une saisie utilisateur).

\n\n

Méthode 4 : Astuces arithmétiques (et pourquoi il vaut mieux ne pas les utiliser)

\n

Oui, on peut écrire $number = $string + 0 — PHP convertira lui-même la chaîne en nombre. Ou $number = $st

Blogs

Book Recommendations