2012-12-20 12 views
7

Sto implementando Highcharts nella mia applicazione. Ha bisogno di dati in formato specifico.Array DB nel formato JavaScript previsto

I dati in mio tavolo è la seguente

enter image description here

i dati devono javascript in seguito formato

enter image description here

Quando ho var_dump mia x_axis array e y_axis array, ho qui di seguito risultato

enter image description here

Quali funzioni di php dovrei usare per formattare gli elementi dell'array e passare a quel JavaScript in quel formato?

data:[ 
    [<? echo PHP_some_function(" ' ", x_axis) ?>, <? echo (y_axis) ?>] //quotes for x, no quotes for y value 
] //Moreover it should run for all the values in x_axis and y_axis 

ho bisogno di un po 'di logica qui ..

mio grafico finale sarà simile

enter image description here

+0

probabilmente non si desidera utilizzare tali variabili. Probabilmente vuoi estrarre i tuoi dati come set di record più completi, ogni record contenente x_axis, y_axis e possibilmente si_no, ordinato da y_axis in discesa. Quindi dovrebbe essere relativamente semplice –

+0

Dall'altro lato, questa è una delle domande più frequenti che ho visto di recente! – Pateman

+0

Sembra molto come i compiti a casa. Anche i valori sono gli stessi. http://stackoverflow.com/questions/13954081/highcharts-pie-chart-x-axies-values-are-not-displayed-while-trying-to-get-data-f – wergeld

risposta

2

Il problema è la query.

Dovrebbe essere come il seguente.

SELECT x_axis, y_axis FROM yourTableName; 

In questo modo si otterrà esattamente il formato che Highcharts esigenze. Devi solo inserirlo all'interno di un array.

1

[<? echo "'". json_encode($x_axis). "', " . json_encode($y_axis) ?>] 

Demo: http://codepad.org/G5JAtXWu

Nix che mi è stato confuso.

Che cosa si vuole fare è questo:

foreach($x_axis as $key=>$x) { 
    echo "['" . $x . "', " . $y_axis[$key] . "]"; 
} 

Demo: http://codepad.org/SKNk1VaX

Per concludere il tutto:

$d = array(); 
foreach($x_axis as $key=>$x) { 
    $d[] = "['" . $x . "', " . $y_axis[$key] . "]"; 
} 
echo json_encode($d); 

Demo: http://codepad.org/KhofwXCi

+0

Questo non tiene conto del tipo è stato richiesto –

+0

@ScottSauyet Non vedo sort. – Neal

+0

Guarda l'ordine dei dati richiesti nella configurazione del grafico. Valori chiaramente discendenti. Non ho idea se sia davvero importante, però. –

1

Assumendo:

$x_axis = array('Safari', 'Opera', 'Firefox', 'IE', 'Chrome', 'Others'); 
$y_axis = array(10, 6, 40.5, 20, 10.6, 0.5); 

Questo dovrebbe funzionare:

$data = array(); 
$length = count($x_axis); 
for ($i = 0; $i < $length; $i++) { 
    $data[] = array($x_axis[i], $y_axis[i]); 
} 
+0

Questo non prende in considerazione l'ordinamento richiesto. –

+0

@ScottSauyet: OP non ha richiesto i dati da ordinare e non sarei sorpreso se la libreria di quel grafico si occupasse di quello – Cerbrus

+0

ma guardi il formato dati richiesto, che ha i dati in un ordine ordinato, uno che fa non corrisponde all'ordine di input. –

0

probabilmente gamma combinare e di JSON codificare e sostituire? nel caso in cui per la diversità;)

<?php 

$x_axis = array(
'Safari', 'Opera', 'fireFox' 
); 

$y_axis = array(
10, 30.4, 50 
); 

$keyFilled = array_combine($x_axis, $y_axis); 

arsort($keyFilled); 

$jsonData = json_encode($keyFilled); 

$jsonDataReplaced = str_replace(array(',', '{', '}', ':'), array('],[', '[', ']', ','), $jsonData); 
echo '<pre>'; 
var_dump('['.$jsonDataReplaced.']'); 

?> 

output è:

string(45) "[["fireFox",50],["Opera",30.4],["Safari",10]]" 

http://phpfiddle.org/main/code/jq4-cgb

+0

Questo non prende in considerazione l'ordinamento richiesto. –

+0

@ScottSauyet, non proprio sicuro che sia stato richiesto, ma è facile da correggere, aggiornato – dmi3y

Problemi correlati