数据库中有一个字段是这样存的一个数组: 张三,李四,王麻子
现在需要删除李四。结果就是 张三,王麻子
不能直接replace,因为那样可能会匹配到麻子,结果是 张三,李四,王 所以这里需要按逗号解数组,然后删除,然后平回去。这个求差集 的概念;
现在可以翻开小学数学课本三年级上册《集合》复习下了;
$names = ['张三','李四','王麻子','李四'];
$names = array_diff($names, ['李四']);
$names = array_values(array_diff($names, ['李四']));
array_diff
跟 unset
一样并不会格式化键名;
就再加个 array_value
;
再配合save.
private function deleteLp( $KP_Name )
{
$LpModel = new LpModel;
$list = LpModel::where('KP_TsType', 'like' ,'%' . $KP_Name . '%')->select();
$result =[];
foreach ($list as $k => $v) {
$tmp = explode("," , $v['KP_TsType']);
$names = array_values(array_diff($tmp, [$KP_Name]));
$result[$k]['id'] = $v['id'];
$result[$k]['KP_TsType'] = join(",", $names);
}
$LpModel->saveAll($result);
}