我无法弄清楚PHP片段中$arrayParams
的最终结果之间的差异。
该函数采用字符串$types
和另一个名为$params
的参数。 $params
本身可以是任何类型的单个值,也可以是任何类型的值数组。
此代码的目的是稍后在代码中绑定到call_user_func_array()
。
最终的$arrayParams
变量需要是一个索引为0的数组作为原始$types
字符串,然后以下索引将作为{{1}传入的字符串的引用}}
$params
if(is_array($params)) {
// Make a new array, first index is $types string.
$arrayParams = array($types);
// Loop over $params array and add the pointer of each index to $arrayParams.
// ??? This doesn't seem to be working ???
foreach($params as $p) {
$arrayParams[] = &$p;
}
}
else {
// This works fine here, very simple.
$arrayParams = array($types, &$params);
}
var_dump
,当$array_params
作为数组传递时,显示第一个之后的所有键都是指向相同值的指针(?)
答案 0 :(得分:2)
// ...
foreach($params as &$p) {
$arrayParams[] = &$p;
}
unset($p);
// ...
除非您指定在迭代中使用引用,否则 foreach
将对$params
- 数组的副本进行操作。