0

stackoverflow で他の回答を検索して素晴らしい結果を得た後、初めてここに投稿します。作成しようとしているアプリで問題が発生しました。データベースから取得した動的な値を使用して、JS でグラフをプロットする必要があります。

私は今、javascript ライブラリを使用してグラフをプロットするために必要なすべての値を持っているところにいます。グラフをプロットするための基本的な要件は、次のような基本的な配列です。

var plot1 = [ [2,15], [4,23], [5,25] ];

[x,y] の場合、x = 日付、y = クリック。そのデータを使用して、次のように関数を呼び出すことができます。

$.plot($("#placeholder"), [ plot1 ];

これですべての作業が行われ、素敵な小さなグラフが作成されます。私の場合、これらすべてを動的に行います。ここが私が立ち往生している場所です。印刷時にこれを出力する配列があります:

Array ( 
    [0] => var test7 = [[1, 1]]; 
    [1] => var test2 = [[1, 1]]; 
    [2] => var test2 = [[4, 1]]; 
    [3] => var test2 = [[15, 2]]; 
    [4] => var test1 = [[2, 1]]; 
    [5] => var test1 = [[6, 7]]; 
    [6] => var test1 = [[14, 1]]; 
    [7] => var test1 = [[15, 1]]; 
    [8] => var giver = [[3, 2]]; 
    [9] => var giver = [[14, 1]]; 
    [10] => var test4 = [[4, 1]]; 
);

ここで行う必要があるのは、同じ linkId (たとえば、test2 には 3 つのインスタンスがあります) を含むすべての値を 1 行にグループ化することです。配列を次のようにする必要があります。

Array ( 
    [0] => var test7 = [[1, 1]]; 
    [1] => var test2 = [ [1, 1], [4, 1], [15, 2] ]; 
    [4] => var test1 = [ [2, 1], [6, 7], [14, 1], [15, 1] ]; 
    [8] => var giver = [ [3, 2], [14, 1] ]; 
    [10] => var test4 = [[4, 1]]; 
);

その時点から、foreach を実行し、script タグ内の値をエコーアウトすることができます。

提案?必要なすべてを 1 回の急降下で実行できる組み込み関数が 1 つもないことはわかっています。array_unique() は近いですが、必要なものではありません。配列と、配列内の各値に対して実行されるコールバック関数を受け入れる array_walk($array, callback) を使用できると思いますが、そこからどこに行くべきか本当にわかりません。

どんな助けでも大歓迎です!

4

2 に答える 2

2
$array = array( 
  'var test7 = [[1, 1]];', 
  'var test2 = [[1, 1]];', 
  'var test2 = [[4, 1]];', 
  'var test2 = [[15, 2]];', 
  'var test1 = [[2, 1]];', 
  'var test1 = [[6, 7]];', 
  'var test1 = [[14, 1]];', 
  'var test1 = [[15, 1]];', 
  'var giver = [[3, 2]];', 
  'var giver = [[14, 1]];', 
  'var test4 = [[4, 1]];' 
);

foreach ($array as $val) {
  preg_match('~var ([^ ]+) = \[\[([^\]]+)~',$val,$var);
  $tArray[$var[1]][] = "[".$var[2]."]";
}
$array = array();
foreach ($tArray as $key => $val) {
  $array[] = 'var '.$key.' = ['. implode(',',$val) . '];';
}
于 2011-02-08T00:09:11.950 に答える
0

Javascript で文字列を配列インデックスとして使用できることをご存知ですか?

したがって、次のようなことができます...(疑似コードbtw)

final = array();
final[arrayWithData->Key] += arrayWithData->value
于 2011-02-08T00:04:01.990 に答える