【问题标题】:Warning: array_slice() expects parameter 1 to be array, null given in [closed]警告:array_slice() 期望参数 1 是数组,在 [关闭] 中给出 null
【发布时间】:2011-03-21 00:04:18
【问题描述】:

我在我的 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/)

阿帕奇:2.2.15

【问题讨论】:

标签: php video youtube warnings


【解决方案1】:

它可能不起作用的原因是因为$feed-&gt;items 可能不是一个数组(基于fetch_rss 调用)。

要检查某个东西是否是一个数组,你可以这样做:

is_array($feed-&gt;items); // 返回真或假

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

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

【讨论】:

  • 这会治标不治本。
  • 添加了更好的解决方案。
  • $fetch 你的意思是$feed
  • 是的,我需要睡一觉:X
【解决方案2】:

看起来$feed-&gt;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; ?>

【讨论】:

  • 我尝试了您的建议,但没有奏效。相反,我的模板的其余部分停止工作,出现的部分很少,最重要的是视频部分也没有出现。你说的我有点明白。这只是让我感到困惑,为什么它在大约 98% 的时间里有效,而另外 2% 的时间像每 2 周一次,或者现在我认为每周一次我收到此警告/错误消息。
  • 那么您将获得null。它没有解决最初的问题,没有人知道fetch_rss 中发生了什么
【解决方案3】:

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

RSS 提要的链接工作正常,地址中有信息。所以,我开始环顾四周,发现问题出在 RSS 上,而不是代码(嗯,原来的问题。仍然是显示该错误的问题)。我将fetch_rss() 命令指向不同的提要,它工作正常。

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

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

【讨论】:

    猜你喜欢
    • 2014-06-28
    • 2016-09-24
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 2020-06-17
    • 2017-05-03
    相关资源
    最近更新 更多