Extension:Arrays/fr

L’extension Arrays (anciennement appelée ArrayExtension) crée un ensemble supplémentaire de fonctions d'analyseur qui fonctionnent sur arrays.

Fonctions
Cette extension définit les fonctions analyseur suivantes :



arraydefine
Cette fonction construit un tableau (identifié par key) en utilisant une liste de values séparée par delimiter. La variable peut être accédée par d’autres fonctions plus tard.

Syntaxe :

Notes :
 * values est une liste de chaînes de caractères séparées par delimiter.
 * Le tableau résultant est un tableau de chaînes.
 * Le délimiteur par défaut est  si non spécifié; un délimiteur peut être une chaîne (les espaces vides entourant le délimiteur seront supprimés) ou une expression régulière Perl, par exemple   (voir preg_split).
 * Les utilisateurs peuvent définir un tableau vide (voir l'exemple).
 * Les utilisateurs peuvent spécifier des options, y compris pour l'unicité, le tri et l'impression (voir l'exemple).
 * Les options sont ignorées à moins qu'un délimiteur ne soit également spécifié.

Exemples : 

arrayprint
Cette fonction imprime les valeurs d'un tableau dans un format personnalisable.

Syntaxe :

Notes :
 * subject accepte les liens wiki, les modèles et les fonctions d'analyse syntaxique.
 * Dans subject, vous ne devez pas échapper les barres verticales ' '. Dans l'ensemble de la construction, le pattern sera recherché et remplacé par la valeur actuelle du tableau (échappée) de chaque boucle. Enfin, la chaîne complète sera analysée et placée dans un tableau de résultats formaté avec le séparateur delimiter.
 * Dans le cas où le tableau qui doit être imprimé n'existe pas, une chaîne vide sera renvoyée (introduit dans 1.4 alpha, partie du mode de compatibilité).
 * Le délimiteur par défaut dépend de la langue; pour l'anglais c'est   (introduit dans 2.0, partie du mode compatibilité).

Exemple :

arrayindex
Cette fonction imprime la valeur d'un tableau (identifié par key) à la position index.

Syntaxe :

Notes :
 * Un index non valide (non numérique, hors limite) entraînera l'impression d'une chaîne vide.
 * L'index commence à 0; le premier élément a donc pour index 0.
 * Les indices négatifs rendront un élément compté à partir de la fin (par exemple,  sera le dernier élément des tableaux).
 * default sera retourné si le tableau n'existe pas, si la clé n'existe pas dans le tableau, ou si la valeur est une chaîne vide.

Exemples :

arraysize
Cette fonction renvoie la taille (nombre d'éléments) d'un tableau.

Voir https://php.net/function.count. Si le tableau donné n'existe pas, la sortie de la fonction sera une chaîne vide au lieu d'un nombre. Cela permet de vérifier que le tableau existe.

Syntaxe :

Exemples :

arraysearch
Cette fonction renvoie l'indice de la première occurrence de value dans l'ensemble (identifié par key), à partir de la position identifiée par le paramètre index, et renvoie une chaîne vide en cas d'échec. Lorsque yes et / ou no sont spécifiés, cela étendra la valeur définie pour yes si elle est trouvée, sinon il vaut no. Voir https://php.net/function.array-search

Syntaxe :

Exemples :

arraysearcharray
Cette fonction recherche dans un tableau (identifié par key) et crée un nouveau tableau (identifié par new_key) à partir des résultats de la recherche. Le critère de recherche value peut être une chaîne ou une expression régulière. Si on donne index, la recherche commence là, limit peut définir le nombre maximum de résultats. Le paramètre identifié par transform peut être utilisé si value est une expression régulière. Il peut transformer le résultat des entrées correspondantes en tableau new_key comme le ferait PHP preg_replace.

Syntaxe :

Notes :
 * Si value est une chaîne, le tableau new_key ne contiendra que les entrées qui correspondront à cette chaîne.
 * Les valeurs négatives de index comme  peuvent être utilisées pour rechercher les n dernières entrées seulement.
 * Si est disponible dans le wiki, le modificateur e de Regex Fun peut être utilisé dans l'expression régulière. Cela n'a rien à voir avec le modificateur e de PHP (ce qui serait une faille de sécurité). Avec le modificateur e actif, la chaîne transform sera analysée après l'insertion des back-refs, après quoi elle remplacera la correspondance actuelle.

Exemple :

arrayslice
Cette fonction extrait un sous-tableau (identifié par key) dans un nouveau tableau (identifié par new_key).

Voir https://php.net/function.array-slice

Syntaxe :

Notes :
 * Le décalage indique le point de départ de la tranche, il peut s'agir d'un nombre non négatif ou d'un nombre négatif de l'indice si on compte à partir de la fin (par exemple, le dernier élément de l'offset de l'ensemble est -1). Le décalage est différent de l'index (qui doit être un nombre non négatif)
 * La longueur indique le nombre d'éléments à extraire. Si elle est omise, alors la séquence comprendra tout depuis le décalage (offset) jusqu'à la fin du tableau.
 * Si le décalage dépasse la taille du tableau, on renvoie un tableau vide, et si le décalage est une valeur négative, un nouveau tableau est renvoyé avec tous les éléments.

Exemple :

Altération
Fonctions qui modifient directement un tableau au lieu d'en créer un nouveau.

arrayunique
Cette fonction convertit un tableau (identifié par key) en un set (pas de membres dupliqués, pas d'élément vide).

Voir https://php.net/function.array-unique

Syntaxe :

Exemple :

arrayreset
Cette fonction invalidera certains ou tous les tableaux définis.

Syntaxe :

Notes :
 * En utilisant arraysize sur eux, ils renverront une chaîne vide au lieu de, donc ils sont vraiment non définis, et non pas vides. Pour vider simplement un tableau de son contenu, utilisez.
 * Avant la version 1.4 alpha   est utilisé comme séparateur entre plusieurs tableaux qui doivent être non définis.

arraysort
Cette fonction trie un tableau dans l'ordre suivant.
 * - sans tri (par défaut)
 * - dans l'ordre décroissant (voir https://php.net/function.sort)
 * / - dans l'ordre ascendant (voir https://php.net/function.rsort)
 * - dans un ordre aléatoire (voir https://php.net/function.array-rand)
 * - en ordre inverse (voir https://php.net/function.array-reverse)

Syntaxe :

Note :
 * Chaque élément d'un tableau est traité comme une chaîne de caractères, ce qui signifie que les nombres ne peuvent pas être ordonnés comme prévu.

Exemple :

Interaction
Ces fonctions travaillent avec plusieurs tableaux, créant un nouveau tableau ou en réécrasant un tableau existant avec le résultat. Depuis la version 2.0, ces fonctions peuvent interagir avec plus de deux tableaux simultanément. Si elles ne traitent qu'un seul tableau, elles créent simplement une copie de ce tableau. Tous les tableaux non existants seront simplement ignorés par ces fonctions.

arraymerge
Cette fonction fusionne les valeurs de deux ou plusieurs tableaux dans un nouveau (identifié par new_key).

Voir https://php.net/function.array-merge

Syntaxe :

Exemple :

arrayunion
Cette fonction fusionne les valeurs de deux ou plusieurs tableaux dans un nouveau tableau (identifié par new_key) sans valeurs dupliquées.

Syntaxe :

Notes :
 * Il s'agit d'un opérateur sur les ensembles, donc le tableau est renvoyé sous forme de set, sans valeurs dupliquées.
 * Ceci est égal à arraymerge avec arrayunique après.

Exemple :

arraydiff
Cette fonction calcule la différence (au sens théorie des ensembles) de deux ou plusieurs tableaux. Le tableau résultat est identifié par new_key. Le tableau renvoyé est un set qui contient les éléments du premier tableau donné (identifié par key1) qui ne sont définis dans aucun des autres tableaux. Voir https://php.net/function.array-diff

Syntaxe :

Note :
 * Il s'agit d'un opérateur sur les ensembles, donc le tableau est renvoyé sous forme de set, sans valeurs dupliquées.
 * Cette fonction peut être utilisée pour tester la relation de sous-classe.

Exemple :

arrayintersect
Cette fonction calcule l'intersection au sens théorie des ensembles de deux ou plusieurs tableaux. Le tableau résultat est identifié par new_key. Voir https://php.net/function.array-intersect

Syntaxe :

Note :
 * Il s'agit d'un opérateur sur les ensembles, donc le tableau est renvoyé sous forme de set, sans valeurs dupliquées.

Exemple :

Configuration
Arrays 2.0 introduit deux variables de configuration :


 * $egArraysCompatibilityMode
 * ($egArrayExtensionCompatbilityMode en v1.4 alpha) initialisé à true, cela activera le mode de compatibilité qui ramènera le comportement de l'ancien ArrayExtension v1.3.2 le plus possible. En effet ceci est dû à l'introduction dans la version 2.0 de plusieurs changements majeurs. Donc, l'utilisation de ce mode de compatibilité permet un passage fluide de l'extension Arrays, de la 1.x à la 2.x . Par défaut, le mode de compatibilité n'est pas activé. Si vous avez déjà utilisé l'ancien ArrayExtension dans votre wiki, vous voudrez peut-être jeter un oeil à cette liste et aligner vos modèles avant de passer à Arrays sans le mode compatibilité.


 * $egArraysExpansionEscapeTemplates
 * Contient une liste de paires clé-valeur de caractères devant être remplacés par un modèle ou l'appel d'une fonction d'analyse sur un tableau de valeurs comprises dans . En remplaçant ces caractères spéciaux avant d'inclure les valeurs dans la chaîne qui est développée par la suite, les valeurs d'un tableau ne peuvent pas perturber le code MW autour. Sinon, les valeurs du tableau elles-mêmes seraient analysées également. Par défaut, cela va échapper les caractères suivants avec des appels au modèle ou à la fonction d'analyse suivante :
 * =  (Template:= doit afficher  )
 * =  (Template:! doit afficher  )
 * À partir de MW 1.24.0 il n'est plus nécessaire de créer Template:! puisque son action est réalisée par le nouveau mot magique.
 * =  (Template:(( doit afficher  )
 * =  (Template:)) doit afficher  )
 * Assurez-vous que ces modèles ou ces fonctions d'analyse existent dans votre wiki ou modifiez cette variable en conséquence. Si cela n'est pas configuré correctement,  peut imprimer des valeurs inattendues au cas où l'une de ces séquences de caractères est utilisée comme valeur dans un tableau.
 * $egArraysExpansionEscapeTemplates peut également être initialisé simplement à null, dans ce cas, il passe à nouveau au comportement pré 2.0 où les valeurs d'un tableau avec ces séquences de caractères cassaient le code donné de subject dans . Si le mode de compatibilité est activé, il sera toujours traité comme valant null.

Questions fréquentes


Réitérer l'accès aux éléments d'un tableau
Il est possible d'accéder successivement aux éléments d'un tableau à l'aide de ou. 

Utiliser arrayprint
Voici la sortie attendue : Vous trouverez d'autres exemples sur l'ancien wiki Tetherless World



Réutiliser les clés
Une fois qu'un tableau déjà défini est imprimé, la même clé peut être réutilisée pour un autre tableau plus loin sur la page. Tant que cette séquence est observée, il n'est pas nécessaire de définir une clé unique pour chaque tableau.



Utiliser l'extension Loops
Pour des tâches plus complexes, il est possible de faire une boucle sur un tableau en utilisant l'extension.

Cela produirait quelque chose comme :


 * red
 * green
 * blue

Travailler avec
Il y a deux façons de populer un tableau avec des données sémantiques. La première solution, qui utilise les formulaires Semantic Result est plus rapide et plus fiable, elle fonctionne également avec des set de données complexes, y compris les record et les valeurs multiples pour une propriété.

Utiliser
Semantic Result Formats (SRF) présentent le format des résultats sémantiques et introduisent le format Array dans la version 1.6.1. Il peut être utilisé pour consulter les données qui seront automatiquement stockées dans un tableau Extension:Arrays. C'est la solution préférée pour traiter les données sémantiques dans des tableaux. Les détails sont disponibles sur semantic-mediawiki.org.

Exemple :



Utiliser une requête standard
Si vous ne pouvez pas utiliser la solution SRF ci-dessus, Arrays permet également de remplir un tableau en utilisant le résultat d'une requête SMW au format liste :

Exemple A : Pour créer une liste d'instances de la classe Color

Exemple B : Pour créer une liste unique de valeurs pour la propriété has color

Exemple C : Pour traiter les tableaux à deux dimensions générés par les requêtes SWM (par exemple la propriété record-type) given a 2D array "red;#da2021, yellow;#fcff00, green;#00ff00"

1. créer un tableau colors

2. séparez divisez le premier élément de colors dans un autre tableau colors0

Notes :
 * paramètres de requête sémantique
 * L'option  est utilisée pour purger tous les résultats renvoyés par la requête sémantique
 * L'option  est utilisée pour définir le séparateur pour l'entrée des résultats
 * Option  pour couper la colonne de page

Travailler avec
De la même manière que décrit ci-dessus pour SMW, l'extension Arrays peut être utilisée pour stocker les résultats d'une requête DPL. Dans l'[$url exemple], nous montrons comment une liste de résultats peut être inversée. Nous recueillons toutes les valeurs de paramètres utilisées par certaines pages lorsqu'elles incluent un modèle donné. Nous stockons des paires de « valeur des paramètre du modèle » et « nom de page ». Ensuite, on trie le tableau et on imprime les paires. Si les éléments consécutifs d'un tableau ont la même première partie (c'est-à-dire que les valeurs des paramètres sont identiques), celle-ci n'est imprimée qu'une seule fois. Ainsi, nous pouvons construire un indice inversé simple. Le même mécanisme pourrait être appliqué à d'autres problèmes.



Voir aussi

 * - une extension très similaire pour l'utilisation des tables de hachage dans MediaWiki.
 * - comprend plus de cinquante fonctions permettant de travailler avec les tableaux en utilisant la syntaxe PHP.
 * - offre la fonction d'analyse . Étant donné que les entrées et les sorties sont gérées par la même fonction, elle élimine le besoin de définir une clé.
 * - fournit un ensemble de fonctions d'analyse syntaxique applicables sur les tableaux multidimensionnels et associatifs.
 * - Scribunto qui vous permet d'intégrer les scripts Lua dans les pages wiki, fournit des tableaux et un flux de contrôle du langage de programmation immédiat standard.
 * - une alternative compatible avec Parsoid, qui fonctionne également avec des tableaux associatifs multidimensionnels.
 * - une alternative compatible avec Parsoid, qui fonctionne également avec des tableaux associatifs multidimensionnels.