2013-03-08 41 views
-1

我有一个主要的PHP文件,我包括在我的PHP文件中,我从中调用函数。在foreach循环中的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循环是在主文件中,但我得到一个警告毕竟数据在网页文件中打印出来之后。我不太关心它,因为它仍然有效,但我想要摆脱它,修复它,或者至少知道它为什么会发生。

由于发生

+0

什么警示显示? – Arunu 2013-03-08 05:23:52

+0

你没有说明你得到了哪个确切的错误信息。 – hakre 2013-03-08 05:23:56

+0

确切的错误是警告:为foreach提供的无效参数() – shadowjfaith 2013-03-08 05:37:12

回答

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; 
+0

你能解释它不是一个数组吗?我只是困惑,因为我认为这是一个数组。 – shadowjfaith 2013-03-08 05:43:26

+0

一种情况是当你在数据库中没有任何记录时 – 2013-03-08 06:02:01

+0

我忘了告诉你另外一件事,在函数的while循环之前声明数组。见编辑的答案。 – 2013-03-08 06:03:50

0

你可以使用这样的:

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