帮助:解析函数/arrayindex
arrayindex
输出数组中指定位置的元素值。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
从已定义的数组中,根据指定序号返回对应的元素值。比如数组 {{#arraydefine:fruits|apple,banana,cherry}} 定义后,用 {{#arrayindex:fruits|1}} 可以获取第2个元素 banana。
通常用于从批量数据中提取特定位置的值,如获取查询结果的首尾元素、根据条件动态选择数组中的某项、在模板中按索引访问参数列表等场景。
语法
{{#arrayindex: 数组名 | 序号 | 默认值 }}
参数
- 数组名
- 已通过 #arraydefine 定义的数组名称(区分大小写)
- 序号
- 从 0 开始计数的整数索引
- 支持负数索引:
-1表示最后一个元素-2表示倒数第二个元素,以此类推
- 默认值(可选)
- 当数组或索引无效时返回的值,默认为空字符串
- 无效情况包括:
- 数组名不存在(未定义或拼写错误)
- 序号非数字
- 序号越界(超出数组实际范围)
效果
- 输出:返回数组中指定位置的元素值;若无效则返回默认值
- 效果:仅读取数组内容,不修改数组状态
示例
定义数组:{{#arraydefine:weapons|apple,banana,cherry}}
| 代码 | 效果 |
|---|---|
{{#arrayindex:weapons|0}}
|
第1个元素:apple |
{{#arrayindex:weapons|1}}
|
第2个元素:banana |
{{#arrayindex:weapons|-1}}
|
最后一个元素:cherry |
{{#arrayindex:weapons|5|未找到}}
|
越界返回默认值:未找到 |
{{#arrayindex:noexist|0|数组不存在}}
|
数组不存在:数组不存在 |
使用场景
适用于需要精确访问数组特定位置的场景:
提取首尾元素:获取查询结果的第一条或最后一条记录,如最新文章、最早创建的页面。
条件选择:根据某个变量的值(如模板参数、计数器)动态选择数组中对应位置的内容,实现类似 switch-case 的效果。
遍历辅助:配合循环结构(如 #while)通过递增索引逐个访问数组元素,处理复杂的数据转换逻辑。
安全取值:通过设置默认值,避免因索引越界导致的空白输出,提高模板的健壮性。
相比直接硬编码位置值,使用 arrayindex 可以:
- 动态处理不确定长度的数据源
- 灵活应对负数索引需求
- 统一处理边界情况
边缘示例
| 代码 | 效果 | 说明 |
|---|---|---|
{{#arraydefine:empty}}{{#arrayindex:empty|0|空}}
|
空 | 空数组访问返回默认值 |
{{#arrayindex:weapons|abc|错误}}
|
错误 | 非数字索引返回默认值 |
{{#arrayindex:weapons|-10|越界}}
|
越界 | 负数越界返回默认值 |
底层代码
处理流程:
- 参数展开和验证
- 数组查询:调用
getArrayValue方法尝试获取指定位置的值 - 索引处理:支持负数索引,自动转换为从数组末尾计数的正数索引
- 边界检查:验证数组是否存在、索引是否有效、键是否在数组中
- 返回结果:若查询成功返回元素值,否则返回默认值
其中$egArraysCompatibilityMode始终为 False;
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:快速数量 - 突击莉莉终结之弹
- 模板:单明星语音 - 零号任务
- 模板:加工建筑 - 冲呀!饼干人王国
- 模板:饼干列表 - 冲呀!饼干人王国
- 模板:BOSS模板 - 克鲁赛德战记
- 秘闻 - Deemo II
- 模板:公式 - 戴森球计划
- 模板:制造公式 - 戴森球计划
- 模板:文章时效 - 戴森球计划
- 模板:物品 - 戴森球计划
- 模板:相关公式 - 戴森球计划

沪公网安备 31011002002714 号