最近,我试图创建一个 PHP 数组的副本,但我希望副本包含对值的引用,而不是包含值的数组副本。
我这样做的主要动机是将该call_user_func_array
函数与mysqli_stmt_bind_param
andmysqli_stmt_bind_result
函数结合使用来创建一个包装函数来处理准备好的语句。
在试图弄清楚如何做到这一点时,我遇到了以下代码:
$arr = array(1, 2, 3, 4); // The array to make a copy of with references
$ref_arr = array(); // The new array that will contain the references
foreach ($arr as $key => &$val) {
$ref_arr[$key] = &$val;
}
上面的代码实际上通过创建与第一个相同的第二个数组给了我想要的东西,除了数组中的元素是对值的引用而不是值本身,但是,我不明白它是如何工作的。
我理解 & 符号 ( &
) 在 PHP 中的作用,但我不明白为什么$val
foreach 循环中的两个实例都必须引用为&$val
.
如果有人可以解释上面 foreach 循环中到底发生了什么,我将不胜感激。
非常感谢。