2011-11-29 10 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 
       ) 

     ) 

) 

示す最初の配列は、内部配列の各要素の項目の数を表し、これは私が次の配列から要約しようとしているものです。ありがとう。

  • EDIT -

ここでは、上記のアラを生成するクエリである:

$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 
関連する問題