社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544
帮助:解析函数/arraydefine
定义临时存储数据的数组,以便后续使用。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
此函数需要输入数据字符串和分隔符,用分隔符切分字符串来构造数组。当然,数据字符串可以是固定值,也可以来自模板或SMW查询结果。
基于数组,用户能便捷的构造表格、列表和图鉴等各类重复性结构。
- 格式
{{#arraydefine: 数组名 | 数据字符串 }}
{{#arraydefine: 数组名 | 数据字符串 | 分隔符 }}
- 分隔符:默认逗号“,”,支持正则表达式。
{{#arraydefine: 数组名 | 数据字符串 | 分隔符 | 选项 }}
- 选项 (可选) 是一个匿名字符串参数,支持unique、sort、print。
- 多个选项参数以英文逗号分隔,即“键=值, 键=值”,例如:“sort=desc, print=list”、“unique, print=list”
- unique:去重
- sort:排序,支持 none(默认),desc,asce/asc,random,reverse
- none - 不排序(默认)
- desc - 降序(参见 https://php.net/function.sort )
- asce/asc - 升序(参见 https://php.net/function.rsort )
- random - 随机(参见 https://php.net/function.array-rand )
- reverse - 倒序(参见 https://php.net/function.array-reverse )
- print 输出格式: list 或 pretty
- list: a、b、c
- pretty: a、c和c
- 例子
{{#arraydefine:a|red}}
→ 定义数组a,只有1个元素:red{{#arraydefine:b|orange,red ,yellow, yellow}}
→ 定义数组b,有4个元素(分隔符没有指定,默认为逗号):orange、red、yellow、yellow{{#arraydefine:c}}
→ 定义空数组c:{{#arraydefine:d|apple, pear; orange|/\s*[;,]\s*/}}
→ 定义数组d,分隔符是正则表达式。d有3个元素:apple、pear、orange{{#arraydefine:e|orange,red ,yellow, yellow|,|unique,sort=desc, print=list}}
→ 定义数组e,以“,”为分隔符,数组元素去重,降序排列,并作为列表输出:yellow、red、orange
- 代码
- 代码虽长,但行为简单。
- 用分隔符(delimiter)分割数据字符串(value)。如分隔符为空则不分割,数组将只包含一个元素。
- 如有选项 unique,去重
- 如有选项 sort,按指定方式排序
- 如有选项 print,按指定格式输出
- 存储。按照指定数组名(忽略头尾空格)存储数组到变量中
- 还支持选项singleempty。当数组仅有一个值,且为空字符串时,此选项能保留它(否则空字符串将被过滤,仅保留空数组)