1

对不起我的英语,我不知道我的问题是否正确。

我有一个数组:

Array
(
    [0] => Array
    (

        [date] => 2013-01-22
        [id] => 1
        [views] => 33286

    )

   [1] => Array
    (

        [date] => 2013-01-23
        [id] => 1
        [views] => 33223

    )


[2] => Array
    (

        [date] => 2013-01-22
        [id] => 2
        [views] => 33223

    )

 [3] => Array
    (

        [date] => 2013-01-23
        [id] => 2
        [views] => 33223

    )
)

如您所见,id 1 & 2 在 2 天内有浏览量:22-01-2013 和 23-01-2013,所以我的问题是如何打印它们:

id     22-01-2013    23-01-2013
1        33286         33223
2        33223         33223

谢谢你的帮助 !

4

2 回答 2

2

我怀疑你的最终目标是写出一张价值表。但如果是这样,这里有一些代码可以做到这一点。

<?php

$a = array(
    array('date'=>'2013-01-22', 'id'=>1, 'views'=>33286),
    array('date'=>'2013-01-23', 'id'=>1, 'views'=>33223),
    array('date'=>'2013-01-22', 'id'=>2, 'views'=>33223),
    array('date'=>'2013-01-23', 'id'=>2, 'views'=>33223),
);

$table = array();
$cols = array();
foreach ($a as $item)
{
   $date = date('d-m-Y', strtotime($item['date']));
   $table[$item['id']][$date] = $item['views'];
   $cols[$date] = 1;
}
$cols = array_keys($cols);

header('Content-type: text/plain');
echo("id\t" . implode("\t", $cols) . "\r");
foreach ($table as $rowName=>$row)
{
   echo("$rowName\t");
   foreach ($cols as $colName)
   {
      echo(@$row[$colName] . "\t");
   }
   echo("\r");
}

PS 请注意,Stack Overflow 并不是我们为您编写代码的地方。我只是有心情写代码:-)

PPS 对于这里真正的 PHP 专家,我很想知道应该对这段代码进行哪些优化 :-)

于 2013-01-22T04:14:04.907 回答
0

请参阅有关格式化日期 的手册。

foreach ($yourarray as $key => $value){
    $yourarray[$key]['date'] = date("d-m-Y",strtotime($value['date']));
}

我假设您不介意覆盖其他格式。

于 2013-01-22T04:03:59.607 回答