由于某种原因,我需要调用一个函数来改变数组中的某个值。 但是,根据我编写的代码,该值仅在函数内部更改,并在全局范围内保持不变。 不知道我是否错过了一些神奇的东西?
<?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]。
答案 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);
两个例子中的输出都是相同的。