PHP codeIgniter:从其id中删除二维列中的元素
Posted
技术标签:
【中文标题】PHP codeIgniter:从其id中删除二维列中的元素【英文标题】:PHP codeIgniter: remove element from a two-dimensional column from its id 【发布时间】:2017-05-09 00:21:58 【问题描述】:我想从二维表的 id 中删除一个问题。
我将举一个更明确的例子(使用我使用的相关函数)。
我的函数目前给我以下错误结果: 我想删除问题 32 (id=32),所以我的 DB 列 qids 中有这些行:
初始状态
**qids**
+++++++++
10,13,56
+++++++++
1,95,2,45,12
+++++++++
1,32,54,10
在治疗结束时,我的 DB 行如下所示:
错误的实际结果
**qids**
+++++++++
1,54,10
+++++++++
1,54,10
+++++++++
1,54,10
但我想在我的数据库表中有这个:
我想要什么
**qids**
+++++++++
10,13,56
+++++++++
1,95,2,45,12
+++++++++
1,54,10
我的功能:
function remove_question($qid)
$this->db->select("qids"); //column name
$query = $this->db->get('savsoft_quiz'); //table name
$quiz = $query->result_array();
foreach($quiz as $value)
$new_qid = array();
foreach(explode(',', $value['qids']) as $key => $oqid)
if ($oqid != $qid)
$new_qid[] = $oqid;
$userdata = array(
'qids' => implode(',', $new_qid)
);
$this->db->update('savsoft_quiz', $userdata);
有什么建议吗?
【问题讨论】:
【参考方案1】:基本上你错过了where
声明。它要求您更新整个表格。此外,update
调用需要退出第二个foreach
。
function remove_question($qid)
$quiz = $this->db->select("qids")
->get('savsoft_quiz')
->result_array();
// Foreach row
foreach($quiz as $value)
$found = FALSE;
$new_qid = array();
// For each id in the comma separated
foreach(explode(',', $value['qids']) as $key => $oqid)
// Adds still wanted ids to new array
if ($oqid != $qid)
$new_qid[] = $oqid;
else
$found = TRUE;
// If the number was found in that row, updates DB
if($found)
// Implodes values
$userdata = array(
'qids' => implode(',', $new_qid)
);
$this->db->where('qids', $value['qids'])
->update('savsoft_quiz', $userdata);
【讨论】:
【参考方案2】:这样试试……
function remove_question($qid)
$this -> db -> select("qids"); //column name
$query = $this ->db-> get('savsoft_quiz'); //table name
$q= $query -> row();
$quiz=$q->qids;
$new_qid = array();
$data=explode(',', $quiz);
foreach ($data as $d)
if ($d != $qid)
array_push($new_qid,$d);//push the id if not equal
$new_row=implode(',',$new_qid);
//try using echo $new_row;
return $new_row; //ids after removing
参考下面的例子..了解更多
$quiz ="1,54,11,1,54,10,32,1,11,10";
$new_qid = array();
$data=explode(',',$quiz);
// print_r($data);die();
foreach($data as $d)
if ($d != 32)
array_push($new_qid,$d);//push the id if not equal
$new_row=implode(',',$new_qid);
echo $new_row;
【讨论】:
总是把`->`写成->
。
但是我有二维数组
你是从数据库中得到这个数组作为字符串的吗?以上是关于PHP codeIgniter:从其id中删除二维列中的元素的主要内容,如果未能解决你的问题,请参考以下文章
如何删除codeigniter路径中的“index.php”