Comment convertir une chaîne en nombre en PHP : guide étape par étape

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 ne veulent-elles pas s'additionner ?

\n\n

Chaque développeur qui a écrit au moins une fois en PHP a rencontré une situation où, au lieu du nombre attendu, il obtient un résultat étrange. Vous essayez d'additionner deux variables provenant d'un formulaire ou d'une base de données, et PHP affiche quelque chose comme 1520 au lieu de 35. Cela vous dit quelque chose ? C'est le problème classique : convertir une chaîne en nombre en PHP.

\n\n

PHP est un langage à typage dynamique. C'est à la fois une bénédiction et une malédiction. D'un côté, il essaie de deviner ce que vous voulez dire et convertit automatiquement les types. De l'autre, ces "devineries" conduisent souvent à des bogues difficiles à détecter. Aujourd'hui, nous allons passer en revue toutes les méthodes de conversion d'une chaîne en nombre en PHP — du simple au plus avancé — et apprendre à le faire correctement.

\n\n

Réponse rapide : 4 méthodes en 30 secondes

\n\n

Si vous avez besoin d'une solution rapide, voici une antisèche. Mais ne fermez pas l'article tout de suite : chaque méthode a ses particularités et ses pièges.

\n\n
<?php\n// Méthode 1 : Conversion de type explicite\n$number = (int) "42";          // int(42)\n$float  = (float) "3.14";     // float(3.14)\n\n// Méthode 2 : Fonction intval()\n$number = intval("42");       // int(42)\n\n// Méthode 3 : Fonction floatval() / doubleval()\n$float  = floatval("3.14");   // float(3.14)\n\n// Méthode 4 : Avec settype()\n$str = "42";\nsettype($str, "integer");     // maintenant $str = int(42)\n?>
\n\n

Toutes les quatre méthodes fonctionnent, mais elles se comportent différemment dans les cas limites. Examinons chacune en détail.

\n\n

1. Conversion de type explicite : (int) et (float)

\n\n

La méthode la plus rapide et la plus évidente pour convertir une chaîne en nombre en PHP est d'utiliser les opérateurs de conversion de type. Ils agissent comme un "changement forcé" du type de la variable.

\n\n

Exemples avec (int)

\n\n
<?php\necho (int) "42";           // 42\necho (int) "3.99";         // 3 (la partie décimale est supprimée !)\necho (int) "42 pommes";    // 42 (nombre au début)\necho (int) "pomme 42";     // 0 (ne peut pas reconnaître le nombre)\necho (int) "";             // 0\necho (int) null;           // 0\n?>
\n\n

Important : PHP essaie de trouver un nombre au début de la chaîne. Si la chaîne commence par des lettres, le résultat sera 0. Ce comportement est souvent une source d'erreurs, surtout lors du traitement des entrées utilisateur.

\n\n

Exemples avec (float)

\n\n
<?php\necho (float) "3.14";       // 3.14\necho (float) "3,14";       // 3.0 (la virgule ne fonctionne pas !)\necho (float) "2.99 euros"; // 2.99\necho (float) "abc";        // 0\n?>
\n\n

Astuce : N'oubliez pas que PHP utilise le point comme séparateur décimal. Si les utilisateurs saisissent des nombres avec une virgule (comme c'est l'usage en France), vous devez d'abord remplacer la virgule par un point avec str_replace(',', '.', $str).

\n\n

2. Fonctions intval() et floatval()

\n\n

Ces fonctions sont une version plus "intelligente" de la conversion explicite. Elles font la même chose, mais permettent de spécifier la base numérique pour intval().

\n\n
<?php\n// intval() — conversion en nombre entier\necho intval("42");            // 42\necho intval("1010", 2);       // 10 (système binaire !)\necho intval("FF", 16);        // 255 (hexadécimal)\necho intval("42.99");         // 42 (la partie décimale est supprimée)\n\n// floatval() — conversion en nombre à virgule flottante\necho floatval("3.14");        // 3.14\necho floatval("2.71828");     // 2.71828\n?>
\n\n

Quand l'utiliser : intval() est indispensable si vous travaillez avec des nombres dans différentes bases (par exemple, pour analyser des codes HEX de couleurs). Pour les nombres ordinaires, il n'y a pratiquement pas de différence avec (int).

\n\n

3. Fonction settype() : conversion sur place

\n\n

Contrairement aux méthodes précédentes, settype() ne renvoie pas une nouvelle valeur, mais

Blogs

Book Recommendations