本帖最后由 gaozhen1990 于 2011-12-01 10:17:20 编辑

解决方案 »

  1.   

       这样增加了效率function _is_numerice(&$var)
      

  2.   

    这么小的变量引用效率几乎没什么差别吧。数据量大的时候可能就有些提高。还有怎么不直接 is_numeric($var) 了得。怎又写个函数又套了一下。
      

  3.   

    (⊙o⊙)…。  是这样的, is_numerice只是个简单例子,里面还有好多分析代码的。  function _is_numerice(&$var) 和直接使用  _is_numerice(&$var) 用什么区别吗?
      

  4.   

    1、由于只改变了变量的传递方式,并没有改变运算逻辑,所以只考虑内存的使用情况
    function _is_numerice($var)
    {
        if(is_numeric($var))
        {
    echo memory_get_usage(),PHP_EOL;
            return true;
        }
    }$var = 123456;echo memory_get_usage(),PHP_EOL;
    _is_numerice($var); echo memory_get_usage(),PHP_EOL;
    _is_numerice(&$var);  //此处使用&, 是否增加了效率?
    得到
    696192
    696192
    696192
    696192
    结论:传值和传引用使用的内存是一样的2、这种传引用的方式在 php 5.3 中已废止
    Deprecated: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of _is_numerice(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in ...已过时:调用时按引用传递已经过时,如果你想通过引用传递,修改_is_numerice声明()。如果你想使调用时按引用传递,你可以设置在您的INI文件在D allow_call_time_pass_reference
      

  5.   

    个人感觉,加引用和不加引用类似C里面的值传递和指针传递_is_numerice($var); 
    是在内存中复制一个和$var变量同样的值变量,把这个新变量交给函数使用,所以函数的运行不会影响外部的$var_is_numerice(&$var);
    是把$var的内存地址传给函数使用,函数运行的操作会直接影响函数外部的$var弄个测试:$var=12345;
    function test($a)
    {
    return ++$a;
    }
    echo test($var).'<br>'.$var.'<br>';
    echo test(&$var).'<br>'.$var.'<br>';