2013-01-22 70 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

艾哈,我的錯誤。 –