未捕获的 ArgumentCountError:array_merge() 不接受未知的命名参数

2023-12-22

当我尝试安装任何主题到 WordPress 时出现此错误,我该怎么办?

Fatal error: Uncaught ArgumentCountError: array_merge() does not
accept unknown named parameters in
D:\xampp\htdocs\wordpress\wp-includes\widgets.php:1261

Stack trace:
#0
D:\xampp\htdocs\wordpress\wp-includes\widgets.php(1261):
array_merge(wp_inactive_widgets: Array, sidebar-1: Array, sidebar-2:
Array, sidebar-3: Array)
#1
D:\xampp\htdocs\wordpress\wp-includes\widgets.php(1216):
retrieve_widgets(true)
#2
D:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(289):
_wp_sidebars_changed('Twenty Twenty')
#3 D:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(311):
WP_Hook->apply_filters(NULL, Array)
#4
D:\xampp\htdocs\wordpress\wp-includes\plugin.php(478):
WP_Hook->do_action(Array)
#5
D:\xampp\htdocs\wordpress\wp-includes\theme.php(2974):
do_action('after_switch_th...', 'Twenty Twenty', Object(WP_Theme))
#6
D:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(287):
check_theme_switched('')
#7
D:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(311):
WP_Hook->apply_filters(NULL, Array)
#8
D:\xampp\htdocs\wordpress\wp-includes\plugin.php(478):
WP_Hook->do_action(Array)
#9
D:\xampp\htdocs\wordpress\wp-settings.php(540): do_action('init')
#10
D:\xampp\htdocs\wordpress\wp-config.php(90):
require_once('D:\\xampp\\htdocs...')
#11
D:\xampp\htdocs\wordpress\wp-load.php(37):
require_once('D:\\xampp\\htdocs...')
#12
D:\xampp\htdocs\wordpress\wp-blog-header.php(13):
require_once('D:\\xampp\\htdocs...')
#13
D:\xampp\htdocs\wordpress\index.php(17):
require('D:\\xampp\\htdocs...')
#14 {main} thrown in
D:\xampp\htdocs\wordpress\wp-includes\widgets.php on line 1261

Answer recommended by PHP /collectives/php Collective

这是一个问得不好的问题,因为您没有提供有关所显示错误消息的上下文。鉴于错误似乎来自 WordPress 代码内部,我猜测您无法直接控制触发此错误的底层函数调用。我最好的猜测是您正在部署 PHP 8.0+ 的系统上运行旧版本的 WordPress(请参阅下面的说明)。升级 WordPress 或降级到 PHP 7.4。

对于以这种方式寻找代码中为何抛出此错误的答案的任何其他人来说,该错误与 PHP 8.0 的一个名为“的新功能”有关。命名参数 https://php.watch/versions/8.0/named-parameters'。如果是array_merge,如果您使用字符串键控数组按以下方式调用它,则可能会引发错误:

call_user_func_array('array_merge', [
    'key1'=>['abc', 'def'], 
    'key2'=>['ghi', 'jkl']
]);

-> Error

这是因为call_user_func_array将把顶级数组键解释为要传递到的参数名称array_merge,并且这些键将与函数参数不匹配。

这里的解决方案是使用array_values首先剥去钥匙:

call_user_func_array('array_merge', array_values([
    'key1'=>['abc', 'def'], 
    'key2'=>['ghi', 'jkl']
]));

-> ['abc','def','ghi','jkl']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未捕获的 ArgumentCountError:array_merge() 不接受未知的命名参数 的相关文章

随机推荐