【发布时间】:2014-01-19 00:22:02
【问题描述】:
我正在努力使用foreach 函数。从我的数据库中,我检索了一个数组,其中包含有关用户和他们制作的 cmets 的信息。我的目标是遍历数组并显示每个用户和他发布的 cmets。我遇到的问题是用户的两面性。我想知道如何编写foreach 以便它始终选择一个用户一次,然后循环遍历他的所有 cmets,然后对下一个用户执行此操作。我希望这有任何意义。请查看下面的代码,因为它可能会让您更好地了解我想要实现的目标。
数组示例
| user_id | u_name | u_email | u_access | comment_id | car_id | car_comment | car_rating |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 6 | Jon | j@g.com | 3 | 15 | 3 | best car | 5 |
| 6 | Jon | j@g.com | 3 | 19 | 5 | hate it | 1 |
| 7 | Ben | b@g.com | 1 | 23 | 3 | awesome | 5 |
| 7 | Ben | b@g.com | 1 | 39 | 9 | ok | 3 |
控制器
$data['data'] = $this->User-m->get_users(); //returns $this->db->get();
$this->load->view('admin_v_b', $data);
查看
这是我目前的观点。正如您所看到的,这显然会导致用户显示的次数是他发布的 cmets 的次数。我已经添加了 cmets,以了解每个部分何时应该由循环生成。
<?php foreach ($data->result() as $row): ?>
//this div is opened only on the 1st occurrence of the user's name
<div class="user">
//these two fields are also generated only on the 1st occurrence of the name
name: <?php echo $row->name ?>
email: <?php echo $row->email ?>
//this div and its contents is generated as many times as many comments the user has
<div class="users_comments">
comment: <?php echo $row->comment ?>
rating: <?php echo $row->rating ?>
</div>
//the div is closed after generating all the comments
</div>
<?php endforeach; ?>
感谢大家的阅读。我感谢您的帮助。如果您需要任何其他信息,请询问我。此外,我没有包含 get_users() 函数,因为我假设您不需要查看实际查询,因为这就是全部。
顺便说一句:我曾尝试在 foreach 函数之前声明 $last_user="",然后在循环通过时对其进行调整,但我无法正确生成 DIV。我愿意接受建议。 :) 新年快乐!
【问题讨论】:
-
为什么不调整 get_users() 函数以便将数据发送到准备解析的视图?您尝试在视图中做的事情(操作数组)必须在模型中完成。牢记 MVC 概念。
-
因此将多维数组发送到所有内容都已排序的视图要容易得多。数据=[user1=[],user2[],..]
-
好的,但是我要加入两个表
users和car_comments,我真的想不出我应该如何将数据解析到视图中,以便它说数组用户和数组 user_cmets并且因为它循环通过用户并循环通过 cmets。我将如何做到这一点,以便当用户没有发表评论时,我仍然会在数组中得到空数组,等等。我能想到的唯一选择是调用另一个函数,比如用脚本调用get_users_comments(user_id)并生成结果在该用户的 cmets div 中,但这似乎更加复杂。 -
好的。那么请给我一些指示。如果我有表
users与列ID, name, email和表car_comments与列id, user_id, car_id, comment我如何创建一个看起来像[[users #1 info[all his comments]]..[users #99 info[all his comments]]]的数组?
标签: php codeigniter loops foreach