使用函数全局更改数组值

时间:2011-01-29 02:09:08

标签: php arrays function

由于某种原因,我需要调用一个函数来改变数组中的某个值。 但是,根据我编写的代码,该值仅在函数内部更改,并在全局范围内保持不变。 不知道我是否错过了一些神奇的东西?

<?php
$test=array(0=>"a",1=>"b");

function myTest(){
$test[0]="c";
print_r ($test);
}

myTest();
print_r($test);
?>

理想情况下,输出应该是, 数组([0] =&gt; c [1] =&gt; b) 数组([0] =&gt; c [1] =&gt; b)

但是,从我的代码中,结果是 数组([0] =&gt; c)数组([0] =&gt; a [1] =&gt; b) 我没有更改数组值,也丢失了数组[1]。

2 个答案:

答案 0 :(得分:2)

您需要让您使用global关键字:

function myTest(){
   global $test;
   $test[0]="c";
   print_r ($test);
}

答案 1 :(得分:2)

虽然您可以轻松(并且懒洋洋地)使用global关键字来使其发挥作用,但这是一种非常沮丧的做法(search Stack Overflow to find out why)。

相反,你应该让你的函数接受一个数组作为参数,并返回一个修改过的数组作为结果:

$test = array("a","b");

function myTest(array $test) {
   $test[0] = "c";
}

$test = myTest($test);
print_r($test);

渲染:

Array (
   [0] => c
   [1] => b
)

或者,您可以接受数组作为参考并直接处理它(无需返回并重新分配):

$test = array("a","b");

function myTest(array &$test) {
   $test[0] = "c";
}

myTest($test);
print_r($test);

两个例子中的输出都是相同的。