PHP警告:为foreach()提供的参数无效
为什么我会收到这个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
// 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
}
}