首页 > 解决方案 > 将变量携带到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;

这是我第一次看到使用,所以我还有很多东西要学。谢谢

标签: phpfunctionvariableswoocommercescope

解决方案


您可以尝试以下代码:

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 或与参数同名的变量。


推荐阅读