我有一个数组$array
打印出类似的内容:
Array
(
[Terry] => Array
(
[2011-10-26] => Array
(
[0] => 69.90
[1] => 69.90
)
)
[Travis] => Array
(
[2011-10-26] => Array
(
[0] => 199.50
)
[2011-10-27] => Array
(
[0] => 199.50
)
)
)
我正在尝试将数据放入这样的表中:
NAME 2011-10-26 2011-10-27
Terry 2 0
Travis 1 1
我可以这样计算:
foreach($array as $key => $value){
echo $key; // this will give me the names
foreach($value as $keys => $values){
echo $keys; //this will give me the dates
echo count($values); // this will give me the count per date
}
}
我回来的日期是这样的:2011-10-26 2011-10-26 2011-10-27
我已经玩了一段时间了,而且我已经没想完了。
任何帮助?
由于
答案 0 :(得分:2)
// build a list of all of the available dates
$dates = array();
foreach($array as $key => $value){
$dates = array_merge($value, $dates);
}
$dates = array_keys($dates);
// You may want to sort the date columns here somehow
echo "Names\t".implode("\t",$dates)."\n";
foreach($array as $key => $value){
echo $key;
foreach($dates as $d){
echo "\t".(array_key_exists($d, $value) ? count($value[$d]) : 0);
}
echo "\n";
}
答案 1 :(得分:0)
$result = array();
$days = array();
foreach ($array as $person => &$dates)
$days = array_merge(array_keys($dates), $days);
$days = array_unique($days);
sort($days); // Sort days.
foreach ($array as $person => &$dates) {
foreach ($days as &$day)
// You can also use array_key_exists instead of '@' to suppress the notice.
$result[$day][$person] = @count($dates[$day]);
}
var_dump($result);
结果:
array(2) {
["2011-10-26"]=>
array(2) {
["Terry"]=>
int(2)
["Travis"]=>
int(1)
}
["2011-10-27"]=>
array(2) {
["Terry"]=>
int(0)
["Travis"]=>
int(1)
}
}