PHP和全局数组

时间:2012-10-02 15:34:28

标签: php arrays global-variables

我需要php中的全局数组。

以下是示例:

global $array;

$array[0] = test;

if(something)        函数f1()     其他        function f2();

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

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

但问题是数组不会像全局一样受到影响。

你知道为什么吗?

谢谢。

3 个答案:

答案 0 :(得分:5)

你必须在每个函数中调用global,以便PHP知道在本地范围之外查看。

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

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

请注意,在“现实世界”中,您应该尽可能避免使用全局变量,因为通常可以通过重构或重新设计来解决全局变量。 Globals倾向于导致一个大泥球。

您应该考虑通过引用传递

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

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

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

您可以在http://codepad.org/27R5ZuKM

上看到示例

答案 1 :(得分:2)

如何将参数传递给函数并返回结果?

避免一个大的全球意大利面

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

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

答案 2 :(得分:1)

您需要在本地范围内将数组声明为全局,即在函数中。

$array[0] = test;

if(something)function f1()else function f2();

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

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