2013-09-23 64 views
0

我有此數組:重新組織陣列highcharts

array (
    0 => 
    array (
    'banner' => 'banner1', 
    'dayofweek' => '1', 
    'count' => '3', 
), 
    1 => 
    array (
    'banner' => 'banner1', 
    'dayofweek' => '2', 
    'count' => '1', 
), 
    2 => 
    array (
    'banner' => 'banner2', 
    'dayofweek' => '2', 
    'count' => '3', 
) 
) 

我需要使用它highcharts得到兩個不同的向量與DAYOFWEEK白天和算作值。這是應該如何在highcharts數組:

series:[ 
    { 
     name:'banner1', 
     data:[3,1,0,0,0,0,0,] 
    }, 
    { 
     name:'banner2', 
     data:[0,3,0,0,0,0,0,] 
    } 
] 

我必須這樣,我猜陣列:

array (
    0 => 
    array (
    'banner' => 'banner1', 
    'counts' => '3,1,0,0,0,0,0' 
), 
    1 => 
    array (
    'banner' => 'banner2', 
    'counts' => '0,3,0,0,0,0,0' 
) 

) 

如何可以解析數組得到我需要的格式?

+0

您正在獲取數組的數組..但是構建內部數組而不是使它們成爲數組..創建對象並將這些對象添加到數組中.. – sasi

+0

抱歉,我無法理解您的意思。 – PurpleFoxy

+0

我不太明白你想要什麼輸出 - 你能舉個例子嗎? –

回答

1

其實你需要的是這樣的:

$initialArray = ...; 
$temp = array(); 
foreach ($initialArray AS $a) { 
    if (!isset($temp[ $a['banner'] ])) { 
     $temp[ $a['banner'] ] = array_fill(0, 7, 0); 
    } 
    $temp[ $a['banner'] ][ $a['dayofweek'] - 1 ] = intval($a['count']); 
} 

$series = array(); 
foreach ($temp AS $banner => $counts) { 
    $obj = new stdClass(); 
    $obj->banner = $banner; 
    $obj->counts = $counts; 
    $series[] = $obj; 
} 

echo json_encode($series); 

它可以優化使用更少的內存。但是如果你沒有太多的數據(不是每秒數百萬條橫幅和數百個請求),那麼就不需要它了。

+0

這樣,如果我有一天沒有記錄,我得到1,1,1應該是1,0,1,1 – PurpleFoxy

+0

刪除了'implode'。請參閱以下示例:http://phpfiddle.org/lite/code/atq-n40 – Alex

+0

對不起,我沒有使用Highcharts的經驗。我剛剛看到了一些關於PHP的奇怪的評論,並希望能夠提供幫助。 – Alex

0

如果你的意思是這樣的PHP破滅(),然後嘗試:

arrayName.join(delimiter); 

或者乾脆循環數組:

var str = ''; 
$.each(arrayName, function(i, num){ 
    str += num + ','; 
}) 

str.slice(-1); 
+0

我正在談論PHP ... – PurpleFoxy