PHP引用传值规范问题
在我上一篇: shopnc 商城源码阅读笔记--开篇概述 中,遇到了一个PHP引用传值导致的错误,情况大致如下:

在我查阅PHP官方文档 的中文版的时候 http://php.net/manual/zh/language.references.pass.php
看到如下描述:
注意在函数调用时没有引用符号——只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了。在最近版本的 PHP 中如果把 & 用在foo(&$a); 中会得到一条警告说“Call-time pass-by-reference”已经过时了。

然后切换到英文版文档得到以下描述:
Note: There is no reference sign on a function call - only on function definitions. Function definitions alone are enough to correctly pass the argument by reference. As of PHP 5.3.0, you will get a warning saying that "call-time pass-by-reference" is deprecated when you use & in foo(&$a);. And as of PHP 5.4.0, call-time pass-by-reference was removed, so using it will raise a fatal error.

坑si人不偿命有木有啊!
一个轻轻地,温柔地告诉你,没事的,不会很痛,一下子就过了,让你有用@屏蔽警告的冲动
实际上这会让你痛得死去活来,根本无法继续。
所以这个问题根本没有什么为什么,非常清楚
光是函数定义就足够使参数通过引用来正确传递了,如
function test(&var){
}
不必在调用test的时候再进行引用传递,如 test(&var); 否则会报致命错误,跟没写分号一样,没有什么为什么!
另外获得一个宝贵经验:以后在看官方文档的时候,不要看中文版.
如果英文不好,可以搜集相关的博文,看别人总结出来的知识也比看中文官方文档好。
PHP引用传值规范问题的更多相关文章
- Java基础必备 -- 堆栈、引用传值、垃圾回收等
在Java中,对象作为函数参数的传递方式是值传递还是引用传递?String str = "abc" 与 String str = new String("abc&quo ...
- PHP和CS的引用传值
PHP的引用传值 function change_value($num){ $num+=2; } $age = 3; change_value(&$age); echo $age; CS的引用 ...
- 从一次面试经历谈PHP的普通传值与引用传值以及unset
关于这个概念一般都会在PHP的第一堂课说变量的时候给介绍,并且我以前还给其他PHPer介绍这个概念.但是作为一个工作一段时间的PHPer的我,竟然在面试的时候一下子拿不定主意最后还答错了,很觉得丢脸( ...
- Python引用传值总结
Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变. 这里需要注意的是如果传的参数类型是不可改变的,如String类型.元组类型,函数 ...
- php引用传值
isset();判读值是否值在 unset();取消变量 <?php$a=array("a","b","c");$b=$a;$b[2] ...
- php普通传值和引用传值 (相当通俗易懂的一篇讲解)
首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...
- foreach 引用传值&
foreach 引用传值& php 怎么在foreach中循环数组 ,的时候添加元素跟值 foreach($arr as $key => &$vo){ //注意,由于上面遍 ...
- Android之线程安全的单例模式,Adapter注意事项之引用传值
线程安全的单例模式单位模式一般写法如下: public static FestivalLab mInstance; private FestivalLab() { } public static Fe ...
- PHP的普通传值与引用传值以及unset
首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...
随机推荐
- Helpers\CSRF
Helpers\CSRF CSRF Protection The CSRF helper is used to protect post request from cross site request ...
- iOS 并发概念浅析
在进行iOS开发过程中,我们常会遇到网络请求.复杂计算.数据存取等比较耗时的操作,如果处理不合理,将对APP的流畅度产生较大影响.除了优化APP架构,并发(concurrency)是一个常用且较好的解 ...
- Android 快速开发框架网络篇-Android-Async-Http
一.基本用法 AsyncHttpClient client = new AsyncHttpClient(); client.get("http://www.google.com", ...
- Android_listview_scrollListener
layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...
- java编程常用技术
一:将String字符串放在最前面 防止发生NullPointerException异常,我们通常把String字符串放在equals方法的左边来比较,这样可以有效的避免 空指针异常的发生. 第一种情 ...
- 编辑一个小的smarty类
首先先建立两个文件夹,一个temp,存储编译前的文件,一个comp,存储编译后的文件,编译前的文件使用{$title}代替<?php echo $title; ?>,然后将前者编译成后者再 ...
- android NDK 笔记
*************************************************华丽的分割线********************************************* ...
- C#数据等待
1 public bool WaitData() 2 { 3 bool states = false; 4 try 5 { 6 DateTime Get_Time = DateTime.Now; 7 ...
- Response.Redirect("");Server.Transfer("")跳转页面的区别
Response.Redirect("") Server.Transfer("") 转向其他站点 能 不能(只能站内转向) 是否可带QueryString参 ...
- python学习第二天:数字与字符串转换及逻辑值
1.数字与字符串的转化 #1.数字转字符,使用格式化字符串: *1.demo = ‘%d’ % source *2.%d整型:%f 浮点型 :%e科学计数 ...