我有一个主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 ".""".$info['c']."""."<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)