简体   繁体   English

PHP如何对内部数组的元素进行分组和计数

[英]PHP how to group and count elements of inner array

Can someone please explain how to obtain this result from the following array? 有人可以解释一下如何从以下数组中获得此结果吗? Here is the result I am looking for: 这是我要寻找的结果:

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

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

)

And here is the array with the raw data: 这是带有原始数据的数组:

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
                )

        )

)

The first array shown represents the the count of items for each element of the inner array, which is what I am trying to summarize from the next array. 所示的第一个数组代表内部数组中每个元素的项数,这是我要从下一个数组中总结的内容。 Thanks. 谢谢。

  • EDIT - 编辑-

Here is the query which generates the above arra: 这是生成上述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; 
$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;
            }
        }
    }
}

Array result: 数组结果:

print_r($result);

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

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

)
$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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM