2015-02-10 155 views
1

我确实在寻找相当一段时间,但我不知道要改变什么。我的php代码获得一个数组,我希望它插入到mysqlDB中。问题是它只运行一次foreach循环。为什么它没有运行?php - 为什么foreach只运行一次?

public function insert_tags($projektID, $tags) { 
    print_r($tags); 
    foreach($tags as $tag) 
     $this->db->set('name', $tag); 
     $this->db->insert('tags'); 
     echo $tag; 
     $tag_ID = $this->db->insert_id(); 
     echo $tag_ID; 
     if ($tag_ID != 0) { 
      $this->db->set('id', $projektID); 
      $this->db->set('tag_ID', $tag_ID); 
      $this->db->insert('hat_tags'); 
     } 
} 

它回声:

Array 
(
    [0] => tag1 
    [1] => tag2 
) 
tag2 147 

没有进一步的错误。谢谢你的帮助!

回答

2

后,您需要它们放在括号{}否则它将循环旁边的第一线。使用下面

public function insert_tags($projektID, $tags) { 
    print_r($tags); 
    foreach($tags as $tag){ 
     $this->db->set('name', $tag); 
     $this->db->insert('tags'); 
     echo $tag; 
     $tag_ID = $this->db->insert_id(); 
     echo $tag_ID; 
     if ($tag_ID != 0) { 
      $this->db->set('id', $projektID); 
      $this->db->set('tag_ID', $tag_ID); 
      $this->db->insert('hat_tags'); 
     } 
    } 

} 

代码或者你可以用endforeach使用

public function insert_tags($projektID, $tags) { 
    print_r($tags); 
    foreach($tags as $tag): 
     $this->db->set('name', $tag); 
     $this->db->insert('tags'); 
     echo $tag; 
     $tag_ID = $this->db->insert_id(); 
     echo $tag_ID; 
     if ($tag_ID != 0) { 
      $this->db->set('id', $projektID); 
      $this->db->set('tag_ID', $tag_ID); 
      $this->db->insert('hat_tags'); 
     } 
    endforeach; 

} 

希望这有助于你

4

foreach循环需要被括在大括号{}否则它将循环只有一行foreach语句

+2

Doesn't需要实际大括号括起来,您可以使用其他类似语法:'foreach():endforeach;' – Daan 2015-02-10 13:44:39