2015-02-10 149 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