(⊙o⊙)…。 是这样的, is_numerice只是个简单例子,里面还有好多分析代码的。 function _is_numerice(&$var) 和直接使用 _is_numerice(&$var) 用什么区别吗?
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
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
是在内存中复制一个和$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>';