php foreach 遍历数组后 修改数据返回值 &$bbc1

 

  &$bbc1     

  //算实际余货!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  continue;
  foreach($list4 as $rows)
  {     // echo $rows['shengdai'];
  
        //require('../admin/yuhuobhfujian.php'); 
	   //  echo round($jishusl);
  $jscs=0;
 $qycs=0;
 $sdcs=0;
        foreach ($list3 as &$bbc1) {  // &$bbc1  引用的是数组的原值 不是拷贝  参考 
       
	 // 查询 省代 及对应的余货
	         if(!empty($rows['shengdai']))
	             {
	            if (strpos($bbc1['shengdai'],$rows['shengdai'])!== false) {
	                  
	       	        //获取省代姓名 对应的id  余货
	       	        //echo $bbb1['shengdai'];
	       	      echo $bbc1['yuhuo'];
	       	       echo $bbc1['yuhuo']=$bbc1['yuhuo']-2;
	       	       
	       	  
	       	      }
          	       
          	       
                if(empty($rows['shidai'])){
                    
                    if(empty($rows['quyu'])){
                        if(empty($rows['jishu'])){
                            continue;
                            
                        }else{  echo 'aaan';  echo $bbc1['yuhuo'];
                            if($jscs==0){
                      require('../admin/yuhuobhfujian.php'); 
	               // echo round($shidaisl);
	                echo  $rows['jishu'];	echo 'aaan';
	                 echo  $jishusl;
	                 echo 'aaa';
                      $bbc1['yuhuo']= $bbc1['yuhuo']-$jishusl;
                    echo  $bbc1['yuhuo'];
                    echo 'jishu';	 
                    	$jscs=$jscs+1;
                    	echo $hh;
                            }
                }
                
                    }else{
                        if($qycs==0){
                  require('../admin/yuhuobhfujian.php'); 
	               // echo round($shidaisl);
	                echo  $rows['quyu'];	echo 'a1aa';
	                 echo  $quyusl;echo 'aab';
	                  
	                  $bbc1['yuhuo']= $bbc1['yuhuo']-$quyusl;
	            
                     echo $bbc1['yuhuo'];
                    	echo $hh;
                    	$qycs=$qycs+1;
                }}
                
                
                }else{
                    if($sdcs==0){
                  require('../admin/yuhuobhfujian.php'); 
	               // echo round($shidaisl);
	                echo  $rows['shidai'];	echo 'aac';
	                 echo  $shidaisl;	echo 'aac';
	                  $bbc1['yuhuo']= $bbc1['yuhuo']-$shidaisl;
                      echo $bbc1['yuhuo']; 
                    	echo $hh;
                    	$sdcs=$sdcs+1;
                }}
	                  
	                 
	                 
	                 
	                 
	                 
	                 
	             } 
                
     	 }
                
            }

 引用的是数组的原值 不是拷贝   

php foreach如何修改值?

中用foreach改变数组的值的问题

翻到PHP文档的foreach那页这样写道:

“foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:

1

2

3

4

foreach (array_expression as $value)

    statement

foreach (array_expression as $key => $value)

    statement

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。”

那么“第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。”是什么意思?意思就是说用foreach来遍历数组,所操作的是指定数组的一个拷贝,而不是数组本身。就像有一个克隆的你,别人对克隆的你不管怎么拳打脚踢,对你也是没有影响的。

例如:

1

2

3

foreach($array as $k => $v){

  $v = 1;

}

这样的修改方法修改的并不是$array本身,是修改它拷贝的一个数组,虽然一样但不是$array.所以对$array没有影响。

那么要怎么做?要这样做:

1

2

3

foreach($array as $k => $v){

  $array[$k] = 1;

}

虽然$k和$v一样也是拷贝的,但拷贝的$k的值还是和原数组的$k的值是一样的,所以这样就可以成功了。

还有一种比较高级的方法:可以很容易地通过在 $v 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。例如:

1

2

3

4

foreach($array as &$v){

  $v = 1;

}

unset($v); // 最后取消掉引用

这样也就成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦斯绮幻羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值