所以我有一个如下详述的功能,
我相信它太长了,可以缩短
我想我已经在阵列操作部分摔倒了。
请忽略奇怪的数据库语法
<小时/> 所以基本上这个函数给出了一个像
这样的字符串
abc,def,ghi,jkl,mno
由于一些故障,它可以通过额外的,
接收,因此它最终为
abc,def,ghi,jkl,mno,
该函数必须转换字符串,使其看起来像
'abc','def','ghi','jkl','mno'($ groups)
然后在选择查询中使用该字符串
SELECT group_name as name FROM contact_groups WHERE group_name IN($ groups);
我们在原始数组上使用array_diff()
,在select查询中使用数组
这将为我们提供一个我们正在使用的不存在的所有组的数组。 ($创建)
接下来,我们遍历数组并创建组
foreach($create as $group){
$values = array(
'user_id', $_SESSION['user_id'],
'group_name', $group
);
$this->database->insert_query($values, 'contact_groups');
}
现在我们再次执行select查询,但这次我们这样做是为了获取组的id
SELECT group_id as id FROM contact_groups WHERE group_name IN($ groups);
最后我们遍历组ID并将它们添加到另一个表中。
private function groups($groups){
$groups = split(', ', $groups);
$intersect = array();
$db_rows = array();
foreach($groups as &$group)
$group = trim(str_replace (',', '', $group)); //remove any rogue spaces or commas
$groupsq = $groups;
foreach($groupsq as &$group)
$group = '\''.$group.'\'';
$groupsq = implode(', ', $groupsq);
$q = "SELECT group_name as name FROM contact_groups WHERE group_name IN($groupsq);";
$r = $this->database->results($this->database->query($q));
while($row = mysql_fetch_assoc($r)) {
$intersect[] = $row;
}
//create a list of non-existent groups
$create = array_diff($groups, $intersect);
foreach($create as $group){
$values = array(
'user_id', $_SESSION['user_id'],
'group_name', $group
);
$this->database->insert_query($values, 'contact_groups');
$this->database->query($q);
}
$q = "SELECT group_id as id FROM contact_groups WHERE group_name IN($groupsq);";
$r = $this->database->results($this->database->query($q));
while($row = mysql_fetch_assoc($r)) {
$db_rows = $row;
}
foreach($db_rows as $group){
$values = array(
'group_id' => $group,
'contact_id' => $this->contact_id
);
$q = $this->database->insert_query($values, 'contact_groups_link');
$this->database->query($q);
}
}
答案 0 :(得分:0)
嗯,前几步的功能要短得多:
/**
@param string like bla, bla, bla, bla,
@return string like "bla", "bla", "bla"
*/
function blablabla($string){
return rtrim(preg_replace('/([a-z]+)/', '"\1"', $string), ',');
}
截至你的其他代码,我不确定你要做什么。