在函数外重用变量?

时间:2011-06-01 22:03:19

标签: php mysql variables global-variables scope

如何在下面的示例中使用返回$row数组,以便可以重复使用此函数之外的变量

我设法使用$row['columnName']回显函数内部的信息,但是global$GLOBALSreturn $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? */
        }
    } 

}
?>

3 个答案:

答案 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,但我在这里使用了一个不同的名称,只是为了说明他们不需要需要具有相同的名称。如果你'我不清楚变量范围,然后给出许多相同名称的变量可能只会让你自己更加迷惑。)