1

PHPにグローバル配列が必要です。

次に例を示します。

global $array;

$array[0] = test;

if(何か)関数f1()else関数f2();

function f1()
{
   $array[0] = $array[0]." and test1";
}

function f2()
{
   $array[0] = $array[0]." and test2";
}

ただし、問題は、アレイがグローバルとしてではなくローカルとして影響を受けることです。

理由がわかりますか?

ありがとうございました。

4

3 に答える 3

5

PHPがローカルスコープの外を見ることができるように、各関数内でグローバルを呼び出す必要があります。

function f1()
{
   global $array;
   $array[0] = $array[0]." and test1";
}

function f2()
{
   global $array;
   $array[0] = $array[0]." and test2";
}

「現実の世界」では、グローバルは通常、リファクタリングまたは再設計で解決できるため、可能な限りグローバルの使用を避ける必要があることに注意してください。グローバルは大きな泥だんごに向かう傾向があります。

参照渡しを検討する必要があります

function f3(&$array)
{
    $array[0] = $array[0]." and test3";
}

$array = array();
$array[0] = "test";

f3($array);
var_dump($array);

あなたはで例を見ることができます:http ://codepad.org/27R5ZuKM

于 2012-10-02T15:35:40.930 に答える
2

パラメータを関数に渡して結果を返すのはどうですか?

1つの大きなグローバルスパゲッティを避けてください

function f1( $array )
{
   $array[0] = $array[0]." and test1";
   return $array;
}

function f2( $array )
{
   $array[0] = $array[0]." and test2";
   return $array;
}
于 2012-10-02T15:49:01.597 に答える
1

ローカルスコープ、つまり関数で配列をグローバルとして宣言する必要があります。

$array[0] = test;

if(何か)関数f1()else関数f2();

function f1()
{
   global $array;
   $array[0] = $array[0]." and test1";
}

function f2()
{
   global $array;
   $array[0] = $array[0]." and test2";
}
于 2012-10-02T15:35:33.693 に答える