2011-11-29 95 views
0

有人可以請解釋如何從以下數組中獲取此結果嗎?這裏是我尋找的結果:PHP如何對內部數組的元素進行分組和計數

Array 
(
    [Nov 18, 2011] => Array 
     (
      [C] => 2 
      [I] => 1 
     ) 

    [Nov 22, 2011] => Array 
     (
      [C] => 2 
     ) 

) 

在這裏與原始數據陣列:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [Nov 18, 2011] => C 
       ) 

      [1] => Array 
       (
        [Nov 18, 2011] => C 
       ) 

      [2] => Array 
       (
        [Nov 18, 2011] => I 
       ) 

     ) 

    [1] => Array 
     (
      [0] => Array 
       (
        [Nov 22, 2011] => C 
       ) 

      [1] => Array 
       (
        [Nov 22, 2011] => C 
       ) 

     ) 

) 

所示的第一陣列代表用於內陣列的每個元件的物品的計,這正是我想從下一個數組中總結出來的。謝謝。

  • 編輯 -

這裏是產生上述ARRA查詢:

$qrybilled = $this->db->query("SELECT tbltc.BILLED FROM tbltc WHERE tbltc.PN = $pn AND tbltc.Y = $taxyear AND tbltc.SCENARIO = $scenario GROUP BY BILLED"); 
$x = 0; $arr_billed = array(); 

foreach ($qrybilled->result() as $row) { 
$qry3 = $this->db->query("SELECT tbltc.* FROM tbltc WHERE tbltc.PN = $pn AND tbltc.Y = $taxyear AND tbltc.SCENARIO = $scenario AND tbltc.BILLED = '".$row->BILLED."' GROUP BY TC ORDER BY CAT ASC, TC ASC"); 

    $tmp3 = array(); 
    foreach ($qry3->result() as $row) {  
     $tmp3[] = array(date("M d, Y",strtotime($row->BILLED)) => $row->CAT); 
    } 
    $arr_billed3[] = $tmp3; 

} 
$data['billed3'] = $arr_billed3; 
+4

你從哪裏得到這些數據?一個數據庫?如果是這樣,您可以使用查詢中的GROUP BY,並以此方式向您呈現結果。 –

+0

內部數組是否總是有非常明確的固定值(即'C'和'I'),還是會有動態值? –

+0

是的,值來自數據庫,是的,內部數組將始終爲'C'或'I'或'M'。 – DanielAttard

回答

4
$arr[0][] = array('Nov 18, 2011'=>'C'); 
$arr[0][] = array('Nov 18, 2011'=>'C'); 
$arr[0][] = array('Nov 18, 2011'=>'I'); 

$arr[1][] = array('Nov 22, 2011'=>'C'); 
$arr[1][] = array('Nov 22, 2011'=>'C'); 

$result = array(); 
foreach($arr as $key=>$value){ 
    foreach($value as $k=>$v){ 
     foreach($v as $_k=>$_v){ 
      if(isset($result[$_k][$_v])){ 
       $result[$_k][$_v]++; 
      } 
      else { 
       $result[$_k][$_v] =1; 
      } 
     } 
    } 
} 

陣列結果:

print_r($result); 

Array 
(
    [Nov 18, 2011] => Array 
     (
      [C] => 2 
      [I] => 1 
     ) 

    [Nov 22, 2011] => Array 
     (
      [C] => 2 
     ) 

) 
+0

哇!太棒了,非常感謝你。現在我只需要弄清楚那裏發生了什麼。你能告訴我$ k和$ _k之間或者$ v和$ _v之間有什麼區別嗎?下劃線的意義是什麼? @Oyeme – DanielAttard

+0

變量$ _k和$ _v中的下劃線 - 它只是一個變量名。沒有特別的:)。(深度數組迭代) – Oyeme

0
$food = array('0' => array('orange', 'banana', 'apple','jack'), 
       '1' => array('carrot', 'collard', 'pea')); 

echo count($food); // output 2 

echo count($food[0]) // output 4 

echo count($food[1]) // output 3