Aller au contenu principal

Les types

Notions théoriques

En PHP, il existe plusieurs types de données que vous pouvez utiliser.

Les types les plus courants sont les suivants :

  • Entier (int) : Ce sont des nombres sans décimales. Par exemple, 5, 42, -3.
  • Flottant (float) : Ce sont des nombres avec des décimales. Par exemple, 3.14, -0.99.
  • Chaîne de caractères (string) : Ce sont des séquences de caractères. Par exemple, "Bonjour", "123abc".
  • Booléen (boolean) : Ils représentent soit vrai (true), soit faux (false).
  • Tableau (array) : Ils peuvent stocker plusieurs valeurs en une seule variable. Par exemple, $fruits = array("pomme", "banane", "cerise");
  • Objet : Nous y reviendrons plus tard dans ce cours.

Il est important de comprendre ces types car ils affectent la manière dont vous utilisez vos variables et comment PHP traite ces variables.

astuce

Pour afficher le type d'une variable en PHP (pour le débogage), il suffit d'utiliser la fonction var_dump.

var_dump() est une fonction très utile, car elle permet d'afficher des informations détaillées sur une variable, y compris son type et sa valeur.

La fonction PHP var_dump()

En programmation, le débogage est une activité essentielle, et la fonction PHP var_dump() est un outil précieux pour le développeur.

Cette fonction affiche les informations structurées d'une ou plusieurs variables, y compris leur type et leur valeur.

Syntaxe :

void var_dump ( mixed $expression [, mixed $... ] )

Paramètres :

  • $expression : La variable dont vous voulez afficher la structure. var_dump() peut prendre une ou plusieurs variables comme arguments.
  • $... : Vous pouvez passer plusieurs variables à var_dump() et elle affichera les informations de chacune d'entre elles.

Valeur de retour : var_dump() ne retourne pas de valeur. Elle envoie les informations directement à la sortie standard, c'est-à-dire généralement le navigateur ou la console.

Exemples d'utilisation :

  1. Variable simple :
<?php
$a = 10;
var_dump($a);
?>

Cela affichera quelque chose comme :

int(10)
  1. Tableau :
<?php
$array = array(1, 2, 3);
var_dump($array);
?>

Cela affichera :

array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
  1. Objet :
<?php
class A {
public $foo = "bar";
}
$a = new A();
var_dump($a);
?>

Cela affichera :

object(A)#1 (1) {
["foo"]=>
string(3) "bar"
}

Utilisation avancée : Pour un affichage plus lisible, surtout avec des variables complexes ou de grands tableaux, les développeurs utilisent souvent var_dump() en combinaison avec les balises <pre> pour formater la sortie en HTML :

<?php
$array = array("a" => "Apple", "b" => "Banana");
echo '<pre>';
var_dump($array);
echo '</pre>';
?>

Cela affichera les informations dans un format préformaté, ce qui rendra la sortie plus lisible dans le navigateur.

Note : var_dump() est généralement utilisée pendant le développement et le débogage. Il est conseillé de ne pas laisser des appels à var_dump() dans le code en production, car cela pourrait révéler la structure interne de vos données, ce qui pourrait être une information sensible.


Cette fonction est essentielle pour comprendre ce qui se passe dans votre code à un moment donné, et elle est souvent utilisée pour confirmer le type et la valeur des données avec lesquelles vous travaillez.

Comment convertir une chaîne de caractères en un nombre entier en PHP ?

En PHP, la conversion d'une chaîne de caractères (string) en un nombre entier (int) est souvent réalisée à l'aide de la fonction intval(). Voici une petite présentation de cette fonction.

La fonction intval() est utilisée pour obtenir la valeur entière d'une variable.

  • Si la variable est un nombre ou une chaîne de caractères contenant un nombre, intval() retournera la partie entière de ce nombre.
  • Si la chaîne de caractères ne commence pas par une partie numérique, intval() retournera zéro.

Voici la signature de la fonction :

int intval ( mixed $var [, int $base = 10 ] )

Paramètres

  • $var: La valeur à convertir. Peut être une chaîne de caractères ou un nombre.
  • $base (optionnel): La base pour la conversion si $var est une chaîne. La valeur par défaut est 10, ce qui est approprié pour les nombres décimaux. D'autres bases, comme 2, 8, ou 16, peuvent être spécifiées pour la conversion de données binaires, octales ou hexadécimales respectivement.

Valeur de retour

La fonction retourne la valeur entière du paramètre donné. Si le paramètre est un nombre flottant, la partie décimale sera supprimée.

Exemples

Voici quelques exemples d'utilisation de la fonction intval():

echo intval(42);              // affiche 42
echo intval(4.2); // affiche 4
echo intval('42'); // affiche 42
echo intval('+42'); // affiche 42
echo intval('-42'); // affiche -42
echo intval(042); // affiche 34 car c'est un nombre octal (équivalent à 4*8 + 2)
echo intval('042'); // affiche 42, la chaîne est convertie en base 10
echo intval('1e10'); // affiche 1 car c'est interprété comme une chaîne
echo intval('foobar'); // affiche 0 car la chaîne ne commence pas par un nombre
echo intval('10.5'); // affiche 10, la partie décimale est ignorée
echo intval('10.5', 0); // affiche 10, la base par défaut est 10
echo intval('10', 2); // affiche 2 car '10' en base 2 est équivalent à 2 en base 10

Notes

  • Si vous voulez convertir une chaîne en float, vous pouvez utiliser la fonction floatval() ou simplement caster la variable avec (float) ou (double).
  • intval() ne convertira pas une chaîne contenant des formats numériques complexes, comme les notations scientifiques ou les virgules comme séparateurs de milliers. Pour ces cas, vous pouvez utiliser la fonction filter_var() avec le filtre FILTER_VALIDATE_INT.

En utilisant intval(), vous pouvez facilement convertir des données en nombres entiers, ce qui est particulièrement utile pour valider et manipuler des données reçues sous forme de chaînes, comme les entrées utilisateur ou les données lues à partir de fichiers texte.

Comment vérifier si une variable est de type tableau en PHP ?

En PHP, la fonction qui permet de vérifier si une variable est de type tableau est is_array().

Cette fonction est très simple d'utilisation et elle est essentielle pour garantir que les données que vous manipulez sont bien des tableaux avant de procéder à des opérations spécifiques aux tableaux, comme les parcourir avec une boucle foreach ou accéder à leurs éléments par des clés.

La fonction is_array() est une fonction intégrée en PHP qui est utilisée pour déterminer si une variable est un type tableau ou non. C'est une partie cruciale de la validation des types en PHP, car travailler avec des tableaux est une pratique courante dans le développement de logiciels.

Syntaxe

bool is_array ( mixed $var )

Paramètres

  • $var : La variable à évaluer.

Valeur de retour

La fonction is_array() retourne true si la variable est un tableau, false sinon.

Exemple d'utilisation

$variable = array('Apple', 'Banana', 'Cherry');

// Vérifie si $variable est un tableau
if (is_array($variable)) {
echo 'Cette variable est un tableau.';
} else {
echo 'Cette variable n\'est pas un tableau.';
}

Remarques

  • Il est important de vérifier si une variable est un tableau avant de tenter des opérations qui sont spécifiques aux tableaux pour éviter des erreurs d'exécution.
  • is_array() ne vérifie pas la profondeur d'un tableau; même un tableau multidimensionnel sera évalué comme true.
  • Si vous avez besoin de travailler avec des objets qui implémentent l'interface ArrayAccess, gardez à l'esprit que is_array() retournera false pour ces objets, même s'ils se comportent comme des tableaux.

En résumé, is_array() est un outil essentiel pour s'assurer que les données avec lesquelles vous travaillez sont bien structurées comme des tableaux, ce qui vous permet de coder de manière plus sûre et plus efficace.

Les symboles =, ==, et === en PHP

En PHP, les symboles =, ==, et === ont des significations très différentes et sont utilisés dans des contextes différents.

  1. = est l'opérateur d'affectation. Il est utilisé pour attribuer une valeur à une variable.

    Exemple:

    $v = 1; // Affecte la valeur 1 à la variable $v

  2. == est l'opérateur de comparaison d'égalité. Il vérifie si deux valeurs sont égales, mais il ne prend pas en compte le type de données. Cela signifie que si les deux valeurs ont des types différents, elles seront d'abord converties dans un type commun avant que la comparaison ne soit faite.

    Exemple:

    $v == "1" // Renvoie true car la valeur numérique 1 est équivalente à la chaîne de caractères "1".

  3. === est l'opérateur de comparaison d'identité. Il vérifie si deux valeurs sont égales et si elles sont du même type.

    Exemple:

    $v === "1" // Renvoie false car même si $v a la valeur 1, elle est de type entier, tandis que "1" est une chaîne de caractères.

En résumé:

  • = **assigne une valeur à une variable.
  • == compare les valeurs pour l'égalité (après avoir effectué une conversion de type si nécessaire).
  • === compare à la fois les valeurs et les types (sans effectuer de conversion de type).
attention

Ces distinctions sont fondamentales pour écrire du code précis et éviter les erreurs de logique dans vos scripts PHP.

Pour en savoir plus sur les types en PHP : https://www.php.net/manual/fr/language.types.php

Exemple pratique

Voici un exemple de l'utilisation de différents types de données en PHP :

$nombre = 5; // Ceci est un entier (int)
$pi = 3.14; // Ceci est un flottant (float)
$salutation = "Bonjour"; // Ceci est une chaîne de caractères (string)
$estVrai = true; // Ceci est un booléen (boolean)
$fruits = array("pomme", "banane", "cerise"); // Ceci est un tableau (array)
$fruits2 = ["pomme", "banane", "cerise"]; // Ceci est un 2ème tableau (array)
Comment afficher le contenu d'un tableau ?

Pour afficher le contenu d'un tableau, on peut utiliser la fonction PHP print_r().

Par exemple :

$fruits = array("pomme", "banane", "cerise");
print_r($fruits);

Test de mémorisation/compréhension


Quel type de données représente le vrai ou le faux ?


Quel type de données peut stocker plusieurs valeurs en une seule variable ?


Quel type de données est utilisé pour stocker une séquence de caractères ?


Quel type de données est utilisé pour stocker des nombres avec des décimales ?


Quel type de données est utilisé pour stocker des nombres sans décimales ?



TP pour réfléchir et résoudre des problèmes

Dans ce TP, nous allons créer plusieurs variables de différents types et les utiliser.

  • Dans votre répertoire "Documents" créez le répertoire tp_types.
  • Dans ce répertoire créez le fichier main.php :
    <?php
    // Types de données
    print("Types de données \n\n");
  • Testez le fonctionnement de ce fichier :
    php main.php
  1. Créez une variable $nom qui contient votre nom.
  2. Créez une variable $age qui contient votre âge.
  3. Créez une variable $estEtudiant qui est un booléen indiquant si vous êtes étudiant ou non.
  4. Créez un tableau $cours qui contient les noms de trois cours que vous suivez (par exemple : Anglais, Informatique et Mathématiques).
  5. Affichez toutes ces variables à l'écran.
Une solution