Tell me more ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

This question already has an answer here:

I have a multidimensional PHP array that I want to insert into a Javascript graphing library. How do I insert the PHP array into the JS code that creates the Highcharts.Chart object?

I notice that JS variable series contains an array of objects, while in PHP everything is in array.

Jsfiddle: http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/line-basic/

PHP Array (Result of print_r($array))

Array
(
    [boston] => Array
        (
            [0] => 4623
            [1] => 18094
            [2] => 12176
            [3] => 6521
            [4] => 4559
            [5] => 6450
            [6] => 5814
        )

    [chicago] => Array
        (
            [0] => 1240
            [1] => 9923
            [2] => 9546
            [3] => 4568
            [4] => 3384
            [5] => 4797
            [6] => 4469
        )

    [philadelphia] => Array
        (
            [0] => 0
            [1] => 1529
            [2] => 4063
            [3] => 838
            [4] => 547
            [5] => 1443
            [6] => 1209
        )
)

Javascript Array Example:

chart = new Highcharts.Chart({
   series: [{
        name: 'boston',
        data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
    }, {
        name: 'chicago',
        data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
    }, {
        name: 'philadelphia',
        data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
    }]
});
share|improve this question
1  
Start by encoding it as JSON. –  Blender Mar 13 at 23:24
2  
If only there were some kind of notation for JavaScript objects... Bah, that's crazy talk! –  Jack Maney Mar 13 at 23:24
 
I notice that JS variable series contains an array of objects, while in PHP everything is in array. –  Nyxynyx Mar 13 at 23:24
 
 
@Nyxynyx: Not so, your JS has shows an object literal, that has a property series, that references an array of objects. Even so: in JS, arrays are objects: Object.getPrototypeOf(Array.prototype);. Also: What's the difference? Aren't arrays some form of objects, too? Apart from the new keyword, in PHP we tend to write $var = array();, which constructs an array. Nowadays, of course, we can also write [] in both PHP and JS, or cast an array to a stdClass instance... Arrays, Objecs... it shouldn't matter that much to you –  Elias Van Ootegem Mar 13 at 23:37

marked as duplicate by Jack Maney, Shog9 Mar 16 at 17:21

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

3 Answers

up vote 0 down vote accepted

something like this should convert your data to the format you are expecting in js:

<?php
$newData = array();
foreach($data as $city=>$values){
    $newData[] = array('name'=>$city,'data'=>$values)
}

echo json_encode($newData);
share|improve this answer

json_encode($array) will give you a javascript parsable array.

share|improve this answer

This is how I'd start organizing some of the data:

<?
$data[boston] = array(1,2,3,4);
$data[new_york] = array(6,12,18,24);
print_r($data);

foreach ($data as $key => &$value) {
  echo "name: $key \n";
  echo "data: [" . implode(",", $value) . "]\n";
}
?>
share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.