警告:implode()[function.implode]:传递的参数无效

时间:2011-03-12 01:26:29

标签: php error-handling

我收到以下错误...

警告:implode()[function.implode]:在第1335行的\ wp-content / themes / mytheme / functions.php中传递的参数无效

...在

function my_get_tags_sitemap(){
    if ( !function_exists('wp_tag_cloud') || get_option('cb2_noposttags')) return;
    $unlinkTags = get_option('cb2_unlinkTags'); 
    echo '<div class="tags"><h2>Tags</h2>';
    if($unlinkTags)
    {
        $tags = get_tags();
        foreach ($tags as $tag){
            $ret[]= $tag->name;
        }
        //ERROR OCCURS HERE
        echo implode(', ', $ret);
    }
    else
    {
        wp_tag_cloud('separator=, &smallest=11&largest=11');
    }
    echo '</div>';
}

任何想法如何拦截错误。该网站只有一个标签。

4 个答案:

答案 0 :(得分:45)

您收到错误是因为$ret不是数组。

要消除错误,请在功能开始时使用以下行定义:$ret = array();

似乎get_tags()调用没有返回任何内容,因此foreach没有运行,这意味着$ ret未定义。

答案 1 :(得分:33)

你可以尝试

echo implode(', ', (array)$ret);

答案 2 :(得分:2)

$ret尚未定义时,会发生这种情况。解决方案很简单。在$tags = get_tags();之上,添加以下行:

$ret = array();

答案 3 :(得分:-1)

function my_get_tags_sitemap(){
    if ( !function_exists('wp_tag_cloud') || get_option('cb2_noposttags')) return;
    $unlinkTags = get_option('cb2_unlinkTags'); 
    echo '<div class="tags"><h2>Tags</h2>';
    $ret = []; // here you need to add array which you call inside implode function
    if($unlinkTags)
    {
        $tags = get_tags();
        foreach ($tags as $tag){
            $ret[]= $tag->name;
        }
        //ERROR OCCURS HERE
        echo implode(', ', $ret);
    }
    else
    {
        wp_tag_cloud('separator=, &smallest=11&largest=11');
    }
    echo '</div>';
}