【问题标题】:Using function to convert array elements to references suddenly returns values instead使用函数将数组元素转换为引用突然返回值
【发布时间】:2016-12-04 01:47:01
【问题描述】:

升级到 PHP 7.0.9 后,我的网站崩溃了(以前的版本也在 7.0.x 中)。显然,最新更新中的引用发生了一些变化。我通过 call_user_func_array 使用 mysqli 函数 mysqli_stmt_bind_param 需要值作为参考。因此,我使用一个函数将数组从值转换为引用,如下所示:

function refValues($array){

    $refArray = array();
    foreach($array as $key => $value){
        $refArray[$key] =& $array[$key];
    }

    return $refArray;
}

返回数组时出现问题,因为所有引用都变回了值。之前情况并非如此,因为它在更新 php.ini 之前可以完美运行。临时解决方法是不使用函数,但我真的不想这样做。有人有什么建议吗?这是最新版本的 php 中引入的错误,还是我不知道的重大更改?

【问题讨论】:

    标签: php arrays mysqli php-7


    【解决方案1】:

    定义你的函数为

    function refValues(&$array){
    

    以便您“通过引用”传递 $array,否则您的 $refArray 引用指向的数组值仅在函数内部作用域

    Demo

    【讨论】:

    • 谢谢,解决了。不敢相信我错过了。有点让我更加好奇为什么它在更新到最新的 php 7 版本之前会起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多