PHP函数数组参数引用

标签 php arrays function reference

为什么这段代码不能像我预期的那样工作? 在 Test(&$array) 函数中,我会将 ref 参数设置为全局 $array1 但这不起作用。

$array1 = array();
$array2 = array();

function Test(&$array)
{
    global    $array1;
    $array = &$array1;

    $array['inside'] = 'inside';

}

//由函数设置:

Test($array2); 
$array2['test1'] = 'test1';

var_dump($array1); //array('inside' => 'inside') ** WHERE IS THE 'test1'  key? **
var_dump($array2); //array('test1' => 'test1')   ** WHERE IS THE 'inside' key? **

//没有函数的设置:

$array2 = &$array1;
$array2['test2'] = 'test2';

var_dump($array1); //array('inside' => 'inside', 'test2' => 'test2') ** FINE **
var_dump($array2); //array('inside' => 'inside', 'test2' => 'test2') ** FINE **

编辑:

很明显,如果我将 $array 更改为指向 $array1,那么 $array1 将具有 'inside' => 'inside' 值 outside 函数。有什么不清楚的是,如果我设置 $array2['test1'] = 'test1' 为什么不也更改此 $array1?它在函数内部之前“链接”!

最佳答案

当您在函数内部执行 $array = &$array1; 时,您正在更改局部变量 $array 的值。

它曾经有对 $array2 的引用,但现在它包含对 $array1 的引用。因此,当您修改 $array 时,您正在修改 $array1

关于PHP函数数组参数引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14326093/

相关文章:

javascript - 通过ajax post和codeigniter加载函数加载页面内容时,head部分的一些jquery函数无法调用

php - jQuery 自动填充表单无法工作

PHP Laravel : Conditional update query from array

ios - Swift - 使用 'as! Dictionary<String, AnyObject>' 时为零

c++ - inline 或 constexpr 函数的多个定义的含义

php - 将标签包裹在某些单词周围

java - 在浮点和整数数组中查找最大元素索引的常用方法

c - Arduino:生成 100 个 int 随机数组会导致前 10 个整数为 0

javascript - 响应式网站上独立的桌面和移动 jQuery 功能

Javascript For/in 循环不起作用 - 对象属性未定义错误