2013-07-22 60 views
0

我正在嘗試製作一個函數,該函數抓取所有具有特定用戶數據庫中事件的日子。例如,如果在2013年1月23日有兩個事件,它將在2013年1月23日添加到數組中。我讓它工作,所以它增加了所有的日子(不增加同一天兩次),但現在我想能夠說出每天有多少日期。所以在2013年1月23日,它會說當天他們有兩件事。在數組中增加值php

我希望這是有道理的...我有一些代碼進一步援助。

PHP函數(搶奪有活動的每一天)

//gets upcoming days that have events for a user 
    public function get_upcoming_days_with_events() { 
     $return_array = array(); 
     $date_in=null; 
     $user_id = $this->session->userdata('id'); 
     $query =$this->db->select()->from('events')->where('user_id', $user_id)->get(); 
     foreach ($query->result_array() as $event => $row) { 
      $date = strtotime($row['date_due']); 
      if (sizeof($return_array) != 0) { 
       foreach ($return_array as $date_in_array => $row) { 
        $d = $row['full_date']; 
        if (date('Y-m-d', $date) == $d) { 
         //date is already in array 
         //increment the number of assignments on this day 
         $row['number_of_assignments'] += 1; 
         $date_in = true; 
        } else{ 
         $date_in = false; 
        } 
       } 
      } 
      if ($date_in == false) { 
       $return_array[] = array(
        'day' => date('d', $date), 
        'month' => date('m', $date), 
        'full_date' => date('Y-m-d', $date), 
        'number_of_assignments' => 1 
       ); 
      } 
     } 
     return $return_array; 
    } 

所以我希望能夠增加$ return_array [「number_of_assignments」如果我的功能注意到某一天有一個以上事件。

讓我知道你是否需要更多的信息.​​..

謝謝! :)

+0

你的'return_array'似乎是空的,你如何傳遞值? – Starx

+0

我們可以通過'date'的索引將信息保存到'return_array'中,如果日期信息沒有被設置爲'return_array',我們會創建一個空信息。每一次,我們只需增加'number_of_assignments'。希望我的代碼會有幫助。任何問題,請隨時在這裏發表評論。 – srain

回答

1

我們可以通過date索引將信息保存在return_array,如果日期信息沒有被設置爲return_array,我們會創建一個空信息。每次,我們只需增加number_of_assignments

public function get_upcoming_days_with_events() 
{ 
    $return_array = array(); 
    $user_id = $this->session->userdata('id'); 
    $query =$this->db->select()->from('events')->where('user_id', $user_id)->get(); 
    foreach ($query->result_array() as $event => $row) 
    { 
     $date = strtotime($row['date_due']); 
     $date_key = date('Y-m-d', $date); 
     if (!isset($return_array[$date_key])) 
     { 
      $new_item = array(
       'day' => date('d', $date), 
       'month' => date('m', $date), 
       'full_date' => $date_key, 
       'number_of_assignments' => 0, 
      ); 
      $return_array[$date_key] = $new_item; 
     } 
     $return_array[$date_key]['number_of_assignments']++; 
    } 
    $return_array = array_values($return_array); 
    return $return_array; 
} 
0

功能:array_count_values()可以幫助你這個,它給出了一個數組中的值的總數。

例如:

$a = array("apple", "banana", "apple"); 
var_dump(array_count_values($a)); 

將輸出

array(
    [apple] => 2, 
    [banana] => 1 
); 

所以而不是設法過濾掉重複的事件,加上他們所有的陣列上,然後用array_count_values()終於知道自己的occurenses。