SommaireTelecharger la documentationChapitre suivantChapitre precedent  

 
Raccourci :  
Les types

Introduction
Booléens
Conversion en booléen
Entiers
Dépassement de capacité des entiers
Conversion en entiers
Depuis un booléen
Depuis un nombre à virgule flottante
From strings
Conversion d'autres types

Les nombres à virgule flottante
Les chaînes de caractères
Syntax
guillemets simples
Guillemets doubles
Syntaxe Heredoc
Traitement des variables dans les chaînes
Syntaxe simple
Syntaxe complexe
Accès aux caractères d'une chaîne
Fonctions et opérateurs pratiques
Conversion de type
Les tableaux
Syntaxe
Créer un tableau array()
Omettre des clés
La syntaxe à crochets
Fonctions pratiques
Exemples
Attention aux tableaux
Pourquoi est ce que $foo[bar] est invalide?
Alors, pourquoi est-ce mal?

Les objets
Initialisation d'un objet
Ressources
Libérer des ressources
La valeur NULL
Syntaxe
Définition du type
Transtypage

7.9.10 Définition du type
[Notes en ligne] 

PHP ne nécessite pas de déclaration explicite du type d'une variable. Le type d'une variable est déterminé par le contexte d'utilisation. Par exemple, si vous assignez une chaîne de caractères à la variable var, var devient une chaîne de caractère. Si vous assignez un nombre entier à var, elle devient un entier.
Un exemple de convertisseur automatique de type est l'opérateur '+'. Si un des opérandes est de type double, alors tous les opérandes sont évalués comme des variables de type double et le résultat est de type double. Sinon, tous les opérandes sont évalués comme des variables de type entier et le résultat sera du type entier. Il est à noter que cela NE CHANGE PAS le type des opérandes. Le seul changement est la manière dont les opérandes sont évaluées.

<?php
  $foo = "0";  // $foo est une chaîne de caractères (ASCII 48)
  $foo += 2;   // $foo est maintenant du type entier (2)
  $foo = $foo + 1.3;  // $foo est maintenant du type double (3.3)
  $foo = 5 + "10 Petits cochons"; // $foo est du type entier (15)
  $foo = 5 + "10 cochonnets";     // $foo est du type entier (15)
?>
     


Si les deux derniers exemples vous semblent obscurs ou si vous voulez forcer une variable a être évaluée avec un certain type, reportez-vous au paragraphe Conversion de type ci-dessous. Si vous voulez changer le type d'une variable, intéressez-vous à aux fonctions de conversion de chaînes.
Si vous voulez forcer le type d'une variable, vous pouvez vous reporter à la section transtypage. Si vous voulez changer le type d'une variable, utilisez settype().
Pour tester les exemples de cette section, il suffit d'en faire un copier/coller, et d'insérer les lignes dans un script PHP.

<?php
  echo "\$foo==$foo; le type est " . gettype( $foo ) . "<br>\n";
?>
     



Note : Le comportement de la conversion automatique est actuellement indéfinie.

<?php
  $a = 1;       // $a est un entier
  $a[0] = "f";  // $a devient un tableau, et $a[0] contient "f"
?>
      


Bien que dans l'exemple ci-dessus, il semble évident que $a va devenir un tableau, dont le premier élément est 'f', considérez l'exemple suivant :

<?php
  $a = "1";     // $a est une chaîne
  $a[0] = "f";  // Qu'est ce qu'une position dans une chaîne ? que se passe t il?
?>
      


Etant donné que PHP supporte l'indexation de chaîne avec des offsets identiques à celles des tableaux, l'exemple ci-dessus conduit à un problème : est ce que $a est un tableau, dont le premier élément est "f", ou bien est ce que "f" est le premier élément de la chaîne de caractères $a?
Pour cette raison, aussi bien pour PHP 3.0.12 que PHP 4.0b3-RC4, le résultat de la conversion automatique est considéré comme indéfinie. Des solutions sont en cours de discussion.


Chapitre précédentChapitre suivantAccueil nexen.net