Php阵列:发现差异!

时间:2010-12-11 13:06:00

标签: php arrays pass-by-reference

我无法弄清楚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作为数组传递时,显示第一个之后的所有键都是指向相同值的指针(?)

1 个答案:

答案 0 :(得分:2)

// ...
foreach($params as &$p) {
    $arrayParams[] = &$p;
}
unset($p);
// ...
除非您指定在迭代中使用引用,否则

foreach将对$params - 数组的副本进行操作。