`
bardo
  • 浏览: 382048 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11919
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:10230
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9582
社区版块
存档分类
最新评论

PHP引用的妙用

    博客分类:
  • PHP
阅读更多

在:http://bardo.iteye.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);

 

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

 

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

 

1
0
分享到:
评论
1 楼 输入法 2011-04-22  
的确妙用!

相关推荐

    PHP中extract()函数的妙用分析

    此外,`EXTR_REFS`标志是自PHP 4.3.0版本引入的,这意味着变量将作为引用提取,这意味着导入的变量仍然指向`$var_array`数组中的原始值。这在某些情况下可能很有用,比如当你希望改变数组中的值时,同时改变由`...

    PHP中的extract的作用分析

    addslashes — 使用反斜线引用字符串 extract(addslashes($_POST)); –处理POST表单 把... 您可能感兴趣的文章:VBScript版的PHP extract()函数PHP中extract()函数的定义和用法PHP中extract()函数的妙用分析PHP e

    MySQL用户密码中的特殊字符叹号(!)的妙用

    )在MySQL用户密码中的妙用以及可能导致的问题。 首先,我们要明白,叹号(!)在Linux或Unix shell中是一个特殊的字符,它用于调用历史记录中的命令。当在命令行中输入含有叹号的密码时,shell可能会尝试解释其...

    PHP中shuffle数组值随便排序函数用法

    最后,对于熟悉JavaScript的开发者来说,PHP中的shuffle函数和JavaScript中的`Math.random()`用于数组随机排序的方法有异曲同工之妙。在JavaScript中,可以通过`Math.random()`生成随机数来对数组进行随机排序,而在...

    PHP耦合设计模式实例分析

    在设计时,SimpleRouter需要持有SimpleRouterFrame的引用以便提供输出功能,这样的设计导致了当SimpleRouterFrame修改时,SimpleRouter也需要随之调整,增加了维护的复杂性。 为了解决这个问题,我们可以引入设计...

Global site tag (gtag.js) - Google Analytics