1

我需要一个 php 中的全局数组。

这是示例:

global $array;

$array[0] = test;

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

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

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

但问题是该数组不受全局影响,而是局部影响。

你知道为什么吗?

谢谢你。

4

3 回答 3

5

您必须在每个函数中调用 global ,以便 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

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

避免吃一大块全球意大利面

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 (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";
}
于 2012-10-02T15:35:33.693 回答