Les Tableaux

Dans quels cas va t-on utiliser les tableaux ?

Jusqu'à présent, nous utilisons des variables pour stocker une information. Par exemple $nom pour stocker le prénom d'une personne qui s'appelle Elise, niveau code ça donne :

<?php $nom="Elise";
echo $nom;
?>

Jusque là ça va. Donc s'il y a une autre personne on mettra $nom2 puis $nom3 etc.

Maintenant disons qu'il y a 150 personnes dont on doit afficher le nom. On va quand même pas créer 150 variables jusque $nom149 ? Non on va créer un tableau et exécuter cette instruction au temps de fois que nécessaire. On parle dans ce cas de traitement itératif (réplétifs). Cela vous rappelle quelque chose ? Les boucles ? Et Oui.

Définitions

En PHP, un tableau est une structure algorithmique qui permet de stocker des données. Il existe deux types de tableau :

  • Les tableaux simples (avec un index numérique)
  • Les tableaux associatifs (avec un index nommé)

Il s'agit en réalité d'une carte ordonnée (C'est à dire une valeur est associée à une clé)

Comment déclarer et instancier un tableaux

Il existe 2 façons de déclarer (de créer) un tableau

  • En utilisant le mot clef : Array
    <?php
    $tab=Array();
    ?>
  • En utilisant les crochets : []
    <?php
    $tab=[];
    ?>

A présent que le tableau est créer nous allons l'instancier (c'est à dire lui donner des valeurs). Là aussi, il existe 2 façons de faire.

  • soit on les place tout de suite en déclarant le tableau
    <?php
    $tab=Array("val1","val2","val3");
    //ou
    $tab=["val1","val2","val3"]; ?>
  • soit on les insère aprés
    <?php
    $tab=Array();
    $tab[]="val1";
    $tab[]="val2";
    $tab[]="val3";
    ?>

Comment parcourir un tableau

Maintenant que nous avons notre tableau, maintenant qu'il a des valeurs à présent, il faut nous en servir.

Pour comprendre, un tableau est un objet qui stocke une information à un index qui va de 1 en 1 en commençant par 0. Par exemple pour notre tableau $tab "val1" est à l'index 0

Donc si j'écris :

echo $tab[0];

PHP affichera :

val1

Donc pour afficher toute les valeurs d'un tableau on va utiliser une petite boucle

un POUR qui commence à 0 et s'arrête à la fin du tableau (ici la fonction count) par pas de 1

<?php
for($i=0;$i<count($tab);$i++){
echo $tab[$i]."<br>";
} ?>

Va afficher :

val1
val2
val3

On peut également utiliser une structure de boucle spécifique au tableau FOREACH

<?php
foreach($tab as $val){
echo $val;
}
?>

ici PHP va parcourir chaque item du tableau et le stocker dans la variable ici $val

Tableau multidimensionnel

Jusque là on a utilisé des tableaux simple (un index = une valeur) à présent on va voir les tableaux multidimensionnel un index = un tableau

<?php
$tab=array(array("val1","val2","val3"),array("val4,"val5","val5"));
?>

Et donc pour le parcourir on devra utiliser 2 boucles imbriquées

<?php
for($i=0;$i<count($tab);$i++){
foreach($tab[$i] as $val){
echo "$val<br>";
}
} ?>

Quelques fonctions

Voici quelques fonctions pour utiliser les tableaux

is_array

permet de déterminer si un objet est un tableau ou non

echo is_array([3,2,1,"BOB"]);
// va afficher 1 ou true

in_array

Indique si la valeur passée en paramètre est dans le tableau

echo in_array("PHP",["PHP","Langage","Python","JavaScript"]);
// va afficher 1 ou true

array_rand

Prend une ou plusieurs clés, au hasard dans un tableau

$input = array("Paul", "Ringo", "John", "Georges");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";

array_key_exists

Indique si la valeur passée en paramètre (utiliser avec les tableaux associatifs)

$search_array = array('premier' => 1, 'second' => 4);
if (array_key_exists('premier', $search_array)) {
echo "L'élément 'premier' existe dans le tableau";
}

array_map

Applique une fonction sur les éléments d'un tableau

function cube($n)

return ($n * $n * $n);
}

$a = [1, 2, 3, 4, 5];
$b = array_map('cube', $a);
print_r($b);

Va afficher

Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)

array_reverse

Inverse l'ordre des éléments d'un tableau

$input = array("php", 4.0, array("green", "red"));
$reversed = array_reverse($input);
print_r($reversed);

Va afficher

Array
(
[0] => Array
(
[0] => green
[1] => red
)
[1] => 4
[2] => php
)