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');
这样一来结果就会和你想要的一模一样。
这里有更多关于数组列的信息:
所以我想 $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');
这样一来结果就会和你想要的一模一样。
这里有更多关于数组列的信息: