2

私はウェブサイトを作成していますが、コードのどこかでユーザー属性 (例: アカウントの状態) を照会する必要があり、同じ行に理由があります。アカウントの状態が「一時停止」の場合です。

データベースへのリクエストを最小限に抑えたいので、アカウントの状態を確認する関数を作成しました。

function getAccountState($userid,$reason){}

私がやろうとしているのは、アカウントの状態が「一時停止」の場合、$reason を「データベースの理由」に変更することです。

私はすでにそれを行っていますが、関数内で $reason を変更しても、関数外では変更されません。グーグルで「phpポインタ」で検索しましたが、そんなものは無いと思います。

これを行う方法はありますか?他の方法では、別のデータベース要求を作成します...

4

4 に答える 4

2

もちろん、参照によって変数を渡すこともできますが、それは必要ないように思われるので、関数から返すだけです。

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

そしてそれを次のように呼びます:

$reason = getAccountState($userid);

コードをそのままにしておきたい場合は、参照によって変数を渡すことができます。

function getAccountState($userid,&$reason){}
                                 ^ like so
于 2013-02-19T17:07:21.320 に答える
0

あなたはそれを参照によって渡すことを検討することができます。または、関数を変更して正しい情報を返すこともできます。

于 2013-02-19T17:08:31.803 に答える
0

関数の定義では、$reason 引数が値ではなく参照によって渡されることがわかります。これを行うには、変数の前に & を使用します。

function getAccountState($userid,& $reason){}
于 2013-02-19T17:10:00.437 に答える
0

ポインターではなく、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"
于 2013-02-19T17:13:03.137 に答える