2011-04-16 53 views
0

在下面的脚本中,我对“回声破灭()”得到一个无效的参数错误行:无效的参数错误捕获的破灭()

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

下面是脚本:

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

我怎么可能会返工此搭上无效的参数?

+0

'$ ret'是如何定义的? – BoltClock 2011-04-16 12:52:59

回答

3

初始化$ ret作为数组之前您的foreach循环。

$ret = array(); 
$tags = get_tags(); 
foreach ($tags as $tag){ 
    $ret[]= $tag->name; 
} 
echo implode(', ', $ret); 

然后,如果get_tags()不返回任何东西,$ RET仍然被传递到破灭作为数组(但作为一个空数组),而不是作为一个空

+0

其实它必须在'if($ unlinkTags)'之前初始化。 – 2011-04-16 12:56:24

+0

@Felix,不,缩进只是搞砸了。马克是对的。 – halfdan 2011-04-16 12:57:46

+0

@halfdan:哎呀,对。 NVM :) – 2011-04-16 13:00:02

3

只需添加:$ret = array();你的循环

的那一刻之前,如果有什么你的for循环里面添加$ RET没有定义。

1

对于一个稍微不同的味道,你可以测试它是否是一个阵列:

if (is_array($ret)) echo implode(', ', $ret);