社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103

全站通知:

帮助:解析函数/arraymerge

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

Arraymerge是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。

arraymerge

合并数组。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

语法

{{#arraymerge: 新数组 | 数组1 | 数组2 | ... | 数组n }}

合并数组1数组2……数组n,到新数组中。

示例

先定义数组abc:

  • a: {{#arraydefine:a|orange}}
  • b: {{#arraydefine:b|red, red}}
  • c: {{#arraydefine:c|blue, blue}}

则:

  • {{#arraymerge:x|a|b}}x = orange、red、red
  • {{#arraymerge:x|a|c}}x = orange、blue、blue
  • {{#arraymerge:x|a|b|c}}x = orange、red、red、blue、blue

底层代码

/** mediawiki-extensions-Arrays-REL1_37 ExtArrays.php
 * Merge values two arrayes identified by arrayid1 and arrayid2 into a new array identified by arrayid_new.
 * This merge differs from array_merge of php because it merges values.
 *
 * Usage:
 *    {{#arraymerge:arrayid_new |array1 |array2 |... |array n}}
 *    See: http://www.php.net/manual/en/function.array-merge.php
 */
public static function pfObj_arraymerge( &$parser, $frame, $args ) {
	self::get( $parser )->multiArrayOperation( $frame, $args, __FUNCTION__, false );
	return '';
}

private function multi_arraymerge( $array1, $array2 ) {
	// keys will not be re-organized
	return array_merge( $array1, $array2 );
}

代码逻辑简述

其中的multiArrayOperation,会从第一个数组(array_1)开始,对其他所有数组逐一执行 multi_arraymerge( array_1, array_i )。也就是,将第一个数组与其他数组逐一合并;
合并数组的核心函数是 PHP 的array_merge 函数。

实际用例

一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考