Les tableaux en PHP

Tableaux associatifs - parcours avec boucle foreach:

<?php
  $jours=array("Lu"=>"Lundi","Ma"=>"Mardi",
        "Me"=>"Mercredi","Je"=>"Jeudi","Ve"=>"Vendredi",
        "Sa"=>"Samedi","Di"=>"Dimanche" );

  foreach($jours as $key=>$val) echo $key." ".$val."<br>\n";

Ce qui donne :

Lu Lundi
Ma Mardi
Me Mercredi
Je Jeudi
Ve Vendredi
Sa Samedi
Di Dimanche

Affichage avec print_r():

<?php
     print_r($jours);

Résultat brut html :

Array
(
    [Lu] => Lundi
    [Ma] => Mardi
    [Me] => Mercredi
    [Je] => Jeudi
    [Ve] => Vendredi
    [Sa] => Samedi
    [Di] => Dimanche
)

Essayez vous-même

Utilisation de la fonction array_walk:

<?php array_walk($jours,'aff_tab'); ?>

En ayant défini au préalable :

<?php
function aff_tab($val, $key){
echo "$key-$val<br/>\n";
}

On obtient le même résultat qu’avec la boucle foreach

Tri simple d’un tableau:

<?php
  sort($jours);
  array_walk($jours,'aff_tab');

On obtient :

0-Dimanche
1-Jeudi
2-Lundi
3-Mardi
4-Mercredi
5-Samedi
6-Vendredi

C’est à dire que:

  • Le tableau est trié selon l’ordre de ses valeurs

  • les clefs sont effacées et réaffectées avec des entiers.

Si on veut préserver également les clefs du tableau associatif, il faut utiliser la méthode suivante :

Tri selon l’ordre naturel avec natsort

<?php
    $jours=array("Lu"=>"Lundi","Ma"=>"Mardi",
    "Me"=>"Mercredi","Je"=>"Jeudi","Ve"=>"Vendredi",
    "Sa"=>"Samedi","Di"=>"Dimanche" );
    var_dump($jours);
    natsort($jours);
    var_dump($jours);

Résultat brut html

array(7) {
  ["Lu"]=>
  string(5) "Lundi"
  ["Ma"]=>
  string(5) "Mardi"
  ["Me"]=>
  string(8) "Mercredi"
  ["Je"]=>
  string(5) "Jeudi"
  ["Ve"]=>
  string(8) "Vendredi"
  ["Sa"]=>
  string(6) "Samedi"
  ["Di"]=>
  string(8) "Dimanche"
}
array(7) {
  ["Di"]=>
  string(8) "Dimanche"
  ["Je"]=>
  string(5) "Jeudi"
  ["Lu"]=>
  string(5) "Lundi"
  ["Ma"]=>
  string(5) "Mardi"
  ["Me"]=>
  string(8) "Mercredi"
  ["Sa"]=>
  string(6) "Samedi"
  ["Ve"]=>
  string(8) "Vendredi"
}

Exécution

On peut aussi utiliser la fonction natcasesort() si on ne veut pas se préoccuper de la casse des chaines présentes dans le tableau, soit à peu près l’ordre du dictionnaire …