问题是为什么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);
}
}
feiyuanqiu
2014-11-28 13:13:58 +08:00
<pre>
$one = '7'; $two = '6';
$update = array();
if (is_numeric($one) && is_numeric($two)) {
// 获取 $list ... blabla ... 省略
$list = array(
array('staff_departmentid' => '7-8-9-6', 'staff_id' => '1'),
array('staff_departmentid' => '6-7-9', 'staff_id' => '2'),
array('staff_departmentid' => '8-9-10-6', 'staff_id' => '3'),
array('staff_departmentid' => '8-9', 'staff_id' => '4'),
array('staff_departmentid' => '7-8-9-6-7', 'staff_id' => '5'),
);
foreach ($list as $lval) {
$remove_one = str_replace($one, '', $lval['staff_departmentid']);
if ($remove_one !== false) {
$lval['staff_departmentid'] = implode('-', array_filter(explode('-', $remove_one)));
$update[$lval['staff_id']] = array('staff_departmentid' => $lval['staff_departmentid']);
}
if (strpos($lval['staff_departmentid'], $two) === false) {
$update[$lval['staff_id']] = array('staff_departmentid' => implode('-', array_filter(explode('-', "{$lval['staff_departmentid']}-{$two}"))));
}
}
}
var_dump($update);exit;
</pre>
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/149876
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.