在函数内声明全局变量

2022-08-30 15:51:23

我有两个PHP文件。首先,我根据一个值设置一个cookie,然后调用一个函数,然后将该值发送到另一个文件。这是我在 join 中使用的一些代码.php$_GET

include('inc/processJoin.php');
setcookie("site_Referral", $_GET['rid'], time()+10000);
$joinProc = new processJoin();
$joinProc->grabReferral($_COOKIE["site_Referral"]);

然后,另一个文件(processJoin.php)将此值(以及其他文件)发送到其他文件,这些文件将处理数据并将其插入数据库。

我遇到的问题是,当调用 processJoin.php 中的函数时,变量不是全局范围内定义的 - 中的其他函数似乎无法访问它以发送到其他文件/进程。grabReferral()$referralIDprocessJoin.php

我已经在过程中尝试过这个加入.php

grabReferral($rid) {
   global $ref_id;
   $ref_id = $rid;
}

someOtherFunction() {
   sendValue($ref_id);
}

但是 someOtherFunction 似乎无法访问或使用该值。我也尝试过使用,但无济于事。我做错了什么?$ref_iddefine()


答案 1

您还必须在第二个函数中定义全局 var。

// global scope
$ref_id = 1;

grabReferral($rid){
   global $ref_id;
   $ref_id = $rid;
}

someOtherFunction(){
    global $ref_id;
    sendValue($ref_id);
}

费利克斯


答案 2

就个人而言,我会推荐$GLOBALS超级变量。

function foo(){
  $GLOBALS['foobar'] = 'foobar';
}
function bar(){
  echo $GLOBALS['foobar'];
}
foo();
bar();

演示


推荐