php - 将变量携带到php中的函数中
问题描述
我在变量范围和函数方面遇到问题。如果用字符串替换我的变量,它会起作用,所以我的问题似乎确实将变量带入了函数。
$this_project_ID = $get_project_id[0]->ID;
echo $this_project_ID; //This prints out correctly an integer
add_filter('woocommerce_checkout_get_value', function($input, $key ) {
global $this_project_ID;
switch ($key) :
case 'billing_project_id':
return $this_project_ID; //This doesn't resolve unless I use a string
break;
endswitch;
}, 10, 2);
我对在函数中引入变量有什么不理解,还是因为这个特定的函数需要其他东西?提前致谢。
所以这里是感谢你们所有人的解决方案,特别是@dmitry。
this_project_ID = $get_project_id[0]->ID;
add_filter('woocommerce_checkout_get_value', function($input, $key ) use ( $this_project_ID ) {
switch ($key) :
case 'billing_project_id':
return $this_project_ID;
break;
endswitch;
}, 10, 2);
我使用了德米特里的解决方案,我刚刚摆脱了:
global $this_project_ID;
这是我第一次看到使用,所以我还有很多东西要学。谢谢
解决方案
您可以尝试以下代码:
this_project_ID = $get_project_id[0]->ID;
add_filter('woocommerce_checkout_get_value', function($input, $key ) use ( $this_project_ID ) {
switch ($key) :
case 'billing_project_id':
return $this_project_ID;
break;
endswitch;
}, 10, 2);
闭包也可以从父作用域继承变量。任何此类变量都必须传递给
use
语言构造。从 PHP 7.1 开始,这些变量不得包含超全局变量、$this 或与参数同名的变量。
推荐阅读
- java - 如何通知客户端有关 Rest Endpoint 的更改
- php - 在 PHP 中使用 OR 运算符而不是 true 或 false 获取文字表达式值
- java - Crieria Builder setMaxResults 排序问题
- c++ - 类对象初始化
- python - 在 python 列表中向后或向前循环以查找匹配项
- windows-7 - 文件夹的“修改日期”不正确(Windows 7)
- python - 如何在python中将输出保存为浮点数
- python - 如果在 DAG 上设置了未来日期,则在气流 1.10.1 中无法手动运行
- javascript - 如何构建 React 复选框树
- python - 如何加入这些列表的元素?