PHP引用(&)使用简介
- 编程技术
- 时间:2018年11月24日 20:15
- 1195人已阅读
简介个人博客,用来做什么?我刚开始就把它当做一个我吐槽心情的地方,也就相当于一个网络记事本,写上一些关于自己生活工作中的小情小事,也会放上一些照片,音乐。每天工作回家后就能访问自己的网站,一边听着音乐,一边写写文章,回想之前踩过的坑。
“引用”的概念
跟C和java这些语言一样,PHP也是有引用这个概念的,指的是不同的名字(变量)访问同一个变量内容。表现为在变量或者函数、对象等前面加上&符号
“引用”的相关例子
1. 变量的引用
<?php $a = "123"; $b = &$a; var_dump($a);//这里输出:123 var_dump($b);//这里输出:123 $b="321"; var_dump($a);//这里$a的值变为321 所以输出321 var_dump($b);//这里输出321 ?>
2. 变量引用和函数
<?php $a = 10; //调用函数的时候用了引用了变量,修改了变量指向的内容 function add(&$number){ $number += 1; return $number; } var_dump($a);//输出11 var_dump($a);//输出11 add($a);//调用函数的时候用了引用了变量a,修改了变量a指向的内容 var_dump($a);//输出12 $c = add(1);//报错,变量才能作为引用对象 ?>
3. 函数的引用返回
<?php static $b=0;//申明一个静态变量 function &test(){ $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 ?>
对PHP“引用”看法
php中对于地址的指向(类似指针)功能不是由用户自己来实现的,是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。有点鸡肋,一般我也不常用,有时用于对某个变量进行复杂操作。如下面,我需要从15道题目随机选取5道且不重复的题目,由于有递归,用上引用的话方便变量的绑定
<?php /** * Author: kayoon * Date : 2018/11/24 * Time : 下午12:08 * Desc : function 用递归方式从15道题中筛选不重复的5道题目 * Ver : v1.0 * @param $randArray 题目库的id或者下标集合 * @param $count 剩余需要抽取的题目 * @param $resultArray 抽渠到的题目 * @return mixed */ function array_rand($randArray,$count,&$resultArray){ $randNum = rand(0,count($randArray)-1); array_push($resultArray,$randArray[$randNum]); unset($randArray[$randNum]); $count = $count - 1; $randArray = array_values($randArray);//重置索引 if($count == 0){ return $resultArray; } else{ array_rand($randArray,$count,$resultArray); } } /* *抽选题库 */ $randArray = array(); for ($i = 1; $i <= 15; $i++ ){ array_push($randArray,array("index"=>$i)); } $oriArray = array();//初始化 array_rand($randArray,5,$oriArray); var_dump($oriArray); //选中的第一道题是题目库第9题,选中的第二道题是题目库的第十题,以此类推 ?>