2011-06-01 101 views
1

如何在下面的例子中使用返回$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? */ 
     } 
    } 

} 
?> 
+0

@职场英语对话,太糟糕了,你只需要2票的PHP徽章,并期待的Jeroen已经有了2 upvotes :-)。 – Johan 2011-06-01 22:14:21

+0

@johan:我每天都在上限,所以除非他选择我的回答,否则upvote不会对我做任何事情。大声笑你在说什么徽章? xD – dynamic 2011-06-01 22:15:11

+0

看看你的个人资料,在底部你可以看到你获得积分的主题,如果你在主题旁边获得100,那么你会得到一个青铜徽章,作为l33t php guru或类似的东西:= - )。我对这个帽子也有着不同的感受,很高兴能够到达那里,但如果你在答案上幸运的话,看到所有这些选票都不会去。 – Johan 2011-06-01 22:18:11

回答

4

刚刚从你的函数返回它:

$results = array(); 
while ($row = mysql_fetch_assoc($result)) { 
    $results[] = $row; // or do something more with the row 
} 
return $results; 

,并调用你的函数,如:

$query_results = getInfo(); 
+0

+1显示返回代码:)可能更好,然后作为参考传递。 – 2011-06-01 22:08:23

+0

该死的,你们真的很快,写不完,写了3个答案 – 2011-06-01 22:10:08

+0

就像往常一样,你们都闪电般快,非常感谢。如果我接着执行'$ query_results = getInfo();'并使用'echo $ query_results [0]'或echo $ query_results ['columnName']'来测试它,它只是返回** Array ** - 所以无论我做错了什么,数组是空的,还是两者都是:( – 2011-06-01 22:31:03

0

您可以使用$row直接在while块内,或者你可以通过它作为参数指向执行行级处理的另一个函数。首先,定义函数:

function processRow($r) 
{ 
    echo $r['columnName']; 
} 

然后,你的循环中,呼叫该功能:

while ($row = mysql_fetch_assoc($result)) { 
    processRow($row); 
} 

在这一功能,在getInfo称为$row值将被称为$r。 (如果需要,您可以命名形式参数$row,但我在这里使用了不同的名称,只是为了说明它们不需要需要具有相同的名称。如果您对变量作用域不清楚,大量的变量相同的名称可能只是用于更迷惑自己)

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();