php中&的使用
来源:互联网 发布:凯立德v7端口修改工具 编辑:程序博客网 时间:2024/06/08 06:52
引用传递:
通常在函数的参数列表里的参数是传值传递,如:function
**注意**-------
$a = 3;
function countnum(&$b) {
}
countnum($a);
echo $a;
引用返回:
- function
&test() - {
- static
$b=0;//申明一个静态变量 - $b=$b+1;
- echo
$b; - return
$b; - }
-
- $a=test();//这条语句会输出 $b的值 为1
- $a=5;
- $a=test();//这条语句会输出 $b的值 为2
- $a=&test();//这条语句会输出 $b的值 为3
- $a=5;
- $a=test();//这条语句会输出 $b的值 为6
在 里面如果用到的是$a = test();
$a = &test();
注: $a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向了同一个地方.
PHP 的引用允许你用两个变量来指向同一个内容。
$a=test()方式调用函数,只是将函数的值赋给$a而已, 而$a做任何改变 都不会影响到函数中的$b.
而通过$a=&test()方式调用函数呢, 他的作用是将return $b中的 $b变量的内存地址与$a变量的内存地址,
指向了同一个地方. 即产生了相当于这样的效果($a=&$b; $a和$b指向了同一个地方) 所以改变$a的值,也同时改变了$b 的值
$a=&test();
再一个例子:
- function
&abc(& $a){//函数作用:接收变量引用,函数主体里的代码可以直接改变变量的值,而且在 6. 里将修改 -
$a = "def";//完值后的变量$c的引用附给了$b -
return $a; - }
- $c
= "abc";//赋值"abc" - $b
= $c);&abc( 所以函数内部$c被赋值成"def" ,按传址方式返回给$b, 所以$b也指向这个字串. - echo
$b; - $b
= "abc";//把$b赋值为"abc"(目的是检测$c是否变化). - echo
$c;
函数返回值此时不能是地址, PHP的语法不允许return后面跟&$var的方式, 就写return $var就可以了.
-----------数组中&的应用-----------
另一个例子:
如有一个数组 要进行排序,现在把它传到一个排序函数里面进行排序:
function sortarr(&$arr) {
$len = count($arr);
for ($i = 0; $i < $len; $i++) { //从左开始往右。大的往右挪。
for ($j = 0; $j < $len-$i-1; $j++) {
if ($arr[$j] > $arr[$j+1]) {
$ano = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $ano;
}
}
}
}
$arr = array(1, 23, 2, 15, 99, 16, 99999, 45, 100, 25, 6, 322, 555);
sortarr($arr);
foreach ($arr as $value) {
echo $value.' ';
}
在定义排序函数的时候如果参数列表是$arr的话,那么数组是传值传递,即在函数里面拷贝了一个一模一样的数组,所以在函数里面做出的排序改变的仅仅是拷贝值,那么在调用完函数后在输出的话,数组顺序仍然没有改变。
如果参数列表时&$arr的话,那么数组就是传递的是数组的地址,那么在函数里面做出的任何对数组的改变都会影响到那个数组,在调用完函数后在输出的话可以发现数组顺序发生了改变。
- php中&的使用
- [李景山php] php中call_user_func_array 的使用
- PHP中Session的使用
- php中cookie的使用
- php中类的使用
- PHP中全局变量的使用
- PHP中字符串的使用
- php中__autoload的使用
- PHP中Imagick的使用
- PHP中AJAX的使用
- php中socket的使用
- php中session的使用
- PHP中smarty的使用
- PHP中cookie的使用
- PHP中redis的使用
- PHP中并发的使用
- php中socket的使用
- PHP中redis的使用
- Good Bye 2013---B. New Year Present
- PHP中的函数递归调用
- Android事件传递机制(更加深入的了解事件的触发过程)
- PHP中被调用的PHP文件中有函数则调用文件里不能重复定义的问题
- Amazon EC2 搭建FTP SERVER和weblogic 注意事项
- php中&的使用
- 不使用递归实现的快速排序
- windbg检测句柄泄露(定位到具体代码)
- Codeforces Round #191 (Div. 2)---A. Flipping Game
- 第一天
- assert()函数用法总结
- phpExcel输出xls文档显示乱码的解决办法
- 安卓笔记android.os.NetworkOnMainThreadException异常
- 有关Unicode和非Unicode之间的转化问题