Rumah >pembangunan bahagian belakang >tutorial php >foreach只执行一次
问题是为什么foreach每次只执行一次。
一批数据处理的话,第一个正确会正常处理。后面就不动了。
需要执行:
将下面数据中的某一个数据$one转到$two。
左边删除$one.右边没有$two则新增,有则不增加。
staff_departmentid的数据结构例如:
7-8-9-6
6-7-9
8-9-10-6
8-9
<code> $one=I('post.one'); $two=I('post.two'); $m=M('staff'); //第一步 先查找左边准备要修改的值 $conone['staff_departmentid']=array('like',"%".$one."%"); $list=$m->where($conone)->select(); foreach ($list as $key => $value) { $arr=explode('-',$value['staff_departmentid']); $array_key = array_search($one,$arr); unset($arr[$array_key]); //重新设计索引 $arr=array_values($arr); $nowstr=implode('-',$arr); //首先减去$one值 $w1['staff_id']=$value['staff_id']; $data['staff_departmentid']=$nowstr; $jian=$m->where($w1)->save($data); //如果已有$two值则不增加。没有则新增 $array2_key = array_search($two,$arr); if($array2_key||$array2_key===0){ //有就不添加 }else{ //没有我们就添加一个试试 $arr[]=$two; $arr=array_values($arr); $addstr=implode('-',$arr); $adddata['staff_departmentid']=$addstr; $w2['staff_id']=$value['staff_id']; $jia=$m->where($w2)->save($adddata); } } </code>
问题是为什么foreach每次只执行一次。
一批数据处理的话,第一个正确会正常处理。后面就不动了。
需要执行:
将下面数据中的某一个数据$one转到$two。
左边删除$one.右边没有$two则新增,有则不增加。
staff_departmentid的数据结构例如:
7-8-9-6
6-7-9
8-9-10-6
8-9
<code> $one=I('post.one'); $two=I('post.two'); $m=M('staff'); //第一步 先查找左边准备要修改的值 $conone['staff_departmentid']=array('like',"%".$one."%"); $list=$m->where($conone)->select(); foreach ($list as $key => $value) { $arr=explode('-',$value['staff_departmentid']); $array_key = array_search($one,$arr); unset($arr[$array_key]); //重新设计索引 $arr=array_values($arr); $nowstr=implode('-',$arr); //首先减去$one值 $w1['staff_id']=$value['staff_id']; $data['staff_departmentid']=$nowstr; $jian=$m->where($w1)->save($data); //如果已有$two值则不增加。没有则新增 $array2_key = array_search($two,$arr); if($array2_key||$array2_key===0){ //有就不添加 }else{ //没有我们就添加一个试试 $arr[]=$two; $arr=array_values($arr); $addstr=implode('-',$arr); $adddata['staff_departmentid']=$addstr; $w2['staff_id']=$value['staff_id']; $jia=$m->where($w2)->save($adddata); } } </code>