【问题标题】:PHP foreach database resultsPHP foreach 数据库结果
【发布时间】:2015-04-21 05:01:38
【问题描述】:

CodeIgniter 问题:所以我从 db 中选择数据并打印如下结果:

foreach ($query->result() as $row)
{       
   echo $row->db_item;
}

Foreach 返回 3 行,结果如下所示: 010203.

我该怎么做才能使结果像这样回显(结果的每一行都以某种方式被切片,例如,结果的每一行要单独检索):

01
02
03

最后一件事,如果我在 foreach 之后添加另一行,我只会检索结果 03 的最后一行,而不是相同的 010203。理论上为什么会这样?

foreach ($query->result() as $row)
    {       
       echo $row->db_item;
    }
    echo $row->db_item; //this returns 01020303

【问题讨论】:

  • 您正在转储到 Web 浏览器上下文,这意味着您必须使用 html 方式提供换行符,例如<br>

标签: php mysql codeigniter foreach


【解决方案1】:

使用 html 换行符

echo $row->db_item ."<br>";

或换行符。

echo $row->db_item ."\n";

或两者都有"&lt;br&gt;\n"


关于foreach循环:

echo $row->db_item; //this returns 01020303

该行实际上打印出03,但由于您没有使用换行符,它只是将03 添加到在foreach 循环内打印的010203 的末尾。

$row 仍然可以访问并设置为03,因为在 foreach 循环的最后一次迭代中,$row 设置为从$query-&gt;result() 返回的最后一个元素。如果你想“清理”它,unset()它。

foreach ($query->result() as $row)
{
    echo $row->db_item;
}
unset($row);

【讨论】:

  • foreach 循环之后仍然指向数组的最后一个键,这就是为什么显示03 :)
  • 谢谢,但如果我想使用其中一行,比如说02,该怎么办?
  • 您可以使用break; 取消02 上的foreach 循环(尽管您不能“恢复”循环),或者在循环过程中将一些外部变量设置为02 .
  • 如何在每一行上设置一个变量,$first_row == $row[0],像这样?
  • $query-&gt;result() 返回一个数组。只需执行$results = $query-&gt;result()。你会有$results[0]
猜你喜欢
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
  • 1970-01-01
  • 2011-12-10
  • 2017-08-30
  • 1970-01-01
相关资源
最近更新 更多