Php 在函数外重复使用变量?
如何在下面的示例中使用return$row数组,以便在该函数之外重用该变量 我设法使用$row['columnName']在函数中回显信息,但是global和$GLOBALS的各种组合返回$xyz,让变量作用域为我工作让我有点不知所措。有什么答案吗Php 在函数外重复使用变量?,php,mysql,variables,global-variables,scope,Php,Mysql,Variables,Global Variables,Scope,如何在下面的示例中使用return$row数组,以便在该函数之外重用该变量 我设法使用$row['columnName']在函数中回显信息,但是global和$GLOBALS的各种组合返回$xyz,让变量作用域为我工作让我有点不知所措。有什么答案吗 <?php function getInfo() { $query = /* Some SQL Query */; $result = mysql_query($query); if($result == fal
<?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? */
}
}
}
?>
只需从函数中返回它:
$results = array();
while ($row = mysql_fetch_assoc($result)) {
$results[] = $row; // or do something more with the row
}
return $results;
function processRow($r)
{
echo $r['columnName'];
}
while ($row = mysql_fetch_assoc($result)) {
processRow($row);
}
并调用您的函数,如:
$query_results = getInfo();
只需从函数中返回它:
$results = array();
while ($row = mysql_fetch_assoc($result)) {
$results[] = $row; // or do something more with the row
}
return $results;
function processRow($r)
{
echo $r['columnName'];
}
while ($row = mysql_fetch_assoc($result)) {
processRow($row);
}
并调用您的函数,如:
$query_results = getInfo();
您可以直接在while块中使用$row,也可以将其作为参数传递给执行行级处理的另一个函数。首先,定义函数:
$results = array();
while ($row = mysql_fetch_assoc($result)) {
$results[] = $row; // or do something more with the row
}
return $results;
function processRow($r)
{
echo $r['columnName'];
}
while ($row = mysql_fetch_assoc($result)) {
processRow($row);
}
然后,在循环中调用该函数:
$results = array();
while ($row = mysql_fetch_assoc($result)) {
$results[] = $row; // or do something more with the row
}
return $results;
function processRow($r)
{
echo $r['columnName'];
}
while ($row = mysql_fetch_assoc($result)) {
processRow($row);
}
在该函数中,getInfo中名为$row的值将被称为$r。如果需要,可以将形式参数命名为$row,但我在这里使用了不同的名称只是为了说明它们不需要具有相同的名称。如果您不清楚变量的作用域,那么给许多变量取相同的名称可能会让您更加困惑。您可以直接在while块中使用$row,也可以将其作为参数传递给另一个执行行级处理的函数。首先,定义函数:
$results = array();
while ($row = mysql_fetch_assoc($result)) {
$results[] = $row; // or do something more with the row
}
return $results;
function processRow($r)
{
echo $r['columnName'];
}
while ($row = mysql_fetch_assoc($result)) {
processRow($row);
}
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;
}
}
然后,在循环中调用该函数:
$results = array();
while ($row = mysql_fetch_assoc($result)) {
$results[] = $row; // or do something more with the row
}
return $results;
function processRow($r)
{
echo $r['columnName'];
}
while ($row = mysql_fetch_assoc($result)) {
processRow($row);
}
在该函数中,getInfo中名为$row的值将被称为$r。如果需要,可以将形式参数命名为$row,但我在这里使用了不同的名称只是为了说明它们不需要具有相同的名称。如果您不清楚变量的作用域,那么给许多变量取相同的名称可能会让您更加困惑
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
然后你只要做:$mydata=getInfo +1用于显示返回代码:可能比作为参考传递更好。该死的,你们真的很快,写不完,3个答案像往常一样,你们都很快,非常感谢。如果我随后执行$query\u results=getInfo;然后用echo$query_results[0]或echo$query_results['columnName']测试它,它只返回数组-所以要么我做错了什么,数组是空的,要么两者都是:@Joe不,它是一个二维数组,因为$row本身已经是一个数组了。只要做一个var_dump$query_results或尝试$query_results[0]['columnName'].+1来显示返回代码:可能比作为引用传递要好。该死的,你们真的很快,写不完,3个答案看起来像往常一样。你们都很快,非常感谢。如果我随后执行$query\u results=getInfo;然后用echo$query_results[0]或echo$query_results['columnName']测试它,它只返回数组-所以要么我做错了什么,数组是空的,要么两者都是:@Joe不,它是一个二维数组,因为$row本身已经是一个数组了。只要做一个var_dump$query_results或者试试$query_results[0]['columnName']。@yes123,太糟糕了,你只需要2票就可以得到一个php徽章,jeroen已经得到2票了:-.@johan:我每天都有上限,所以除非他选择我的答案,否则投票对我不会有任何作用。。哈哈,你在说什么徽章?XD查看您的个人资料,在底部您可以看到您得分的主题,如果您在主题旁边获得100分,您将获得一枚铜牌,以表彰您是l33t php大师或诸如此类的人物:=-。我对这个上限也有复杂的感觉,很高兴能达到这个目标,但如果你幸运地得到了一个答案,那么看到所有的选票都一无所获,那就太糟糕了。@johan:事实上,我认为你恰恰相反,如果你幸运地得到了答案,你肯定不值得在一天内获得+1000次代表。另一件事是,你在一天内提供了很多好的答案:在这种情况下,我不会每天都得到这样的答案cap@yes123,太糟糕了,你只需要2张选票就可以得到一个php徽章,看,杰罗恩已经得到了2张选票:-。@johan:我每天都有上限,所以除非他选择我的答案,否则投票对我不会有任何作用。。哈哈,你在说什么徽章?XD查看您的个人资料,在底部您可以看到您得分的主题,如果您在主题旁边获得100分,您将获得一枚铜牌,以表彰您是l33t php大师或诸如此类的人物:=-。我对这个上限也有复杂的感觉,很高兴能达到这个目标,但如果你幸运地得到了一个答案,那么看到所有的选票都一无所获,那就太糟糕了。@johan:事实上,我认为你恰恰相反,如果你幸运地得到了答案,你肯定不值得在一天内获得+1000次代表。另一件事是,你在一天内提供了很多好的答案:在这种情况下,我没有得到这个每日上限