所以我有一個功能,詳細如下,
我相信它太長,可以縮短。
我想我已經在陣列操縱部分墮落了。
請忽略怪數據庫語法php ::縮短此功能? ::數組操作
所以基本上這個功能被賦予這樣
ABC字符串,DEF,GHI,JKL,MNO
由於一些毛刺它可與額外,
被接收,以便它最終爲
ABC,DEF,GHI,JKL,MNO,
函數必須轉換爲字符串,它看起來像
'ABC', '高清', 'GHI', 'JKL' 'MNO'($組)
的字符串,然後在選擇查詢中使用
SELECT組名的名字從contact_groups WHER E 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');
}
現在我們再做一次選擇查詢,但這個時候,我們這樣做是爲了獲得各組的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);
}
}