php - 函数中未定义的数组变量
问题描述
我正在尝试$args_array
在匿名函数和常规函数中使用变量。
该变量是在顶层声明的,但是当我尝试在这些函数中使用它时,我收到一个关于该变量未定义的错误。
这是我的代码:
$args_array = array(
'endpoint' => 'my_endpoint',
'url' => 'my_url',
'api_key' => 'my_api_key',
'api_value' => 'my_api_value'
);
add_action( 'rest_api_init', function () {
register_rest_route( 'api', '/semir/', array(
'methods' => 'GET',
'callback' => 'semirs_function',
'args' => $args_array
));
});
function semirs_function() {
return $args_array;
}
解决方案
在动作挂钩回调中运行时,该变量 ( $args_array
) 超出范围。
您需要使用use
构造从父范围继承变量。
例如:
add_action( 'rest_api_init', function() use( $args_array ) {
register_rest_route( 'api', '/semir/', [
'methods' => 'GET',
'callback' => 'semirs_function',
'args' => $args_array
]);
});
由于您正在使用另一个需要使用该变量来返回它的函数,因此您需要将它传递给那个函数,因此它是其范围的一部分:
function semirs_function($args) { return $args; }
推荐阅读
- vb.net - 短随机播放 Textbox1 等于 Textbox2
- mongodb - 在 WSO2 中添加 MongoDB 作为外部数据源
- java - 如何使用 Android Room 存储数据记录
- php - 如何使用 SQL 更新记录
- testing - 为什么 TestGesture.moveBy 在 TabBarView 中滚动失败?
- excel - 在条件格式中比较数据透视表的列标签
- c# - 执行包含批处理文件 (.bat) 中的参数的 ac# 控制台应用程序
- ios - 从邮件文件而不是整个应用程序打开视图控制器
- java - 上下文创建错误后,如何使用 spring-boot-starter-actuator 使我的 spring-boot 应用程序完成?
- git - git-clone local 从 git-only 用户到普通用户(debian) - git-push 需要很长时间/没有完成