2013-07-22 40 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。