概述
注意:如果我要改变数组某一个值 直接遍历的话原数组是不会变的
$data=array(1,2,3,4);
foreach($data as $k=>$v){
if($v==2) $v=666;//我们想把值等于2的改为666 这样的话在内部改变了$v但是$data还是没改变
}
下面提供两种方法
1.使用键名的方式
foreach($data as $k => $v){
if($v==2) $data[$k]=666;
}
2.我们可以在遍历的值前面加个&符号这样就可以改变原数组了
foreach($data as &$v){
if($v==2) $v=666;//因为$v前面加了'&'所以原数组就直接改变了
}
场景:每个产品可能有多个链接,统计每个产品各个链接下的注册数reg_amount,
同时要返回给前端产品名称,id;url名称,id;注册数
$ret = [
[
'product_id' => 1,
'url_id' => 1,
'reg_amount' => 0
],
[
'product_id' => 1,
'url_id' => 2,
'reg_amount' => 0
],
[
'product_id' => 2,
'url_id' => 3,
'reg_amount' => 0
]
];
$retTemp = [
[
'product_id' => 1,
'product_name' => '钱包',
'url_id' => 1,
'url_name' => '钱包链接1'
],
[
'product_id' => 1,
'product_name' => '钱包',
'url_id' => 2,
'url_name' => '钱包链接2'
],
[
'product_id' => 2,
'product_name' => '鞋子',
'url_id' => 3,
'url_name' => '鞋子链接1'
]
];
方式一
foreach ($ret as $key => $value) {
foreach ($tempRet as $k => $v) {
if($value['product_id'] == $v['product_id'] && $value['url_id'] == $v['url_id']) {
$ret[$key]['product_name'] = $v['product_name'];
$ret[$key]['url_name'] = $v['url_name'];
}
}
}
方式二
foreach ($ret as $key => &$value) {
foreach ($tempRet as $k => $v) {
if($value['product_id'] == $v['product_id'] && $value['url_id'] == $v['url_id']) {
$value['product_name'] = $v['product_name'];
$value['url_name'] = $v['url_name'];
}
}
}
最后
以上就是孤独海燕为你收集整理的PHP foreach 加&遍历的同时改变原数组即修改数据或者增加数据的全部内容,希望文章能够帮你解决PHP foreach 加&遍历的同时改变原数组即修改数据或者增加数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复