PHP引用的妙用_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP引用的妙用

PHP引用的妙用

 2011/1/9 9:16:40  bardo  http://bardo.javaeye.com  我要评论(0)
  • 摘要:在:http://bardo.javaeye.com/admin/blogs/848136一文中我已详细讲了什么是引用。这里给大家讲一讲引用的妙用。1、引用传参,这有两个作用,其一,使得外部变量与函数中变量同步更改。其二,实现无return却能返回多个参数。2、对于大的数据结构,减少复制,从而减小内存消耗。这是常用的用途。引用实际上,还有一些奇妙的用途不为人所知。目前刚发现了一个:假如一个文件中有代码,如果我们在SHELL状态下使用:$host=$_SERVER['HTTP_HOST']
  • 标签:PHP

在:http://bardo.javaeye.com/admin/blogs/848136?一文中我已详细讲了什么是引用。这里给大家讲一讲引用的妙用。

1、引用传参,这有两个作用,其一,使得外部变量与函数中变量同步更改。其二,实现无return却能返回多个参数。

2、对于大的数据结构,减少复制,从而减小内存消耗。

这是常用的用途。引用实际上,还有一些奇妙的用途不为人所知。目前刚发现了一个:

?

假如一个文件中有代码,如果我们在SHELL状态下使用:

$host=$_SERVER['HTTP_HOST'];

日志中就会出现notice信息。当然,你关闭了,并不代表它不产生。但为了能使网页与SHELL均能使用,我们还是要这样:

其一:

使用 error_reporting(245)将其关闭。

第二,直接阻止其出现:

$host=@$_SERVER['HTTP_HOST'];

第三、使用三元运算符。

$host=(isset($_SERVER['HTTP_HOST']))?$_SERVER['HTTP_HOST']:'';

?

但这均是常见的方法。

实际上,我们还有一种,让它不会出现notice信息的方法:

?

$host=& $_SERVER['HTTP_HOST'];

?

这样,我们就保证了,传参时绝不使用 isset, 或 @

?

只有在变量真正使用时,我们才用isset。这不仅是减少代码字符数,同时也是加快运行效率的手段。

?

好了,现在你不妨试一下,下面的代码,是否是这样运行的。

?

   error_reporting(E_ALL);
    $ar=array();
    $b=& $ar['test'] ;  //你可以把前面的方法在这一行都试一下
    $c='23' . $b .'31';
    echo($c);

?

?当然,使用引用,最大的注意事项是,你要保证在使用中不能改变它。否则,引起原变量同步变更,你必须要是事先预知的。

?

所以,如果不能预知, 还是使用 @

?

发表评论
用户名: 匿名