タグの関連付けに基づいてユーザーの関心を予測しています。これらの関連付けは、ChartJSを使用して複数行のグラフにプロットされます。私は、データ形式がクライアント側でほぼ使用できるようになっているところに着いた。PHPで高度な配列を再構築する
アレイのサイズによって脅かされることはありません。私の質問はやや単純ですが、解決するのは難しいですね。
は、(例えば、データを含む)次の配列を考えてみましょう:
array:3 [▼
"timespan" => "day",
"labels" => array:3 [▼ // Date labels based on timespan
0 => "2016-06-10"
1 => "2016-06-11"
2 => "2016-06-12"
],
"data" => array:2 [▼
0 => array:3 [▼
"id" => 16473,
"name" => "FooTag"
"timeline" => array:3 [▼
0 => array:3 [▼
"Date" => "2016-06-10"
"Frequency" => 2
"Score" => 4.0
]
1 => array:3 [▼
"Date" => "2016-06-12"
"Frequency" => 2
"Score" => 4.0
]
]
]
1 => array:3 [▼
"id" => 10814,
"name" => "BarTag"
"timeline" => array:1 [▼
0 => array:3 [▼
"Date" => "2016-06-10"
"Frequency" => 2
"Score" => 3.0
],
1 => array:3 [▼
"Date" => "2016-06-11"
"Frequency" => 10
"Score" => 20.0
]
]
]
]
]
...すべての日付ラベル(2016年6月10日、206-06-11、2016年6月12日)が覆われていることを確認してくださいdata[i][timeline]
のタイムラインごとにその特定の日付ラベルのタイムラインで利用可能なデータがない場合は、空の配列を挿入する必要があります。
結果は次のようになります。この場合
array:3 [▼
"labels" => array:3 [▼ // Date labels based on timespan
0 => "2016-06-10"
1 => "2016-06-11"
2 => "2016-06-12"
]
"timespan" => "day"
"data" => array:2 [▼
0 => array:3 [▼
"id" => 16473,
"name" => "FooTag"
"timeline" => array:3 [▼
0 => array:3 [▼
"Date" => "2016-06-10"
"Frequency" => 2
"Score" => 4.0
],
1 => array:0 [], // No data for label 2016-06-11, empty array added
2 => array:3 [▼
"Date" => "2016-06-12"
"Frequency" => 2
"Score" => 4.0
]
]
]
1 => array:3 [▼
"id" => 10814,
"name" => "BarTag"
"timeline" => array:1 [▼
0 => array:3 [▼
"Date" => "2016-06-10"
"Frequency" => 2
"Score" => 3.0
],
1 => array:3 [▼
"Date" => "2016-06-11"
"Frequency" => 10
"Score" => 20.0
],
2 => array:0 [], // No data for label 2016-06-12, empty array added
]
]
]
]
すべての関連するタグは、すべての日付のデータを有しています。それ以外の場合は、グラフをプロットするときにデータ(頻度とスコア)が適切な日付と一致しません。
私はこのことを願っています。前もって感謝します! $array['labels']
を想定し
は、結果は[ 'array_splice'](HTTPを含むことになるような音: //php.net/manual/en/function.array-splice.php)。単一の '$ timeline'配列と単一の' $ labels'配列だけを扱っているかのように、これを解決してください。一度それがうまくいけば、少し楽になるはずです。 –