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)
这是否适合您的需求?
$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()函数的简单转换.如果您不能假设您将获得与此类似的数据结构,那么解决这个问题的最佳方法可能是通过递归函数.