Tutoriel PHP

PHP

Découvez les bases de PHP dans mon support de formation dédié à ce puissant langage orienté web.


HTML HTML5 CSS Dreamweaver Bootstrap

Les tableaux (arrays) en PHP

Dans ce tutoriel, je vous propose de découvrir les tableaux (arrays).

Définition :

Il s'agit de variables qui peuvent contenir plusieurs valeurs.

On peut donc imaginer leur représentation sous forme d'un tableau.

Pour différencier les valeurs, pour savoir comment on va dire à PHP "je veux telle valeur de cette variable" il faut bien distinguer les valeurs par des indices.

Voilà comment on peut représenter tout ça :

Indice Valeur
0 Maurice
1 Jean
2 Pierre
3 Paul
4 Gérard

Les tableaux à indices numériques

<?php
// Syntaxe 1
$Prenom=array();


$Prenom[0]='Maurice';
$Prenom[1]='Jean';
$Prenom[2]='Pierre';
$Prenom[3]='Paul';
$Prenom[4]='Gérard';
echo $Prenom[4];
?>
<?php
// Syntaxe equivalente
$Prenom=array(0=>'Maurice',
1=>'Jean',
2=>'Pierre',
3=>'Paul',
4=>'Gérard');
echo $Prenom[4];
?>
<?php
/* Dans le cas où vous souhaitez garder le premier indice à zéro (et les suivants incrémentés de 1 à chaque fois) vous pouvez également utiliser la syntaxe suivante */
$Prenom=array('Maurice','Jean','Pierre','Paul','Gérard');
echo $Prenoms[4];
?>
Gérard
Gérard
Gérard

count()

Compte le nombre d'éléments d'un tableau ou le nombre de propriétés d'un objet

count($variable)
<?php
echo count($Prenoms1) ." prénoms dans le tableau";
?>

Exercice

Les tableaux associatifs

PHP peut également vous permettre de distinguer les différentes valeurs de vos tableaux par des indices associatifs.
Ils sont constitués de chaînes de caractéres.
Prenons l'exemple d'un article. On va le différencier par plusieurs choses :

  • Son numéro unique
  • Son nom
  • Son prix

Voilà comment on pourrait représenter ça avec un tableau associatif :

<?php
// 1ère syntaxe
$Article=array();
$Article['Numero']=77;
$Article['Nom']="Cable rond";
$Article['Prix']=7;
echo "Ref: ".$Article['Numero'] ." Article: " .$Article['Nom'] ." Prix: " .$Article['Prix'];
?>

<?php
// Seconde syntaxe
$Articles=array('Numero' =>77,
'Nom' => "Cable rond",
'Prix' => 7);
echo "Ref: ".$Articles['Numero'] ." Article: " .$Articles['Nom'] ." Prix: " .$Articles['Prix'];
?>
Ref: 77 Article: Cable rond Prix: 7
Ref: 77 Article: Cable rond Prix: 7

Exerice tableau associatif

Tableau multi-dimensionnelle indicé

Nous allons représenter le tableau ci-dessous sous forme d'un tableau milti-dimensionnelle indicé.

Pays Capitale Population en million
France Paris 80
Japon Tokyo 90
UK Londres 70

Voici un exemple de code pour le traduire en PHP, vous pouvez remarquer que nous utilisons un second indice.

<?php
// 1ère ligne
$tab1=array();
$tab1[0][0]="France";
$tab1[0][1]="Paris";
$tab1[0][2]=80;

// 2ème ligne
$tab1[1][0]="Japon";
$tab1[1][1]="Tokyo";
$tab1[1][2]=90;



// 3ème ligne
$tab1[2][0]="UK";
$tab1[2][1]="Londres";
$tab1[2][2]=70;

echo $tab1[1][2];
?>

Nous souhaitons afficher la population du Japon

La population du Japon est : 90

Exemple : afficher la totalité de la ligne 2 du tableau avec une boucle for.

<?php
$tab2=array();

$tab2[0][0]="France";
$tab2[0][1]="Paris";
$tab2[0][2]=80;

$tab2[1][0]="Japon";
$tab2[1][1]="Tokyo";
$tab2[1][2]=90;

$tab2[2][0]="UK";
$tab2[2][1]="Londres";
$tab2[2][2]=70;

// Notre boucle permettant d'afficher la 2ème ligne du tableau ci-dessus
for ($m=0;$m<count($tab2);$m++){
    echo $tab2[1][$m];
}
?>
Japon Tokyo 90

Exercice

Boucle foreach

La boucle foreach se décline en deux versions.

Version 1

avec un tableau indicé

Ainsi, nous parcourons le tableau $array et la valeur de l'élément courant est copié dans $value, qui est ensuite affiché.

foreach($array as $value)

<?php
$array = array( 1, 2, 3, 5, 8, 12 );

foreach( $array as $value ){
echo $value . '<br >';
}
?>

ou

<?php
$array = array( 1, 2, 3, 5, 8, 12 );

foreach( $array as $value ) // Pas d'accolades
echo $value . '<br >';
?>

1
2
3
5
8
12

avec un tableau associatif

Contrairement au tableau précédant, les indices des éléments ne sont pas des nombres (0, 1, 2, ...) mais des chaînes de caractéres (on appelle un tel tableau un tableau associatif). Ainsi, si je veux accéder au deuxiéme élément, je dois procéder comme suit: $array['deuxieme'] .
Il est donc impossible ici d'utiliser for, par contre, avec foreach, aucun probléme

<?php
$array = array( 'premier' => 'N° 1', 'deuxieme' => 'N° 2', 'troisieme' => 'N° 3');
// on parcourt $array, la valeur de l'item courant est copiée dans $value
foreach($array as $value)
   echo $value . '<br>';
?>
N°1
N°2
N°3

Version 2

La deuxiéme version de foreach permet de connaître, en plus de la valeur de l'élément courant, sa clé
Dans ce cas, on parcourt le tableau $array et la clé de l'élément courant est copiée dans $key tandis que sa valeur est copiée dans $value

Exemple 1

<?php
$array = array( 'premier' => 'N° 1', 'deuxieme' => 'N° 2', 'troisieme' => 'N° 3');
foreach( $array as $key => $value )
    echo 'Cet élément a pour clé "' . $key . '" et pour valeur "' . $value . '"<br>';
?>
Cet élément a pour clé "premier" et pour valeur "N° 1"
Cet élément a pour clé "deuxieme" et pour valeur "N° 2"
Cet élément a pour clé "troisieme" et pour valeur "N° 3"

Exemple 2, boucle foreach sur les variables de serveur $_SERVER

Les variables de serveur seront abordés dans ce chapitre.

<?php
foreach($_SERVER as $key => $value )
    echo '$_SERVER[' .$key .']=' .$value .'<br>';
?>

Trier un array

ksort trie un tableau par ordre croissant suivant les clés
bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>

a = orange b = banana c = apple d = lemon

krsort trie un tableau par ordre décroissant suivant les clés
bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
krsort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>

d = lemon c = apple b = banana a = orange

En savoir + sur les tris dans les tableaux

Imbriquer des boucles foreach

On peut aussi imbriquer des boucles foreach, regardez on peut ainsi afficher le contenu d'un tableau à deux dimensions

Le premier foreach parcourt le tableau principal, les valeurs de $key sont successivement 'fruits', 'animaux' et 'pays' tandis que $value contient le tableau qui contient les exemples, c'est donc $value que l'on prend comme tableau pour le deuxiéme foreach

<?php
$array = array( 'fruits' => array( 'pommes', 'tomates', 'abricots' ),
'animaux' => array( 'chats', 'chiens' ),
'pays' => array( 'Suisse', 'France', 'Angleterre' ) );

foreach( $array as $key => $value )
{
echo $key . ': <br>';

foreach( $value as $valeur )
echo ' ' . $valeur . '<br>';

echo '<br>';
}
?>
fruits:
pommes
tomates
abricots

animaux:
chats
chiens

pays:
Suisse
France
Angleterre

Exercice 1 boucle foreach