社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544
帮助:解析函数/arrayintersect
arrayintersect 是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
arrayintersect
计算多个数组的交集。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
两个集合 [math]\displaystyle{ A }[/math]、[math]\displaystyle{ B }[/math] 的交集,指 [math]\displaystyle{ x \in A }[/math] 且 [math]\displaystyle{ x \in B }[/math],下文记为 [math]\displaystyle{ A ∩ B }[/math]。
结果数组可能包含重复值,其元素顺序与第一个数组相同;从结果看,可以视为从第一个集合中移除所有其他集合都不存在的元素。
语法
{{#arrayintersect:新数组名 | 数组1 |数组2 |... |数组n }}
此函数将计算 数组1 ∩ 数组2 ∩ ... ∩ 数组n
,并将结果存入数组 新数组名
。
示例
- 有数组a:
{{#arraydefine:a|orange, orange, red, blue}}
- 有数组b:
{{#arraydefine:b|red, red, red, red, orange, yellow, yellow}}
- 有数组c:
{{#arraydefine:c|blue, red}}
- a ∩ b :
{{#arrayintersect:x|a|b}}{{#arrayprint:x}}
→orange、orange、red
- b ∩ a :
{{#arrayintersect:y|b|a}}{{#arrayprint:y}}
→red、red、red、red、orange
- a ∩ b ∩ c :
{{#arrayintersect:z|a|b|c}}{{#arrayprint:z}}
→red
底层代码
- 其中的
multiArrayOperation
,会从第一个数组(array_1)开始,对其他所有数组逐一执行multi_arrayintersect( array_1, array_i )
。也就是,将第一个数组与其他数组逐一计算交集; - 求交集的核心函数是 PHP 的array_intersect 函数。其比较两个元素是否相同的标准是:
(string) $elem1 === (string) $elem2
,即对PHP语言的字符串转换表达相同。
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。