zoukankan      html  css  js  c++  java
  • 引用传参的错误报告与递归转义

    下面例子:

    $age = 10;
    function grow($age) {
        $age += 1;
        return $age;
    }
    
    echo grow(&$age),'<br />';  // 11
    echo $age,'<br />';         // 11
    

     在上例中,调用函数后,全局变量也受到了影响.
    因为我们做"引用传参",这种方式,违背"封装"的概念,影响代码的整洁.
    因此,不推荐这么做.

    在PHP5.3,php.ini中,有一个选项,如下

    allow_call_time_pass_reference = Off
    

     如果为off,则函数引用传参时,会报Warning: Call-time pass-by-reference has been deprecated如果为on,则不报warning

    在PHP5.4中,彻底废除了函数引用传参,使用函数引用传参时,
    报Fatal error: Call-time pass-by-reference has been removed


    解决办法:
    1:allow_call_time_pass_reference = On 但这不是根本解决办法,如果移植5.4,还是不行.
    2:修改自己的代码,不要函数引用传参.

    函数:

    // 递归转义数组
    function _addslashes($arr) {
        foreach($arr as $k=>$v) {
            if(is_string($v)) {
                $arr[$k] = addslashes($v);
            } else if(is_array($v)) {  // 再加判断,如果是数组,调用自身,再转
                $arr[$k] = _addslashes($v);
            }
        }
        
        return $arr;
    }
    
  • 相关阅读:
    IOS7 About
    iOS Newsstand Tutorial
    微信开发商
    网络流量监控相关资料
    EDM about
    thinkphp验证码的实现
    thinkphp表单上传文件并将文件路径保存到数据库中
    thinkphp分页实现
    linux 系统简单备份
    Google Hacking总结
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4759896.html
Copyright © 2011-2022 走看看