Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP警告:为foreach()提供的参数无效_Php - Fatal编程技术网

PHP警告:为foreach()提供的参数无效

PHP警告:为foreach()提供的参数无效,php,Php,为什么我会收到这个PHP警告 为foreach()提供的参数无效。 这是我的密码: // look for text file for this keyword if (empty($site["textdirectory"])) { $site["textdirectory"] = "text"; } if (file_exists(ROOT_DIR.$site["textdirectory"].'/'.urlencode($q).'.txt')) { $keywordtext

为什么我会收到这个PHP警告

foreach()提供的参数无效。

这是我的密码:

// look for text file for this keyword
if (empty($site["textdirectory"])) {
    $site["textdirectory"] = "text";
}
if (file_exists(ROOT_DIR.$site["textdirectory"].'/'.urlencode($q).'.txt')) {
    $keywordtext = 
     file_get_contents(ROOT_DIR.$site["textdirectory"].'/'.urlencode($q).'.txt');
}
else {
    $keywordtext = null;
}

$keywordsXML = getEbayKeywords($q);

foreach($keywordsXML->PopularSearchResult as $item) {
    $topicsString = $item->AlternativeSearches;
   $relatedString = $item->RelatedSearches;
   if (!empty($topicsString)) {
        $topics =  split(";",$topicsString);
    }
    if (!empty($relatedString)) {
        $related = split(";",$relatedString);
    }

}

$node = array();
$node['keywords'] = $q;
2.
是什么原因导致此警告?

因为,无论在哪一行发生错误(您没有告诉我们这是哪一行),您都在将非数组的内容传递给
foreach

查看您要传递到
foreach
的内容,确定它是什么(使用),找出它不是数组的原因。。。把它修好


基本,基本调试。

这意味着您正在对非数组的对象执行foreach

检查所有foreach语句,并查看
前面的内容是否为
,以确保它实际上是一个数组。使用
var\u dump
将其转储

然后修复它不是数组的位置

如何重现此错误:

<?php
$skipper = "abcd";
foreach ($skipper as $item){       //the warning happens on this line.
    print "ok";
}
?>


确保
$skipper
是一个数组。

您应该使用功能检查传递给
foreach
的内容是否是数组

如果您不确定它是否将是一个数组,则始终可以使用以下PHP示例代码进行检查:

if (is_array($variable)) {

  foreach ($variable as $item) {
   //do something
  }
}
试试这个

if(is_array($value) || is_object($value)){
    foreach($value as $item){
     //somecode
    }
}

查看编辑屏幕上的
{}
按钮:它将像我现在所做的那样为您格式化代码;)因为您为
foreach
提供了无效的参数。你有没有检查你给它喂了什么
var\u dump
可以帮助您。哪个
foreach
产生错误?您的错误消息应该给您一个行号…它有一个PHP警告:为所有三个提供的参数无效:foreach($keywordsXML->PopularSearchResult作为$item){foreach($xml->channel->item作为$item){foreach($guidesXML->guide作为$guideXML){为什么,我在问是什么导致我得到。为什么我得到一个PHP警告:为foreach()提供的参数无效在我的脚本中的三个foreach上。在大多数情况下,这将起作用,但并不总是看到:太好了。我在自定义Wordpress插件中遇到了一个问题,在该插件中我解析RSS提要。默认情况下,该提要并不总是有内容,并且会在有更多内容之前过期。因此数组并不总是填充。这解决了“偏移量”问题我在那个案子里得到的警告。
if (is_array($variable)) {

  foreach ($variable as $item) {
   //do something
  }
}
if(is_array($value) || is_object($value)){
    foreach($value as $item){
     //somecode
    }
}