Question

If I have an array like so:

var phpintojsArray = [["1","20"]];

and... I also have a multid-array:

var data = [[1,20], [4, 20], [7, 55], [9, 10], [9, 10]];

how to add the phpintojsArray into the data array? I want:

var data = [[phpintojsArray], [1,20], [4, 20], [7, 55], [9, 10], [9, 10]];

What is one way to accomplish this?

Clarification -- Trying to manipulate the data in a chart

This works:

    /* Bar Chart */
    var data = [[1, 10],[3, 60], [5, 20], [7, 50], [9, 10]];

    // Initialize Bars Chart
    $.plot(BarChart, [
        { data: data, bars: { show: true, fillColor: { colors: [{ opacity: 1 }, { opacity: 1 }] } }, label: 'Example label' } ],
        {
            legend: {
                backgroundColor: '#f6f6f6',
                backgroundOpacity: 0.8
            },
            colors: ['#39d5db'],
            grid: {
                borderColor: '#cccccc',
                color: '#999999',
                labelMargin: 10
            },
            yaxis: {
                ticks: 5
            },
            xaxis: {
                tickSize: 1
            }
        }
    );

This does Not work:

var phpintojsArray = <?= json_encode($sales); ?>;
    var two = [3, 60];
    var three = [5, 20];
    var four = [7, 50];        
    var five = [9, 10];


    /* Bars Chart */
    var data = [[phpintojsArray], [two], [three], [four], [five]];

    // Initialize Bars Chart
    $.plot(BarChart, [
        { data: data, bars: { show: true, fillColor: { colors: [{ opacity: 1 }, { opacity: 1 }] } }, label: 'Example label' } ],
        {
            legend: {
                backgroundColor: '#f6f6f6',
                backgroundOpacity: 0.8
            },
            colors: ['#39d5db'],
            grid: {
                borderColor: '#cccccc',
                color: '#999999',
                labelMargin: 10
            },
            yaxis: {
                ticks: 5
            },
            xaxis: {
                tickSize: 1
            }
        }
    );

Why?

No correct solution

OTHER TIPS

You can use splice to insert the elements:

data.splice(0, 0, phpintojsArray);

This works:

/* Bar Chart */  
var data = [[1, 10],[3, 60], [5, 20], [7, 50], [9, 10]];

This does Not work:

/* Bars Chart */
var data = [[phpintojsArray], [two], [three], [four], [five]];

Why?

Because the two expressions yield different structures. In the first one you have two levels of nested arrays (small arrays inside a big one). In the second you have three levels of nested arrays.

A simple console.log will show you the difference.

Make sure that your data is in the correct structure. Change it to:

var data = [two, three, four, five];

(In case it's still not clear, the brackets [] define a new array)

Regarding your question on how to prepend phpintojsArray, you could do:

Array.prototype.unshift.apply(data, phpintojsArray);

You could use eval in javascript.

For Example:

var data = [[eval("phpintojsArray")], [eval("two")], [eval("three")], [eval("four")], [eval("five")]];

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top