Comprendre les types de données en PHP

De Get Docs
Aller à :navigation, rechercher

L'auteur a sélectionné Open Sourcing Mental Illness Ltd pour recevoir un don dans le cadre du programme Write for DOnations.

Introduction

En PHP, comme dans tous les langages de programmation, les types de données sont utilisés pour classer un type particulier de données. Ceci est important car le type de données spécifique que vous utilisez déterminera les valeurs que vous pouvez lui attribuer et ce que vous pouvez en faire (y compris les opérations que vous pouvez effectuer dessus).

Dans ce tutoriel, nous passerons en revue les types de données importants natifs de PHP. Il ne s'agit pas d'une enquête exhaustive sur les types de données, mais cela vous aidera à vous familiariser avec les options dont vous disposez en PHP.

Une façon de penser aux types de données consiste à considérer les différents types de données que nous utilisons dans le monde réel. Deux types différents sont les nombres et les mots. Ces deux types de données fonctionnent de manière différente. Nous ajouterions 3 + 4 pour obtenir 7, tandis que nous combinerions les mots star et fish pour obtenir starfish.

Si nous commençons à évaluer différents types de données les uns avec les autres, tels que des nombres et des mots, les choses commencent à avoir moins de sens. L'équation suivante, par exemple, n'a pas de réponse évidente :

'sky' + 8

Pour les ordinateurs, chaque type de données peut être considéré comme étant assez différent, comme les mots et les nombres, nous devons donc faire attention à la façon dont nous les utilisons pour attribuer des valeurs et à la façon dont nous les manipulons par le biais d'opérations.

Utilisation des types de données

PHP est un langage de type lâche. Cela signifie que, par défaut, si une valeur ne correspond pas au type de données attendu, PHP tentera de modifier la valeur du mauvais type de données pour qu'elle corresponde au type attendu lorsque cela est possible. C'est ce qu'on appelle le jonglage de type '. Par exemple, une fonction qui attend un string mais reçoit à la place un integer avec une valeur de 2 changera la valeur entrante dans le type attendu string avec une valeur de "2".

Il est possible, et encouragé, d'activer le mode strict pour chaque fichier. Cela permet d'appliquer les types de données dans le code que vous contrôlez, tout en permettant l'utilisation de packages de code supplémentaires qui peuvent ne pas respecter les types de données stricts. Le type strict est déclaré en haut d'un fichier :

<?php
declare(strict_types=1);
...

En mode strict, seule une valeur correspondant exactement à la déclaration de type sera acceptée ; sinon un TypeError sera lancé. La seule exception à cette règle est qu'une valeur int passera une déclaration de type float.

Nombres

Tout nombre que vous entrez en PHP sera interprété comme un nombre. Vous n'êtes pas obligé de déclarer le type de données que vous saisissez. PHP considérera tout nombre écrit sans décimales comme un entier (comme 138) et tout nombre écrit avec des décimales comme un float (comme 138.0).

Entiers

Comme en mathématiques, les nombres entiers en programmation informatique sont des nombres entiers qui peuvent être positifs, négatifs ou 0 (…, -1, 0, 1, …). Un entier peut également être appelé int. Comme avec d'autres langages de programmation, vous ne devez pas utiliser de virgules dans les nombres à quatre chiffres ou plus, donc pour représenter le nombre 1 000 dans votre programme, écrivez-le sous la forme 1000.

Nous pouvons imprimer un entier dans un comme ceci :

echo -25;

Ce qui donnerait :

Output-25

Nous pouvons également déclarer une variable, qui dans ce cas est un symbole du nombre que nous utilisons ou manipulons, comme ceci :

$my_int = -25;
echo $my_int;

Ce qui donnerait :

Output-25

Nous pouvons également faire des calculs avec des nombres entiers en PHP :

$int_ans = 116 - 68;
echo $int_ans;

Ce qui donnerait :

Output48

Les nombres entiers peuvent être utilisés de plusieurs façons dans les programmes PHP, et au fur et à mesure que vous en apprendrez davantage sur le langage, vous aurez de nombreuses occasions de travailler avec des nombres entiers et de mieux comprendre ce type de données.

Nombres à virgule flottante

Un nombre à virgule flottante ou float est un nombre réel, ce qui signifie qu'il peut s'agir d'un nombre rationnel ou irrationnel. Pour cette raison, les nombres à virgule flottante peuvent être des nombres pouvant contenir une partie fractionnaire, tels que 9.0 ou -116.42. Aux fins de penser à un float dans un programme PHP, c'est un nombre qui contient un point décimal.

Comme nous l'avons fait avec l'entier, nous pouvons afficher un nombre à virgule flottante comme ceci :

echo 17.3;

Ce qui donnerait :

Output17.3

Nous pouvons également déclarer une variable qui remplace un flottant, comme ceci :

$my_flt = 17.3;
echo $my_flt;

Ce qui donnerait :

Output17.3

Et, tout comme avec les entiers, nous pouvons aussi faire des calculs avec les flottants en PHP :

$flt_ans = 564.0 + 365.24;
echo $flt_ans;

Ce qui donnerait :

Output929.24

Avec les entiers et les nombres à virgule flottante, il est important de garder à l'esprit que 3 n'est pas égal à 3.0, car 3 fait référence à un entier tandis que 3.0 fait référence à un flotteur. Cela peut changer ou non le fonctionnement de votre programme.

Les nombres sont utiles pour travailler avec des calculs, compter des objets ou de l'argent et le passage du temps.

Cordes

Une chaîne est une séquence d'un ou plusieurs caractères pouvant être composés de lettres, de chiffres ou de symboles. Cette séquence est entourée de guillemets simples ou de guillemets doubles "" :

echo 'This is a 47 character string in single quotes.'
echo "This is a 47 character string in double quotes."

Les deux lignes affichent leur valeur de la même manière :

OutputThis is a 47 character string in single quotes.
This is a 47 character string in double quotes.

Vous pouvez choisir d'utiliser des guillemets simples ou des guillemets doubles, mais quel que soit votre choix, vous devez être cohérent au sein d'un programme.

Le programme "Hello, World!" montre comment une chaîne peut être utilisée dans la programmation informatique, car les caractères qui composent l'expression Hello, World! sont une chaîne :

echo "Hello, World!";

Comme pour les autres types de données, nous pouvons stocker des chaînes dans des variables et afficher les résultats :

$hw = "Hello, World!"
echo $hw;

Dans tous les cas, le résultat est le même :

OutputHello, World!

Comme les nombres, il existe de nombreuses opérations que nous pouvons effectuer sur des chaînes dans nos programmes afin de les manipuler pour obtenir les résultats que nous recherchons. Les chaînes sont importantes pour communiquer des informations à l'utilisateur et pour que l'utilisateur communique des informations au programme.

Booléens

Le type de données booléen, ou bool, peut être l'une des deux valeurs suivantes, soit true ou false. Les booléens sont utilisés pour représenter les valeurs de vérité associées à la branche logique des mathématiques.

Vous n'utilisez pas de guillemets lors de la déclaration d'une valeur booléenne ; tout ce qui est entre guillemets est supposé être une chaîne. PHP ne se soucie pas de la casse lors de la déclaration d'un booléen ; True, TRUE, true et tRuE évaluent tous la même chose. Si vous suivez le guide de style publié par le PHP-FIG, les valeurs doivent être toutes en minuscules true ou false.

De nombreuses opérations mathématiques nous donnent des réponses qui sont évaluées à Vrai ou Faux :

  • plus grand que
    • 500 > 100 True
    • 1 > 5 False
  • moins que
    • 200 < 400True
    • 4 < 2False
  • égal
    • 5 = 5 True
    • 500 = 400 False

Comme avec tout autre type de données, nous pouvons stocker une valeur booléenne dans une variable. Contrairement aux nombres ou aux chaînes, echo ne peut pas être utilisé pour générer la valeur car une valeur booléenne true est convertie en chaîne "1", tandis qu'une valeur booléenne false est converti en "" (une chaîne vide). Cela permet de « jongler avec les types » pour convertir une variable dans les deux sens entre les valeurs booléennes et les valeurs de chaîne. Pour sortir la valeur d'un booléen, nous avons plusieurs options. Pour afficher le type avec la valeur d'une variable, nous utilisons var_dump. Pour afficher la représentation sous forme de chaîne de la valeur d'une variable, nous utilisons var_export :

$my_bool = 4 > 3;
echo $my_bool;
var_dump($my_bool);
var_export($my_bool);

Puisque 4 est supérieur à 3, nous recevrons la sortie suivante :

Output1
bool(true)
true

La ligne echo convertit le booléen true en la chaîne de 1. Le var_dump produit le type de variable de bool avec la valeur de true. Le var_export génère la représentation sous forme de chaîne de la valeur qui est true.

Au fur et à mesure que vous écrivez plus de programmes en PHP, vous vous familiariserez avec le fonctionnement des booléens et comment différentes fonctions et opérations évaluant soit True ou False peuvent changer le cours du programme.

NUL

Le type NULL est une absence de valeur. Il réserve de l'espace pour une variable. Cela permet à PHP de connaître une variable, mais de la considérer toujours comme non définie. La seule valeur possible d'un type NULL est la valeur insensible à la casse de null. Lorsque PHP tentera d'accéder à une variable qui n'a pas été déclarée, il lancera un avertissement :

echo $name;

Il avertit que la variable n'est pas définie, mais le code continue de traiter :

OutputPHP Warning:  Undefined variable $name

Un moyen courant d'éviter cet avertissement consiste à vérifier que cette variable a été définie à l'aide de la fonction isset :

if (isset($name)) {
    echo $name;
}

Cela ignore complètement l'écho et aucun avertissement n'est émis. Une deuxième façon d'éviter ce type d'erreur consiste à définir une valeur d'espace réservé pour une variable telle qu'une chaîne vide :

$name = '';
echo "Hello ".$name;

Cela affichera maintenant Hello sans nom car la valeur de $name est une chaîne vide :

OutputHello 

Ces deux solutions sont valables et utiles. Cependant, lorsque vous définissez la valeur de $name sur une chaîne vide, cette valeur est en fait définie :

$name = '';
if (isset($name)) {
    echo "Hello ".$name;
}

Cela affichera également Hello sans nom car la valeur de $name est définie sur une chaîne vide :

OutputHello 

Comme pour la plupart des défis, il existe plusieurs solutions. Une solution consiste à définir la variable sur une valeur null. Cela contient de l'espace pour cette variable et empêche PHP de générer des erreurs, mais considère toujours la variable "non définie":

$name = null;
echo $name;
if (isset($name)) {
    echo "Hello ".$name;
}

La variable a été "déclarée" donc il n'y aura pas d'erreur lorsque echo tentera d'accéder à la variable. Il n'affichera également rien car il n'y a pas de valeur. La condition sera également évaluée comme fausse car la variable $name n'est pas considérée comme définie.

Nous pouvons utiliser var_dump pour voir comment PHP évalue une variable NULL :

$name = null;
var_dump($name);

Cela nous montre que le type est NULL :

OutputNULL 

Bien que moins courant que d'autres types de variables, NULL est souvent utilisé comme type de retour d'une fonction qui exécute une action mais n'a pas de valeur de retour.

Tableaux

Un tableau en PHP est en fait une carte ordonnée. Un map est un type de données qui associe ou "mappe" des valeurs à des clés. Ce type de données a de nombreuses utilisations différentes ; il peut être traité comme un array, list, hash table, dictionary, collection, et plus encore. De plus, comme les valeurs de tableau en PHP peuvent également être d'autres tableaux, les tableaux multidimensionnels sont possibles.

Tableaux indexés

Dans sa forme la plus simple, un tableau aura un index numérique ou key. Si vous ne spécifiez pas de clé, PHP générera automatiquement la prochaine clé numérique pour vous. Par défaut, les clés du tableau sont indexées à 0, ce qui signifie que la première clé est 0 et non 1. Chaque élément, ou valeur, qui se trouve à l'intérieur d'un tableau peut également être appelé un item.

Un tableau peut être défini de deux manières. La première utilise la construction de langage array(), qui utilise une liste d'éléments séparés par des virgules. Un tableau d'entiers serait défini comme ceci :

array(-3, -2, -1, 0, 1, 2, 3)

La deuxième façon, la plus courante, de définir un tableau consiste à utiliser la syntaxe de tableau court en utilisant des crochets []. Un tableau de flottants serait défini comme ceci :

[3.14, 9.23, 111.11, 312.12, 1.05]

Nous pouvons également définir un tableau de chaînes et affecter un tableau à une variable, comme ceci :

$sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'];

Encore une fois, nous ne pouvons pas utiliser echo pour produire un tableau entier, mais nous pouvons utiliser var_export ou var_dump :

var_export($sea_creatures);
var_dump($sea_creatures);

La sortie montre que le tableau utilise des keys numériques :

Outputarray (
  0 => 'shark',
  1 => 'cuttlefish',
  2 => 'squid',
  3 => 'mantis shrimp',
)
array(4) {
  [0]=>
  string(5) "shark"
  [1]=>
  string(10) "cuttlefish"
  [2]=>
  string(5) "squid"
  [3]=>
  string(13) "mantis shrimp"
}

Étant donné que le tableau est indexé à 0, le var_dump affiche un tableau indexé avec des touches numériques entre 0 et 3. Chaque numérique key correspond à une chaîne value. Le premier élément a une clé de 0 et une valeur de shark. La fonction var_dump nous donne plus de détails sur un tableau : il y a 4 éléments dans le tableau, et la valeur du premier élément est une chaîne d'une longueur de 5.

La clé numérique d'un tableau indexé peut être spécifiée lors de la définition de la valeur. Cependant, la clé est plus souvent spécifiée lors de l'utilisation d'une clé nommée.

Tableaux associatifs

Les tableaux associatifs sont des tableaux avec des clés nommées. Ils sont généralement utilisés pour stocker des données liées, telles que les informations contenues dans un ID. Un tableau associatif ressemble à ceci :

['name' => 'Sammy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean']

Remarquez l'opérateur à double flèche => utilisé pour séparer les chaînes. Les mots à gauche du => sont les touches. La clé peut être soit un entier, soit une chaîne. Les clés du tableau précédent sont : 'name', 'animal', 'color', 'location'.

Les mots à droite de => sont les valeurs. Les valeurs peuvent être composées de n'importe quel type de données, y compris un autre tableau. Les valeurs du tableau précédent sont : 'Sammy', 'shark', 'blue', 'ocean'.

Comme le tableau indexé, stockons le tableau associatif dans une variable et affichons les détails :

$sammy = ['name' => 'Sammy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean'];
var_dump($sammy);

Les résultats décriront ce tableau comme ayant 4 éléments. La chaîne de chaque clé est donnée, mais seule la valeur spécifie le type string avec un nombre de caractères :

Outputarray(4) {
  ["name"]=>
  string(5) "Sammy"
  ["animal"]=>
  string(5) "shark"
  ["color"]=>
  string(4) "blue"
  ["location"]=>
  string(5) "ocean"
}

Les tableaux associatifs nous permettent d'accéder plus précisément à un seul élément. Si nous voulons isoler la couleur de Sammy, nous pouvons le faire en ajoutant des crochets contenant le nom de la clé après la variable tableau :

echo $sammy['color'];

La sortie résultante :

Outputblue

Comme les tableaux offrent un mappage clé-valeur pour le stockage des données, ils peuvent être des éléments importants de votre programme PHP.

Constantes

Bien qu'une constante ne soit pas réellement un type de données distinct, elle fonctionne différemment des autres types de données. Comme leur nom l'indique, les constantes sont des variables qui sont déclarées une seule fois, après quoi elles ne changent pas dans votre application. Le nom d'une constante doit toujours être en majuscule et ne pas commencer par un signe dollar. Une constante peut être déclarée à l'aide de la fonction define ou du mot-clé const :

define('MIN_VALUE', 1);
const MAX_VALUE = 10;

La fonction define prend deux paramètres : le premier est un string contenant le nom de la constante, et le second est la valeur à affecter. Il peut s'agir de n'importe laquelle des valeurs de type de données expliquées précédemment. Le mot-clé const permet d'attribuer une valeur à la constante de la même manière que les autres types de données, en utilisant le signe égal unique. Une constante peut être utilisée dans votre application de la même manière que d'autres variables, sauf qu'elles ne seront pas interprétées dans une chaîne entre guillemets :

echo "The value must be between MIN_VALUE and MAX_VALUE";
echo "The value must be between ".MIN_VALUE." and ".MAX_VALUE;

Étant donné que les constantes ne sont pas interprétées, la sortie de ces lignes est différente :

OutputThe value must be between MIN_VALUE and MAX_VALUE
The value must be between 1 and 10

Conclusion

À ce stade, vous devriez avoir une meilleure compréhension de certains des principaux types de données que vous pouvez utiliser en PHP. Chacun de ces types de données deviendra important au fur et à mesure que vous développerez des projets de programmation en langage PHP.