0Pricing
PHP Academy · Leçon

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 0

Comparaison 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); // true

Comparaison 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 coercion

Conversion 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.7

Fonction 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 string

Cas 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 falsy

intval() 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ésormais false (il valait true dans 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&nbsp;: 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=1 pour 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

  1. Déclarer des variables en PHP
  2. Vue d’ensemble des types de données PHP
  3. Echo et affichage du résultat
  4. Conversion automatique et conversion de types
← Retour à PHP Academy