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 est dépendant 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,  serait 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 :
 * Offset indicates starting point of slice, it can be non-negative number or negative number for backwards index (e.g. the last element of the array's offset is -1). Offset is different from index (which must be non-negative number)
 * 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
This function converts an array (identified by 'key') into a set (no duplicated members, no empty element).

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

Exemple :

arrayreset
This function will unset some or all defined arrays. Syntaxe :

Notes :
 * Using arraysize on them will return an empty string instead of, so they are really unset, not empty. To simply empty an array one can use.
 * Prior to version 1.4 alpha ' ' is used to separate several arrays which should be unset.

arraysort
This function sorts an array in the following order. Syntax:
 * - 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)

Note :
 * Each array element is being treated as a string, this means numbers might not be ordered as expected.

Exemple :

Interaction
Fonctions qui fonctionnent avec plus d'un tableau, 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. S'ils ne traitent qu'un seul tableau, ils créent simplement une copie de ce tableau. Toutes les tableaux non existants seront simplement ignorées 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 in 1.4 alpha) Set to true, this will activate the compatibility mode which will bring back the behavior of the old ArrayExtension 1.3.2 as far as possible. This is because in Version 2.0 several breaking changes have been introduced. So using this compatibility mode allows a smooth switch from 1.x to 2.x Arrays extension. Par défaut, le mode de compatibilité n'est pas activé. For a list which changes are effected by this, see Extension:Arrays/Pre 2.0 Documentation#Differences compared to Arrays 2.0. If you have been using the old ArrayExtension within your wiki before, you might want to take a look at that list and adjust your templates before switching to Arrays without compatibility mode.


 * $egArraysExpansionEscapeTemplates
 * Contains a key-value pair list of characters that should be replaced by a template or parser function call within array values included into an . By replacing these special characters before including the values into the string which is being expanded afterwards, array values can't distract the surrounding MW code. Otherwise the array values themselves would be parsed as well. By default this will escape the following characters with the following template or parser function calls:
 * =  ( "Template:=" should print ' ' )
 * =  ( "Template:!" should print ' ' )
 * Starting with MW 1.24.0 it is no longer necessary to create "Template:!" since its purpose is served by the new  magic word.
 * =  ( "Template:((" should print ' ' )
 * =  ( "Template:))" should print ' ' )
 * Make sure these templates or parser functions exist within your wiki or change this variable accordingly. If this is not set up properly,  might print unexpected values in case on of these character sequences is being used within array values.
 * $egArraysExpansionEscapeTemplates also can simply be set to null, in this case it switches back to pre 2.0 behavior where array values with these character sequences did break the given subject code within . If the compatibility mode is active, this will always be treated as set to null.

Questions fréquentes


Réitérer l'accès aux éléments d'un tableau
It is possible to iteratively access elements of an array using or. 

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) introduces the Array format in version 1.6.1. It can be used to query data which will automatically be stored within an Extension:Arrays array. This is the preferred solution dealing with semantic data in arrays. Details can be found on the semantic-mediawiki.org.

Exemple :



Utiliser une requête standard
If you can't use the SRF solution above, Arrays also allows to populate an array using a SMW query result of the list format:

Exemple A : To create a list of instances of the class 'Color'

Exemple B : To create a unique list of values of property 'has color'

Exemple C : To deal with 2D array generated by SWM query (e.g. record-type property) given a 2D array "red;#da2021, yellow;#fcff00, green;#00ff00"

1. create an array 'colors'

2. split the first element of 'colors' into another array 'colors0'

Notes :
 * semantic query parameters
 * option is used to exhaust all returned results of the semantic query
 * option is used to set the separator for entries of the results
 * option to cut off the page column



Travailler avec
In a similar way as described above for SMW the Arrays extension can be used to store results of a DPL query. Dans l'exemple, nous montrons comment une liste de résultats peut être inversée. We collect all parameter values which are used by certain pages when they include a given template. Nous stockons des paires de « valeur des paramètre du modèle » et « nom de page ». Then we sort the array and print the pairs. If consecutive array elements have the same first part (i.e. the parameter values are identical), the first part is only printed once. Thus we can construct a simple inverted index. The same mechanism could be applied to other problems as well.



Voir aussi

 * - une extension très similaire pour l'utilisation des tables de hachage dans MediaWiki.
 * - includes more than fifty functions for working with arrays using the PHP syntax.
 * - 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.
 * - a Parsoid-compatible alternative, that also works with multidimensional and associative arrays.
 * - a Parsoid-compatible alternative, that also works with multidimensional and associative arrays.