Chapitre suivantIndex des CoursChapitre précedentChapitre 3

Les types de données

 

Définition du type

PHP supporte les types de données suivant :

Habituellement, le type d'une variable n'est pas affecté par le programmeur. Il est décidé au moment de l'exécution par le PHP, en fonction du contexte dans lequel la variable est utilisée.

Si vous voulez forcer une variable à être convertie en un certain type, vous devez "caster" la variable ou utiliser la fonction settype() .

Il est à noter qu'une variable peut se comporter de manière différente suivant les situations, en fonction du type qui lui est affecté. Pour plus d'informations, voir le paragraphe Définition du type .

Nombres entiers

Il est possible de spécifier les nombres entiers (Integer) de la manière suivante :

$a = 1234; # nombre entier en base 10
$a = -123; # nombre entier négatif
$a = 0123; # nombre entier en base 8, octale (équivalent à 83 en base 10)
$a = 0x12; # nombre entier en base 16, hexadécimale (équivalent à 18 en base 10)

Les nombres à virgule flottante

Les nombres à virgule flottante ("doubles") peuvent êtres spécifié en utilisant la syntaxe suivante:

$a = 1.234;
$a = 1.2e3; 

Les chaînes de caractères

Les chaînes de caractères peuvent être définit en utilisant deux types de délimiteurs.

Si la chaîne de caractères est délimitée par des double-quottes ("), les variables à l'intérieure de la chaîne de caractères seront remplacées. Comme en C ou en Perl, le caractère back slash (\) est utilisé pour "protéger" un caractère spécial.

Tableau 6-1. Les caractères d'échappement.

séquence

signification

\n

nouvelle ligne

\r

retour à la ligne

\t

tabulation horizontale

\\

back slash

\$

caractère $

\"

double-quotte

Vous pouvez utiliser le caractère d'échappement back slash sur n'importe quel autre caractère, mais cela produira un warning (warning de niveau maximum).

Le deuxième moyen de délimiter une chaîne de caractère est d'utiliser les simple-quottes ('). Dans la chaîne de caractère limitée par des simple-quottes, les variables ne seront pas substituées et le caractère back slash n'aura aucun effet (à deux exceptions près, pour "\\" et "\'" afin de pouvoir utiliser les caractères simple-quotte et back slash dans la chaîne de caractère).

Conversion de type

Lorsqu'une chaîne de caractère est évaluée comme une valeur numérique, le résultat et le type de la variable sont déterminés comme suit:

La chaîne de caractère est de type "double" si elle contient un des caractères '.', 'e' ou 'E'. Sinon, elle est de type "integer".

La valeur est définit par la première partie de la chaîne. Si la chaîne de caractères débute par une valeur numérique cette valeur sera celle utilisée. Sinon, la valeur sera égale à 0 (zéro).

Lorsque la première expression est une chaîne de caractères, le type de la variable dépend de la seconde expression.

$foo = 1 + "10.5"; // $foo est du type "double" (11.5)
$foo = 1 + "-1.3e3"; // $foo est du type "double" (-1299)
$foo = 1 + "bob-1.3e3"; // $foo est du type "integer" (1)
$foo = 1 + "bob3"; // $foo is est du type "integer" (1)
$foo = 1 + "10 Small Pigs"; // $foo is est du type "integer" (11)
$foo = 1 + "10 Little Piggies"; // $foo is est du type "integer" (11)
$foo = "10.0 pigs " + 1; // $foo is est du type "integer" (11)
$foo = "10.0 pigs " + 1.0; // $foo is est du type "double" (11) 

Pour plus d'informations sur les conversions de type, voir la fonction strtod(3)

Les tableaux

Les tableaux ressemblent aux tables de hachage (tableaux associatifs) et aux tableaux indexés (vecteurs).

Tableaux à une dimension

PHP supporte les tableaux scalaires et les tableaux associatifs. En fait, il n'y a aucune différence entre les deux. Vous pouvez créer un tableaux en utilisant les fonctions list() ou array() , ou bien en affectant explicitement chacune des valeurs.

$a[0] = "abc";
$a[1] = "def";
$b["foo"] = 13; 

Vous pouvez aussi créer un tableau en ajoutant simplement les valeurs à ce tableau.

$a[] = "hello"; // $a[2] == "hello"
$a[] = "world"; // $a[3] == "world" 

Un tableau peut être classé en utilisant les fonctions asort() , arsort() , ksort() , rsort() , sort() , uasort() , usort() , et uksort() en fonction du type de classement que vous voulez.

Vous pouvez compte le nombre d'éléments qu'il y a dans un tableau en utilisant la fonction count() .

Vous pouvez vous déplacer à l'intérieur d'un tableau en utilisant les fonctions next() et prev() . Un autre moyen de se déplacer dans un tableau est d'utiliser la fonction each() .

Tableaux à plusieurs dimensions

Les tableaux à plusieurs dimensions sont extrêmement simples. Pour chaque dimension du tableau, vous ajouter une nouvelle [clef] à la fin:

$a[1] = $f; # tableau à une dimension
$a["foo"] = $f;
$a[1][0] = $f; # tableau à deux dimensions
$a["foo"][2] = $f; # (vous pouvez mélanger les indices associatifs et numériques)
$a[3]["bar"] = $f; # (vous pouvez mélanger les indices associatifs et numériques)
$a["foo"][4]["bar"][0] = $f; # tableau à quatre dimensions 

Vous pouvez remplir un tableau à plusieurs dimensions par de nombreux moyens mais la méthode la plus simple à comprendre est l'utilisation de la fonction array() . Les deux exemples suivants montre comment remplir un tableau à une dimension:

Example 1:

$a["color"] = "red";
$a["taste"] = "sweet";
$a["shape"] = "round";
$a["name"] = "apple";
$a[3] = 4; 

Example 2:

$a = array("color" => "red","taste" => "sweet", 
"shape" => "round","name" => "apple",3 => 4); 

La fonction array() peut être emboiter pour remplir un tableau à plusieurs dimension:

<?
$a = array(
       "apple" => array( 
       "color" => "red",
       "taste" => "sweet",
       "shape" => "round"
     ),
     "orange" => array(
       "color" => "orange",
       "taste" => "sweet",
       "shape" => "round"
     ),
  "banana" => array(
       "color" => "yellow",
       "taste" => "paste-y",
       "shape" => "banana-shaped"
     )
);
echo $a["apple"]["taste"]; # affichera "sweet"; 

Les objets

Initialisation d'un objet

Pour initialiser un objet, vous devez utiliser la commande "new" afin de créer la variable, instance de l'objet.

class foo {
            function do_foo () {
                                echo "Doing foo."; 
                               }
          }
$bar = new foo;
$bar -> do_foo (); 

Définition du type

PHP ne nécessite pas une déclaration explicite du type d'une variable. Le type d'une variable est déterminé par le contexte de l'utilisation de la variable. 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 "integer".

Un exemple de conversion automatique de type est l'opérateur '+'. Si une des opérandes est de type "double", alors toutes les opérandes sont évaluées comme des variables de type "double" et le résultat est de type "double". Sinon, toutes les opérandes sont évaluées comme des variables de type "integer" et le résultat sera du type "integer". 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és.

$foo = "0"; // $foo est une chaîne de caractères (ASCII 48)
$foo++; // $foo est la chaîne de caractères "1" (ASCII 49)
$foo += 1; // $foo est maintenant du type "integer" (2)
$foo = $foo + 1.3; // $foo est maintenant du type "double" (3.3)
$foo = 5 + "10 Little Piggies"; // $foo est du type "integer" (15)
$foo = 5 + "10 Small Pigs"; // $foo est du type "integer" (15) 

Si les deux derniers exemples vous semblent obscures, voir le paragraphe Conversion de type (chaîne de caractères) .

Si vous voulez forcer une variable a être évaluée avec un certain type, lisez le paragraphe Conversion de type ci-dessous. Si vous voulez changer le type d'une variable, intéressez vous à la fonction settype() .

Conversion de type

La conversion de type en PHP fonctionne de la même manière qu'en C: le nom du type désiré est écrit entre parenthèses devant la variable à "caster".

$foo = 10; // $foo is est du type "integer"
$bar = (double) $foo; // $bar est du type "double" 

Les conversions autorisées sont:

Il est à noter que les tabulations et les espaces sont autorisés à l'intérieur des parenthèses, donc les lignes suivantes sont équivalentes:

$foo = (int) $bar;
$foo = ( int ) $bar; 

 

 

Chapitre précedentIndex des CoursChapitre suivant

Révisé le :23-Jan-2008| ©2008 www.technologuepro.com