以下内容不适用于对象,因为这里已经说明了。如果计划修改传递的值,则通过引用传递数组和标量值将只会节省内存,因为PHP使用了更改时复制(copy-on-change)策略。例如:

# $array will not be copied, because it is not modified.

function foo($array) {

echo $array[0];

}

# $array will be copied, because it is modified.

function bar($array) {

$array[0] += 1;

echo $array[0] + $array[1];

}

# This is how bar shoudl've been implemented in the first place.

function baz($array) {

$temp = $array[0] + 1;

echo $temp + $array[1];

}

# This would also work (passing the array by reference), but has a serious

#side-effect which you may not want, but $array is not copied here.

function foobar(&$array) {

$array[0] += 1;

echo $array[0] + $array[1];

}

总结:

>如果你在一个非常大的数组上工作,并计划在一个函数内修改它,你实际应该使用一个引用,以防止它被复制,这可能严重降低性能,甚至耗尽你的内存限制。>如果它是可以避免的(那是小数组或标量值),我总是使用没有副作用的函数式方法,因为只要你通过引用传递的东西,你永远不能确定传递的变量保持函数调用后,有时可能导致讨厌和难以找到的错误。> IMHO标量值不应该通过引用传递,因为性能影响不能太大,以至于证明代码中透明度的损失。

php 什么时候传引用,什么时候在PHP中使用传递引用?相关推荐

  1. java的弱引用_深入理解Java中的弱引用

    不久之前,我面试了一些求职Java高级开发工程师的应聘者.我常常会面试他们说,"你能给我介绍一些Java中得弱引用吗?",如果面试者这样说,"嗯,是不是垃圾回收有关的?& ...

  2. Iconfont的引用与在伪元素中的图标引用

    在线引用 复制font class的在线链接 <link rel="stylesheet" href="http://at.alicdn.com/t/font_21 ...

  3. python 引用局部变量_在Python中赋值之前引用的局部变量?

    我正在使用PyQt库获取网页的屏幕截图,然后阅读不同URL的CSV文件. 我保留一个变量Feed,每次处理URL时都会增加,因此应该增加到URL的数量. 这是代码: webpage = QWebPag ...

  4. java中是值传递引用传递_Java是按值传递而不是按引用传递

    java中是值传递引用传递 One of the biggest confusion in Java programming language is whether java is Pass by V ...

  5. 绝对引用计算机,计算机中绝对引用-excel中的绝对引用有什么用?请解释得通俗一点...

    Excel中的相对引用和绝对引用是怎么操作的? 对列标(ABCD等)和(123等)绝对引用时要加上"$",引用时不用加任何符号. 相对引用和绝对引用是指将公式向右或复制时列标和行号 ...

  6. 值传递 引用传递(传地址,传引用)的区别

    传值      是把实参的值赋值给行参      那么对行参的修改,不会影响实参的值           传地址      是传值的一种特殊方式,只是他传递的是地址,不是普通的如int      那么 ...

  7. Python基础day05【函数(函数传参的两种形式、函数形参)、拆包、引用、可变与不可变类型、引用做函数参数注意点】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]    目录 0.复习 1.函数传参的两种形式[掌握] 2.函数形参 2.1.缺省参数(默认参数) ...

  8. java如何做全局缓存_传智播客JNI第七讲 – JNI中的全局引用/局部引用/弱全局引用、缓存jfieldID和jmethodID的两种方式...

    讲解JNI中的全局引用/局部引用/弱全局引用.缓存jfieldID和jmethodID的两种方式,并编写两种缓存方式的示例代码. 1.从Java虚拟机创建的对象传到本地C/C++代码时会产生引用,根据 ...

  9. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

最新文章

  1. python的基本语句_Python的基本语句
  2. jsp动作之 getProperty
  3. 四张图揭秘中国AI人才现状
  4. UVALive 7324 ASCII Addition (模拟)
  5. win10偶然无法使用任务栏的问题解决办法
  6. 5m独享网站服务器,您真的需要独享5m云服务器吗?一文让您了解云服务器带宽计算方法,从此不再花冤枉钱...
  7. 将一个输入流(InputStream)写入到一个文件中
  8. 二进制转8421bcd码_中山CVI转CVBS芯视音科技原装
  9. 通过数据,从键盘录入学生考试科目数,然后依次录入学的每一科分数.使用数组存储学生分数.然后输出总分,平均分,简单易理解
  10. HTTP详解(1)-工作原理
  11. Matlab 马尔可夫链预测双色球
  12. Learun FrameWork V7.0,敏捷开发向导快速配置
  13. 蛋白质配体复合物-分子动力学模拟Gromacs
  14. java你好代码_Java 基础——1 向Java世界说你好
  15. ARCH模型的R语言实现
  16. android加固!渣本毕业两年经验,终局之战
  17. 双系统蓝牙键盘的共享配对解决办法的简要步骤:win + arch~IRK、LTK、ERand、EDIV
  18. 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90-100分为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。
  19. 3dmax 毛发、毛头麻绳
  20. npm‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

热门文章

  1. AI领域都在用Python即将被淘汰?网友预测未来的编程语言不会是TA
  2. 人类历史上有过哪些令人毛骨悚然的实验?
  3. 施一公获百万科学界大奖!科研大牛如何炼成?
  4. 网友的有趣发现:冬天里,欧洲古建筑上的雕像都好像“生病了”
  5. 如果要做小程序创业,哪种方式最赚钱?
  6. 入门 | 一文看懂卷积神经网络
  7. 二维码提升对比度文献调研(3)--A Low-Complexity Algorithm for Contrast Enhancement of Digital Images
  8. linux内核态获取ip地址,Linux内核支持动态获取IP地址
  9. UnrealEngine4 - 关于UObject被自动GC垃圾回收的巨坑
  10. LPTSTR、LPCSTR、LPCTSTR、LPSTR的区别