तिथि के आधार पर मूल्य मौका और समूह गिनें

मुझे डेटबाज़ से यह तारीख मिलती है

Array
(
[0] => Array
    (
        [page] => login
        [timestamp] => 2013-11-06 12:06:30
    )

[1] => Array
        [page] => changepage
        [timestamp] => 2013-11-06 12:06:31
    )

और इसी तरह..

मैं उसी दिन से प्रविष्टियों को गिनना चाहता हूं

Array
(
  [0] => Array
  (
  [timestamp] => 2013-11-06//only by the same day..
  [count] =>  4
  )
)

या और भी

 Array
 (
   [0] => Array
   (
    [timestamp] => 2013-11-06
    [login] => 2
    [changepage] => 4
   )
 )

मैंने कोशिश की

   function format($data)
{
    $dates = array();
    for ($i = 0; $i < count($data); $i++)
    {

    if ($data[$i]['page'] == 'login')
        {
            if (!isset($dates[explode(' ', $data[$i]['timestamp'])[0]]))
                array_push($dates, array('date' => explode(' ', $data[$i]['timestamp'])[0], 'login' => 1));
            else
            {
                foreach ($dates as $date) {
                    if ($date['date'] == explode(' ', $data[$i]['timestamp'])[0])
                        $date['login'] += 1;
                         }
            }
        }
        return $dates;
    }

लेकिन यह मुझे केवल एक रिकॉर्ड देता है

    Array( Array ( 'timestamp' => '2013-11-06', 'login' => 1) )

सम्मेलन में मैं उसी दिन और उसी पृष्ठ के साथ प्रविष्टियों को जोड़ना चाहता हूं (मेरा सबसे अच्छा समाधान सभी पृष्ठों के योग के साथ 2 सरणी प्राप्त करेगा और एक विस्तृत पृष्ठ योग के साथ)

0
मेरे कोड के साथ अद्यतन ..
जोड़ा लेखक j0shyz, स्रोत
हमें दिखाएं कि आपने पहले से क्या प्रयास किया है
जोड़ा लेखक u_mulder, स्रोत

1 उत्तर

यहां आपके प्रश्न का समाधान है:

function format($data) {
  $result = array();
  foreach ($data as $item) {
    $date = substr($item['timestamp'], 0, 10);
    @$result[$date]['timestamp'] = $date;
    @$result[$date][$item['page']]++;
  }
  sort($result);
  return $result;
}

सरणी में प्रत्येक आइटम के लिए, यह पहले substr का उपयोग करके timestamp फ़ील्ड के समय भाग को छोटा करता है। परिणाम मान का उपयोग परिणाम सरणी की कुंजी के रूप में करें, उसी दिनांक मान का उपयोग करके timestamp फ़ील्ड जोड़ें, और अन्य फ़ील्ड (पृष्ठ नाम वाले) के मान को बढ़ाएं। जब मैं कुंजी (अनुक्रमणिका) अभी तक मौजूद नहीं है, तो नोटिस त्रुटि को रोकने के लिए मैं @ ऑपरेटर का उपयोग करता हूं।

सभी वस्तुओं को संसाधित करने के बाद, परिणाम सरणी को संख्यात्मक सूचकांक में बदलने के लिए क्रमबद्ध करें और यह एक नियमित सरणी बन जाती है।

यहां परीक्षण किया गया परीक्षण है:

$data = array(
  array(
    'page' => 'login',
    'timestamp' => '2013-11-06 12:06:30'
  ),
  array(
    'page' => 'changepage',
    'timestamp' => '2013-11-06 12:06:45'
  ),
  array(
    'page' => 'login',
    'timestamp' => '2013-11-06 13:06:30'
  ),
  array(
    'page' => 'changepage',
    'timestamp' => '2013-11-06 14:06:45'
  ),
  array(
    'page' => 'changepage',
    'timestamp' => '2013-11-06 14:06:50'
  ),
  array(
    'page' => 'login',
    'timestamp' => '2013-11-07 12:06:30'
  ),
  array(
    'page' => 'changepage',
    'timestamp' => '2013-11-07 12:06:45'
  )
);

print_r(format($data));

एंडा आउटपुट है:

Array
(
    [0] => Array
        (
            [timestamp] => 2013-11-06
            [login] => 2
            [changepage] => 3
        )

    [1] => Array
        (
            [timestamp] => 2013-11-07
            [login] => 1
            [changepage] => 1
        )

)

वहाँ, उम्मीद है कि यह मदद करता है!

0
जोड़ा