0

我在完成网站后尝试上网但出现错误警告:内爆():第674行的functions.php中传递的参数无效

foreach ( $one_array_font as $font => $variants ) {
    $font = str_replace(' ', '+', $font);
    $variants = implode(',', array_values($variants['variant']) );
    $all_final_fonts[] = $font.':'.$variants;
}

$gfont = implode('|', $all_final_fonts); /* <-- This line fails */

wp_enqueue_style( 'zn_all_g_fonts', '//fonts.googleapis.com/css?family='.$gfont.''.$subset);

if ( $data['zn_main_style'] == 'dark' ) {
    wp_enqueue_style('zn-dark-style', get_template_directory_uri() . '/css/dark-theme.css',array() ,false,'all');
}

if ( !empty ( $data['g_fonts_subset'] ) ) {
   $subset = '&subset='.str_replace( ' ' , '' , $data['g_fonts_subset']);
}
4

2 回答 2

2

问题中没有足够的信息,但这是我认为正在发生的事情:

  • 首先,$one_array_font是空的。

  • 这意味着foreach()循环永远不会运行。

  • 这意味着该行$all_final_fonts[] = $font.':'.$variants;永远不会运行。

  • 我猜这$all_final_fonts之前没有定义。因此,当代码到达implode.

  • 失败是implode()因为它要求输入字段是一个数组,但是你给了它一个未定义的变量。

解决方案

通过在循环$all_final_fonts之前添加以下行来确保无论如何都已定义:foreach()

$all_final_fonts = array();

这会将变量初始化为数组,因此implode()如果您没有任何数据,就不会抱怨它。

希望有帮助。

于 2013-05-16T16:29:17.077 回答
0

您看到该警告是因为 $all_final_fonts 不是数组。

http://php.net/manual/en/function.implode.php

问候

于 2013-05-16T16:18:29.993 回答