2011-03-21 65 views
0

空給我用了我的WordPress網站下面的代碼使用RSS來顯示從我的帳戶最新的YouTube視頻:警告:array_slice()預計參數1是陣列,在

<?php 
include_once(ABSPATH.WPINC.'/rss.php'); // path to include script 
$feed = fetch_rss('http://gdata.youtube.com/feeds/api/users/UrbanGAME/uploads'); // specify feed url 
$items = array_slice($feed->items, 0, 1); // specify first and last item 
?> 

<?php if (!empty($items)) : ?> 
<?php foreach ($items as $item) : ?> 

<object width="96%"><param name="movie" value="<?php echo str_replace("watch?v=","v/", $item['link']); ?>&hl=en_GB&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="<?php echo str_replace("watch?v=","v/", $item['link']); ?>&hl=en_GB&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="96%"></embed></object> 

<?php endforeach; ?> 
<?php endif; ?> 

它的工作原理。但是,有些時候我得到這個錯誤,當它不工作:

Warning: array_slice() expects parameter 1 to be array, null given in /wp-content/themes/theme1/header.php on line 173. 

而且我用上面的代碼兩次,對網站上的2個點的2個不同的賬戶。一個在我的header.php文件中,另一個在我的footer.php文件中。當其中一個工作時,另一個不工作,當然我也會得到另一個錯誤/警告,只是指向該文件和另一行。我試圖搞亂代碼,但仍然沒有。問題可能與我的代碼中的某些內容有關嗎?

附加信息:

PHP 5.3.2

主持人:瘋狂的域(http://www.crazydomains.com.au/

阿帕奇:2.2.15

+0

顯然無論發生什麼都在'fetch_rss'內。你應該給這個代碼。 – Jon 2011-03-21 00:06:38

+0

可能的重複[Warning:mysql_fetch_ *期望參數1是資源,布爾給定錯誤](http://stackoverflow.com/questions/11674312/warning-mysql-fetch-expects-parameter-1-to-be-resource -boolean-given-error) – 2012-07-28 16:39:34

回答

1

它可能無法正常工作的原因是因爲$feed->items可能不是陣列(基於fetch_rss調用)。

要檢查,如果事情是一個數組,你可以這樣做:

is_array($feed->items); //返回true或false

如果它是一個數組,你可以調用array_slice()

更好的解決方案。然而,是檢查$feed變量以確保它在處理之前返回了您要查找的內容。

+0

這將治癒症狀,而不是疾病。 – Jon 2011-03-21 00:12:51

+0

添加了更好的解決方案。 – 2011-03-21 00:36:40

+1

'$ fetch'你的意思是'$ feed'? – 2011-03-21 00:53:12

0

看起來像$feed->items可能是也可能不是數組。這一切都取決於如何$feed得到分配,這取決於發生什麼fetch_rss

雖然有點傾斜你的問題,看起來你有一些多餘的代碼。你做切片單獨獲得數組的第一個元素,然後你只用一個元素迭代一個列表?相反,您可以簡單地在第一個元素上執行任何您喜歡的操作

<?php 
include_once(ABSPATH.WPINC.'/rss.php'); // path to include script 
$feed = fetch_rss('http://gdata.youtube.com/feeds/api/users/UrbanGAME/uploads'); // specify feed url 
$firstItem = exists($feed->items[0]) ? $feed->items[0] : null; 
?> 

<?php if ($firstItem) : ?> 
<object width="96%"><param name="movie" value="<?php echo str_replace("watch?v=","v/", $item['link']); ?>&hl=en_GB&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="<?php echo str_replace("watch?v=","v/", $firstItem['link']); ?>&hl=en_GB&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="96%"></embed></object> 
<?php endif; ?> 
+0

我試過了你的建議,但沒有奏效。相反,發生的事情是我的模板的其餘部分停止工作,出現了一些部分,最重要的是視頻部分也沒有出現。我確實理解你說的一些話。這只是讓我困惑,因爲它爲什麼它的工作時間約爲98%,然後其他2%,如每兩週一次,或者現在我認爲這是每週一次,我得到這個警告/錯誤信息。 – kanso 2011-03-21 06:07:33

+0

然後你得到'null'。它不能解決最初的問題,這是沒有人知道'fetch_rss'中發生了什麼 – 2011-03-21 17:39:03

0

我有一個與我正在使用的主題相關的RSS源相同的問題。在管理方面,代碼應該顯示同一藝術家的更多主題,但是我得到相同的array_slice錯誤,因爲$ feed-> items爲null。

RSS源的鏈接工作正常,並且地址上有信息。所以,我開始環顧四周,發現問題出在RSS上,而不是代碼上(原來的問題,這仍然是一個顯示錯誤的問題)。我指出fetch_rss()命令在一個不同的飼料,它工作正常。

直到藝術家調整他的飼料以使用命令,我沒有什麼可以親自做的。但是,如果您無法讓此命令與您的自己的供稿一起使用,請嘗試確保供稿符合此Wordpress命令所需的格式。

對不起,發佈一個老問題,但沒有直接的答案在網絡上的其他地方。

相關問題