将值数组转换为引用数组

时间:2011-09-12 01:55:34

标签: php

当我使用print_r检查此函数的内容时$arr$refs是相同的。

奇怪,因为这是here给出call_user_func_array引用数组的问题的解决方案。

此函数是否返回引用数组或值数组?

function makeValuesReferenced($arr){ 
    $refs = array(); 
    foreach($arr as $key => $value) 
        $refs[$key] = &$arr[$key]; 
    return $refs; 

}

功能调用:

print_r($db_->ref_arr(array(1,2,3,4)));

结果

Array ( [0] => 1 
        [1] => 2 
        [2] => 3 
        [3] => 4 )

信息。准备好的陈述here

信息。在call_user_func_array here

信息。关于call_user_func_array here

的引用的必要性

此函数是否返回引用数组或值数组?

更新:使用var_dump并添加& to参数给出了类似的结果...添加了返回int的验证。

  

1 2 3 4 array(4){[0] => & int(1)1 => & int(2)2 => & int(3)3 =>   & int(4)}

2 个答案:

答案 0 :(得分:3)

不,您的函数不会返回引用数组。 如果要返回引用数组,请更改为:

function makeValuesReferenced(&$arr){ 
    $refs = array(); 
    foreach($arr as $key => $value) 
        $refs[$key] = &$arr[$key]; 
    return $refs; 

}

PS:您应该使用var_dump进行检查。

答案 1 :(得分:0)

有一种替代方法可以执行此操作,包括辅助函数。

//Helper function
function makeValueReferenced(&$value) {
    return $value;
}

function makeValuesReferenced($array) {
    return array_map("makeValueReferenced", $array);
}