社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544

全站通知:

帮助:解析函数/arrayintersect

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

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]

结果数组可能包含重复值,其元素顺序与第一个数组相同;从结果看,可以视为从第一个集合中移除所有其他集合都不存在的元素。

格式
{{#arrayintersect:新数组名 | 数组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语言的字符串转换表达相同。
实际用例
BWIKI中实际应用它的页面。这个静态列表可能在下列页面更改后过时