在php中将变量带入函数
我在变量范围和函数方面有问题。如果用字符串替换我的变量,它就会起作用,所以我的问题似乎真的把变量带到函数中去了在php中将变量带入函数,php,function,variables,woocommerce,scope,Php,Function,Variables,Woocommerce,Scope,我在变量范围和函数方面有问题。如果用字符串替换我的变量,它就会起作用,所以我的问题似乎真的把变量带到函数中去了 $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 $t
$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)
我使用了Dmitry的解决方案,我刚刚摆脱了:
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
语言结构。在PHP7.1中,这些变量不得包括超全局变量、$this或与参数同名的变量
您可以尝试以下代码:
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
语言结构。在PHP7.1中,这些变量不得包括超全局变量、$this或与参数同名的变量
您正在此处添加一个筛选器,这意味着您的函数将在其他地方执行-在该上下文中,您的
$this\u project\u ID
变量可能不存在。谢谢。为了克服这个问题,我需要将这个变量放入会话或超全局?@Rich使用Use
关键字函数($input,$key)Use(&$this\u project\u ID){
您在这里添加了一个过滤器,这意味着您的函数将在其他地方执行-在这种情况下,您的$this\u project\u ID
变量可能不存在。谢谢。为了克服这一问题,我需要将此变量放入会话或超全局?@Rich使用Use
关键字函数($input,$key)使用(&$this\u project\u ID){