foreach循环中的PHP无效参数

时间:2013-03-08 05:21:00

标签: php

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

由于

2 个答案:

答案 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)