欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

foreach只执行一次

程序员文章站 2023-12-24 15:43:33
...
问题是为什么foreach每次只执行一次。
一批数据处理的话,第一个正确会正常处理。后面就不动了。

需要执行:
将下面数据中的某一个数据$one转到$two。
左边删除$one.右边没有$two则新增,有则不增加。

staff_departmentid的数据结构例如:
7-8-9-6
6-7-9
8-9-10-6
8-9

            $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);
                }
            }

回复内容:

问题是为什么foreach每次只执行一次。
一批数据处理的话,第一个正确会正常处理。后面就不动了。

需要执行:
将下面数据中的某一个数据$one转到$two。
左边删除$one.右边没有$two则新增,有则不增加。

staff_departmentid的数据结构例如:
7-8-9-6
6-7-9
8-9-10-6
8-9

            $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);
                }
            }
相关标签: php

上一篇:

下一篇: