-1

我有一个主 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 循环位于主文件中时,此代码工作正常,但在网页文件中打印出所有数据后,我收到警告。我不太担心它,因为它仍然有效,但我想摆脱它,修复它,或者至少知道它为什么会发生。

谢谢

4

2 回答 2

0

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

解决方案:如果不是数组,则将其设为空数组。

尝试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;
于 2013-03-08T05:24:10.353 回答
0

你可以这样使用:

foreach( (array) $array as $key => $info)
于 2013-03-08T05:25:28.080 回答