【发布时间】:2017-12-02 15:49:27
【问题描述】:
我多年来一直在使用 codeigniter,但两者之间的差距非常大,所以我总是发现自己处于忘记如何做事的情况,而且这里几乎是午夜,所以我的大脑工作不快。有人可以告诉我如何回显我拥有的数组并向我解释它们在 foreach 循环中是如何处理的吗?
我的模型中有这段代码来获取 2 个表中的行。
public function tag_genre(){
$result['tag'] = $this->db->get('tags')->result_array();
$result['genre'] = $this->db->get('genre')->result_array();
return $result;
}
我的控制器里有这个
public function view_publish_story(){
$data = array('tag_genre' => $this->story_model->tag_genre(), 'title' => "New Story");
$this->load->view('template/header',$data);
$this->load->view('template/navbar');
$this->load->view('pages/storypublish',$data);
$this->load->view('template/footer');
}
在我看来,我使用了 print_r,这就是结果。看到这个只会让我更加困惑。自从我处理 foreach 循环以来已经至少 2 年了。
数组 ( [tag] => 数组 ( [0] => 数组 ( [tag_id] => 1 [tag_name] => LitRPG) [1] => 数组 ([tag_id] => 2 [tag_name] => 虚拟现实) [2] => 数组 ( [tag_id] => 3 [tag_name] => 赛博朋克 ) [3] => 数组 ( [tag_id] => 4 [tag_name] => 转世) [4] => 数组 ([tag_id] => 5 [tag_name] => 召唤英雄 ) [5] => 数组 ( [tag_id] => 6 [tag_name] => 武术 ) [6] => 数组 ( [tag_id] => 7 [tag_name] => 生命片段)[7] => 数组([tag_id] => 8 [tag_name] => 超能力)[8] => 数组([tag_id] => 9 [tag_name] => 非人类) [9] => 数组 ([tag_id] => 10 [tag_name] => 反英雄) ) [流派] => 数组([0] => 数组([genre_id] => 1 [genre_name] => 动作)[1] => 数组 ( [genre_id] => 2 [genre_name] => 冒险 ) [2] => 数组 ( [genre_id] => 3 [genre_name] => 喜剧)[3] => 数组([genre_id] => 4 [流派名称] => 戏剧)[4] => 数组([流派 ID] => 5 [流派名称] => 奇幻 ) [5] => 阵列 ( [genre_id] => 6 [genre_name] => 历史 ) [6] => 阵列 ( [genre_id] => 7 [genre_name] => 恐怖 ) [7] => 阵列 ( [genre_id] => 8 [genre_name] => 心理) [8] => 数组 ( [genre_id] => 9 [genre_name] => 浪漫) [9] => 数组([genre_id] => 10 [genre_name] => 科幻)[10] => 数组([genre_id] => 11 [genre_name] => 神秘)[11] => 数组([genre_id] => 12 [genre_name] => 悲剧) [12] => 数组([genre_id] => 13 [genre_name] => 短篇小说 ) [13] => 数组 ( [genre_id] => 14 [流派名称] => 讽刺 ) ) )
我一直在研究有关数组的各种问题,从关联数组到多维数组和其他东西。然后我终于访问了 foreach 循环的 php 手册,我终于能够回显数组。现在的问题是,虽然它与我的数组相呼应,但每个数组都有一个错误,我可以通过将其声明为已定义变量来修复错误部分。我的问题是,还有其他更好的方法吗?或者对我如何制作阵列以使其更清洁或更容易打印的任何改进?
foreach($tag_genre as $key => $value){
foreach($value as $values){
echo $values['tag_name'];
}
}
更新:我改变了我制作数组的方式。
现在这是我的模型:
public function get_tags(){
$query = $this->db->get('tags')->result_array();
foreach($query as $row){
$result[$row['tag_id']] = $row['tag_name'];}
return $result;
}
public function get_genre(){
$query = $this->db->get('genre')->result_array();
foreach($query as $row){
$result[$row['genre_id']] = $row['genre_name'];}
return $result;
}
和我的控制器:
public function view_publish_story(){
$data = array('tag' => $this->story_model->get_tags(), 'genre' => $this->story_model->get_genre(), 'title' => "New Story");
$this->load->view('template/header',$data);
$this->load->view('template/navbar');
$this->load->view('pages/storypublish',$data);
$this->load->view('template/footer');
}
在我看来:
<tr>
<div class="form-group">
<td><label for="genre">Genre</label></td>
<?php
foreach($genre as $genre_id => $genre_name){
echo "<td><label class='checkbox-inline'><input type='checkbox' value=''>".$genre_name."</label><td>";
}
?>
</div>
</tr>
我现在的问题是,我如何将所有这些放入我的表中?我现在刚刚毁了我的桌子,因为我在一行中回应了它们。我该如何做才能打印成 3 列?
【问题讨论】:
-
那么你到底想迭代什么——模型设置的部分?在这种情况下,您会使用
foreach($tag_genre['tag']...或foreach($tag_genre['genre']...。 -
我正在制作一个简单的项目,您可以在其中上传自己的故事。所以在我的发布故事视图中,我有故事的简单形式。当然,它包含流派和标签。我想在 foreach 循环中回显它们。我已经在我的数据库中保存了标签和流派。
-
对,我在评论中向您展示了如何引用它们。
-
你能看看我的编辑吗?我设法回显了我的数组,但我想知道是否有更好的方法?也许在将数组传递给视图之前我如何制作数组本身以使其更容易在视图中打印?
标签: php arrays codeigniter foreach