Découvez les bases de PHP dans mon support de formation dédié à ce puissant langage orienté web.
Dans ce tutoriel, je vous propose de découvrir les tableaux (arrays).
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 |
<?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];
?>
Compte le nombre d'éléments d'un tableau ou le nombre de propriétés d'un objet
<?php
echo count($Prenoms1) ." prénoms dans le tableau";
?>
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 :
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'];
?>
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
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];
}
?>
La boucle foreach se décline en deux versions.
Ainsi, nous parcourons le tableau $array et la valeur de l'élément courant est copié dans $value, qui est ensuite affiché.
<?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 >';
?>
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>';
?>
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>';
?>
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>';
?>
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
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
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>';
}
?>