2011-04-16 54 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);