Extension:Arrays/ja

Arrays拡張機能(以前はArrayExtensionとして知られていた)は、配列を操作する追加のパーサ関数のセットを作成します.

関数
この拡張機能は以下のパーサー関数を定義します:

arraydefine
この関数は、'delimiter' で区切られた 'values' のリストを用いて、'key' で識別される配列を構築する. この変数は、後で他の関数からアクセスすることができます.

構文:

注記:
 * valuesはdelimiterで区切られた文字列のリストである.
 * 結果として得られる配列は、文字列の配列となります.
 * The default delimiter is ',' if not specified, a delimiter can be a string (the white-spaces surrounding delimiter will be trimmed) or a Perl regular expression, e.g.  (see preg_split).
 * ユーザーは空の配列を定義することができます（例参照）.
 * ユーザーは、ユニーク、ソート、プリントなどのオプションを指定することができます（例参照）.
 * オプションはデリミタも指定されない限り無視される.

例:

arrayprint
この関数は、配列の値をカスタマイズ可能なフォーマットで表示します.

構文:

注記:
 * subject は、wiki のリンク、テンプレート、パーサー関数を受け付けます.
 * subjectの中では、パイプ文字' 'をエスケープする必要はありません. 全体の構成の中で、patternは検索され、各ループの現在の（エスケープされた）配列の値に置き換えられます.  最後に、文字列全体が解析され、delimiterをセパレータとして暗算された結果の配列に入れられる.
 * 表示すべき配列が存在しない場合、空文字列を返します (1.4 alpha で導入された、互換モードの一部).
 * The default delimiter is language dependent, for English it is ' ' (Introduced in 2.0, part of compatibility mode).

例:

arrayindex
この関数は、配列（keyで識別）の値を位置 index に表示します.

構文:

注記:
 * 無効なインデックス（非数値、境界外）は、空文字列を表示します.
 * インデックスは0ベース、つまり最初の要素のインデックスは0である.
 * 負のインデックスは、末尾から遠い要素を返します（例えば、 は配列の最後の要素になります）.
 * 配列が存在しない場合、配列内にキーが存在しない場合、 値が空文字列の場合は default が返されます.

例:

arraysize
この関数は、配列のサイズ（要素数）を返します.

https://php.net/function.count を参照 与えられた配列が存在しない場合、この関数の出力は数値ではなく空文字列になります. これにより、配列が存在するかどうかを確認することができます.

構文:

例:

arraysearch
This function returns the index of the first occurrence of the 'value' in the array (identified by 'key') starting from the position identified by 'index' parameter, and returns an empty string when failed. When yes and/or no specified, this will expand the value set to yes if found, value of no otherwise. https://php.net/function.array-search を参照

構文:

例:

arraysearcharray
This function searches an array (identified by key) and creates a new array (identified by new_key) from the search with all the results. 検索条件valueには、文字列または正規表現を指定することができる. If index is given the search will start there, limit can define the maximum search results. value が正規表現である場合、transform で識別されるパラメータを使用することができる. It can transform the result of the matched entries into the new_key array like PHP preg_replace would do it.

構文:

注記:
 * If value is a string, the new_key array will only contain entries of exact this string.
 * のような負の index 値は、最後の n 項目のみを検索するために使用することができます.
 * If is available within the wiki, Regex Fun's e modifier can be used within the regex. This has nothing to do with PHPs e modifier (which would be a security breach). With active e modifier the transform string will be parsed after back-refs are inserted, after that it will replace the actual match.

例:

arrayslice
This function extracts a sub-array from an array (identified by 'key') into a new array (identified by 'new_key').

https://php.net/function.array-slice を参照 構文:

注記:
 * 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). オフセットがインデックスと異なる（非負の数値でなければならない）.
 * Lengthは抽出する要素の数を示す. 省略した場合は、offset から配列の最後までを持つことになる.
 * offset が配列のサイズより小さくない場合は空の配列が返され、offset が配列の負のサイズより大きくない場合は、すべての要素を含む新しい配列が返されます.

例:

変更点
新しい配列を作成する代わりに、配列を直接変更する関数です.

arrayunique
この関数は、配列 (キーで識別) を集合 (重複しない、空要素なし) に変換します.

https://php.net/function.array-unique を参照 構文:

例:

arrayreset
この関数は、定義された配列の一部または全部を解除する. 構文:

注記:
 * これらにarraysizeを使うと、 の代わりに空の文字列が返されるので、実際には空ではなく未設定です. 配列を単純に空にするには、  を使用します.
 * バージョン 1.4 より前のアルファベット ' ' は、設定されていないはずの複数の配列を区切るために使用されます.

arraysort
この関数は、配列を次の順序でソートする. Syntax:
 * - 並べ替えなし（デフォルト）
 * - 降順に表示（https://php.net/function.sort参照）
 * / - 昇順に表示（https://php.net/function.rsort参照）
 * - 順不同で表示（https://php.net/function.array-rand参照）
 * - 逆順に表示（https://php.net/function.array-reverse参照）

注:
 * 配列の各要素は文字列として扱われるため、数値が期待通りに並ばない可能性があります.

例:

相互作用
複数の配列を処理し、結果として新しい配列を作成したり、既存の配列を上書きしたりする関数です. バージョン2.0以降、これらの関数は一度に2つ以上の配列を扱うことができるようになりました. 1つの配列しか扱わない場合は、その配列のコピーを作成するだけです. 存在しない配列は、これらの関数では単に無視されます.

arraymerge
この関数は、2つ以上の配列の値を新しい配列（new_keyで識別）に結合します.

https://php.net/function.array-merge を参照 構文:

例:

arrayunion
この関数は、2つ以上の配列の値を、重複のない新しい配列（new_key で識別）にマージします. 構文:

注記:
 * これは集合演算子であり、返される配列は重複した値を持たない集合である.
 * これは、arraymergeをarrayuniqueで後払いするのと同じことです.

例:

arraydiff
この関数は，2つ以上の配列の（集合論的）差を計算する. 結果配列はnew_keyで識別される. 返される配列は、最初に指定された配列（key1 で識別）の要素で、他のどの配列にも定義されていないものを含む集合である. https://php.net/function.array-diff を参照

構文:

注:
 * これは集合演算子であり、返される配列は重複する値を含まない集合となります.
 * この関数は、サブクラス関係をテストするために使用することができます.

例:

arrayintersect
この関数は，2つ以上の配列の集合論的な交点を計算する. 結果配列はnew_keyで識別される. https://php.net/function.array-intersect を参照

構文:

注:
 * これは集合演算子であり、返される配列は重複した値を持たない集合である.

例:

設定
Arrays2.0では、2つの設定変数が導入されています.


 * $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. これは、Version 2.0において、いくつかの破壊的な変更が導入されたためです. そのため、この互換モードを使用することで、1.xから2.xのArraysエクステンションへの切り替えがスムーズに行えます.  デフォルトでは、互換モードは非アクティブです.  For a list which changes are effected by this, see Extension:Arrays/Pre 2.0 Documentation#Differences compared to Arrays 2.0. もし、以前にあなたのwiki内で古いArrayExtensionを使用していたならば、互換性モードなしでArraysに切り替える前に、そのリストを見て、テンプレートを調整した方がいいかもしれません.


 * $egArraysExpansionEscapeTemplates
 * テンプレートまたはパーサーの関数呼び出しによって、 に含まれる配列値内で置換されるべき文字のキーと値のペアのリストが含まれています. これらの特殊文字を置換してから値を展開することで、配列の値が周囲のMWコードに影響を与えることがなくなります.  そうでなければ、配列の値自体も解析されてしまいます. デフォルトでは、これは以下のテンプレートやパーサーの関数呼び出しで、以下の文字をエスケープします.
 * =  ("Template:=" は ' ' と表示されるはずです)
 * =  ("Template:!" は ' ' と表示されるはずです)
 * MW 1.24.0から、"Template:!"は新しいマジックワードである で目的を果たすため、作成する必要がなくなりました.
 * =  ("Template:((" は ' ' と表示されるはずです)
 * =  ("Template:))" は ' ' と表示されるはずです)
 * これらのテンプレートやパーサー関数があなたのwikiに存在することを確認するか、この変数を適宜変更してください. この設定を誤ると、配列の値でこれらの文字列を使用している場合、 が予期しない値を表示することがあります.
 * $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 . 互換モードが有効な場合は、常にnullに設定されているものとして扱われます.

配列要素への繰り返しアクセス
配列の要素にやを用いて繰り返しアクセスすることが可能である.

arrayprintを使用
以下は、期待される出力です. More examples can be found at the former Tetherless World Wiki.

キーの再利用
一度定義した配列をプリントすれば、同じキーをさらに下の階層の配列に再利用することができます. この順序を守る限り、すべてのアレイに一意のキーを定義する必要はありません.

ループ拡張機能の使用
より複雑なタスクのために、拡張機能を使って配列の中をループすることが可能である.

次のようなものを出力します：


 * red
 * green
 * blue

との連携
配列にセマンティックデータを入力する方法は2つあります. 最初のソリューションであるセマンティックリザルトフォーマットは、より高速で信頼性が高く、レコードデータや1つのプロパティに対する複数の値を含む複雑なデータセットにも対応しています.

を使用
Semantic Result Formats (SRF) は、バージョン 1.6.1 で Array フォーマットを導入しました. これは、自動的に Extension:Arrays 配列に格納されるデータを問い合わせるために使用することができます. これは、配列内のセマンティックデータを扱うのに好ましいソリューションです. 詳細はsemantic-mediawiki.orgで確認できます.

例:

標準クエリの使用
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:

例 A: クラス 'Color' のインスタンスのリストを作成するには

例 B: プロパティ 'has color' の値の一意なリストを作成するには

例 C: SWMクエリで生成される2次元配列（レコード型プロパティなど）に対応するため given a 2D array "red;#da2021, yellow;#fcff00, green;#00ff00"

1. 配列 'colors'を作成する

2. 'colors' の最初の要素を別の配列 'colors0' に分割する.

注記:
 * セマンティッククエリパラメータ
 * オプションは、セマンティッククエリの返された結果をすべて使い切るために使用されます.
 * オプションは、結果のエントリのセパレータを設定するために使用されます.
 * ページカラムを切り取る オプション

との連携
In a similar way as described above for SMW the Arrays extension can be used to store results of a DPL query. In the example, we show how a result list can be inverted. 特定のページが特定のテンプレートを含むときに使用されるすべてのパラメータ値を収集します. We store pairs of template parameter value and pagename. そして、配列をソートしてペアを表示します. 連続した配列要素の最初の部分が同じ（つまりパラメータ値が同じ）場合、最初の部分は一度だけ表示されます. このように、単純な転置インデックスを構成することができる. 同じ仕組みは、他の問題にも応用できるはずだ.

関連項目

 * - MediaWikiでハッシュテーブルを使用するための非常によく似た拡張機能です.
 * - PHP の構文を使って配列を操作するための 50 以上の関数が含まれています.
 * - パーサーの関数を提供します. 入力と出力が同じ関数で処理されるため、キーを定義する必要がなくなります.
 * - 多次元配列や連想配列を操作するためのパーサ関数群を提供します.
 * - Scribuntoは、WikipageにLuaスクリプトを埋め込むことができ、配列と標準的な命令型プログラミング言語の制御フローを提供します.
 * - Scribuntoは、WikipageにLuaスクリプトを埋め込むことができ、配列と標準的な命令型プログラミング言語の制御フローを提供します.