0

特定のユーザーのデータベースにあるイベントがあるすべての日を取得する関数を作成しようとしています。たとえば、2013 年 1 月 23 日に 2 つのイベントがあった場合、2013 年 1 月 23 日が配列に追加されます。私はそれを機能させたので、すべての日を追加します(同じ日を2回追加することなく)が、今では毎日いくつの日付があるかを言いたいです。したがって、2013 年 1 月 23 日には、その日に 2 つのイベントがあると表示されます。

これが理にかなっていることを願っています...さらに支援するためのコードがいくつかあります。

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'] をインクリメントできるようにしたいと考えています。

さらに情報が必要な場合はお知らせください...

ありがとう!:)

4

2 に答える 2

1

関数: array_count_values()はこれに役立ちます。配列内の値の合計出現回数を示します。

例えば:

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

出力します

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

したがって、重複するイベントを除外しようとする代わりに、それらをすべて配列に追加してから、array_count_values() at last を使用してそれらの発生を把握します。

于 2013-07-22T02:23:08.053 に答える