Les arrays en PHP<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> min read</span>
Les arrays multi dimmensionnels

Les arrays en PHP12 min read

Les langages de programmation classiques utilisent les arrays (listes) pour stocker des variables de manière ordonnée. Que cela soit des arrays typés comme en C ou des arrays non typés comme en Python, ces variables ne servent qu’a une seule chose, stocker de manière ordonnée des variables. Tout les langages de programmation fonctionnent ainsi à l’exception du PHP…

Ce n’est pas une légende, PHP est un langage très particulier. C’est d’ailleurs pourquoi beaucoup de gens le critiquent sur internet. Je ne pense pas que PHP soit un mauvais langage, je pense effectivement que certains mauvais choix de design auraient du être évités, mais beaucoup de langages ont des problèmes. Prenez javascript, on as été obligés de créer de nouveaux opérateurs de comparaison parce que les anciens étaient tout simplement inutilisables.

Une des particularité de PHP c’est sa gestion des arrays, premièrement car ils ont deux fonctionnalités au lieu d’une, et ensuite car contrairement à tout les autres langages ( à part le C ), il n’existe pas de méthodes sur les arrays, uniquement des fonctions externes.

Nous allons donc étudier les arrays afin de comprendre comment les utiliser ainsi que les différentes fonctions permettant de les manipuler.

Le fonctionnement des arrays

Comme je l’ai dis, les arrays en PHP ont deux manières de fonctionner, d’abord comme tout les autres langages de programmation, ils permettent de stocker des variables de manière ordonnée

La partie “liste”

fonctionnement d'un array classique
fonctionnement d’un array classique

Ce schéma illustre le fonctionnement d’un array en PHP, on voit qu’un array va simplement stocker des variables, dans ce cas des int (nombres). Ces variables vont être stockées dans un ordre prédéfinit grâce à un système d’index. Ce qui fait que l’on peux accéder à une variable dans une liste grâce à son index.

Dans l’image ci-dessous, on voit que le premier index qui est d’ailleurs 0 (en programmation on compte à partir de 0) correspond à la valeur 73. La seconde valeur qui est à l’index 1 correspond à 98. Je pense que vous avez compris le principe.

Bon, à quoi ça sert ?

Souvent, les débutants ne voient pas tout le potentiel des arrays, bien sur ils permettent de stocker des données de manière ordonnée, mais ils permettent surtout de looper c’est à dire de faire une boucle sur l’array.

<?php

$liste = ['Marie', 'Michel', 'Anne Laure', 'Stephane', 'Jean'];

for ($i = 0; $i < count($liste); $i ++) {
    echo $liste[$i];
    echo "<br />";
}

Dans ce code par exemple, on crée d’abord un array grâce à des crochets et on met des valeurs à l’intérieur. Puis on crée une boucle qui va pouvoir accéder à chaque variable dans l’array grâce à l’index.

Je m’explique, dans cette boucle on crée un itérateur qui va valoir 0, puis 1 , puis 2 etc… L’ittérateur augmenteras à chaque passage de la boucle jusqu’a ce que l’on atteigne la fin de l’array. En effet, on as précisé que notre boucle devait s’arrêter lorsque i atteins la valeur de la longueur de l’array.

Ensuite, c’est simple, il suffit d’echo pour chaque passage la variable dans l’array grâce à son index, ce qui nous donne ce résultat :

Marie
Michel
Anne Laure
Stephane
Jean

Ici, notre boucle va simplement afficher le nom et passer une ligne, et ce jusqu’à ce que la liste soit vide.

Comme vous pouvez le voir , les array permettent de stocker de manière très efficace des données ordonnées. De plus on peux y accéder très facilement que cela soit manuellement ou avec une boucle.

Mais il y a plus, toute à l’heure, je vous ai parlé d’une deuxième fonctionnalité de l’array, c’est ce que nous allons voir maintenant

La partie ‘Objet’

Dans un langage de programmation ‘classique’, les array ne permettent que de créer des listes ordonnées. En PHP, on peux aussi créer des objets.

Un objet, c’est une variable à système de clé valeur, pour vous illustrer ça, rien de plus simple :

$personne = [
    'prenom' => 'Michel',
    'age' => 30,
    'profession' => 'Boulanger',
    'passion' => 'jeux vidéos',
    'taille' => 180
];

Cette variable qui est aussi un array as un fonctionnement tout autre que celui vu précédemment. Dans ce cas-ci, notre variable contient des “sous variables” accessibles grâce à leurs noms.

Ainsi, si je décide d’afficher la valeur de prénom, je ferai ceci :

$personne = [
    'prenom' => 'Michel',
    'age' => 30,
    'profession' => 'Boulanger',
    'passion' => 'jeux vidéos',
    'taille' => 180
];

echo $personne['prenom'];

Ce code va simplement aller rechercher la valeur de prénom qui est stockée dans notre variable personne. On peux voir que dans le cas liste ou le cas objet, on accède toujours aux “sous variables” grâce aux crochets.

A quoi ça sert ?

Et bien , c’est une structure qui va vous permettre de faire des choses incroyables. La première raison, la plus simple d’ailleurs, c’est que vous pouvez modéliser n’importe quel structure du monde réel. Dans notre cas, nous pouvons modéliser une personne. Ce qui es génial c’est que vous pouvez par exemple créer un array pour modéliser un utilisateur ou tout autre chose qui vous passe par la tête.

La seconde chose avec les array ‘objets’, c’est que l’on peux les modifier à notre guise (tout comme les array liste d’ailleurs). Je peux très bien assigner la valeur de prénom à ‘Michel’, puis la réassigner à ‘Jean’. Les array vous permettent donc de gérer l’état de votre application très facilement.

Voyons maintenant comment faire une boucle sur les arrays de type objet. Pour se faire on utilise un mot clé un peu spécial, foreach.

$personne = [
    'prenom' => 'Michel',
    'age' => 30,
    'profession' => 'Boulanger',
    'passion' => 'jeux vidéos',
    'taille' => 180

];

foreach ($personne as $cle => $valeur)
{
    echo "la cle $cle as la valeur $valeur";
    echo "<br />"; 
}

Dans le cas ci-dessus, on déclare une boucle foreach qui va boucler sur toutes les variables dans notre array (sachez que foreach fonctionne aussi pour les array liste et permets d’éviter l’utilisation de l’itérateur)

Pour chaque variable dans notre array, on peur accéder à la clé et la valeur individuellement grâce à cette boucle. Dans notre cas, on affiche simplement la clé et la valeur grâce à un echo, ce qui nous donne :

la cle prenom as la valeur Michel
la cle age as la valeur 30
la cle profession as la valeur Boulanger
la cle passion as la valeur jeux vidéos
la cle taille as la valeur 180

On peux voir que toutes les variables contenues dans l’array ont étés affichés correctement avec leur clé et leur valeur.

Les fonctions des arrays

Maintenant que vous savez comment créer un array qu’il soit de type liste ou de type objet, nous allons voir comment interagir avec ces variables.

Comme je l’ai dis précédemment, PHP ne gère pas de méthodes pour modifier les arrays, c’est à dire qu’il n’y a pas de fonctions directement rattaché aux objets. A la place on utilise donc des fonctions classiques.

La première fonction qu’il faut connaître c’est count(), elle permets d’obtenir la longueur d’un array, c’est cette fonction que l’on utilise lorsque l’on veux faire une boucle sur un array.

Rechercher dans un array

Nous allons voir 3 fonctions permettant de rechercher des variables dans un array

array_key_exists

C’est une fonction permettant de vérifier si une clé existe dans un array. Dis comme ça, cela semble complètement idiot mais imaginez un array de 1000 variables différentes , ou simplement un array dont vous n’êtes pas sur qu’une variable existe, et vous voulez exécuter un bloc de code uniquement si cette variable existe, c’est la que la fonction array_key_exists entre en jeux.

$personne = [
    'prenom' => 'Michel',
    'age' => 30,
    'profession' => 'Boulanger',
    'passion' => 'jeux vidéos',
    'taille' => 180

];

if (array_key_exists('prenom', $personne))
{
    echo "la clé existe";
}

Ce code va aller regarder dans l’array $personne si la clé ‘prenom’ existe, puisque c’est le cas, notre programme va afficher “la clé existe”. Si la clé n’existait pas, notre bloc de code ne s’exécuterait pas. En effet, notre fonction va simplement renvoyer true ou false et notre programme va tester cette condition.

in_array

Cette fonction permets de vérifier si une variable se trouve dans un array. Elle s’utilise très simplement et renvoi true ou false, tout comme array_key_exists.

Voyons comment on peux utiliser in_array :

$fruits = ['Banane', 'Pomme', 'Mandarine', 'Orange', 'Cerise'];

if (! in_array('Poire', $fruits))
{
    echo 'Poire ne se trouve pas dans cet array';
}
else
{
    echo 'Poire se trouve dans cet array';
}

Dans ce code, nous testons si “Poire” se trouve dans notre array, puisque ce n’est pas le cas, notre code afficheras ‘Poire ne se trouve pas dans cet array’

array_search

Cette fonction permets de récupérer l’index d’une valeur dans un array. Reprenons notre exemple précédent :

$fruits = ['Banane', 'Pomme', 'Mandarine', 'Orange', 'Cerise'];

echo array_search('Banane', $fruits);

Ce code permets d’afficher l’index de ‘Banane’ qui en l’occurrence est 0. Je le répète, en programmation on commence à compter à partir de 0, il est donc normal que ce code affiche 0.

Modifier un array

Nous allons maintenant voir comment modifier un array. Nous avons vu comment rechercher des valeurs dans un array grâce a 3 fonctions. Voyons maintenant comment modifier nos arrays.

array_push

C’est la fonction la plus utilisée pour manipuler un array. Elle permets simplement d’ajouter un élément à la fin d’un array de type liste.

Voyons comment l’utiliser, afin de vous montrer les effets des prochaines fonctions, je vais vous apprendre une méthode permettant d’afficher très facilement les clé et les valeurs d’un array, il suffit de remplacer echo par print_r

Ce qui donne :

$fruits = ['Banane', 'Pomme', 'Mandarine', 'Orange', 'Cerise'];
array_push($fruits, 'Poire');
print_r($fruits);

On obtiens ce résultat :

Array ( [0] => Banane [1] => Pomme [2] => Mandarine [3] => Orange [4] => Cerise [5] => Poire )

Si vous désirez ajouter un élément au début du tableau, je vous invite à utiliser ‘array_unshift’ au lieu de ‘array-push’

On voit que “Poire” est présent dans notre array alors que l’on ne l’as pas mis lors de la déclaration de notre liste.

array_pop

Cette fonction permets de supprimer le dernier élément d’un array. Voyons un exemple de son utilisation :

$fruits = ['Banane', 'Pomme', 'Mandarine', 'Orange', 'Cerise'];
array_pop($fruits);
print_r($fruits);

On obtiens ce résultat :

Array ( [0] => Banane [1] => Pomme [2] => Mandarine [3] => Orange )

Ici, l’élément ‘Cerise’ as tout simplement été supprimé.

Pour supprimer l’élément au début du tableau , vous pouvez utiliser la fonction “array_shift”.

array_merge

Voyons une dernière fonction, celle-ci permets de fusionner deux array. Elle s’utilise très simplement, le première array donné est celui qui seras modifié, le deuxième array est celui qui seras intégré au premier

$fruits = ['Banane', 'Pomme', 'Mandarine', 'Orange', 'Cerise'];
$legumes = ['Poireau', 'Tomates', 'Carottes'];
$fusion = array_merge($fruits, $legumes);

print_r($fusion);

Ce qui nous donne :

Array ( [0] => Banane [1] => Pomme [2] => Mandarine [3] => Orange [4] => Cerise [5] => Poireau [6] => Tomates [7] => Carottes )

Ici , les deux arrays ont étés fusionnés. C’est très simple d’utilisation et c’est une fonction très pratique

Aller plus loin avec les arrays

Nous avons vu que les arrays pouvaient avoir deux types. Les listes et les objets. Et bien sachez qu’il est tout à fait possible de mixer les deux.

Voyons un exemple :

$fruits = ['Pommes', 'Poires', 'Mandarines', 'nombre' => 3];

print_r($fruits);

Ce qui donne :

Array ( [0] => Pommes [1] => Poires [2] => Mandarines [nombre] => 3 )

Au final, on voit que la fusion des deux types se passe très bien, on peux accéder aux valeurs soit grâce aux index soit grâce à la clé pour le cas “nombre”.

Les arrays multidimensionnels

Les arrays multi dimmensionnels
Les arrays multi dimmensionnels

Ce schéma montre le principe des arrays multi dimmensionnels. Ce sont en fait des arrays dans d’autres arrays. Ces drôles de structures permettent de stocker un grand nombre de valeurs.

Comment les mettre en place ?

Essayons de créer un array contenant plusieurs types de nourriture et chaque type sera un sous array contant des aliments

$nourriture = [
    "fruits" => ['Pomme', 'Poire', 'Mandarine', 'Cerise', 'Banane'],
    'legumes' => ['Poireau', 'tomate', 'Carotte', 'Petits poids'],
    'viande' => ['Boeuf', 'Poulet', 'Cheval', 'Lapin'],
    'poissons' => ['Thon', 'saumon']
];

Je ne ferai pas de print_r ici, car cet array est extrêmement long. Ici on crée d’abord un array objet et chaque variable contiendras elle même un array liste.

Comme je l’ai dis, il est tout à fait possible de mixer les types, ici j’ai décidé de ne pas le faire car c’est déjà une structure plutôt complexe, autant ne pas compliquer les choses

Conclusion

J’espère que vous avez compris le fonctionnement des array en php, c’est une structure très intéressante permettant de stocker des données de manière complexe. Les arrays peuvent être assez complexe à aborder pour les débutants, surtout en PHP. Il est néanmoins nécessaire de les maîtriser pour écrire du code de bonne qualité.

Si cet article vous as plu, vous pouvez vous abonner à ma newsletter pour recevoir le guide GRATUIT Ultime pour bien débuter la programmation

Vous abonner à notre newsletter

* champ requis

Je vous remercie d’avoir lu cet article, au plaisir de vous revoir sur mon blog !

Laisser un commentaire

Fermer le menu
×
×

Panier