警告:implode():在第674行的functions.php中传递的参数无效

时间:2013-05-16 16:13:42

标签: php invalid-argument

我试图在完成网站后上线,但发生了错误 警告:implode():在第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']);
}

2 个答案:

答案 0 :(得分:2)

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

  • 首先,$one_array_font为空。

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

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

  • 我猜测$all_final_fonts之前没有定义过。因此,当代码到达implode时,它仍然是未定义的。

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

<强>解决方案

通过在$all_final_fonts循环之前添加以下行,确保定义foreach()

$all_final_fonts = array();

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

希望有所帮助。

答案 1 :(得分:0)

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

请参阅http://php.net/manual/en/function.implode.php

问候