0

也许我对数组过程/语法的这一部分有一些误解......

我想知道为什么一旦我从数据库中得到结果,我就必须通过 foreach 或其他类型的循环。

假设我知道我只会从查询中得到一个结果:

$query = $this->db->query("MY QUERY LIMIT 1");

到目前为止,我必须通过一个循环来遍历它:

foreach ($query->result() as $row){
   echo $row->title;
   echo $row->name;
   echo $row->body;
}

有没有办法在没有循环(for、foreach 或其他)的情况下打印项目?喜欢:

$query->result()->title;

//OR
$query->result()[0]

或者是其他东西?

我尝试的上述方法当然不起作用......

也许只是一种不好的做法。这是不可能的吗?可行吗?或者...?

4

3 回答 3

3

如果您只想获得一个结果,请row()改用
(或者row_array()如果您希望它作为数组而不是对象)

row()仅返回数据集中的第一行(无论有多少,但通常在只有一行时使用)。

$row = $this->db->query("MY QUERY LIMIT 1")->row();
echo $row->title;
echo $row->name;
echo $row->body;

作为一个数组:

$row = $this->db->query("MY QUERY LIMIT 1")->row_array();
echo $row['title'];
echo $row['name'];
echo $row['body'];

旁注,您还可以通过传递其编号返回特定行:

$row = $query->row(5); //works also for its analogue ->row_array(5)

作为参考,请在此处查看手册

于 2013-09-23T09:26:08.093 回答
0

是的,你就这样试试

$data = $query->result();
echo $data->title;
于 2013-09-23T09:28:38.810 回答
0

尝试这个

得到一个对象的结果

$row = $this->db->query("MY QUERY LIMIT 1")->row();
echo $row->title;

希望它会有所帮助

于 2013-09-23T09:31:08.117 回答