警告:array_slice()期望参数1为数组,在给定的情况下为null

时间:2011-03-21 00:04:18

标签: php video youtube warnings

我在WordPress网站上使用以下代码,使用rss显示我帐户中的最新Youtube视频:

<?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文件中。当1工作时,另一个不工作,当然我也得到另一个的错误/警告,只是引用该文件和不同的行。我试过搞乱代码但仍然没有。可能问题出现在我的代码中吗?

其他信息:

php:5.3.2

主持人:疯狂域名(http://www.crazydomains.com.au/

apache:2.2.15

3 个答案:

答案 0 :(得分:1)

它可能无效的原因是因为$feed->items可能不是数组(基于fetch_rss调用)。

要检查某些内容是否为数组,您可以执行以下操作:

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

如果是数组,则可以调用array_slice()

然而,更好的解决方案是检查$feed变量以确保它在处理之前返回您要查找的内容。

答案 1 :(得分: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; ?>

答案 2 :(得分:0)

我在使用与我正在使用的主题相关的RSS提要时遇到了同样的问题。在管理员方面,代码应该由同一位艺术家显示更多主题,但是我得到相同的array_slice错误,因为$ feed-&gt;项目为空。

RSS源的链接工作正常,地址上有信息。所以,我开始四处寻找,我发现问题出在RSS上,而不是代码(好吧,原始问题。显示错误仍然是一个问题)。我将fetch_rss()命令指向另一个Feed,它运行正常。

在艺术家调整他的饲料以使用命令之前,我个人无能为力。但是,如果您无法使用此命令处理自己的提要,请尝试确保提要符合此Wordpress命令所需的格式。

很抱歉发布一个旧问题,但网上其他地方没有直接答案。