代码点火器:在活动记录中生成数组而不是对象


Codeigniter: Produce Array instead of Object in Active Record

我希望Codeigniter在活动记录中产生数组结果,就像mysql_fetch_array()在标准PHP中所做的那样。

假设,我们的mysql数据库中有这个表,称为学生。

+-----+------+
| id  | name |
+-----+------+
|  1  | Elto |
|  2  | John |
+------------+

这是条件。
我以单独的方式生成查询。就像:

$this->db->select('id, name');
$this->db->order_by('name', 'asc');
$q = $this->db->get('students');
$r = $q->result();

$r将产生:

[0] (name => 'Elto')
[1] (name => 'John')

取而代之的是,我希望查询产生如下内容:

[0][0] => 'Elto'
[1][0] => 'John'

我不知道这是否可以做到。如果有人想帮助解决这个问题,我将不胜感激。

你只需要使用 result_array() 而不是 result()

$this->db->select('id, name');
$this->db->order_by('name', 'asc');
$q = $this->db->get('students');
$r = $q->result_array();

result()将以对象格式返回行。

result_array()会将行返回到数组格式。

请浏览代码点火器生成查询结果

您可以使用

$r = $q->result_array();

或者您可以使用

$r = $q->row_array(); 

仅检索一个项目。

查看官方文件以获取更多信息:

http://www.codeigniter.com/user_guide/database/results.html

问候。

Codeigniter 4:

$r = $q->getResultArray();

若要确保不仅第一级包含索引数组,而且每一行都包含索引元素,请将数字别名应用于 SELECT 语句中的name列,然后使用 result_array()getResultArray()(具体取决于 CI 版本)。

根据您的数据库驱动程序,别名引号字符可能会有所不同。 在我的运行 firebird 的应用程序上进行了测试,双引号正确呈现的数字别名。

return $this->db
            ->select('name AS "0"')
            ->order_by('name', 'ASC')
            ->get('students')
            ->result_array();

将返回单元素索引数组的索引数组。

[
    [0 => 'Elto'],
    [0 => 'John'],
]