PHP Предупреждение: неверный аргумент для foreach ()

Почему я получаю это предупреждение от 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

 $xml = ebay_rss($node); $ebayItems = array(); $totalItems = count($xml->channel->item); $totalPages = $totalItems / $pageSize; $i = 0; foreach ($xml->channel->item as $item) { $ebayRss = $item->children('http://www.ebay.com/marketplace/search/v1/services'); if ($i>=($pageSize*($page-1)) && $i<($pageSize*$page)) { $newItem = array(); $newItem['title'] = $item->title; $newItem['link'] = buyLink($item->link, $q); $newItem['image'] = ebay_stripImage($item->description); $newItem['currentbid'] = ebay_convertPrice($item->description); $newItem['bidcount'] = $ebayRss->BidCount; $newItem['endtime'] = ebay_convertTime($ebayRss->ListingEndTime); $newItem['type'] = $ebayRss->ListingType; if (!empty($ebayRss->BuyItNowPrice)) { $newItem['bin'] = ebay_convertPrice($item->description); } array_push($ebayItems, $newItem); } $i++; } $pageNumbers = array(); for ($i=1; $i<=$totalPages; $i++) { array_push($pageNumbers, $i); } 

3

 // get user guides $guidesXML = getEbayGuides($q); $guides = array(); foreach ($guidesXML->guide as $guideXML) { $guide = array(); $guide['url'] = makeguideLink($guideXML->url, $q); $guide['title'] = $guideXML->title; $guide['desc'] = $guideXML->desc; array_push($guides,$guide); } 

Что вызывает это предупреждение?

Solutions Collecting From Web of "PHP Предупреждение: неверный аргумент для foreach ()"

Вы должны проверить, что то, что вы передаете в foreach является массивом, используя функцию is_array

Если вы не уверены, что это будет массив, вы всегда можете проверить, используя следующий код примера PHP:

 if (is_array($variable)) { foreach ($variable as $item) { //do something } } 

Это означает, что вы делаете foreach на чем-то, что не является массивом.

Просмотрите все свои заявления foreach и посмотрите, есть ли перед этим as , чтобы убедиться, что это фактически массив. Используйте var_dump чтобы свалить его.

Затем исправьте ту, где она не является массивом.

Как воспроизвести эту ошибку:

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

Убедитесь, что $skipper – массив.

Потому что в любой строке, в которой происходит ошибка (вы не сказали нам, что это такое), вы передаете что-то для foreach , это не массив.

Посмотрите, что вы переходите в foreach , определяете, что это такое (с var_export ), выясните, почему это не массив … и исправьте его.

Базовая, базовая отладка.