PHP foreach 数据库结果

Posted

技术标签:

【中文标题】PHP foreach 数据库结果【英文标题】:PHP foreach database results 【发布时间】: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> 【参考方案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]

以上是关于PHP foreach 数据库结果的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 javascript forEach 循环中的 php 数组发送到 ajax 调用的 url

PHP foreach引用

如何在foreach循环中将数组结果组合在php中

php-foreach遍历数组

php foreach 单选按钮百分比

PHP:数组——二维转一维,二维转三维,将特定的数据作为键名