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中删除二维列中的元素的主要内容,如果未能解决你的问题,请参考以下文章

php 从其URL获取图像的WordPress附件ID

如何删除codeigniter路径中的“index.php”

强制从 codeigniter 中删除 index.php

如何在codeigniter中删除浏览器历史记录?

从 URL 中删除 index.php - Codeigniter 2

无法从 codeigniter 中的 URL 中删除“Index.php”