Conversion automatique et conversion de types
Comprenez comment PHP convertit automatiquement les types et comment effectuer une conversion manuelle.
Conversion automatique et conversion de types est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.
Qu’est-ce que la conversion automatique de types ?
La conversion automatique de types signifie que PHP convertit automatiquement le type d’une valeur lorsqu’un opérateur ou une fonction exige un type différent.
Cette fonctionnalité est pratique, mais elle peut provoquer des erreurs subtiles si vous ne comprenez pas les règles.
Conversion implicite dans les opérations arithmétiques
PHP convertit les chaînes en nombres lorsqu'elles sont utilisées dans un contexte arithmétique :
<?php
echo '5' + 3; // 8 — string '5' becomes int 5
echo '5.5' + 1.5; // 7 — string '5.5' becomes float
echo '5 cats' + 1; // 6 — leading numeric part used, rest ignored
echo 'cats' + 1; // 1 — non-numeric string becomes 0Comparaison non stricte ==
L'opérateur == compare les valeurs après conversion implicite des types — ce qui peut produire des résultats surprenants :
<?php
var_dump(0 == 'a'); // true in PHP 7 (both become 0)
// false in PHP 8 (improved rules!)
var_dump('' == false); // true
var_dump('1' == true); // true
var_dump(null == false); // trueComparaison stricte ===
Utilisez toujours === pour comparer à la fois la valeur et le type — aucune conversion implicite n'a lieu :
<?php
var_dump(1 === '1'); // false — different types
var_dump(1 === 1); // true
var_dump(null === false); // false
var_dump(0 === false); // false
// Rule of thumb: prefer === unless you explicitly need type coercionConversion explicite de type
Convertissez une valeur vers un type précis en la préfixant avec (type) :
<?php
$str = '42.7';
$int = (int) $str; // 42
$float = (float) $str; // 42.7
$bool = (bool) $str; // true
$arr = (array) $str; // ['42.7']
echo $int; // 42
echo $float; // 42.7Fonction settype()
settype() modifie directement le type d'une variable et renvoie true ou false :
<?php
$value = '123';
settype($value, 'integer');
var_dump($value); // int(123)
// Alternative: intval(), floatval(), strval() functions
$n = intval('0xFF', 16); // 255 — parse hex stringCas particuliers de la conversion de chaînes en nombres
Règles essentielles appliquées par PHP lorsqu'il convertit des chaînes en nombres :
- Les espaces en début de chaîne sont ignorés :
' 42 '→ 42 - Préfixe non numérique :
'php8'→ 0 (notification de PHP 8) - Notation scientifique :
'1e3'→ 1000.0 - Chaînes hexadécimales :
'0x1A'n'est PAS automatiquement convertie en int dans PHP 7 et les versions ultérieures
Règles de conversion en booléen
Ces valeurs sont converties en false ; toutes les autres deviennent true :
<?php
$falsy = [false, 0, 0.0, '', '0', [], null];
foreach ($falsy as $v) {
var_dump((bool) $v); // all bool(false)
}
// Careful:
var_dump((bool) '0'); // false — the STRING '0' is falsy!
var_dump((bool) '00'); // true — only exactly '0' is falsyintval() avec des bases
intval() accepte un paramètre de base facultatif pour analyser les chaînes numériques :
<?php
echo intval('0b1010', 2); // 10 — binary
echo intval('077', 8); // 63 — octal
echo intval('1F', 16); // 31 — hexadecimal
echo intval('42'); // 42 — decimal (default base 10)Améliorations de la conversion implicite dans PHP 8
PHP 8 a corrigé certaines incohérences de conversion implicite des types présentes dans les versions précédentes :
0 == 'foo'vaut désormaisfalse(il valaittruedans PHP 7)- Lorsqu'un nombre est comparé à une chaîne non numérique, la chaîne n'est plus convertie en 0
- PHP 8 est ainsi plus sûr, mais cela peut casser du code ancien qui dépendait de l'ancien comportement
Éviter les erreurs liées à la conversion implicite
Bonnes pratiques pour éviter les surprises liées à la conversion implicite des types :
<?php
declare(strict_types=1); // enforce types at function boundaries
// Always use === for comparisons
if ($status === 'active') { /* safe */ }
// Cast explicitly before arithmetic
$total = (float) $_POST['price'] * (int) $_POST['qty'];
// Validate with filter_var
$age = filter_var($_POST['age'], FILTER_VALIDATE_INT);
if ($age === false) { /* invalid input */ }Vérification rapide
Quelle valeur produit (int) '42abc' en PHP ?
Récapitulatif : conversion implicite des types
Ce que vous avez appris sur la gestion des types par PHP :
- PHP convertit automatiquement les types dans les opérations — c'est la conversion implicite des types
==compare après conversion implicite :===effectue une comparaison stricte (type + valeur)- Effectuez une conversion explicite avec
(int),(float),(string),(bool) - Utilisez
intval(),floatval(),strval()comme alternatives sous forme de fonctions - PHP 8 a amélioré certains cas particuliers de conversion implicite
- Activez
strict_types=1pour réduire les surprises dans votre code
Questions Fréquemment Posées
La leçon « Conversion automatique et conversion de types » est-elle gratuite ?
Oui — le texte complet de « Conversion automatique et conversion de types » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Conversion automatique et conversion de types » ?
Comprenez comment PHP convertit automatiquement les types et comment effectuer une conversion manuelle. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer PHP Academy ?
Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Conversion automatique et conversion de types » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?
Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Déclarer des variables en PHP
- Vue d’ensemble des types de données PHP
- Echo et affichage du résultat
- Conversion automatique et conversion de types