为什么我会得到“为foreach提供的无效参数”?

问题描述:

我在我的数据库中创建一个搜索,当我使用foreach构造来回应我的结果时,我得到了“为foreach提供的无效参数..”。我不明白的是为什么会出现这个错误,因为包含我的错误的foreach工作正常。为什么我会得到“为foreach提供的无效参数”?

if (empty($errors)){ 
    $results = search_results($keywords); 
    $results_num = count($results); 

    foreach ($results as $result){ 
     echo '<p> <strong>', $result['TITLE'], '</strong> </p>'; 
    } 
} else { 
    foreach($errors as $error){ 
     echo $error, '</br>'; 
    } 
} 

多数民众赞成被集中在search_results功能的部分是这个

$results = "SELECT TITLE FROM occupationalinfo WHERE $where"; 
$results_num = ($results = mysql_query($results)) ? mysql_num_rows($results): 0; 

if ($results_num === 0){ 
    return false; 
}else{ 
    while ($results_row = mysql_fetch_assoc($results)) { 
     $returned_results[] = array(
      'title' => $results_row['TITLE'] 
     );  
    } 
} 

我还是新的节目让我明白,如果有什么我可能错过或只是没有完全得到。我会非常感谢任何提示或建设性的批评。

+0

你确定你正在传递到'foreach'你逝去,你有什么感想? – PeeHaa

+0

如果你包含了整个'search_results'函数,这将有所帮助。 –

+0

可能'$ results'是不可遍历的(例如:array) – NullUserException

if ($results_num === 0){ 
    return false; 
} 

我敢打赌,这是执行,所以它返回false。您不能将foreach应用于false。也许你应该return array(),或者只是检查false

$results = search_results($keywords); 
if ($results !== false) { 
    $results_num = count($results); 

    foreach ($results as $result){ 
     echo '<p> <strong>',$result['TITLE'],'</strong> </p>'; 
    } 
} 

地尝试一下PHP函数is_array()

if (empty($errors)){ 
      $results = search_results($keywords); 
      if(is_array($results)){ 
       foreach ($results as $result){ 
       echo '<p> <strong>'. $result['TITLE'] .'</strong></p>'; 
       } 
      } else { 
       echo "<p> <strong>empty</strong></p>"; 
      } 
    } 

if (empty($errors)){ 
     $results = search_results($keywords); 
     if(is_array($results)){ 
      $results_num = count($results); 
      foreach ($results as $result){ 
       echo '<p> <strong>'. $result['TITLE']. '</strong> </p>'; 
      } 
     }   
    } else { 
     foreach($errors as $error){ 
      echo $error, '</br>'; 
     } 
    }