-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;
}

私のWebページドキュメントにはこのコードがあります

<?php
$array = GetComments();

foreach($array as $key => $info)
{
echo $info['f']." ".$info['l']." said "."&quot;".$info['c']."&quot;"."<br /><br />";
}

Close();
?>

このコードは、foreach ループがメイン ファイルにある場合は正常に動作しますが、Web ページ ファイルにある場合はすべてのデータが出力された後に警告が表示されます。まだ機能しているので、あまり心配していませんが、それを取り除くか、修正するか、少なくともなぜそれが起こっているのかを知りたいです.

ありがとう

4

2 に答える 2

0

あなたはこのように使うことができます:

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

foreach は入力として配列を想定していますが、指定された変数が一部のポイントで配列ではないため、エラーが発生します。

解決策: 配列でない場合は、NULL 配列にします。

if(!is_array($array)){ $array = array(); }後にこの行を追加してみてください$array = GetComments();

$array = GetComments();
if(!is_array($array)){ $array = array(); }

EDIT : 関数内の 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 に答える