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

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中关于引用(&)详解.docx

    ### PHP中关于引用(&)详解 #### 引言 在PHP编程中,引用是一个非常重要的概念,它使得多个变量能够共享同一份数据。不同于其他语言中的指针机制,PHP中的引用更加安全且易于使用。本文将详细介绍PHP中引用的各种...

    PHP的引用详解

    值得注意的是,PHP5开始,使用new关键字创建对象默认会返回一个引用,所以用=&去接收对象时,会产生一条E_STRICT级别的消息。这是由于Zend引擎的限制。 此外,在foreach语句中,如果给一个具有引用的变量赋值,那么...

    php引用传值实例详解学习

    PHP引用传值是一种将一个变量标识符与另一个变量标识符绑定在一起的方式,使得这两个标识符能够访问同一个变量的值。通过使用引用操作符(&),PHP允许开发者创建指向同一数据的变量别名,而不是创建变量的副本。...

    PHP引用(&)各种使用方法实例详解

    通过引用,我们可以用不同的名字访问同一变量内容,实现高效的数据操作。但在使用引用时需要注意,错误的引用可能会导致变量值的意外改变,因此要小心使用。此外,PHP在引用方面的某些行为(如函数引用返回的特定...

    PHP7扩展向PHP添加了SoftandWeak引用支持

    这次我们关注的是一个针对PHP7的特殊扩展,它引入了Soft和Weak引用的概念。这两个概念在许多高级编程语言中都有所体现,但对于PHP来说,它们是相对较新的特性。让我们深入探讨一下它们的作用以及如何在PHP7中使用。 ...

    深入分析PHP引用(&)

    PHP中的引用是符号表别名的概念,其作用是允许两个或更多的变量名指向同一个变量内容。这与C语言的指针不同,因为引用是通过符号表来实现的,而不是通过内存地址。在Unix系统中,文件名可以被视为目录条目,而文件...

    Php引用计时器和垃圾回收机制.pdf

    在PHP编程语言中,引用计数器和垃圾回收机制是两个关键的概念,它们与变量的生命周期和内存管理密切相关。PHP是一种动态类型的语言,其变量的行为和内存管理方式与其他语言有所不同,尤其是在处理引用和数据结构时。...

    PHP 基础实例教程(PHP网页实例版)

    PHP变量自增/减与变量引用 PHP 比较操作符 PHP 逻辑操作符 PHP 三元操作符 PHP 错误抑制操作符 PHP 执行操作符 PHP 数组操作符 PHP 操作符综合使用 PHP 条件判断/循环 PHP if语句 PHP else语句 PHP elseif语句 PHP ...

    PHP中文教程:PHP面向对象语法(构造函数、析构函数、引用)

    本教程将深入探讨PHP中的面向对象特性,特别是构造函数、析构函数以及引用的使用。 **构造函数**是类的一个特殊方法,当创建一个新的对象实例时,PHP会自动调用构造函数来执行初始化操作。构造函数的名称与类名相同...

    Php引用计时器和垃圾回收机制.docx

    《PHP引用计数器与垃圾回收机制详解》 PHP作为一种动态类型的编程语言,其变量管理机制包括引用计数器和垃圾回收机制,这两者是PHP内存管理的核心。本文将深入探讨这两个概念,以及它们在PHP中的实现方式。 首先,...

    PHP变量引用(&)、函数引用和对象引用_.docx

    ### PHP中的变量引用、函数引用和对象引用解析 #### 变量引用 在PHP中,变量引用是指两个或多个变量共享同一内存空间的情况。当一个变量通过引用赋值给另一个变量时,它们实际上指向相同的内存位置,而不是进行值的...

    Php引用计时器和垃圾回收机制[参照].pdf

    在PHP编程语言中,引用计数器和垃圾回收机制是两个关键的概念,它们与变量管理和内存管理密切相关。这里我们将深入探讨这两个概念以及它们在不同PHP版本中的实现。 首先,让我们理解PHP变量的基本结构。PHP使用`...

    php8.0.2nts - 用于Windows上使用的php压缩包

    2. **命名空间引用**:在PHP 8.0中,可以使用`\`字符来引用命名空间,这使得代码更加清晰且易于理解。 3. **属性声明**:现在可以使用`public`, `protected`, `private`关键字在类中声明属性,类似于方法声明,提高...

    PHPweb2.0网站开发高级开发技术—PHP面向对象语法(构造函数、析构函数、引用)

    课程由经验丰富的方老师主讲,内容涵盖了 PHP 面向对象的基本概念及其高级应用,如构造函数、析构函数以及引用等重要知识点。 #### 二、面向对象基础 — 构造函数 **构造函数定义**: - 构造函数是一种特殊的类...

    Php引用计时器和垃圾回收机制分享.pdf

    在PHP编程语言中,引用计数器和垃圾回收机制是两个关键的概念,它们与变量的生命周期管理和内存管理紧密相关。让我们深入探讨这两个机制以及它们在PHP中的实现。 首先,PHP是一种弱类型的语言,这意味着变量的类型...

    php引用返回与取消引用的详解

    一、引用返回引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。不要用返回引用来增加性能,引擎足够聪明来自己进行优化。仅在有合理的技术原因时才返回引用!要返回引用,使用此语法:复制代码 代码...

    PHP的FPDF的中文包chinese.php

    FPDF(Free PDF Generator)是一个用PHP编写的开源库,用于生成PDF文档。这个库的主要优点是它完全用PHP编写,无需任何外部依赖,因此在服务器端生成PDF文档时非常方便。"chinese.php"是FPDF的一个扩展,专门为解决...

    PHP—引用文件.docx

    在PHP编程中,引用文件是一种常见且至关重要的技术,它允许开发者将常用代码段、页眉、页脚或通用功能组织到单独的文件中,然后在多个页面中进行调用,以提高代码的复用性和维护性。这种技术被称为服务器端引用(SSI...

    php中引用&的用法分析【变量引用,函数引用,对象引用】

    PHP 的引用允许你用两个变量来指向同一个内容 <?php $a=ABC; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b=EFG; echo $a;//这里$a的值变为EFG 所以输出EFG echo $b;//这里输出EFG ?> 函数的...

Global site tag (gtag.js) - Google Analytics