如何在下面的示例中使用返回$row
数组,以便可以重复使用此函数之外的变量?
我设法使用$row['columnName']
回显函数内部的信息,但是global
和$GLOBALS
,return $xyz
的各种组合以及让变量范围适用于我的工作让我有点超出我的深度。有什么答案吗?
<?php
function getInfo() {
$query = /* Some SQL Query */;
$result = mysql_query($query);
if($result == false)
{
user_error("Query failed: " . mysql_error() . "<br />\n$query");
}
elseif(mysql_num_rows($result) == 0)
{
echo "<p>Sorry, no rows were returned by your query.</p>\n";
}
else
{
while ($row = mysql_fetch_assoc($result)) {
/* What goes here? */
}
}
}
?>
答案 0 :(得分:4)
只需从你的函数中返回它:
$results = array();
while ($row = mysql_fetch_assoc($result)) {
$results[] = $row; // or do something more with the row
}
return $results;
并将您的功能称为:
$query_results = getInfo();
答案 1 :(得分:1)
function getInfo() {
$query = /* Some SQL Query */;
$result = mysql_query($query);
if($result == false)
{
user_error("Query failed: " . mysql_error() . "<br />\n$query");
}
elseif(mysql_num_rows($result) == 0)
{
echo "<p>Sorry, no rows were returned by your query.</p>\n";
}
else
{
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
return $data;
}
}
然后你就做了:$mydata = getInfo();
答案 2 :(得分:0)
您可以直接在$row
块中使用while
,也可以将其作为参数传递给另一个执行行级处理的函数。首先,定义函数:
function processRow($r)
{
echo $r['columnName'];
}
然后,在你的循环中,调用该函数:
while ($row = mysql_fetch_assoc($result)) {
processRow($row);
}
在该函数中,$row
中称为getInfo
的值将被称为$r
。 (如果需要,您可以命名形式参数$row
,但我在这里使用了一个不同的名称,只是为了说明他们不需要需要具有相同的名称。如果你'我不清楚变量范围,然后给出许多相同名称的变量可能只会让你自己更加迷惑。)