Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中将变量带入函数_Php_Function_Variables_Woocommerce_Scope - Fatal编程技术网

在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){