帮助:解析函数/arrayslice
arrayslice
提取数组片段,存入新数组。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
比如有数组 {{#arraydefine:items|a,b,c,d,e,f,g}},可以用 {{#arrayslice:subset|items|1|3}} 提取从位置 1 开始的 3 个元素(b、c、d)到新数组。
通常用于分页显示、数据截取、提取局部元素等场景,如从查询结果中提取前 N 条记录、获取列表的最后几项、跳过开头若干元素等操作。
语法
{{#arrayslice: 新数组名 | 数组名 | 起始位置 | 长度 }}
参数
- 新数组名
- 保存切片结果的数组变量名(区分大小写)
- 数组名
- 要操作的源数组名称
- 起始位置
- 切片开始位置,索引从 0 开始计数
- 支持负数索引:
0表示第一个元素-1表示最后一个元素-2表示倒数第二个元素
- 长度(可选)
- 要提取的元素数量
- 默认值:提取从起始位置到数组末尾的所有元素
- 若设置为负数或超出范围,结果可能为空数组
效果
- 输出:不输出任何字符
- 效果:创建或更新指定名称的新数组,包含从源数组提取的连续元素片段
- 特殊情况:
- 若源数组不存在,创建空的新数组
- 若起始位置无效(非数字),创建空的新数组
- 若长度参数无效(非数字),自动提取到数组末尾
示例
准备数据: {{#arraydefine:x|a,b,c,d,e,f,g}} → a、b、c、d、e、f、g
| 代码 | 效果 | 说明 |
|---|---|---|
{{#arrayslice:y|x|0|2}}
|
a、b | 从位置 0 开始提取 2 个元素 |
{{#arrayslice:y|x|1|3}}
|
b、c、d | 从位置 1 开始提取 3 个元素 |
{{#arrayslice:y|x|2}}
|
c、d、e、f、g | 从位置 2 提取到末尾 |
{{#arrayslice:y|x|-3|2}}
|
e、f | 从倒数第 3 个位置开始提取 2 个元素 |
{{#arrayslice:y|x|-2}}
|
f、g | 提取最后 2 个元素 |
{{#arrayslice:y|x|5|10}}
|
f、g | 长度超出范围,提取到末尾 |
{{#arrayslice:y|notexist|0|3}}
|
源数组不存在,结果为空数组 |
底层代码
处理流程:
- 数组获取:从解析器存储中读取源数组数据(其中,$egArraysCompatibilityMode为False)
- 初始化新数组:预先创建空的目标数组,确保后续操作有基础结构
- 有效性检查:若源数组不存在或起始位置非数字,直接返回(保留空数组)
- 长度参数处理:若长度非数字,设为 null 表示提取到末尾
- 切片操作:调用 PHP 的
array_slice函数执行实际切片,该函数会重新组织数组索引 - 结果存储:将切片结果保存到新数组变量中
- 返回空字符串:函数不产生可见输出
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:装备研发/数据 - 碧蓝航线
- 模板:装备研发上下级 - 碧蓝航线
- 模板:天堂岛日程/卡池 - 坎特伯雷公主与骑士唤醒冠军之剑的奇幻冒险
- 模板:英雄up历史 - 坎特伯雷公主与骑士唤醒冠军之剑的奇幻冒险
- 模板:Ask - 三国杀
- 模板:概念页 - 三国杀
- 模板:画师 - 三国杀
- 模板:关卡导航 - 无期迷途
- 模板:剧情导航 - 无期迷途
- 模板:概念页 - 三国杀OL
- 模板:画师 - 三国杀OL
- 模板:UP勇士历史 - 克鲁赛德战记
- 模板:活动日历 - 克鲁赛德战记
- 模板:模板代码框 - 克鲁赛德战记
- 模板:新首页模板/up勇士 - 克鲁赛德战记

沪公网安备 31011002002714 号