2014-05-16 37 views
1

如果我有這樣一個數組:如何在多維數組中使用數組?

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

和......我也有一個multid陣列:

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

如何將phpintojsArray添加到數據陣列?我想:

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

什麼是實現這一目標的一種方式?

澄清 - 試圖操縱圖表

這個工程數據:

/* 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 
      } 
     } 
    ); 

這不起作用:

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 
      } 
     } 
    ); 

爲什麼?

+0

你有什麼不工作? – kennypu

+0

沒有。當我查看源代碼時,它顯示名稱「phpintojsArray」而不是值 –

+0

是的,它會顯示phpintojsArray與上面的代碼。查看源代碼並不是一個很好的指示器,它是否能正常工作... –

回答

2

您可以使用接頭插入的元素:

data.splice(0, 0, phpintojsArray); 
+0

這是否插入phpintojsArray的元素或整個phpintojsArray本身? –

+0

這將添加整個phpintojsArray本身 – MIZ

+0

還有一個問題,參數0,0在這裏意味着什麼,我知道第一個是索引。 –

1

這工作:

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

這不起作用:

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

爲什麼?

因爲這兩個表達式產生不同的結構。在第一個中,你有兩層嵌套數組(大數組中的小數組)。在第二個中你有三個級別的嵌套數組。

一個簡單的console.log會告訴你的差異。

確保您的數據結構正確。將其更改爲:

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

(如果它仍然是不明確的,[]定義一個新的陣列支架)關於如何預先考慮phpintojsArray你的問題

,你可以這樣做:

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

明白謝謝。關於Array.prototype.unshift.apply(data,phpintojsArray);你將如何最終在數據數組中使用它? –

+0

你是什麼意思的'內'? – EyalAr

+0

含義,如何使用預先考慮的技術來獲得phpintojsArray的值,並用它的數據陣列的內部(如下面:) VAR數據= [[Array.prototype.unshift.apply(數據,phpintojsArray);], [two],[three],[four],[five]];因爲你關於不同結構的觀點適用於var data = [[two],[three],[four],[five]];但不適用於phpintojsArray值:var data = [[phpintojsArray],[two],[three],[four],[five]]; [phpintojsArray]。 –

0

你可以在JavaScript中使用eval。

例如:

VAR數據= [[EVAL( 「phpintojsArray」)],[EVAL( 「二」)],[EVAL( 「三」)],[EVAL( 「四」 )],[eval(「five」)]];