Returns 查询结果为纯数组(索引数组)而不是关联数组 PHP Codeigniter 3

Returns the query result as a pure array (index array) instead of an associative array PHP Codeigniter 3

所以我想 $this->db->where_not_in() 在它的第二个参数中使用一个数组。

我知道如果我有一个索引数组并像这样使用它就可以正常工作:

$names = array('Frank', 'Todd', 'James');
$this->db->where_not_in('column', $names);

但是我查询的输出数组看起来像这样,所以我不能将它用于第二个参数 where_not_in ():

Array (
   [0] => Array (
      [id_question] => PN21022601
   )
   [1] => Array (
      [id_question] => PN21022602
   )
)

我尝试使用 array_values​​() 将其转换为索引数组,但它返回的结果与上面相同。

我还通过尝试 $query->result_array() 方法和 $query->result() 方法阅读了 Codeigniter 3 here 的文档,结果是相同的。

我的期望是我可以生成这样的数组:

Array (
   [0] => PN21022601
   [1] => PN21022602
)

我是不是漏掉了什么?
这是我所做的 mysql 查询的错误吗?尤其是 group by 语法?
这是我生成上述数据的查询:

$query = $this->db->query("
        SELECT e.id_pertanyaan
        
        FROM t_penilaian AS a
        JOIN t_penilaian_detail AS b ON a.id_penilaian = b.id_penilaian
        JOIN t_penilaian_detail_score AS c ON b.id_penilaian_detail = c.id_penilaian_detail
        JOIN m_pertanyaan_detail AS d ON c.id_pertanyaan_detail = d.id_pertanyaan_detail
        JOIN m_pertanyaan AS e ON d.id_pertanyaan = e.id_pertanyaan
        
        WHERE a.id_user = '$id_user'
        GROUP BY e.id_pertanyaan");

这是一个用于创建数据库的example script。 和 DB Designer 以快速查看关系

感谢您的帮助..

对于这种特定情况,您可以使用 php 函数,例如 array_map:

$newArr = array_map(function($val){
    return $val['id_question'];
},$results);

这应该会给您所需的结果

将您的查询设置为 return 数组,如下所示:

$results = $this->db->result_array();

将结果作为数组而不是对象,您可以将其中一列作为带有数组列的普通数组。

$results = array_column($this->db->result_array(), 'id_question');

这样一来结果就会和你想要的一模一样。

这里有更多关于数组列的信息: