为什么我会得到“为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']
);
}
}
我还是新的节目让我明白,如果有什么我可能错过或只是没有完全得到。我会非常感谢任何提示或建设性的批评。
答
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>';
}
}
你确定你正在传递到'foreach'你逝去,你有什么感想? – PeeHaa
如果你包含了整个'search_results'函数,这将有所帮助。 –
可能'$ results'是不可遍历的(例如:array) – NullUserException