将查询结果返回为纯数组(索引数组),而不是关联数组PHP Codeigner 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的文档,结果是相同的。

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

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");

这是一个创建数据库的示例脚本。和DB Designer快速查看关系

谢谢你的帮助。。

使用您的查询返回如下数组:

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

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

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

这样,结果将完全符合您的要求。

有关数组列的更多信息,请点击此处:

您可以使用类似array_map的php函数来处理以下特定情况:

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

这应该会给你所需的结果

最新更新