计数foreach循环项目

问题描述:

我有以下阵列:计数foreach循环项目

[2]=> 
    object(stdClass)#9 (4) { 
    ["ID"]=> 
    string(32) "43c845f895a56fbe8aea9435ef8fa806" 
    ["Type"]=> 
    string(8) "Campaign" 
    ["Name"]=> 
    string(28) "An unmissable invitation for" 
    ["Actions"]=> 
    array(5) { 
     [0]=> 
     object(stdClass)#10 (4) { 
     ["Event"]=> 
     string(4) "Open" 
     ["Date"]=> 
     string(19) "2013-05-07 17:00:00" 
     ["IPAddress"]=> 
     string(12) "109.239.93.2" 
     ["Detail"]=> 
     string(0) "" 
     } 
     [1]=> 
     object(stdClass)#11 (4) { 
     ["Event"]=> 
     string(4) "Open" 
     ["Date"]=> 
     string(19) "2013-05-07 09:01:00" 
     ["IPAddress"]=> 
     string(12) "109.239.93.2" 
     ["Detail"]=> 
     string(0) "" 
     } 
     [2]=> 
     object(stdClass)#12 (4) { 
     ["Event"]=> 
     string(4) "Open" 
     ["Date"]=> 
     string(19) "2013-04-30 22:29:00" 
     ["IPAddress"]=> 
     string(14) "94.171.192.216" 
     ["Detail"]=> 
     string(0) "" 
     } 
     [3]=> 
     object(stdClass)#13 (4) { 
     ["Event"]=> 
     string(5) "Click" 
     ["Date"]=> 
     string(19) "2013-04-30 17:43:00" 
     ["IPAddress"]=> 
     string(12) "109.239.93.2" 
     ["Detail"]=> 
     string(60) "http://www.rbh.co.uk/rbhevent/?name=[fullname]&email=[email]" 
     } 
     [4]=> 
     object(stdClass)#14 (4) { 
     ["Event"]=> 
     string(4) "Open" 
     ["Date"]=> 
     string(19) "2013-04-30 17:43:00" 
     ["IPAddress"]=> 
     string(12) "109.239.93.2" 
     ["Detail"]=> 
     string(0) "" 
     } 
    } 
    } 

我试图计算是相同的事件。例如[“Event”] = Open = 4/[“Event”] = Click = 1。

我试图通过计数foreach循环来实现这一目标:

$i=0; 
foreach($entry->Actions as $actions) { 
echo $i++;   
} 

林不太清楚如何处理呢?有人可以提出最佳做法吗?

+1

在循环中使用if语句? – Neal

+0

保存一个地图,其中每个事件值是关键字,值是计数。 –

$counts = array(); 

foreach($entry->Actions as $actions) { 
    if(!isset($counts[$actions->Event])) { 
     $counts[$actions->Event] = 0; 
    } 
    ++$counts[$actions->Event]; 
} 

print_r($counts); 
+0

谢谢!所以当我回声$计数[$行动 - >事件];我得到[“Open”]值的总和。我如何获得[“Click”]值的总和? – danyo

+1

'$ counts'是一个数组,因此请尝试回显'$ counts ['Click']''。 –

<?php 
$amounts = array(); // Events as key 
foreach($entry->Actions as $actions) 
{ 
    if (isset($amounts[$actions["Event"]])) $amounts[$actions["Event"]]++; 
    else $amounts[$actions["Event"]] = 1; 
} 
print_r($amounts); 
echo "<br>".$amounts["Open"]; 
?> 
+0

你打我吧.. :) –

+0

我会提供更正 'if(isset($ amount [$ actions [“Event”]]))$ amount [$ actions [“Event”]] ++;其他$金额[$动作[“事件”]] = 1;' – Trogvar

+0

改变它,谢谢。 –