2013-01-22 67 views
1

对不起我的英文,我不知道我的问题是否正确。index in array php,日期格式化

我有一个数组:

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 

感谢您的帮助!

+0

基本上只是使用循环并使用'$ out [$ date] [$ id]赋值给一个多维数组= $ views'。然后打印这样的表格变得更容易。 – mario

+0

我想你从MySQL获得这个如果是的话可以发帖查询请... –

回答

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"); 
} 

P.S.只是你知道,Stack Overflow并不是我们为你编写代码的地方。我只是有心情写代码:-)

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

+0

谢谢!有用 ! – johnITBonuc

0

See the manual关于格式化日期。

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

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

+0

谢谢,但我的问题不是日期格式:D – johnITBonuc

+0

艾哈,我的错误。 –