帮助:解析函数/arrayslice
Arrayslice是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
arrayslice
数组切片。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
从指定数组中提取一段连续的元素(切片),存入新数组。
支持正向和反向(负数)索引,可选指定提取长度。
语法
{{#arrayslice: 新数组名 | 数组名 | 起始位置 | 长度 }}
参数:
- 新数组名:保存切片结果的数组。
- 数组名:要操作的目标数组。
- 起始位置:从此位置开始切片,首元素为0。负数为倒数定位(如 -1 指最后一个元素)。
- 长度(可选):要提取的元素数量,默认为后续全部元素。
若数组名不存在或起始位置无效,则创建空的新数组。
示例
创建数组:{{#arraydefine:x|a,b,c,d,e,f,g}}
→ a、b、c、d、e、f、g
{{#arrayslice: y | x | 0 | 2 }}
→ a、b{{#arrayslice: y | x | 1 | 3 }}
→ b、c、d{{#arrayslice: y | x | -3 | 2 }}
→ e、f{{#arrayslice: y | x | 2 }}
→ c、d、e、f、g
底层代码
- 代码逻辑:
- 函数参数包括 $parser(解析器对象)、$arrayId_new(新数组ID)、$arrayId(目标数组ID,默认为 null)、$offset(偏移量,默认为 0)、$length(长度,默认为 null)。
- 如果 $arrayId 为 null,返回空字符串(其中的$egArraysCompatibilityMode为False)。
- 获取目标数组 $array,确保至少存在一个空数组。
- 如果目标数组不存在或者 $offset 不是数字,则返回空字符串。
- 如果 $length 不是数字,则将其设为 null,表示截取到数组末尾。
- 从目标数组中提取指定偏移量和长度的片段(基于 PHP 的 array_slice 函数),并将结果存储到新数组中。
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:装备研发/数据 - 碧蓝航线
- 模板:装备研发上下级 - 碧蓝航线
- 模板:天堂岛日程/卡池 - 坎特伯雷公主与骑士唤醒冠军之剑的奇幻冒险
- 模板:英雄up历史 - 坎特伯雷公主与骑士唤醒冠军之剑的奇幻冒险
- 模板:Ask - 三国杀
- 模板:概念页 - 三国杀
- 模板:画师 - 三国杀
- 模板:关卡导航 - 无期迷途
- 模板:剧情导航 - 无期迷途
- 模板:概念页 - 三国杀OL
- 模板:画师 - 三国杀OL
- 模板:UP勇士历史 - 克鲁赛德战记
- 模板:活动日历 - 克鲁赛德战记
- 模板:模板代码框 - 克鲁赛德战记
- 模板:新首页模板/up勇士 - 克鲁赛德战记