foreach循环中的PHP无效参数


PHP invalid argument in foreach loop

我有一个主php文件,我包括在我的php文件,我从调用函数。

我的主文件有这个函数

function GetComments()
{
global $server;
global $info;
global $dbhandle;
$query = "SELECT GbId, fname, lname, comment FROM Guestbook";
$result = sqlsrv_query($dbhandle, $query);
while($row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC))
{
$array[$row['GbId']] = array(
'f' => trim($row['fname']),
'l' => trim($row['lname']),
'c' => trim($row['comment']));
}
return $array;
}

和我的网页文档有这个代码

<?php
$array = GetComments();
foreach($array as $key => $info)
{
echo $info['f']." ".$info['l']." said "."&quot;".$info['c']."&quot;"."<br /><br />";
}
Close();
?>

当foreach循环在主文件中时,这段代码工作得很好,但是当所有数据在网页文件中打印出来后,我得到一个警告。我不太关心它,因为它还在工作,但我想摆脱它,修复它,或者至少知道为什么会发生。

谢谢

由于foreach期望数组作为输入,但提供变量在某个点不是数组,因此发生错误。

解决方法:如果不是array,则设置为空数组

尝试在$array = GetComments();之后添加if(!is_array($array)){ $array = array(); }

$array = GetComments();
if(!is_array($array)){ $array = array(); }

编辑:在函数

的while循环前声明数组
$array     = array();
while($row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC))
{
$array[$row['GbId']] = array(
'f' => trim($row['fname']),
'l' => trim($row['lname']),
'c' => trim($row['comment']));
}
return $array;

可以这样使用:

foreach( (array) $array as $key => $info)