PHP计算多维数组中的项目

Dan*_*ard 9 php arrays multidimensional-array

从下面的数组可以看出,11月18日出现了三个元素,11月22日出现了另外两个元素.有人能告诉我如何从这个数组中分别检索3和2的计数吗?基本上,我想得到一个像这样的结果:

2011年11月18日= 3项

2011年11月22日= 2项

当然,日期和不同日期的数量每次都会有所不同.这是数组:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [2011-11-18 00:00:00] => C
                )

            [1] => Array
                (
                    [2011-11-18 00:00:00] => I
                )

            [2] => Array
                (
                    [2011-11-18 00:00:00] => S
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [2011-11-22 00:00:00] => C
                )

            [1] => Array
                (
                    [2011-11-22 00:00:00] => S
                )

        )

)
Run Code Online (Sandbox Code Playgroud)

God*_*win 8

这是否适合您的需求?

$dates = array(array(array("2011-11-18 00:00:00" => C), array("2011-11-18 00:00:00" => I),array
("2011-11-18 00:00:00" => S)),
array(array("2011-11-22 00:00:00" => C), array("2011-11-22 00:00:00" => S)));

$date_count = array();  // create an empty array

foreach($dates as $date) {  // go thought the first level
    foreach($date as $d) {  // go through the second level
        $key = array_keys($d);  // get our date
        // here we increment the value at this date
        // php will see it as 0 if it has not yet been initialized
        $date_count[$key[0]]++;
    }
}
    // show what we have
print_r($date_count);
Run Code Online (Sandbox Code Playgroud)

打印:

Array ( [2011-11-18 00:00:00] => 3 [2011-11-22 00:00:00] => 2 )
Run Code Online (Sandbox Code Playgroud)

注意:这假设您在构建数组时始终会获取数据,并且每个日期的格式都相同.如果您不能假设每个日期都将被格式化,这将是使用date()函数的简单转换.如果您不能假设您将获得与此类似的数据结构,那么解决这个问题的最佳方法可能是通过递归函数.