2013-02-12 4 views
2

я пытаюсь получить лучшую практику, чтобы манипулировать мой массив, чтобы получить JSON в формате, подобный этому (лучше работать с графиками)массива с PHP для вывода Json

{ 
    "serieMonth":["Aug-12","Sep-12","Oct-12","Nov-12","Dec-12","Jan-13","Feb-13"], 
    "serieCA":[4214,10119,13325,12818,7177,20628,7664], 
    "serieAdwordsCA":[0,0,0,0,0,310,332], 
    "serieBooking":[10,28,46,34,17,51,16], 
    "serieAdwords":[0,0,0,0,0,1,1], 
    "serieTotalBooking":[10,28,46,34,17,52,17], 
    "serieCartRepartition":[421,361,290,377,422,397,451], 
    "serieTotalCart":[421,361,290,377,422,397,451] 
    } 

На самом деле мой выход выглядит следующим образом:

[ 
{"date_year":"2012","date_month":"08","ad_cost":"0.0","ad_clicks":"0"}, 
{"date_year":"2012","date_month":"09","ad_cost":"0.0","ad_clicks":"0"}, 
{"date_year":"2012","date_month":"10","ad_cost":"0.0","ad_clicks":"0"}, 
{"date_year":"2012","date_month":"11","ad_cost":"0.0","ad_clicks":"0"}, 
{"date_year":"2012","date_month":"12","ad_cost":"44.9","ad_clicks":"43"}, 
{"date_year":"2013","date_month":"01","ad_cost":"297.56","ad_clicks":"462"}, 
{"date_year":"2013","date_month":"02","ad_cost":"82.5","ad_clicks":"103"} 
] 

И я использую JavaScript, чтобы изменить его:

var xAxisLabels = new Array(), 
adClicks = new Array(), 
adCost = new Array(); 
$.each(data, function(i,v) { 
    xAxisLabels.push(v["date_month"]+'/'+v["date_year"]); 
    adCost.push(parseInt(v["ad_cost"])); 
    adClicks.push(parseInt(v["ad_clicks"])); 
}); 

Я ищу лучший способ сделать I t в php, так как я получаю эти данные google api, вот мой php.

// dimensions 
$dimensions = 'ga:year,ga:month'; 
$_params[] = 'date_year'; 
$_params[] = 'date_month'; 
// metrics 
$metrics = 'ga:adCost,ga:adClicks'; 
$_params[] = 'ad_cost'; 
$_params[] = 'ad_clicks'; 

$response = $service->data_ga->get('ga:' . $projectId, $from, $to, $metrics, array('dimensions' => $dimensions)); 

$analyticsStats = array(); 
foreach ($response['rows'] as $row) { 
    $dataRow = array(); 
    foreach ($_params as $colNr => $column) { 
    $dataRow[$column] = $row[$colNr]; 
    } 
    array_push($analyticsStats, $dataRow); 
} 
+0

«на выходе», кажется, не содержат все значения, необходимые для создания «вход» , –

+0

Да, выход является примером для формата, который я хотел бы получить. – Shipow

ответ

3

Вы можете создать массив массивов затем добавлять элементы в суб-массивов в цикле:

$output = array(
    "serieMonth" => array(), 
    "serieCA" => array(), 
    "serieAdwordsCA" => array(), 
    "serieBooking" => array(), 
    "serieAdwords" => array(), 
    "serieTotalBooking" => array(), 
    "serieCartRepartition" => array(), 
    "serieTotalCart" => array() 
); 
foreach($response["rows"] as $row) { 
    $output["serieMonth"][] = date("Y-M", strtotime("{$row['date_year']}-{$row['date_month']}-01")); 
    $output["serieCA"][] = $row["ad_cost"]; 
    $output["serieAdwordsCA"][] = $row["ad_clicks"]; 
    // etc... 
} 
echo json_encode($output); 
+0

Спасибо за вашу помощь – Shipow

Смежные вопросы