说明:数组
看图函数
下面是几个例子学习
(1)普通传值引用指针
$param1=1;
$param2=2;
$param2 = &$param1; //把变量1的内存地址赋给变量2;此时的变量2和变量1全等;
echo $param2;// 1
$param1 = 5; //变量1和变量2是一处内存(也就是他们的引用地址是同样的),改变其中一个,另一个也被改变;
echo $param2; //显示为5code
(2) 函数传值引用对象
$param1 = 1;
$param2 = ''; //定义变量1
function add(&$param2) //传参数
{
$param2=3; //把3赋值给变量2
//return $param2; //返回变量2
}
echo $param1; //1
$param3=add($param1); //调用方法add,并将变量1的引用传给变量2 内存
echo $param3;//3
echo $param1;//3io
echo $param2;// ''function
给数组里面的键值各增长10; $arr = array(3,5); foreach($arr as $k=>$v){ $v+=10;//1.更改无效,至关于遍历出的键值扔给变量$v,而后更改变量$v的值,跟数组无关; echo $v." ";//输出13 15; } foreach($arr as $k=>$v){ $arr[$k]+=10;//2.更改有效,直接更改键名里面的值; echo $v;//输出3,5; } foreach($arr as &$v){ $v+=10;//3.更改有效,遍历的键值直接给了$v的地址,这个地址其实就是键名..$v+10就等于$arr[$k]+10; }
1 unset并无真正销毁变量的做用...仅仅是切断了变量与内存之间的关系,内存只要还被引用着就不会被释放; $b和$a同时指向1,切断其中$a的关系,$b仍是指向1,因此上题不报错,照样输出1。$a = 1; $b = &$a; unset($a); echo $b; //