2015-04-08 53 views
0

我在我的模型的函數:從陣列中使用數據,而無需的foreach

public function get_learning_category_list() { 
$categorias = $this->db->select('t1.id, t1.title, t1.metadata, t1.meta_title, t1.description, t1.meta_description, t1.meta_spam, t1.url, t1.alt_img') 
     ->from('learning_category t1') 
     ->join('learning_rel_category t4', 't1.id = t4.category_id', 'left') 
     ->join('learning t2', 't4.learning_id = t2.id', 'left') 
     ->join('learning_rel_language t3', 't2.id = t3.learning_id', 'left') 
     ->where('t3.language', $this->language) 
     ->group_by('t1.id') 
     ->get()->result_array(); 
    foreach($categorias as $c){ 
     $total = $this->db->select('count(learning_rel_language.learning_id) as total', false) 
     ->from('learning') 
     ->join('learning_rel_language', 'learning.id = learning_rel_language.learning_id', 'inner') 
     ->join('learning_rel_category', 'learning.id = learning_rel_category.learning_id', 'inner') 
     ->where('learning_rel_category.category_id', $c['id']) 
     ->where('learning_rel_language.language', $this->language) 
     ->group_by('learning_rel_language.language')->get()->first_row('array'); 

     $metadata = json_decode($c['metadata']); 
     $tt = $c['title']; 
     $url = $c['url']; 
     if($this->language != 'pt_br'){ 
      $tt = $metadata->{$this->language}; 
      $tt_pt_br = $c['title']; 
     } 

     $return[] = array('url' => $url, 'title'=>$tt, 'id'=>$c['id'], 'total'=>$total['total'], 'title_pt_br'=>$tt_pt_br); 

    } 

    return $return; //$categorias; 
} 

它導致我所學的知識列表中的數組:

Array ([0] => Array ([url] => [title] => Cursos sobre como gerar leads qualificados [id] => 2 [total] => 6 [title_pt_br] =>) [1] => Array ([url] => [title] => Cursos de Social Media Marketing [id] => 3 [total] => 2 [title_pt_br] =>) [2] => Array ([url] => [title] => Cursos de SEO e otimização de sites [id] => 4 [total] => 3 [title_pt_br] =>) 

但我需要使用數據從這些學習(標題,ID等)在另一個功能模型:

public function url_format_category($category, $lang_domin) { 
    if (lang('abbr') == 'en_US') 
     $lang_domin = 'en/'; 
    else if (lang('abbr') == 'es_US') 
     $lang_domin = 'es/'; 

    $categorias = $this->learn->get_learning_category_list(); 
    print_r($categorias); 
    foreach($categorias as $cat){ 
     print_r($cat); 
     $cat = (object) $cat; 
     if($cat->title != '') { 


      $return = strtolower(url_title($cat->title)).'-cmdo-'.$cat->id; 
     }else{ 
      $return = 'cursos-de-marketing-digital-online-'.$cat->id; 
     } 
    return $return; 
    } 

我這樣做,但與foreach總是結果我ñ相同的獨立數據,我的網頁。如何在不使用foreach的情況下使用此數組中的數據?

+0

看着代碼,'return'在foreach循環中 – Ghost

+0

對不起,我是編程新手。我把退貨了嗎? – GWER

+0

如果你打算處理數組內的所有項目,那麼你需要在外面完成,然後返回你的預期結果 – Ghost

回答

1

如果您想檢查$category是否在您從該模型中獲取的那些titles之內,那麼您可以不斷檢查它是否可以,然後轉換標題並返回它,如果不是,則返回默認。

public function url_format_category($category, $lang_domin) 
{ 
    // what does this block do 
    if (lang('abbr') == 'en_US') { 
     $lang_domin = 'en/'; 
    } 
    else if (lang('abbr') == 'es_US') { 
     $lang_domin = 'es/'; 
    } 

    $categorias = $this->learn->get_learning_category_list(); 
    $title = ''; 
    foreach($categorias as $cat) { 
     // if its inside titles (checker) 
     if($cat['title'] == $category) { 
      $title = strtolower(url_title($title)).'-cmdo-'.$cat['id']; 
      return $title; 
     } else { 
      $title = 'cursos-de-marketing-digital-online-'.$cat['id']; 
     } 

    } 

    return $title; 
} 
+0

我會向你解釋我的所有清晰目標。我正在做的是一個功能,看看網站的網址是否正確,這個功能將設置網址的格式,在這種情況下,它將是'(標題)。' - CMDO - '。(該ID) 「所以我需要的是根據學習是否恢復標題和ID。你看? – GWER

+0

@GWER好的,這意味着如果這個標題確實是正確的,你將不得不檢查數組中的每個元素標題?最有可能的是,你需要在'foreach'循環中使用另一個函數,如果它是正確的,那麼使它看起來像一個'url_title',如果沒有,使用默認的函數。所以最後你會收集一些經過驗證的標題,對吧? – Ghost

+0

這是我的函數,它檢查url是否正確,它與url_format_category函數的結果進行比較,如果錯誤則重定向到正確的url:'if($ this-> uri-> uri_string!= $ this- >學習 - > url_format_category($ category,$ lang_domin),'location','301'); {$ this-> learn-> url_format_category($ category,$ lang_domin){ \t \t \t \t \t exit;'我想現在變得更清楚了。我已經有了一個函數來檢查她是否正確。只需要設置這樣的網址:'(Title).'-cmdo-'。(Id)'或'cursos -sobre-como-gerar-leads-qualificados-cmdo-2' – GWER

相關問題