关于PHP Foreach & 的用法
以前一直想过一个问题,& 这个符号的用法个人目前除了在if判断里面用,还有就是在循环里面使用,但是循环里面使用它到底是有啥用,这个当时也上网查过,但是感觉都太深了说的,自己看不懂也懒得看,今天又遇见了,发现了使用的区别以后赶紧来记录一下
先说结论
在foreach里面不加 & ,循环完了以后不会改变原数组
如果foreach加上 & ,就会改变原数组的值
直接上代码,我们先来看看不加如何改变
//原始数据
$data=[1,2,3,4];
//定义一个新的空数组
$new_data=[];
foreach($data as $k=>$v)
{
//我们想把值等于2的改为666
// 这样的话在内部改变了$v但是$data还是没改变
if($v==2)
{
$v=666;
}
//这样可以得到我们想要的数组
array_push($new_data,$v);
}
//print_r($new_data);
//打印的数据为 Array ( [0] => 1 [1] => 666 [2] => 3 [3] => 4 )
再来看一眼加上&之后的效果
$a1 = [1,2,3,4];
foreach ($a1 as $key => &$value)
{
if ($value == 2)
{
$value = 666;
}
}
print_r($a1);
他们俩打印的结果都是这样的
用的比较多的就是
foreach ($data as $key=>&$value)
{
if ($value['status'] == 1)
{
$value['status'] = "已确定";
}
else
{
$value['status'] = "待确定";
}
//打款方式 1微信 2支付宝 3企业公账账户
if ($value['market_channel'] == 1)
{
$value['market_channel'] = "微信";
}
elseif ($value['market_channel'] == 2)
{
$value['market_channel'] = "支付宝";
}
else
{
$value['market_channel'] = "企业公账账户";
}
}
如果不用 & 我们还需要重新赋值一个空数组,现在有了&,我们就可以直接返回原数组给前端就好了!特别的方便