|
||||||
| Espace Clients |
|
|||||
|
- 95% des demandes d'aide de nos clients sont traités en moins de 2 heures ! - Nous sommes toujours en pleine innovation ! - Nous améliorons sans cesse la qualité de nos services ! |
Les tableauxUn tableau en PHP est actuellement une carte ordonnée. Une carte est un type qui associe des valeurs en clés. Ce type est optimisé pour différentes utilisations ; il peut être considéré comme un tableau, une liste, une table de hashage, un dictionnaire, une collection, une pile, une file d'attente et probablement plus. On peut avoir, comme valeur d'un tableau, d'autres tableaux, multidimensionnels ou non. La structure de ces données dépasse l'objet de ce manuel, mais vous trouverez au moins un exemple pour chacun des cas évoqués. Pour plus d'informations, reportez-vous aux différentes explications sur le sujet que l'on trouve sur le web. SyntaxeSyntaxe d'un tableauUn tableau peut être créé avec le constructeur de langage array(). Il prend un nombre illimité de paramètres, chacun séparé par une virgule, sous la forme d'une paire clé => valeur. array( clé => valeur , ... ) // clé ne peut être qu'un entier ou une chaîne de caractères // valeur peut être de n'importe quel type
<?phpUne clé peut être soit un entier, soit une chaîne de caractères. Si une clé est une représentation standard d'un entier, elle sera interprétée comme telle (i.e. "8" sera interprété comme 8, alors que "08" sera interprétée comme "08"). Les nombres à virgule flottante, en tant que clé, seront tronqués en entier. Les tableaux indexés ou associatifs, en PHP, sont du même type ; ils peuvent ainsi contenir des indices sous la forme d'entier et de chaîne de caractères. Une valeur peut être de n'importe quel type PHP.
<?phpSi une clé n'est pas spécifiée pour une valeur, l'indice entier maximal sera pris et la nouvelle clé sera cette valeur, plus 1. Si une clé contient déjà une valeur associée, cette valeur sera écrasée.
<?phpAvertissement
Avant PHP 4.3.0, le fait d'ajouter à un tableau une valeur, dont la précédent clé est négative, reproduisait le comportement ci-dessus. Depuis PHP 4.3.0, la nouvelle clé sera 0. Utiliser TRUE comme clé sera évalué à l'entier 1. Utiliser FALSE comme clé sera évalué à l'entier 0. Utiliser NULL comme clé sera évalué à une chaîne de caractères vide. Utiliser une chaîne de caractères vide comme clé créera une clé (ou l'écrasera) vide et sa valeur ne sera pas la même si on utilise des parenthèses vides. Les tableaux et les objets ne peuvent être utilisés comme clés. Si vous tentez de le faire, une message de type Alerte sera émis : Illegal offset type. Création/modification avec des crochetsUn tableau existant peut être modifié en y assignant explicitement des valeurs. L'assignation d'une valeur dans un tableau est effectué en spécifiant la clé, entre crochets. La clé peut également ne pas être renseignée, sous la forme : []. $arr[clé] = valeur; $arr[] = valeur; // clé peut être un entier ou une chaîne de caractères // valeur peut être n'importe quel type Si $arr n'existe pas lors de l'assignation, il sera créé ; c'est ainsi une façon détournée de créer un tableau. Pour modifier une valeur en particulier, il convient d'assigner une valeur en spécifiant sa clé. Pour effacer une paire clé/valeur, il convient d'appeler la fonction unset() sur la clé désirée.
<?php
Fonctions utilesIl y a beaucoup de fonctions utiles pour travailler avec les tableaux. Nous vous invitons à lire la section de ce manuel sur les fonctions en rapport avec les tableaux.
La structure de contrôle foreach existe tout spécialement pour les tableaux. Elle fournit une manière pratique de parcourir un tableau. Ce qu'il est possible de faire ou non avec un tableauPourquoi $foo[bar] est incorrect ?Utiliser toujours des guillemets autour d'un index littéral. Par exemple, $foo['bar'] est correct, alors que $foo[bar] ne l'est pas. Mais pourquoi ? il est courant de rencontrer ce genre de syntaxe dans d'ancien script :
<?phpC'est incorrect, mais ça fonctionne. La raison est que ce code a une constante indéfinie (bar) plutôt qu'une chaîne ('bar' - noter les guillemets). PHP peut définir plus loin une constante portant le même nom. Cela fonctionne car PHP convertit automatiquement une chaîne nue (une chaîne sans guillemets qui ne correspond à aucun symbole connu) en une chaîne qui la contient. Actuellement, s'il n'y a aucune constante nommée bar, alors PHP substituera 'bar' dans la chaîne et l'utilisera.
Plus d'exemples pour expliquer ce comportement :
<?phpLorsque error_reporting est défini afin de montrer les erreurs de type E_NOTICE (en le définissant à E_ALL, par exemple), une telle pratique devient immédiatement visible. Par défaut, error_reporting n'est pas défini pour afficher toutes les alertes. Comme vu dans la section "syntaxe", ce qui se trouve entre crochets ('[' et ']') doit être une expression. Ceci signifie que le code ci-dessous fonctionne :
<?phpC'est un exemple d'utilisation d'une fonction retournant une valeur qui sera la clé du tableau. PHP comprend également les constantes :
<?phpNoter que E_ERROR est également un identifiant valide, tout comme bar dans le premier exemple. Mais le dernier exemple est finalement le même que celui-ci :
<?phpcar E_ERROR vaut 1, etc. Alors, pourquoi est-ce une mauvaise pratique ?Dans le futur, les développeurs PHP peuvent vouloir ajouter une autre constante ou un autre mot clé, ou bien une constante dans une autre partie du code qui peut interférer. Par exemple, il est toujours incorrect d'utiliser le mot empty et default, sachant que ce sont des mots réservés.
Conversion en un tableauPour tous les types : entier, nombre décimal, chaîne de caractères, booléen et ressource, le fait de convertir une valeur en un tableau résulte en un tableau contenant un seul élément dont l'indexe vaut zéro et la valeur, une valeur scalaire convertie. En d'autres termes, (array)$scalarValue est exactement la même chose que array($scalarValue). Si un objet est converti en un tableau, le résultat sera un tableau dont les éléments sont les propriétés de l'objet. Les clés sont les noms des membres, avec une légère exception : les variables ayant un nom sous forme d'entier sont inaccessible; les variables privées auront le nom de la classe ajouté au nom de la variable ; les variables protégées auront un '*' ajouté au nom de la variable. Ce comportement peut amener à des résultats inattendus :
<?phpIci, on pourrait penser qu'il y a 2 clés nommées 'AA', alors qu'une est actuellement nommée '\0A\0A'. La conversion de NULL en un tableau résultat en un tableau vide. ComparaisonIl est possible de comparer plusieurs tableaux avec la fonction array_diff() ainsi qu'avec les opérateurs de tableaux. ExemplesLe type tableau en PHP est vraiment versatile. Voici quelques exemples :
<?phpExemple #1 Utilisation de array()
<?phpExemple #2 Collection
<?phpL'exemple ci-dessus va afficher : Aimez-vous la couleur rouge ? Aimez-vous la couleur bleu ? Aimez-vous la couleur verte ? Aimez-vous la couleur jaune ? La modification directe de valeurs d'un tableau est possible depuis PHP 5 en le passant par référence. Avant cette version, nous devions utiliser l'astuce suivante : Exemple #3 Collection
<?phpL'exemple ci-dessus va afficher :
Array
(
[0] => ROUGE
[1] => BLEU
[2] => VERTE
[3] => JAUNE
)
Cet exemple crée un tableau, dont l'indexation commence à 1. Exemple #4 Indexation commençant à 1
<?phpL'exemple ci-dessus va afficher :
Array
(
[1] => 'Janvier'
[2] => 'Février'
[3] => 'Mars'
)
Exemple #5 Remplissage d'un tableau
<?phpLes tableaux sont ordonnés. L'ordre peut être modifié en utilisant plusieurs fonctions. Voir la section sur les fonctions sur les tableaux pour plus d'informations. La fonction count() peut être utilisée pour compter le nombre d'éléments d'un tableau. Exemple #6 Trie d'un tableau
<?phpSachant que la valeur d'une tableau peut être n'importe quoi, elle peut aussi être un autre tableau. Ceci permet la création de tableaux récursifs et de tableaux multidimensionnels. Exemple #7 Tableaux récursifs et multidimensionnels
<?phpL'assignation d'un tableau induit toujours la copie des valeurs. Utilisez l'opérateur de référence pour copier un tableau par référence.
<?php |


