6.Le langage PHP

6.9.Les fonctions de manipulation de tableaux

6.9.1.Introduction

Nous avons vu, dans un chapitre précédent[où?] comment initialiser un tableau et comment le parcourir avec les structures de contrôle (for et foreach). Nous allons, ici, vous présenter quelques fonctions permettant de manipuler les tableaux. Nous ne serons pas exhaustifs sur le sujet mais nous vous présenterons les fonctions les plus couramment utilisées.
En bref:
  • count($tableau) retourne le nombre d'élements dans un tableau
  • array_keys($tableau) retourne les clés d'un tableau
  • array_shift($tableau) retire et retourne le premier élément d'un tableau
  • array_pop($tableau) retire et retourne le dernier élément d'un tableau
  • array_key_exists($cle, $tableau) retourne true si le tableau contient une clé $cle

6.9.2.Le nombre d'élements d'un tableau

Toujours utile, à un moment ou un autre, la fonction count() retourne le nombre d'éléments dans le tableau passé en paramètre.

6.9.3.Les clés d'un tableau

Plus particulièrement utile dans le cas d'un tableau associatif, la fonction array_keys() retourne l'ensemble des clés d'un tableau sous forme d'un tableau indexé (dans l'ordre des éléments du tableau).
<?php
$tableau = ['nom' => 'PHP Facile!', 'contenu' => 'Cours PHP', 'url' => 'http://www.phpfacile.com'];
array_keys($tableau); // contiendra ['nom', 'contenu', 'url']
?>
<?php
$tableau = array('nom' => 'PHP Facile!', 'contenu' => 'Cours PHP', 'url' => 'http://www.phpfacile.com');
array_keys($tableau); // contiendra array('nom', 'contenu', 'url')
?>

6.9.4.Premier et dernier élément d'un tableau

6.9.4.1.Cas du tableau indexé

S'il s'agit d'un tableau indexé, il n'y a aucune difficulté. Le premier élément est à l'index 0 et le dernier élément à l'index count($tableau)-1 (où $tableau contient le tableau qui nous interesse).
En d'autres termes, dans le tableau $tableau, le premier élément est $tableau[0] et le dernier $tableau[count($tableau)-1].

6.9.4.2.Avec array_shift() et array_pop()

Pour récupérer le premier (resp. le dernier) élément d'un tableau (que celui-ci soit indexé ou associatif) il suffit de faire appel à la fonction array_shift() (resp. array_pop()). Notez toutefois que ces fonctions ne se contentent pas de retourner l'élément, elles l'enlèvent également du tableau.
<?php
$tableau = ['nom' => 'PHP Facile!', 'contenu' => 'Cours PHP', 'url' => 'http://www.phpfacile.com'];
echo array_shift($tableau); // retournera 'PHP Facile!'
// Le tableau ne contient alors plus que
// ['contenu' => 'Cours PHP', 'url' => 'http://www.phpfacile.com'];
echo array_pop($tableau); // retournera 'http://www.phpfacile.com'
// Le tableau ne contient alors plus que ['contenu' => 'Cours PHP'];
echo array_shift($tableau); // retournera 'Cours PHP'
?>
<?php
$tableau = array('nom' => 'PHP Facile!', 'contenu' => 'Cours PHP', 'url' => 'http://www.phpfacile.com');
echo array_shift($tableau); // retournera 'PHP Facile!'
// Le tableau ne contient alors plus que
// array('contenu' => 'Cours PHP', 'url' => 'http://www.phpfacile.com');
echo array_pop($tableau); // retournera 'http://www.phpfacile.com'
// Le tableau ne contient alors plus que array('contenu' => 'Cours PHP');
echo array_shift($tableau); // retournera 'Cours PHP'
?>

6.9.4.3.Avec array_keys()

Sachant qu'array_keys() retourne un tableau indexé, la première (resp. dernière) clé du tableau est donc donnée par le premier (resp. dernier) élément du tableau retourné par array_keys().
<?php
$tableau = ['nom' => 'PHP Facile!', 'contenu' => 'Cours PHP', 'url' => 'http://www.phpfacile.com'];
$cles = array_keys($tableau);
// $keys[0] retournera 'nom'
echo $tableau[$cles[0]]; // retournera 'PHP Facile!' ()
// $keys[count($cles)-1] retournera 'url'
echo $tableau[$cles[count($cles)-1]]; // retournera 'http://www.phpfacile.com!'
?>
<?php
$tableau = array('nom' => 'PHP Facile!', 'contenu' => 'Cours PHP', 'url' => 'http://www.phpfacile.com');
$cles = array_keys($tableau);
// $keys[0] retournera 'nom'
echo $tableau[$cles[0]]; // retournera 'PHP Facile!' ()
// $keys[count($cles)-1] retournera 'url'
echo $tableau[$cles[count($cles)-1]]; // retournera 'http://www.phpfacile.com!'
?>
Le tableau lui, restera inchangé (contrairement à ce qui se passe avec array_shift() et array_pop()). L'emploi de l'une ou l'autre des méthodes dépendera donc de ce que l'on souhaite faire.

6.9.5.Tester si un tableau contient une clé donnée

Si vous souhaitez savoir si votre tableau contient déjà une clé donnée, vous pouvez faire appel à la fonction array_key_exists() en passant en premier paramètre la clé recherchée et en second paramètre le tableau.
<?php
$tableau = ['nom' => 'PHP Facile!', 'contenu' => 'Cours PHP', 'url' => 'http://www.phpfacile.com'];
array_key_exists('nom', $tableau); // retournera true
array_key_exists('auteur', $tableau); // retournera false
?>
<?php
$tableau = array('nom' => 'PHP Facile!', 'contenu' => 'Cours PHP', 'url' => 'http://www.phpfacile.com');
array_key_exists('nom', $tableau); // retournera true
array_key_exists('auteur', $tableau); // retournera false
?>