我有一个主要的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循环在主文件中时,此代码工作正常,但是当它在网页文件中打印出所有数据后,我会收到警告。我不太关心它,因为它仍然有效,但我想要摆脱它,修复它,或者至少知道它为什么会发生。
由于
答案 0 :(得分:0)
发生错误是因为foreach期望数组作为输入,但提供的变量不是某个piont的数组。
解决方案:如果它不是数组,请将其设为空数组。
尝试在if(!is_array($array)){ $array = array(); }
$array = GetComments();
$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;
答案 1 :(得分:0)
你可以像这样使用:
foreach( (array) $array as $key => $info)