【问题标题】:Uncaught ArgumentCountError: array_merge() does not accept unknown named parameters未捕获的 ArgumentCountError:array_merge() 不接受未知的命名参数
【发布时间】:2021-10-03 10:46:48
【问题描述】:

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

致命错误:未捕获的 ArgumentCountError:array_merge() 没有 接受未知的命名参数 D:\xampp\htdocs\wordpress\wp-includes\widgets.php:1261 堆栈跟踪:#0 D:\xampp\htdocs\wordpress\wp-includes\widgets.php(1261): array_merge(wp_inactive_widgets:数组,sidebar-1:数组,sidebar-2: 数组,侧边栏 3:数组)#1 D:\xampp\htdocs\wordpress\wp-includes\widgets.php(1216): 检索小部件(真)#2 D:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(289): _wp_sidebars_changed('二十二十') #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...', '二十二十', 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} 抛出 D:\xampp\htdocs\wordpress\wp-includes\widgets.php 在第 1261 行

【问题讨论】:

    标签: php wordpress error-handling php-8


    【解决方案1】:

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

    对于以这种方式来寻找为什么在他们的代码中引发此错误的答案的任何其他人,该错误与 PHP 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来剥离key:

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

    【讨论】:

      猜你喜欢
      • 2023-01-07
      • 2021-02-08
      • 1970-01-01
      • 2015-10-31
      • 2014-11-26
      • 2017-07-21
      • 2020-12-06
      • 2016-12-12
      • 1970-01-01
      相关资源
      最近更新 更多