在函数上使用php指针


Using php pointers on function?

我正在创建一个网站,在代码中的某个地方我需要查询用户属性(例如:帐户状态),在同一行我有原因,情况是帐户状态是"挂起"。

我试图尽量减少对数据库的请求,所以我创建了一个函数来验证帐户状态。

function getAccountState($userid,$reason){}

我想做的是,如果帐户状态为"挂起",我会将$reason更改为"数据库原因"。

我已经这样做了,但如果我在函数内部更改$reason,那么在函数外部它就不会更改。我在谷歌上搜索了"php指针",但我认为没有这样的东西。

有办法做到这一点吗?另一种方式,我只是提出另一个数据库请求。。。

您当然可以通过引用传递变量,但由于您似乎不需要它,我只会从函数返回它:

function getAccountState($userid){
  // your code
  return $reason;
}

并称之为:

$reason = getAccountState($userid);

如果你想让代码保持原样,你可以通过引用传递变量:

function getAccountState($userid,&$reason){}
                                 ^ like so

您可以考虑通过引用传递它。或者只是更改函数以返回正确的信息。

在函数的定义中,您可以判断$reason参数是通过引用传递的,而不是通过值传递的。要执行此操作,请使用&变量前面:

function getAccountState($userid,& $reason){}

您正在寻找PHP术语中的引用,而不是指针。

他们是这样工作的:

function getAccountState($userid, &$reason){  // Notice the &
    $reason = "database locked";  // Use it as a regular variable
}

getAccountState(12345, $reason);  // Here, it is written as a regular variable, but it is a ref.
echo $reason;   // echoes "database locked"