while循环中的PHP作用域问题
我试图自学php,但我认为这是一个范围问题 我有一个查询、while循环、if/else和一个函数 我想在while循环中回显函数while循环中的PHP作用域问题,php,if-statement,while-loop,scope,Php,If Statement,While Loop,Scope,我试图自学php,但我认为这是一个范围问题 我有一个查询、while循环、if/else和一个函数 我想在while循环中回显函数get\u patronapi\u data($id)的结果 到目前为止,我的代码如下(为便于阅读而剥去) 每当我echo获取数据($id)在功能之外,我成功地在屏幕上看到了数据。然而,当我echo获取数据时($id)在循环中,我收到以下错误 注意:在中使用未定义的常量APISERVER-假定为“APISERVER” C:\xampp…在第135行搜索_1.php 警
get\u patronapi\u data($id)
的结果
到目前为止,我的代码如下(为便于阅读而剥去)
每当我echo获取数据($id)代码>在功能之外,我成功地在屏幕上看到了数据。然而,当我echo获取数据时($id)代码>在循环中,我收到以下错误
注意:在中使用未定义的常量APISERVER-假定为“APISERVER”
C:\xampp…在第135行搜索_1.php
警告:文件获取内容(APISERVER/PATRONAPI/3047468/dump):失败
打开流:C:\xampp…search_1.php中没有这样的文件或目录
在线154
我肯定我在做一些非常愚蠢的事情,但是我很感激任何帮助。我不确定我是否完全理解你的问题。如果你把它放进去会怎么样
echo获取API数据($id)
在循环中而不是
回波数据
??如前所述,您没有在循环中调用函数。我不确定是否完全理解您的问题。如果你把它放进去会怎么样
echo获取API数据($id)
在循环中而不是
回波数据
??如前所述,您没有在循环中调用函数。假设您希望在while循环中的每次迭代中打印get_patronapi_data()中的数据,那么您需要实际调用该方法,而不是使用$data。现在,您正在尝试打印名为$data的内容,尽管您从未为其设置值。您在函数中返回的$data不能在该函数之外使用,因此它不存在于while循环中
在while循环中可以执行的操作是$data=get_\u data();,然后回显$data。但是,您可以只回显获取数据();首先
如果只想调用函数一次,则需要在启动while循环之前设置一个变量(即$variable=get_patronapi_data()),然后在while循环中使用该变量(即echo$variable) 假设您希望在while循环中的每次迭代中打印来自get_audenapi_data()的数据,那么您需要实际调用该方法,而不是使用$data。现在,您正在尝试打印名为$data的内容,尽管您从未为其设置值。您在函数中返回的$data不能在该函数之外使用,因此它不存在于while循环中
在while循环中可以执行的操作是$data=get_\u data();,然后回显$data。但是,您可以只回显获取数据();首先
如果只想调用函数一次,则需要在启动while循环之前设置一个变量(即$variable=get_patronapi_data()),然后在while循环中使用该变量(即echo$variable) 缺少的链接是以下语句:
$data = get_patronapi_data($id);
您应该在echo$data之前放置代码>
它调用函数get_\u data()
将变量$id
的值作为参数传递,并将函数的值存储在变量$data
中
变量$data
you与函数使用的变量不同。它们使用相同的名称,但不同(我希望您不要在函数中使用关键字global
)
阅读中有关函数的更多信息
更新后的(片段)代码如下所示:
if (SomethingIsTrue) {
$data = get_patronapi_data($id);
echo $data;
} else {
echo $somethingElse;
}
如果不对函数返回的值进行进一步处理,也可以从上面的代码片段中删除临时变量$data
,只需使用:
if (SomethingIsTrue) {
echo get_patronapi_data($id);
} else {
echo $somethingElse;
}
缺少的链接是以下语句:
$data = get_patronapi_data($id);
您应该在echo$data之前放置代码>
它调用函数get_\u data()
将变量$id
的值作为参数传递,并将函数的值存储在变量$data
中
变量$data
you与函数使用的变量不同。它们使用相同的名称,但不同(我希望您不要在函数中使用关键字global
)
阅读中有关函数的更多信息
更新后的(片段)代码如下所示:
if (SomethingIsTrue) {
$data = get_patronapi_data($id);
echo $data;
} else {
echo $somethingElse;
}
如果不对函数返回的值进行进一步处理,也可以从上面的代码片段中删除临时变量$data
,只需使用:
if (SomethingIsTrue) {
echo get_patronapi_data($id);
} else {
echo $somethingElse;
}
把我的一些评论作为答案
您需要从以下位置删除引号:
$apiurl = "APISERVER" . "/PATRONAPI/$id/dump";
^ ^ <<< remove those
参考:
那么您的连接超出范围,应该在您的函数中使用
即:
对于所有需要连接的函数都要这样做
您需要确保所有文件夹/文件都具有适当的写入权限。将我的一些评论添加到答案中
您需要从以下位置删除引号:
$apiurl = "APISERVER" . "/PATRONAPI/$id/dump";
^ ^ <<< remove those
参考:
那么您的连接超出范围,应该在您的函数中使用
即:
对于所有需要连接的函数都要这样做
您需要确保所有文件夹/文件都具有适当的写入权限。除非我弄错了,否则您不会在while
循环中的任何位置定义$data
。(也许你的意思是而($data=$stmt->fetch())
?)根据你的编辑;好了。您没有定义APISERVER
。它被视为一个常数。要么将其定义为常量,要么用引号括起来。@Fred他说他是通过在while循环之外调用函数来实现的。define(“APISERVER”)http://xxxxxxxxxxxx");代码>作为您的第一行。然后执行此函数获取数据($conn,$id){
并在调用函数时应用相同的方法。并且可能用于函数g