Codeigniter / PHP为什么result()必须通过循环?

时间:2013-09-23 09:25:10

标签: php arrays loops

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

我想知道为什么一旦我从数据库得到结果我必须通过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]

还是其他什么?

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

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

3 个答案:

答案 0 :(得分: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)

供参考,check the manual here

答案 1 :(得分:0)

是的,你只是尝试这样

$data = $query->result();
echo $data->title;

答案 2 :(得分:0)

试试这个

获得结果对象

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

希望它会有所帮助