PHP代码之使用引用
2017-07-17
php
在PHP 中引用的意思是:不同的名字访问同一个变量内容。php的引用(就是在变量或者函数、对象等前面加上&符号)最重要就是删除引用的变量,只是引用的变量访问不了,但是内容并没有销毁。
场景一:遍历一个数组获取新的数据结构
也许你会这样写:
// 申明一个新的数组,组装成你想要的数据
$tmp = [];
foreach ($arr as $k => $v) {
// 取出你想要的数据
$tmp[$k]['youwant'] = $v['youwant'];
...
// 一系列判断得到你想要的数据
if (...) {
$tmp[$k]['youwantbyjudge'] = 'TIGERB';
}
...
}
// 最后得要你想要的数组$tmp
-------------------------------------------------------
// 也许你觉着上面的写法不是很好,那我们下面换种写法
foreach ($arr as $k => $v) {
// 一系列判断得到你想要的数据
if (...) {
// 复写值为你想要的
$arr[$k]['youwantbyjudge'] = 'TIGERB'
}
...
// 干掉你不想要的结构
unset($arr[$k]['youwantdel']);
}
// 最后我们得到我们的目标数组$arr
接下来我们使用引用值:
foreach ($arr as &$v) {
// 一系列判断得到你想要的数据
if (...) {
// 复写值为你想要的
$v['youwantbyjudge'] = 'TIGERB'
}
...
// 干掉你不想要的结构
unset($v['youwantdel']);
}
unset($v);
// 最后我们得到我们的目标数组$arr
使用引用是不是使我们的代码更加的简洁,除此之外相对于第一种写法,我们节省了内存空间,尤其是再操作一个大数组时效果是及其明显的。
场景二:传递一个值到一个函数中获取新的值
基本和数组遍历一致,我们只需要声明这个函数的这个参数为引用即可,如下:
function decorate(&$arr = []) {
# code...
}
$arr = [
....
];
// 调用函数
decorate($arr);
// 如上即得到新的值$arr,好处还是节省内存空间