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";
或两者都有"<br>\n"
关于foreach循环:
echo $row->db_item; //this returns 01020303
该行实际上打印出03
,但由于您没有使用换行符,它只是将03
添加到在foreach 循环内打印的010203
的末尾。
$row
仍然可以访问并设置为03
,因为在 foreach 循环的最后一次迭代中,$row
设置为从$query->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->result()
返回一个数组。只需执行$results = $query->result()
。你会有$results[0]
等以上是关于PHP foreach 数据库结果的主要内容,如果未能解决你的问题,请参考以下文章