【问题标题】:Returns the query result as a pure array (index array) instead of an associative array PHP Codeigniter 3将查询结果返回为纯数组(索引数组)而不是关联数组 PHP Codeigniter 3
【发布时间】:2021-06-22 04:14:59
【问题描述】:

所以我想使用 $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 快速查看关系

感谢您的帮助..

【问题讨论】:

  • 请不要给我们看代码图片!!如果它的文本然后将其作为文本发布到您的问题中,格式化。我们无法从图片中复制/粘贴,搜索引擎也无法索引 code-pitures

标签: php mysql arrays codeigniter


【解决方案1】:

让您的查询返回数组,如下所示:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    对于这种特定情况,您可以使用像 array_map 这样的 php 函数:

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

    这应该会给你所需的结果

    【讨论】:

    • 好的,我试过了,所以$val 包含$query->result_array() 对吗?我收到了一个错误Undefined variable: results$results 应该包含什么?
    • @MuhammadFaisal 错了。 $results 是您要映射的数组。 $val 是它的每一个单独的价值。当你不理解某个函数时,阅读manual
    • 另外,这本质上是一种迂回的方式来做array_column
    • @El_Vanja 我没有使用上面的答案,但尝试使用array_column(),正如你所说,它工作得很好,谢谢!
    • @El_Vanja 我不知道这个功能。谢谢你的课。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    相关资源
    最近更新 更多